Stabilize ReadCursor E2E pipeline across local and GitHub Actions#1
Draft
RupanPrasai wants to merge 3 commits intomainfrom
Draft
Stabilize ReadCursor E2E pipeline across local and GitHub Actions#1RupanPrasai wants to merge 3 commits intomainfrom
RupanPrasai wants to merge 3 commits intomainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes the current E2E regressions by hardening Chrome session startup, removing brittle extension-id scraping, and adding a reliable MV3 service-worker handshake before E2E injection.
What changed
1) CI/session stability for WDIO + Chrome
client/tests/e2e/config/wdio.browser.conf.tsto:--no-sandbox,--disable-dev-shm-usage,--disable-gpu,--headless=newin CI).maxInstances: 1) to avoid profile contention.--user-data-dirper run.tests/e2e/.tmp/wdio-logsfor artifact collection.2) Deterministic extension ID (no
chrome://extensionsscraping)client/chrome-extension/manifest.ts:keyis set only for E2E builds (version_namecontains-e2e).tabspermission is added only in E2E builds.client/tests/e2e/utils/extension-path.ts:chrome-extension://<deterministic-id>directly from the computed id passed by WDIO.chrome://extensionsDOM scraping logic.keyand wire it intobrowser.getExtensionPath().3) Reliable MV3 service-worker wake/handshake
E2E_PINGmessage inclient/chrome-extension/src/background/index.ts.waitForE2EBackgroundReady()retry/backoff handshake inclient/tests/e2e/helpers/readcursor.tsand run it beforeRC_E2E_INJECT.4) GitHub Actions E2E workflow
.github/workflows/e2e.yml:cross-env CLI_CEB_E2E=true pnpm zip).tests/e2e/.tmp/**,dist-zip/*.zip).Why this fixes the failures
panel-controls.test.tsextension path breakage: removed name-based scraping entirely; extension URL is deterministic via E2E key.viewport-rebuild.test.tsreceiving end does not exist: test harness now waits until background SW responds before sending inject trigger.Validation
pnpmbootstrap failed in this environment due network/proxy restrictions while Corepack tried downloadingpnpm@10.11.0.Codex Task