test(e2e): Playwright journey suite on the stock React app as the UI oracle
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- playwright, react, rust, typescript
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Rust
- Étoiles
- 0
- Forks
- 0
- Merge moyen
- 1 h 35 min
- PR mergées (30 j)
- 67
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aRustyDev/thrust
-
area:process prio:p1 type:security
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Les mainteneurs répondent en général sous 1 jour
-
area:process bug prio:p1
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
Les mainteneurs répondent en général sous 1 jour
-
area:process prio:p1
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
Les mainteneurs répondent en général sous 1 jour
-
area:process prio:p1
Difficulté 4/5 1-2 jours Accessibilité débutants 55/100
Les mainteneurs répondent en général sous 1 jour
-
area:process prio:p1
Difficulté 4/5 3-5 jours Accessibilité débutants 56/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de aRustyDev/thrust
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Clean master build fails in zune-jpeg error conversion and zero-IV array construction (patch)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
CakeRepository/agentshangout#995 ·
-
area:frontend kind:bug priority:p3 ready
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour