test(e2e): cover SSH user journeys on an orcad-managed host (#27323)

* test(e2e): cover SSH terminal and workspace journeys on a managed orcad host

* test(e2e): port the provisioned-root recipe journey; read ports from the host scan

* test(e2e): fix the provisioned-root spec's catalog refresh call

* test(e2e): wait for the shell prompt, open file links directly, and mark forward restore fixme

* test(e2e): record launches for teardown, match the prompt robustly, park the link test

* test(ci): list the journeys job in the workflow permission matrix

* test(e2e): run the terminal image-link journey again

* test(e2e): park the external-path link journey on its product gap

---------

Co-authored-by: m4air <m4air@Mac.localdomain>
This commit is contained in:
OrcaWin
2026-10-10 18:07:50 -07:00
committed by GitHub
co-authored by m4air
parent 43fbd2389f
commit db309a5777
11 changed files with 977 additions and 7 deletions
+52 -1
View File
@@ -363,7 +363,10 @@ jobs:
. != "tests/e2e/ssh-orcad-explorer-watch-recovery.spec.ts" and
. != "tests/e2e/ssh-orcad-explorer-selected-host.spec.ts" and
. != "tests/e2e/ssh-orcad-browser-drop-owner.spec.ts" and
. != "tests/e2e/ssh-orcad-terminal-root-owner.spec.ts"
. != "tests/e2e/ssh-orcad-terminal-root-owner.spec.ts" and
. != "tests/e2e/ssh-orcad-terminal-journeys.spec.ts" and
. != "tests/e2e/ssh-orcad-workspace-tools.spec.ts" and
. != "tests/e2e/ssh-orcad-vm-provisioned-root.spec.ts"
)' <<<"$TEST_FILES_JSON" > "$RUNNER_TEMP/general-e2e-specs"
fi
mapfile -t TEST_FILES < "$RUNNER_TEMP/general-e2e-specs"
@@ -642,6 +645,54 @@ jobs:
retention-days: 7
if-no-files-found: ignore
# SSH user journeys (terminal reconnect/restore/faults, Quick Open, ports, links, agent status) on a
# Docker host served by managed orcad. Its own runner so the convert lane keeps its time budget.
orcad-journeys-docker:
name: ssh journeys on managed orcad (Docker)
needs: [build, prepare-native-cache]
if: inputs.test_files == '' || contains(inputs.test_files, 'tests/e2e/ssh-orcad-terminal-journeys.spec.ts') || contains(inputs.test_files, 'tests/e2e/ssh-orcad-workspace-tools.spec.ts') || contains(inputs.test_files, 'tests/e2e/ssh-orcad-vm-provisioned-root.spec.ts')
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.ref || github.ref }}
persist-credentials: false
- name: Install headless tools
run: sudo apt-get update && sudo apt-get install -y build-essential ripgrep xvfb openbox x11-utils
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: electron
- uses: actions/download-artifact@v8
with:
name: e2e-build-out
path: out/
- name: Build the linux-x64-glibc orcad template
run: |
pnpm build:orcad-prebuilds
pnpm build:orcad-prebuilds --require-slots linux-x64-glibc
pnpm build:orcad
node config/scripts/build-orcad-template.mjs --targets linux-x64-glibc
mv out/orcad-template "$RUNNER_TEMP/orcad-convert-template"
- name: Run SSH journeys on a managed Docker host
env:
SKIP_BUILD: '1'
ORCA_E2E_SSH_DOCKER: '1'
ORCA_E2E_ORCAD_CONVERT_HOST: docker
ORCA_E2E_FORWARD_APP_LOGS: '1'
run: |
export ORCA_E2E_ORCAD_CONVERT_TEMPLATE="$RUNNER_TEMP/orcad-convert-template"
xvfb-run --auto-servernum bash .github/scripts/e2e-with-window-manager.sh pnpm exec playwright test --config tests/playwright.config.ts tests/e2e/ssh-orcad-terminal-journeys.spec.ts tests/e2e/ssh-orcad-workspace-tools.spec.ts tests/e2e/ssh-orcad-vm-provisioned-root.spec.ts --project=electron-headless --workers=1
- uses: actions/upload-artifact@v7
if: failure()
with:
name: orcad-journeys-docker-traces
path: test-results/
retention-days: 7
if-no-files-found: ignore
# D7 on Windows: both hosts share <userData>\daemon and so one daemon pipe. Built here rather than
# from the Linux e2e build because the slot, template and addons are Windows-native. Also runs the
# missing-AppData startup check, which needs the same Windows e2e build.