Skip to content

fix(e2e): read the visible workspace shell while a streamed page arrives - #8951

Merged
waleedlatif1 merged 2 commits into
stagingfrom
fix/mobile-e2e-visible-shell
Oct 13, 2026
Merged

waleedlatif1 merged 2 commits into
stagingfrom
fix/mobile-e2e-visible-shell

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

Since #8948 moved mobile e2e to a production build, e2e (mobile, webkit) has failed on every run: staging and every PR since 23:54 UTC. Different checks fail each time (phone chat/resources, phone and tablet workflow controls) with the same error:

strict mode violation: locator('.workspace-content-shell') resolved to 2 elements:
  1) <div class="workspace-content-shell …">…</div>
  2) <div class="workspace-content-shell …">…</div> aka locator('[id="S:0"] > … > .workspace-content-shell')
… unexpected value "hidden"

The second element sits inside <div hidden id="S:0">. That's where React's streaming SSR holds a finished Suspense segment until its inline script swaps it in. visit() returns at the navigation commit, so on the production build WebKit can query mid-stream and see both copies of the shell. It's transient by design, not an app bug: the visible shell is correct, and React swaps the segment in moments later.

  • contentShell(page) scopes the locator to the visible shell (filter({ visible: true }), Playwright 1.61) at all four call sites. Two visible shells would still fail strict mode, so nothing is weakened.
  • Reverts ci(e2e): temporarily skip tablet workflow-controls mobile check #8950's temporary skip of tablet/workflow controls, which failed from the same cause. The phone chat and phone workflow checks were failing too and weren't covered by that skip.

Test plan

  • CI e2e (mobile, webkit) and e2e (mobile, chromium) green, including the restored tablet check

On the production build, a query made mid-stream can also match the next
segment's shell that React parks in a hidden <div id="S:n"> until it swaps it
in, so the class-only locator hit a strict-mode violation in WebKit. Scope the
shell to the visible element, and restore the tablet workflow-controls check
#8950 skipped for the same cause.
@vercel

vercel Bot commented Oct 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
docs Skipped Skipped Oct 13, 2026 2:05am UTC

Request Review

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

Heads up: you’ve reached your flex budget. Increase your flex budget or wait for usage to reset.

Turn on auto-fix | Re-trigger cubic

@greptile-apps

greptile-apps Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Low impact] The PR appears safe to merge.

Summary

The mobile E2E checks now use contentShell() to select the visible workspace shell while a streamed page arrives.

  • Mobile workspace checks select the visible shell during streaming.
  • Tablets run the workflow controls check alongside phones.

Reviews (1) · Last reviewed commit: "fix(e2e): read the visible workspace she..." · Reviewed by Greptile

@waleedlatif1
waleedlatif1 merged commit 0d0bab6 into staging Oct 13, 2026
50 checks passed
@waleedlatif1
waleedlatif1 deleted the fix/mobile-e2e-visible-shell branch October 13, 2026 02:49

This branch was previously deployed

1 inactive deployment
Preview — 24fa970c Deployed Oct 13, 2026 by vercel[bot]
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