test(acp-snapshot): wait for the durable goal pause before disposal

The goal scenario asserted a paused revision-2 goal, but the pause is
appended only after cancellation reaches idle — after turn/end. Under
parallel snapshot files the subprocess could dispose before the pause
record persisted, folding the log to an active revision-1 goal.

Add a waitForEventAfterTurnEnd input step (the turn-end/title waiters'
shape, parameterized by event type) and use it in the goal scenario to
hold the subprocess open until the goal-state record lands.
This commit is contained in:
Turtle
2026-08-04 13:25:39 +08:00
parent ecdcc218b6
commit 5fc420c5c0
3 changed files with 53 additions and 18 deletions
+9 -8
View File
@@ -55,16 +55,17 @@ export default defineConfig({
'packages/sdk/*/tests/**/*.snapshot.ts',
'packages/ui/tui/tests/**/*.snapshot.ts',
],
// Each test boots a subprocess; give it room. Replay scenarios are
// read-only (unique temp dir and fixture set per subprocess), so replay
// runs the snapshot files in parallel and bounds in-file concurrency with
// the environment knob (value 1 restores serial replay on constrained
// machines). Record and refresh stay fully serial: record spends real API
// quota per scenario, and refresh write-back harvests volatile values from
// fixtures already on disk, so concurrent writers would corrupt goldens.
// Replay never writes committed outputs and every scenario owns its
// mutable runtime state (the subprocess suites use a unique temp dir and
// fixture set per scenario), so replay runs the snapshot files in
// parallel and bounds in-file concurrency with the environment knob
// (value 1 restores fully serial replay on constrained machines). Record
// and refresh stay serial: record spends real API quota per scenario, and
// refresh write-back harvests volatile values from fixtures already on
// disk, so concurrent writers would corrupt goldens.
testTimeout: 120_000,
hookTimeout: 30_000,
fileParallelism: (process.env.DSH_SNAPSHOT || 'replay') === 'replay',
fileParallelism: (process.env.DSH_SNAPSHOT || 'replay') === 'replay' && snapshotMaxConcurrency > 1,
maxConcurrency: snapshotMaxConcurrency,
},
})