test(e2e): Playwright journey suite on the stock React app as the UI oracle
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- playwright, react, rust, typescript
Direzione di ricerca
Start with ADR-0123 and the existing contract runner in scripts/contract.sh, then read the oracle setup in research/0005-oracle-harness.md and the target journey in the issue. Define the M1 journey in e2e/ and run scripts/e2e.sh plane-oracle and scripts/e2e.sh worker-cf. Done means both runs pass, the target and journey-count guards work, the traceability matrix lists the journey, and its oracle HAR is committed.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
TRACEABILITY's parity matrix defines "functionally equivalent UI" as the adopted React app passing a Playwright smoke set over the P0 journeys. The set is still _TBD_ (.agents/plans/contrail/TRACEABILITY.md:122-126, :144). ADR-0123 names Playwright for e2e (adrs/test/standards/0123-test-standards-and-tooling.md:30), but no e2e package or profile exists (docs/src/testing/techniques/app-and-e2e.md:26-27, :52-53), and the defect matrix lists UI regression as uncovered (docs/src/testing/defect-matrix.md:27). Spike 0009's dynamic half has not run: recording the React app against the pinned oracle as HAR, and the replay harness (spikes/0009-compat-plane-inventory.md:19-20, :38). The pinned oracle stack lives in the Plane fork (oracle/scripts/run-all.sh, snapshot restore with scripts/db-state.sh; research/0005 lines 52-55).
Problem
- FR-01: ADR-0013's Phase 2 gate depends on "oracle diff clean", but the oracle covers only
/api/v1(D-013;REVIEW-NOTES.md:80,:155). There is no UI oracle, so the gate cannot fire as written. The review moves the gate to "the daily-use release has held the SLO for 4 weeks and its Playwright journey suite is green". Journeys recorded on the screens in scope also fill the parity matrix (handoff A5.3). - M1 exits when the owner completes "sign in, create a workspace, project and work item, see it" on the production hostname through the stock React app (review §3). Nothing checks that journey today.
Proposal
- Add a Playwright suite in
e2e/: TypeScript,@playwright/testpinned in a lockfile, one spec per journey.scripts/e2e.sh <plane-oracle|worker-cf|url>runs it. The suite is opt-in like the contract scripts and never part of the default nextest loop (AGENTS.md rule 6). - Every journey runs twice: against the pinned Plane oracle stack (the UI oracle) and against Thrust. Green on Plane and red on Thrust is a parity defect. Red on Plane means the journey itself is wrong.
- The first journey is M1's: sign up, onboard, create a workspace, a project and a work item, and see the item in the list. #46 adds one journey per M2 screen, and later screens add theirs.
- Each oracle run saves a HAR per journey. Commit them as the input to spike 0009's replay harness.
- Copy the vacuity guards from
scripts/contract.sh:160-181and:245-249. The script checks it reached the intended target (the PlaneGET /api/instances/shape, or Thrust's/_info), and that the passed count equals the journey count. - Thrust runs on the Cloudflare set only (Q-0123.2, handoff A5.8 default); the native cell stays covered by the contract suite.
- In TRACEABILITY's parity matrix, list each journey with the screen it covers. Register the suite in the ADR-0006 non-Rust register as test tooling that no product crate imports.
- CI: start as a scheduled job. Add it to
gate's planned set after two weeks green.
Acceptance criteria
-
scripts/e2e.sh plane-oracleandscripts/e2e.sh worker-cfboth pass the M1 journey. The script exits non-zero when the passed count differs from the journey count. - Control: against a Thrust build whose work-item list (S47) returns an empty list, the M1 journey fails at "see it in the list".
- Control:
scripts/e2e.sh worker-cfwith its base URL pointed at the oracle stack fails the target guard. - TRACEABILITY's parity matrix has no
_TBD_, and it names each journey and its screen. - A HAR per journey from the oracle run is committed, and spike 0009 records its path.
- A scheduled CI workflow runs the suite against
worker-cf.
References
- Review: .agents/plans/contrail/reviews/2026-10-19-fable-architecture-review.md (FR-01; §3 M1, M2 and M4 rows)
.agents/plans/contrail/TRACEABILITY.md:122-126,:144;REVIEW-NOTES.md:79-80,:155- ADR-0020 (parity bar), ADR-0013 (round-29 note), ADR-0123, ADR-0122, ADR-0006 (register); DEVIATIONS D-013
- Q-0123.2, Q-R3, Q-0013.1, Q-0010.1
research/0005-oracle-harness.md(oracle stack, snapshot restore);spikes/0009-compat-plane-inventory.md(dynamic half)docs/src/testing/techniques/app-and-e2e.md:26-27,:52-53;docs/src/testing/defect-matrix.md:27;docs/src/testing/by-change.md:23scripts/contract.sh:160-181,:245-249(vacuity guards to mirror)
Blocked by: #44
Finding: FR-01
- Lingua principale
- Rust
- Stelle
- 0
- Fork
- 0
- Merge medio
- 1h 35m
- PR unite (30g)
- 67
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di aRustyDev/thrust
-
area:process prio:p1 type:security
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
-
area:process bug prio:p1
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
I maintainer di solito rispondono entro 1 giorno
-
area:process prio:p1
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
area:process prio:p1
Difficoltà 4/5 1-2 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
area:process prio:p1
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di aRustyDev/thrust
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Clean master build fails in zune-jpeg error conversion and zero-IV array construction (patch)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
CakeRepository/agentshangout#995 ·
-
area:frontend kind:bug priority:p3 ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno