LearnNewsExamplesServices
Frontmatter
id15368
titletest/playwright/component/** runs in no CI workflow — mounted component witnesses are green-by-absence on every PR
stateClosed
labels
bugaitesting
assigneesneo-opus-vega
createdAtJul 17, 2026, 5:49 PM
updatedAtJul 17, 2026, 7:24 PM
githubUrlhttps://github.com/neomjs/neo/issues/15368
authorneo-opus-vega
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 17, 2026, 7:24 PM

test/playwright/component/** runs in no CI workflow — mounted component witnesses are green-by-absence on every PR

Closed Backlog/active-chunk-7 bugaitesting
neo-opus-vega
neo-opus-vega commented on Jul 17, 2026, 5:49 PM

Context

Found during the PR #15327 verification chain and then verified independently of it (the finding survives the instrument failure documented on #15365): no GitHub workflow executes playwright.config.component.mjs.

The Problem

  • Fresh check run on PR #15327 (a src/button + component-test PR, head dfcf0a1fd0): job set is CodeQL / integration-unified / lint / unit / Analyze / Classify test scope / lint-pr-body — no component job.
  • grep -rln "playwright.config.component|component/" .github/workflows/zero hits.

So every mounted component witness under test/playwright/component/** (button disabled semantics, viewport specs, …) is local-only evidence. A PR whose component tests fail ships green checks — that is how PR #15327's witnesses went unexecuted by CI while its checks stayed green (the tests themselves are correct and pass locally on a correct server; see #15365's correction trail).

Compounding trap (sibling, distinct): playwright.config.component.mjs hard-codes url: http://localhost:8080 + reuseExistingServer: !process.env.CI — locally it silently reuses ANY server on :8080, including one serving a different checkout. That produced a full false-negative probe chain today (#15365). The server-reuse leaf is @neo-fable-clio's incoming tooling ticket; this ticket owns only the CI-absence half.

The Architectural Reality

.github/workflows/ runs unit / e2e / integration configs via the test-scope classifier; the component config predates or escaped that wiring. reuseExistingServer: !CI implies the config was WRITTEN expecting CI execution — the wiring just never landed.

The Fix

Wire playwright.config.component.mjs into the existing test workflow as a classified shard (same pattern as unit/e2e): run on PRs whose diff touches src/** or test/playwright/component/**. Port discipline per the e2e config precedent (NEO_E2E_PORT-style env or per-process free-port resolution) so CI runners don't collide.

Acceptance Criteria

  • A PR touching src/button/** shows a component-shard check that actually executes test/playwright/component/**.
  • The shard fails red on a deliberately broken mounted witness (one-off falsification during wiring, not committed).
  • Classifier skip-paths documented (docs-only PRs may skip, same as unit).

Out of Scope

  • The local reuseExistingServer/:8080 foreign-server trap — @neo-fable-clio's tooling leaf.
  • Back-filling witnesses for past PRs; #15327's own tests land with its merge.

Related

PR #15327 (the PR whose witnesses CI never ran) · #15365 (the instrument-failure trail that surfaced this; closing with correction) · #15362 (today's sibling: shard-skip signal-swallower on dev pushes).

Live latest-open sweep: checked latest open at 2026-07-17T15:49Z (latest #15364); no equivalent (CI/workflow tickets present are #15353 CodeQL-extractor and #15362 parity — different). A2A in-flight: Clio's announced tooling ticket covers the server-reuse trap, explicitly not this CI-absence gap.

Decision Record impact: none.

Origin Session ID: 2dcbf336-4338-4009-82f3-79f1b1d151f1

Retrieval Hint: "component playwright config no CI workflow shard green-by-absence mounted witnesses"

tobiu referenced in commit a6c16f2 - "feat(ci): wire the components suite into the test workflow (#15368) (#15373) on Jul 17, 2026, 7:24 PM
tobiu closed this issue on Jul 17, 2026, 7:24 PM