Skip to content

Commit 94ced6b

Browse files
AztecBotaztec-bot
authored andcommitted
chore: add writing-e2e-tests skill (#24597)
Adds `yarn-project/.claude/skills/writing-e2e-tests/SKILL.md`: a skill that gives an agent everything it needs to place, structure, and write a robust e2e test with little guidance. Written against the v5-next e2e layout (category directories with per-category READMEs and context classes). ## What it covers - **Step 0 decision ladder**: unit test → new expectation in an existing test → new `it` in an existing suite → new file on an existing context/harness → new standalone test. - **Where to place the test**: recap of the category directories (`automine/` via `AutomineTestContext`, `single-node/` via `setupWithProver`/`setupBlockProducer`, `multi-node/` via `MultiNodeTestContext` on the mock-gossip bus, `p2p/` via `P2PNetworkTest` on real libp2p, plus `composed/`, `infra/`, `spartan/`, `bench/`), the multi-node-vs-p2p decision rule, pointers to the per-category READMEs as the authoritative reference, file naming (`describe` matches path, header comment), automatic CI registration through `bootstrap.sh` globs, `.parallel.test.ts` semantics, and jest/bash timeout sync. - **Setup reuse**: the three layers (category contexts → domain harnesses → root `SetupOptions`), the standard suite file shape, one-environment-per-file, preset spread order, guarded teardown. - **Readability**: intent-only test bodies, the named-waiter surface (`fixtures/wait_helpers.ts`, context waiters, `ChainMonitor`), shared helpers and co-located `*_test_helpers.ts`, simulators with `afterEach` checks, shared error constants. - **Speed**: themes distilled from the recent `test(e2e)`/`perf(e2e)`/`chore(e2e)` speedup PRs and their tracking issues — avoid unneeded setup, genesis seeding over setup txs, `BatchCall` batching over `Promise.all` overlap (with the PXE-serialization caveat), warping dead waits with `markProvenAndWarp`/`warpWithSequencersPaused` ("an honest wait beats a flaky warp"), named timing profiles over ad-hoc cadences, and measuring with the `testSpan` instrumentation + `track-e2e-times` skill before optimizing. - **Flakiness**: twelve golden rules synthesized from six months of deflake PRs and the accumulated flaky-test gotchas (poll-don't-sleep via named waiters, receipt-anchored assertions, mined ≠ checkpointed ≠ proven, `syncChainTip` tag awareness, pipelining timing margins + `findSlotsWithProposers`, invariant-not-exact-value assertions, L1 account/nonce and port hygiene, freeze-L1-across-restarts, gossip-mesh readiness via `runGossipScenario`, fee padding, determinism, honest timeouts), plus `deflaker.sh` validation and `.test_patterns.yml` as a last resort. - Final pre-ship checklist. All helper/API names cited were verified to exist on `merge-train/spartan-v5` (`AutomineTestContext.setup`, `setupWithProver`/`setupBlockProducer`, `MOCK_GOSSIP_MULTI_VALIDATOR_OPTS`, `wait_helpers.ts` waiters, `warpWithSequencersPaused`, `markProvenAndWarp`, `testSpan`/`TEST_TIMING_FILE`, `runGossipScenario`, `waitForP2PMeshConnectivity`, `findSlotsWithProposers`, `getPaddedMaxFeesPerGas`, etc.). Genesis-prefill techniques that only exist in still-open speedup PRs are described as themes to look for rather than as concrete APIs. (cherry picked from commit 4c2b6d8)
1 parent b8cf446 commit 94ced6b

1 file changed

Lines changed: 327 additions & 0 deletions

File tree

  • yarn-project/.claude/skills/writing-e2e-tests

0 commit comments

Comments
 (0)