mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +00:00
* Bound every pull request CI job with timeout-minutes * ci: bound the PR-triggered jobs added since #28784 with timeout-minutes Sized from recent run times: containers 1.2 min max, mac-native-owner-smoke 5.5, contract 1.2. Secret scan (1.8 max) and mobile_web_app (5.4 max) get roomier limits. * ci: check PR job time limits in code_paths so workflow-only PRs are covered A PR that changes only mobile.yml or cloud-verify.yml skips the root unit shards, so the timeout test never ran for it. Run the check from code_paths, which runs on every PR, as check-required-pr-context already does. * ci: use a uniform 3h ceiling on newly bounded PR jobs to stop runaway jobs The goal is only to stop jobs that would otherwise run to GitHub's 6h default, not to tune per-job limits. The guard keeps requiring a limit below 360 minutes on every PR job but no longer enforces a lower value. --------- Co-authored-by: Kelvin Amoaba <97001695+AmoabaKelvin@users.noreply.github.com> Co-authored-by: Neil <neil@stably.ai>
169 lines
8.5 KiB
YAML
169 lines
8.5 KiB
YAML
name: Computer-use e2e
|
||
|
||
on:
|
||
pull_request:
|
||
types: [opened, synchronize, reopened, ready_for_review, converted_to_draft]
|
||
paths:
|
||
- '.github/workflows/computer-e2e.yml'
|
||
- 'config/electron-builder.config.cjs'
|
||
- 'config/scripts/native-build/macos/build-computer-macos.mjs'
|
||
- 'config/scripts/native-build/composition/build-native-for-platform.mjs'
|
||
- 'config/scripts/native-build/composition/build-native-for-platform.test.mjs'
|
||
- 'config/scripts/tool-invocation/pnpm-cli-invocation.mjs'
|
||
- 'config/scripts/native-build/windows/build-windows-cli-launcher.mjs'
|
||
- 'config/scripts/native-build/windows/windows-rust-executable-build.mjs'
|
||
- 'config/scripts/native-build/windows/build-windows-cli-launcher.test.mjs'
|
||
- 'config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-benchmark.mjs'
|
||
- 'config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-group-recovery.test.mjs'
|
||
- 'config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-metrics.mjs'
|
||
- 'config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-processes.mjs'
|
||
- 'config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-processes.test.mjs'
|
||
- 'config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-trial-cleanup.mjs'
|
||
- 'config/scripts/runtime-verification/desktop-transport/computer-use-smoke.mjs'
|
||
- 'config/scripts/runtime-verification/daemon-lifecycle/daemon-boot-smoke.mjs'
|
||
- 'config/scripts/runtime-verification/daemon-lifecycle/daemon-endpoint-handover-smoke.mjs'
|
||
- 'config/scripts/diagnostics/runtime-lifecycle/windows-daemon-workspace-close-repro.mjs'
|
||
- 'config/scripts/runtime-verification/desktop-transport/verify-computer-native.mjs'
|
||
# Re-smoke daemon bundle/build changes under plain Node; v1.4.129-rc.1 shipped a module-load outage despite green CI.
|
||
- 'electron.vite.config.ts'
|
||
- 'config/build-plugins/**'
|
||
- 'src/main/daemon/**'
|
||
- '!src/main/daemon/**/*.test.ts'
|
||
- '!src/main/daemon/providers/lifecycle/testing/daemon-init-dependency-mocks.ts'
|
||
- '!src/main/daemon/providers/lifecycle/testing/daemon-init-test-harness.ts'
|
||
- '!src/main/daemon/providers/lifecycle/testing/daemon-init-fresh-import.ts'
|
||
- '!src/main/daemon/providers/lifecycle/testing/daemon-init-mock-types.ts'
|
||
- '!src/main/daemon/emulation/testing/serialize-grid-roundtrip.ts'
|
||
- '!src/main/daemon/pty-subprocess/testing/mock-descendant-sweep.ts'
|
||
- '!src/main/daemon/executable-host/windows/testing/daemon-host-relocation.test-fixture.ts'
|
||
- '!src/main/daemon/endpoint/publication/testing/daemon-endpoint-reachability-test-harness.ts'
|
||
- 'src/main/providers/local-pty/local-pty-provider.ts'
|
||
- 'src/main/providers/windows-shell-args.ts'
|
||
- 'src/main/providers/windows-shell-preflight-runtime.windows.test.ts'
|
||
- 'native/computer-use-macos/**'
|
||
- 'native/computer-use-linux/**'
|
||
- 'native/computer-use-windows/**'
|
||
- 'native/windows-cli-launcher/**'
|
||
- 'skills/orca-computer-use/SKILL.md'
|
||
- 'src/cli/**'
|
||
- 'src/main/computer/**'
|
||
- 'src/main/runtime/rpc/dispatcher.ts'
|
||
- 'src/main/runtime/rpc/errors.ts'
|
||
- 'src/main/runtime/rpc/methods/computer*.ts'
|
||
- 'src/shared/computer-use-*.ts'
|
||
- 'tests/e2e/computer-linux.e2e.ts'
|
||
- 'tests/e2e/computer-windows.e2e.ts'
|
||
- 'tests/e2e/computer-windows-store.e2e.ts'
|
||
- 'tests/e2e/helpers/computer-cli-driver.ts'
|
||
- 'tests/e2e/helpers/computer-driver.ts'
|
||
- 'tests/e2e/vitest.config.ts'
|
||
workflow_dispatch:
|
||
schedule:
|
||
- cron: '0 6 * * *'
|
||
|
||
concurrency:
|
||
group: computer-e2e-${{ github.event.pull_request.number || github.ref }}
|
||
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||
|
||
permissions:
|
||
contents: read
|
||
|
||
jobs:
|
||
native-smoke:
|
||
if: github.event_name == 'pull_request' && github.event.pull_request.draft != true
|
||
permissions:
|
||
contents: read
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
os: [ubuntu-22.04, windows-latest]
|
||
runs-on: ${{ matrix.os }}
|
||
timeout-minutes: 180
|
||
steps:
|
||
- uses: actions/checkout@v6
|
||
with:
|
||
persist-credentials: false
|
||
- if: runner.os == 'Linux'
|
||
run: sudo apt-get update && sudo apt-get install -y python3 python3-gi gir1.2-atspi-2.0 at-spi2-core
|
||
- uses: ./.github/actions/install-node-dependencies
|
||
with:
|
||
native-runtime: node
|
||
# Use shared Vitest config: bare invocation misses config/ and its timeout/Windows worker cap, breaking real csc.exe tests.
|
||
- run: >-
|
||
pnpm vitest run --config config/vitest.config.ts
|
||
config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-group-recovery.test.mjs
|
||
config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-processes.test.mjs
|
||
src/main/computer/sidecar-client.test.ts
|
||
src/main/computer/macos-native-provider-client.test.ts
|
||
src/main/computer/macos-native-provider-socket.test.ts
|
||
src/main/computer/macos-computer-use-permissions.test.ts
|
||
src/main/computer/macos-computer-use-permission-status.test.ts
|
||
src/main/providers/windows-shell-preflight-runtime.windows.test.ts
|
||
src/main/computer/desktop-script-provider-actions.test.ts
|
||
src/main/computer/desktop-script-provider-cache-lifecycle.test.ts
|
||
src/main/computer/desktop-script-provider-errors.test.ts
|
||
src/main/computer/desktop-script-provider-action-errors.test.ts
|
||
src/shared/computer-use-error-recovery.test.ts
|
||
src/shared/computer-use-key-spec.test.ts
|
||
src/cli/format.test.ts
|
||
src/cli/handlers/computer.test.ts
|
||
src/cli/handlers/computer-action-validation.test.ts
|
||
src/cli/handlers/computer-state-formatting.test.ts
|
||
src/cli/index.test.ts
|
||
src/main/runtime/rpc/dispatcher-computer-errors.test.ts
|
||
src/main/runtime/rpc/errors.test.ts
|
||
src/main/runtime/rpc/methods/computer.test.ts
|
||
src/main/runtime/rpc/methods/computer-actions.test.ts
|
||
src/cli/runtime/envelope-schema.test.ts
|
||
src/shared/remote-runtime/remote-runtime-client.test.ts
|
||
- run: pnpm verify:computer-native
|
||
- run: pnpm build:cli
|
||
- run: pnpm run build:electron-vite:parallel
|
||
# Boot built daemon-entry under plain Node on Ubuntu/Windows, catching leaked electron requires like v1.4.129-rc.1.
|
||
- name: Daemon boot smoke
|
||
run: node config/scripts/runtime-verification/daemon-lifecycle/daemon-boot-smoke.mjs
|
||
# Race real daemon processes on one endpoint; a loser must not unlink the replacement’s socket.
|
||
- name: Daemon endpoint handover smoke
|
||
run: node config/scripts/runtime-verification/daemon-lifecycle/daemon-endpoint-handover-smoke.mjs
|
||
# Exercise workspace removal’s renderer teardown plus forced main sweep against real ConPTY.
|
||
- name: Windows daemon workspace-close repro
|
||
if: runner.os == 'Windows'
|
||
run: node config/scripts/diagnostics/runtime-lifecycle/windows-daemon-workspace-close-repro.mjs
|
||
linux:
|
||
if: github.event_name != 'pull_request'
|
||
runs-on: ubuntu-22.04
|
||
timeout-minutes: 180
|
||
env:
|
||
ORCA_COMPUTER_E2E: '1'
|
||
ACCESSIBILITY_ENABLED: '1'
|
||
steps:
|
||
- uses: actions/checkout@v6
|
||
with:
|
||
persist-credentials: false
|
||
- run: sudo apt-get update && sudo apt-get install -y build-essential python3 python3-gi gir1.2-atspi-2.0 gedit at-spi2-core xvfb xclip xdotool
|
||
- uses: ./.github/actions/install-node-dependencies
|
||
with:
|
||
native-runtime: electron
|
||
- run: pnpm verify:computer-native
|
||
- run: pnpm build:cli
|
||
- run: pnpm run build:electron-vite:parallel
|
||
- run: xvfb-run --auto-servernum dbus-run-session -- pnpm test:e2e:computer --reporter=verbose tests/e2e/computer-linux.e2e.ts
|
||
|
||
windows:
|
||
if: github.event_name != 'pull_request'
|
||
runs-on: windows-latest
|
||
timeout-minutes: 180
|
||
env:
|
||
ORCA_COMPUTER_E2E: '1'
|
||
steps:
|
||
- uses: actions/checkout@v6
|
||
with:
|
||
persist-credentials: false
|
||
- uses: ./.github/actions/install-node-dependencies
|
||
with:
|
||
native-runtime: electron
|
||
- run: pnpm verify:computer-native
|
||
- run: pnpm build:cli
|
||
- run: pnpm run build:electron-vite:parallel
|
||
- run: pnpm test:e2e:computer --reporter=verbose tests/e2e/computer-windows.e2e.ts tests/e2e/computer-windows-store.e2e.ts
|