Skip to content

[CI][E2E] webkit 'WebKit encountered an internal error' on page.goto flakes the cross-browser lane #2763

Description

@Chris0Jeky

What happens

E2E Cross-Browser Matrix / E2E (webkit) fails intermittently on tests/e2e/cross-browser.spec.ts:46 (@cross-browser workspace navigation between views):

Error: page.goto: WebKit encountered an internal error
Call log:
  - navigating to "http://localhost:5173/workspace/home", waiting until "load"

> 60 |   await page.goto('/workspace/home')

The run reports 1 failed / 4 passed. This is a browser-process internal error, not a product assertion failure — the page never loads for Playwright to assert against.

Evidence that it is nondeterministic, not a regression

Observed on branch issue-1363/baseline-census (PR #2753) across three consecutive heads:

head what the commit changed webkit
0dd2e9e7c deleted PNG baseline files only failure
a391a95a9 one CSS rule in tests/visual/visual-test-helpers.ts + two docs success
d01fc0ec1 re-added PNG baseline files only failure

None of those commits touches tests/e2e/cross-browser.spec.ts, any frontend or backend source, or anything that suite imports — visual-test-helpers.ts is imported only by tests/visual/**. So the outcome flipped fail → pass → fail with no causal change on that code path.

Conclusive check: gh run rerun 34053635176 --failed re-ran the job against the identical tree and it passed. Same SHA, opposite result.

Why it was not caught earlier

The job is gated on the testing label (ci-extended.yml), so it runs on very few PRs. Recent CI Extended "success" rows on other branches are the job being skipped, not passing — there is no cross-branch baseline for how often this fires.

Suggested next steps

  • Decide whether to give this spec a bounded Playwright retries allowance in the cross-browser project specifically, or to keep it fail-first and accept re-runs. A blanket retry would hide real webkit regressions, which is why this is filed rather than fixed.
  • Consider whether page.goto after in-app navigation (line 60 is a return to Home after navigating away) is worth replacing with an in-app navigation assertion, since the full document reload is what crashes.
  • Worth measuring the real rate before spending on it. The label gate means the signal is sparse.

Merge impact

None today. CI Extended is explicitly non-blocking ("does not gate PR merges" — its own header), and main's branch protection requires only the three security-scan contexts. Recorded so the next person who sees a red webkit leg on a testing-labelled PR has the history rather than re-deriving it.

Refs #2753

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority IVLater maturity/deepening; revisited at horizon planning.ciCI/CD pipeline, workflow, and build infrastructure changes.tech-debtDebt cleanup or deferred engineering quality work with limited product-surface change.testingTest coverage, harnesses, regression prevention, and verification pipeline work.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions