Files
orca/.github/workflows/computer-e2e.yml
T
Kelvin Amoaba c794f75e4e fix(computer-use): use UI Automation for Windows scroll, expand and slider actions (#41429)
* fix(computer-use): scroll, expand and set sliders on Windows without raising the window

* fix(computer-use): wait for Windows scroll and slider writes to settle before verifying

* fix(computer-use): reject NaN for Windows slider set-value

* test(computer-use): wait on the Windows fixture state with vi.waitFor and a schema

* test(computer-use): check activation per action against a holder window in the Windows fixture

* test(computer-use): log fixture window events for activation failures

* fix(computer-use): report foreground when a Windows app raises itself for a UI Automation action

WPF activates its own window for Scroll, ExpandCollapse, RangeValue and SelectionItem calls from any UIA client, so the runtime now compares the foreground window before and after a pattern action instead of assuming background. The Windows e2e checks delivery against the fixture's own activation count, with a holder window in another process.

* test(computer-use): skip an unstarted holder when closing the Windows fixture

* fix(computer-use): bound Windows pattern scroll paging and tighten slider read-back

* fix(computer-use): cap Windows slider read-back tolerance and run the UIA e2e only on CI
2026-11-12 23:17:10 +00:00

157 lines
7.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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/responses/rpc-response.ts'
- 'src/main/runtime/rpc/methods/computer/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/computer-windows-background.e2e.ts'
- 'tests/e2e/helpers/windows-semantic-controls-fixture.*'
- '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-transport/sidecar-client.test.ts
src/main/computer/macos-native/macos-native-provider-client.test.ts
src/main/providers/windows-shell-preflight-runtime.windows.test.ts
src/main/computer/desktop-script/actions/desktop-script-provider-actions.test.ts
src/cli/output/command-result-output.test.ts
src/cli/computer/computer-state-formatting.test.ts
src/cli/index.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 tests/e2e/computer-windows-background.e2e.ts