mirror of
https://github.com/stablyai/orca.git
synced 2026-09-21 16:02:20 +00:00
* test: exercise packaged browser compatibility in scheduled CI * test: record final packaged workflow participation evidence * test: expose manual packaged revision and simplify executable check * test: reject missing package checksum assertion
75 lines
3.0 KiB
YAML
75 lines
3.0 KiB
YAML
name: Packaged browser compatibility
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
ref:
|
|
description: Commit SHA or ref to validate (defaults to the selected revision)
|
|
type: string
|
|
required: false
|
|
schedule:
|
|
- cron: '20 8 * * 1'
|
|
workflow_call:
|
|
inputs:
|
|
ref:
|
|
type: string
|
|
required: false
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
compatibility:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 25
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
ref: ${{ inputs.ref || github.sha }}
|
|
persist-credentials: false
|
|
- name: Install headless tools
|
|
run: sudo apt-get update && sudo apt-get install -y build-essential openssh-client python3 ripgrep xvfb zsh openbox x11-utils
|
|
- uses: ./.github/actions/install-node-dependencies
|
|
with:
|
|
native-runtime: electron
|
|
- name: Download pinned old release
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
gh release download v1.4.188 --repo stablyai/orca --pattern orca-ide_1.4.188_amd64.deb --dir "$RUNNER_TEMP/old-orca"
|
|
python3 - <<'PYVERIFY'
|
|
import base64,hashlib,os,pathlib,subprocess
|
|
root=pathlib.Path(os.environ['RUNNER_TEMP'])/'old-orca'
|
|
package=root/'orca-ide_1.4.188_amd64.deb'
|
|
expected='uGONFUDfinYggxcT9ac72wnnlofLQaqasDDeP0HWOSqarBwTi1Ax3khmzKUY3vUnvuYOpSCEmsH4InzLZ2vg6g=='
|
|
assert base64.b64encode(hashlib.sha512(package.read_bytes()).digest()).decode()==expected
|
|
extracted=root/'extracted'
|
|
subprocess.run(['dpkg-deb','-x',str(package),str(extracted)],check=True)
|
|
executable=extracted/'opt'/'Orca'/'orca-ide'
|
|
assert executable.is_file() and os.access(executable,os.X_OK)
|
|
with open(os.environ['GITHUB_ENV'],'a') as env: env.write('ORCA_CROSS_VERSION_PACKAGED_EXECUTABLE='+str(executable)+'\n')
|
|
print('Verified old package:',executable)
|
|
PYVERIFY
|
|
- name: Build current Electron app
|
|
env:
|
|
VITE_EXPOSE_STORE: 'true'
|
|
run: |
|
|
pnpm run build:relay
|
|
pnpm exec electron-vite build --mode e2e
|
|
pnpm run build:web-from-renderer
|
|
- name: Run both mixed-version directions
|
|
env:
|
|
PLAYWRIGHT_JSON_OUTPUT_FILE: test-results/packaged-browser-results.json
|
|
run: >-
|
|
xvfb-run --auto-servernum bash .github/scripts/e2e-with-window-manager.sh
|
|
env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1
|
|
pnpm exec playwright test --config tests/playwright.config.ts
|
|
tests/e2e/packaged-mixed-version-browser-placement.spec.ts
|
|
--project=electron-headless --workers=1 --retries=0 --repeat-each=3 --reporter=list,json
|
|
- name: Require all six compatibility executions
|
|
if: always()
|
|
run: node config/scripts/verify-packaged-browser-participation.mjs test-results/packaged-browser-results.json
|
|
- uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: packaged-mixed-version-audit
|
|
path: test-results/
|
|
retention-days: 3
|