Skip to content

test(e2e): migrate more e2e suites to proposer pipelining#23482

Merged
PhilWindle merged 6 commits into
merge-train/spartanfrom
palla/e2e-pipelining-stragglers
May 22, 2026
Merged

test(e2e): migrate more e2e suites to proposer pipelining#23482
PhilWindle merged 6 commits into
merge-train/spartanfrom
palla/e2e-pipelining-stragglers

Conversation

@spalladino
Copy link
Copy Markdown
Contributor

@spalladino spalladino commented May 21, 2026

Migrates more e2e suites onto PIPELINING_SETUP_OPTS (or inline enableProposerPipelining: true for tests that build their own config). Excludes docker-compose-only composed tests (e2e_cheat_codes, e2e_local_network_example, e2e_token_bridge_tutorial_test) and integration_proof_verification for now.

Migrates the §8a "genuinely un-migrated" e2e suites onto PIPELINING_SETUP_OPTS
where the test actually enables pipelining. Excludes docker-compose-only
composed tests (e2e_cheat_codes, e2e_local_network_example,
e2e_token_bridge_tutorial_test) and integration_proof_verification, which
either need separate compose env-var work or have no sequencer/prover
pipelining surface.

Suites migrated:
- e2e_cross_chain_messaging: l1_to_l2, l2_to_l1, token_bridge_{failure_cases,
  private, public}; CrossChainMessagingTest.setup(opts) added.
- e2e_fees: account_init, fee_juice_payments, public_payments,
  sponsored_payments via FeesTest.setup(opts).
- e2e_prover: client, full; FullProverTest.setup(opts) added; TIMEOUT
  branches on REAL_PROOFS (15min fake, 45min real).
- e2e_p2p: fee_asset_price_oracle_gossip, reqresp, reqresp_no_handshake
  (inline enableProposerPipelining + inboxLag + slot offset on
  getProposerIndexes).
- composed: e2e_persistence (PIPELINING_SETUP_OPTS into all 7 setup()
  calls), uniswap_trade_on_l1_from_l2 (via shared/uniswap_l1_l2.ts).
- composed/web3signer/e2e_multi_validator_node_key_store: opted into
  PIPELINING_SETUP_OPTS with aztecEpochDuration=8 and
  aztecProofSubmissionEpochs=4 to keep the proven-wait under the 10min
  jest budget; B2 fix is already on merge-train/spartan via the squashed
  PR #23165 (a7a0d8c).
- Standalone: e2e_fee_asset_price_oracle, e2e_multi_eoa (rotation test
  it.skip with sharpened TODO — pipelining has no same-proposal-retry
  semantic), e2e_multiple_blobs, e2e_simple, e2e_snapshot_sync,
  e2e_synching, e2e_sequencer/reload_keystore.

Files modified: 28. All within yarn-project/end-to-end/src/. No
source-code changes.
@spalladino spalladino changed the title test(e2e): migrate remaining straggler suites to proposer pipelining test(e2e): migrate more e2e suites to proposer pipelining May 22, 2026
…lic}

The migration commit added jest.setTimeout(...) inside the describe body
but didn't add the import — token_bridge_private failed at suite-load with
ReferenceError: jest is not defined. Matches the pattern already in
l2_to_l1.test.ts.
…eckpointed chain

Under pipelining, publisher #1's mocked silent-drop in slot N invalidates
the proposed chain (parent-of-pipelined-child verification fails for slot
N+1), and the resulting archiver prune + world-state reorg used to drop
the wallet's in-flight tx from the mempool before slot N+2's publisher #2
could mine it.

Anchoring the PXE to the checkpointed chain (syncChainTip: 'checkpointed')
keeps the wallet's anchor block on the last sealed-on-L1 checkpoint, which
predates the discarded proposed chain. The mempool re-validation finds the
anchor still present, the tx stays, and slot N+2's rotation publishes it.

Verified locally: 1/1 passes in 72.5s with two rotation cycles
(publisher A blocked → B fallback; B blocked → C fallback).
CI hit a propose_action_not_successful → Reorg/Chain pruned to block 0
cascade on slot 12. The cascade dropped the wallet's in-flight tx via
handlePrunedBlocks (Block header not found) with the canonical Tx
dropped by P2P node thrown out of waitForTx.

Same family as the e2e_multi_eoa rotation case (commit 55ee51b):
proposed-chain invalidation kills the wallet tx because the PXE
anchored to a proposed-but-not-yet-checkpointed block. Anchoring to
the checkpointed chain leaves the wallet's anchor on the last sealed
L1 checkpoint, which survives the prune.

Threads pxeOpts: Partial<PXEConfig> through CrossChainMessagingTest
(4th constructor arg, 2nd setup() arg) so opt-in is per-test. Verified
locally: 1 passed / 3 skipped in 389.83s, no Tx dropped, no Chain
pruned to block 0, only benign trim-the-pipeline prunes back to the
last sealed block.
@spalladino spalladino force-pushed the palla/e2e-pipelining-stragglers branch from 14547fe to 60a0bbb Compare May 22, 2026 13:02
@PhilWindle PhilWindle enabled auto-merge (squash) May 22, 2026 14:21
@PhilWindle PhilWindle disabled auto-merge May 22, 2026 14:51
@PhilWindle PhilWindle merged commit 8211880 into merge-train/spartan May 22, 2026
17 checks passed
@PhilWindle PhilWindle deleted the palla/e2e-pipelining-stragglers branch May 22, 2026 14:51
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.

2 participants