Skip to content

test(e2e): bring nine stale full-suite specs in line with intended product changes - #30897

Merged
brennanb2025 merged 2 commits into
mainfrom
brennanb2025/fix-main-e2e
Oct 20, 2026
Merged

brennanb2025 merged 2 commits into
mainfrom
brennanb2025/fix-main-e2e

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 9 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​58 $\color{#cf222e}{\Huge{\mathbf{−}}}$​137 $\color{#cf222e}{\Huge{\mathbf{−}}}$​79
Prod 0 0 0 0

ELI5

Orca's daily full end-to-end test run on main has failed every day since at least 10-17. The repeat failures include stale expectations and fixture or timing problems. Most of them check behaviour the product changed on purpose: pull requests only run the end-to-end specs they touch, so nobody updated these specs. This PR brings nine of those specs in line with how the app works today.

What Changed

Nothing changes for users. Only tests change, each to match a product change that was made on purpose:

  • diff-word-wrap, large-markdown-preview: the editor header menu is now called "File actions" (Add Reveal in Finder to the file header menu #30129), and the tests now click it by that name.
  • terminal-attention: since fix(unread): a pane is read when it is on screen; closing a waiting tab clears its dot #28637, a bell on the tab you're looking at leaves no unread marker. The old "click or Escape clears it" tests now check that no marker appears. The test for a bell on a background tab is unchanged.
  • terminal-split-pane-paste-ownership: since Keep workspace file drops on the terminal's host #26830, a file dropped on a terminal must say which workspace and machine it came from. The test now sends that, as terminal-pane-title-strip-placement already does.
  • native-chat-ask-user-question-card: since feat(native-chat): number keys and auto-advance for questions #26288, picking an option on a single-choice question submits it on its own. The test no longer waits for a Submit button that isn't there.
  • layout-compat-old-phone-on-new-server: no longer in this PR. Main fixed the same baseline in test(e2e): the old-phone layout baseline lists customTitle on terminal rows #31127 while this was in review, so merging main took main's version.
  • landing-preflight-runtime-routing: since Detect installed GitHub CLI behind hung launchers #25183, the git and gh check re-reads the login shell's PATH, so emptying PATH no longer hides git. The test also points SHELL at a missing file.
  • github-created-issue-start-prefill: for the same reason (Detect installed GitHub CLI behind hung launchers #25183), a real gh on the CI runner now comes before the test's fake one, and creating the issue fails. The test now stubs the create-issue handler in the main process, as github-project-board already does. The test is about getting the issue URL into the Claude launch command, not about calling gh.
  • github-project-board: it has never passed on main. Playwright pressed the mouse on the card, then scrolled the target column into view, so the card moved out from under the mouse and no drag started. The test now scrolls the column into view before the drag.
  • native-chat-history-prepend-anchor: a timing race. The test recorded the reading position while scroll height was still changing. It now waits for scroll to settle first, using the same settle loop as the first test in that file.

Why

The goal is to fix each spec at its cause. Every product change above was intended, so the tests follow the product. Where a failure pointed at a real product bug, I didn't paper over it in the test, and it isn't in this PR:

  • settled-worker-tab-survives-restart (still red): after a restart, a hidden tab whose agent is still running isn't reconnected until the user opens it. Since fix(terminal): resume a relaunched workspace's sleeping agents only when shown #29459, a hidden tab asks main whether its session is still running before reconnecting, and that check only knows sessions this run of Orca started or reconnected to. So right after a restart, a session that's still running looks exited. This is being fixed in a follow-up PR.
  • paired-client-hosted-browser-markup (still red): taking the screenshot to draw on can hang with no timeout, and the Draw button stays pressed. Retrying in the test would hide that from users, so I left it.
  • markdown-review-selection-performance (still red): the "Add review note" button never appears after selecting text, and the cause isn't known yet. It needs a run with a renderer trace.

Eight other failing specs are already being repaired in #30115, so this PR leaves them alone.

Plan and review classification

Plan: update only stale test inputs, interactions and expected field inventories after checking their product-history causes; preserve the assertions for the behavior each test owns, and leave genuine product failures outside this PR. Validate the changed specs and the full PR workflow on the same head.

  • Small: zero changed production lines and zero production files; nine spec files and one test-only JSON baseline.
  • Outside risky areas: no shipped ownership, lifecycle, persistence, ordering, wire, process, authentication, orchestration, build or default behavior changes. The specs exercise existing behavior; the IPC replacement is confined to the test process and the phone baseline records an existing optional field.
  • Not a repeat: a per-file audit of main history from September 19 through October 19 found no earlier repair of these failure mechanisms or revert/incident in the touched paths. The earlier pagination repair in test(e2e): fix failures and improve stability #23480 changes a separate test from the hidden-update geometry repair here.
  • Local effect: test setup, interactions and assertions only. Light path confirmed by independent round-1 review; Electron QA is skipped because no changed code ships in the app.

Linked Issue

N/A (maintainer). Main's full E2E runs, for example https://github.com/stablyai/orca/actions/runs/39307965554

Visual Proof

N/A: this changes only test files, so nothing in the app changes.

Testing

  • I manually tested these changes locally
  • Automated tests added/updated, or explained why not below

The original ten specs ran on this branch through the E2E workflow's test_files option: all 18 tests passed at head d29a8a8bc543bd768fb726be4c358597f986174c in https://github.com/stablyai/orca/actions/runs/39333058522. After merging main, the nine remaining specs are re-running in https://github.com/stablyai/orca/actions/runs/39467113189

Coverage limits: issue creation is stubbed to test the returned URL reaching Claude, so this does not validate GitHub authentication or external issue creation. The question-card E2E checks resolution; exact selected-answer delivery is covered by existing unit contracts and was traced in source. The old-phone spec uses current transport with old capabilities; the released Android v0.0.52 reader was separately inspected for acceptance of the added field. This run is Linux evidence, not Windows QA.

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

The daily full E2E run on main fails these specs every time because the
product moved on and PR CI only runs specs a PR touches:
- editor header menu renamed to File actions (#30129)
- terminal attention: an on-screen bell leaves no unread marker (#28637)
- terminal file drops carry their source host (#26830)
- single-choice questions auto-submit (#26288)
- phone terminal rows carry customTitle (#30037)
- gh/git preflight re-reads the login shell PATH (#25183)
- board drag starts after the target column is in view
- chat history anchor read after scroll settles
@brennanb2025
brennanb2025 marked this pull request as ready for review October 19, 2026 22:54
@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3082626a-9e72-468c-9796-0f2d16b2cee6
📥 Commits

Reviewing files that changed from the base of the PR and between 1529b0f and d29a8a8.

📒 Files selected for processing: 10
  • tests/e2e/diff-word-wrap.spec.ts
  • tests/e2e/github-created-issue-start-prefill.spec.ts
  • tests/e2e/github-project-board.spec.ts
  • tests/e2e/landing-preflight-runtime-routing.spec.ts
  • tests/e2e/large-markdown-preview.spec.ts
  • tests/e2e/layout-compat-baselines.json
  • tests/e2e/native-chat-ask-user-question-card.spec.ts
  • tests/e2e/native-chat-history-prepend-anchor.spec.ts
  • tests/e2e/terminal-attention.spec.ts
  • tests/e2e/terminal-split-pane-paste-ownership.spec.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.

📝 Walkthrough

The E2E tests now use updated menu selectors, mock issue creation, scroll the board column into view, and reflect automatic submission for a single-select question. Other tests adjust missing-Git setup, wait for stable transcript scrolling, update terminal BEL assertions and simulated file-drop metadata, and add customTitle to a Linux layout baseline.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to d29a8

The updated E2E tests are ready to merge after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 9 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly and concisely describes the nine stale E2E specifications updated in this pull request.
Description check Passed The description is complete and consistent with the template. It explains the changes, reasons, testing, scope, visual-proof exception, linked-issue maintainer exception, and checklist status. The omi…
Full details: Description check

Explanation

The description is complete and consistent with the template. It explains the changes, reasons, testing, scope, visual-proof exception, linked-issue maintainer exception, and checklist status. The omitted Review, Notes, and AI Disclosure sections are non-critical here.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 9 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025

brennanb2025 commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor Author

Main's full E2E run repeatedly failed because several specs still used old controls, expected superseded behavior, or supplied fixtures that no longer reached the intended path. This PR updates nine spec files to test the current intended behavior. Nothing changes in the shipped app.

The light-path review completed in one independent adversarial round, followed by the readiness checklist and a dedicated performance and compatibility pass, with no proven PR-caused findings or source fixes. The final merge was checked narrowly against the reviewed commit: all nine spec files and their patches against main are identical to the reviewed versions. The phone baseline now matches main exactly and is no longer part of this PR. The classification remains path=light qa=none: zero production files or shipped-code changes, with the prior history and scope checks unchanged.

Background terminal attention remains covered; the deleted Escape test depended on an intentionally removed clearing mechanism. The issue test still checks that the created URL reaches the terminal command. Drag rollback, split-pane ownership, both-pane word wrapping, and the two-pixel scroll-restoration checks remain intact. No new defect was deferred.

Verification on 95e6695d5755cdefa6f27e1ed3c941a785d0241c:

  • The nine changed specs ran all 17 tests successfully in E2E run 39467113189. The run's checkout and exact test-file list were verified in its log.
  • The full PR Checks workflow, run 39467077883, is .github/workflows/pr.yml and completed successfully on this exact head, including the PR checks passed aggregate. All 30 jobs completed successfully or were skipped as applicable.
  • GitHub reports zero review threads, no conflicts, and mergeStateStatus: CLEAN; the PR is open and out of draft. Current main has no subsequent changes to these nine specs.

Limits and exclusions: external GitHub creation is stubbed; the question-card E2E checks resolution, while existing unit contracts and source tracing establish the selected-answer payload. This is Linux CI evidence, not live Windows QA. The three known red specs listed in the PR body remain unchanged and were not independently reproduced in this review. No local app or heavy checks were run for this merge verification.

For Brennan's review

No main/branch screenshots: this is a test-only light-path PR, so Electron QA is exempt. The three judgment points are:

…-e2e

# Conflicts:
#	tests/e2e/layout-compat-baselines.json
@brennanb2025 brennanb2025 changed the title test(e2e): bring ten stale full-suite specs in line with intended product changes test(e2e): bring nine stale full-suite specs in line with intended product changes Oct 20, 2026
@brennanb2025
brennanb2025 merged commit 2fc2f92 into main Oct 20, 2026
46 checks passed
@brennanb2025
brennanb2025 deleted the brennanb2025/fix-main-e2e branch October 20, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant