Skip to content

ci(cockpit-e2e): matrix-per-cap + submitAndWaitForResponse helper (Task #14)#469

Merged
blove merged 4 commits into
mainfrom
claude/cockpit-e2e-matrix
May 19, 2026
Merged

ci(cockpit-e2e): matrix-per-cap + submitAndWaitForResponse helper (Task #14)#469
blove merged 4 commits into
mainfrom
claude/cockpit-e2e-matrix

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented May 19, 2026

Summary

  • Replaces the sequential bash for-loop in the `cockpit-e2e` CI job with a GitHub Actions matrix (one runner per cap, `max-parallel: 5`, `fail-fast: false`).
  • Adds `cockpit-e2e-summary` job with `name: "Cockpit — e2e"` to preserve the branch-protection required-check name. No admin action needed to update branch protection settings.
  • Drops the stale 5s `sleep` workaround (pre-per-cap-migration artifact for port-8123 collisions; each cap now binds its own `pythonPort`).
  • Ships `submitAndWaitForResponse` helper in `libs/e2e-harness/src/` — waits on `chat-message[data-role="assistant"][data-streaming="false"]` instead of the Stop-generating button. Coexists with `sendPromptAndWait`; existing 4 cap e2es continue to use the original.
  • Per-cap trace artifact names (`cockpit-e2e-trace-`) — no more clobbering on concurrent matrix uploads.

Wins

  • Wall-time for cockpit-e2e expected to drop from ~13 min sequential → ~5-6 min (`max-parallel: 5`).
  • Per-cap failure isolation in the GitHub UI.
  • Adding a new aimock cap is now a one-line matrix entry.
  • Future caps using raw primitives (where Stop-generating button observability fails for fast aimock paths) have a durable helper ready.

Files

  • `.github/workflows/ci.yml` — replace `cockpit-e2e` job + add `cockpit-e2e-summary` job.
  • `libs/e2e-harness/src/test-helpers.ts` — add `submitAndWaitForResponse`.
  • `libs/e2e-harness/src/index.ts` — re-export the new helper.

Test plan

  • CI `Cockpit — e2e` summary check passes (matrix expansions × 4 all pass).
  • Each matrix expansion shows in the Checks tab with `Cockpit — e2e (cockpit--angular)` name.
  • Per-cap trace artifact names visible if any failure.
  • Wall-time materially lower than current sequential.
  • No regression on `Cockpit — build / test`, `Cockpit — build all examples`, smoke jobs.
  • Reviewer: confirm branch protection still tracks `Cockpit — e2e` (summary job preserves the name).

Follow-ups (out of scope)

🤖 Generated with Claude Code

blove and others added 3 commits May 19, 2026 11:15
Task #14 in the pre-batching cleanup arc. Replaces the sequential bash
for-loop in the cockpit-e2e job with a GitHub matrix (one runner per
cap, max-parallel=5, fail-fast=false, summary job preserving the
"Cockpit — e2e" required-check name). Also ships
submitAndWaitForResponse helper in libs/e2e-harness/src/ — addresses
the leaky sendPromptAndWait pattern surfaced by PR #462 (loading-state
observability fails for fast-streaming aimock paths).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5-task plan: add submitAndWaitForResponse to harness, export from barrel,
verify harness tests, replace cockpit-e2e job with matrix + summary,
commit/push/PR. CI is the verification gate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the sequential bash for-loop in the cockpit-e2e job with a
GitHub Actions matrix strategy (one runner per cap, max-parallel=5,
fail-fast=false). Adds a cockpit-e2e-summary job that preserves the
"Cockpit — e2e" required-check name for branch protection.

Drops the stale 5s sleep workaround (was a pre-per-cap-migration
artifact for port 8123 collisions; each cap now binds its own pythonPort
and matrix runners are fully isolated anyway).

Ships submitAndWaitForResponse in libs/e2e-harness/src/ — waits directly
on chat-message[data-role="assistant"][data-streaming="false"] instead
of the Stop-generating button. Addresses the leaky-helper finding from
PR #462: loading-state observability fails for fast-streaming aimock
paths regardless of cap UI shape.

Unblocks the Task #4 c-messages aimock re-pilot (and the 7-cap chat
batch follow-up) by giving them a clean matrix entry pattern + a helper
that doesn't depend on UI streaming state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 19, 2026

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

Project Deployment Actions Updated (UTC)
threadplane Ready Ready Preview, Comment May 19, 2026 6:37pm

Request Review

The wiring spec previously required a literal `working-directory:
cockpit/<cap>/python` step in ci.yml. After the matrix migration in
this PR, that path moves into the matrix entry (`python: cockpit/...`)
and the working-directory is templated as `${{ matrix.cap.python }}`.

Spec now accepts either form, so matrix-templated jobs and any
remaining literal-step jobs both pass the cross-check.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@blove blove merged commit 9b6d17c into main May 19, 2026
20 checks passed
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