Skip to content

Build & E2E is red on main: the console smoke test finds neither app shell nor loading screen #4086

Description

@yinlianghui

Found while verifying PR #4084 (issue #4069). Filed unassigned — not caused by
that PR, and outside its scope, but it turns every open PR's Build & E2E gate
red, so it is reported rather than absorbed.

What fails

[chromium] › e2e/smoke.spec.ts:78:3 › Console App – Smoke › should show the app shell or loading screen
  1 failed
  23 skipped
  9 passed (1.8m)
Error: expect(locator).toBeVisible() failed
Locator: locator('nav').first().or(getByText(/Initializing|Loading|Connecting/i).first())
Expected: visible
Error: element(s) not found
  - Test timeout of 30000ms exceeded.
  at e2e/smoke.spec.ts:88:7

Neither the app shell's nav nor the loading placeholder ever appears, through
all three Playwright retries — the console app does not reach a rendered state at
all, rather than rendering something unexpected.

It is on main, not on a branch

The identical failure — same job, same spec line, same
1 failed / 23 skipped / 9 passed tally — appears on main itself:

Run Branch / commit Build & E2E
2026-08-10T04:55Z main success
2026-08-10T05:28Z main success
2026-08-10T06:15Z main @ 9154d9e90 (run 31361301040) failure
2026-08-10T07:30Z PR #4084, branched off 9154d9e90 (job 93384727221) failure

9154d9e90 is the merge commit of #4081 (fix(plugin-grid): object-grid publishes the filter key it reads — filter, singular). It is the first run where
this goes red, and the two runs before it are green, so that merge is the prime
suspect — though the smoke test only proves the app never boots, not why, so the
cause is worth confirming rather than assuming.

On PR #4084 that job was the only red of twenty checks; Lint, Type Check and all
four test shards were green.

Why it matters beyond one PR

Build & E2E is not informational (Live E2E is the informational one, and it
passed). While this is red on main, every PR branched from it inherits a red
gate, which is exactly the condition that trains reviewers to merge past reds —
and a genuine regression then rides main's merge ref into every later PR's run
with nothing distinguishing it from the known red.

Suggested first step

Pull the failing run's error-context.md / screenshot attachment (the job
uploads none — No files were found with the provided path: playwright-report/,
which is worth fixing on its own so the artifact survives), or run
pnpm exec playwright test e2e/smoke.spec.ts locally against main and read the
browser console at boot.


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions