test(e2e): Playwright journey suite on the stock React app as the UI oracle
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- playwright, react, rust, typescript
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- Rust
- Estrelas
- 0
- Forks
- 0
- Merge médio
- 1h 35min
- PRs com merge (30d)
- 67
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de aRustyDev/thrust
-
area:process prio:p1 type:security
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
Mantenedores costumam responder em até 1 dia
-
area:process bug prio:p1
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 38/100
Mantenedores costumam responder em até 1 dia
-
area:process prio:p1
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
Mantenedores costumam responder em até 1 dia
-
area:process prio:p1
Dificuldade 4/5 1-2 dias Facilidade para iniciantes 55/100
Mantenedores costumam responder em até 1 dia
-
area:process prio:p1
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 56/100
Mantenedores costumam responder em até 1 dia
Todas as issues de aRustyDev/thrust
Issues semelhantes
-
bug priority: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
storytold/photocraft#12706 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
IngvarConsulting/unica#2822 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
Clean master build fails in zune-jpeg error conversion and zero-IV array construction (patch)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100