Files
golfgame/tests/soak/scenarios/index.ts
adlee-was-taken 921a6ad984 feat(soak): stress scenario with chaos injection
Rapid short games with a parallel chaos loop that has a 5% per-turn
chance of firing one of:
  - rapid_clicks: 5 quick clicks at the player's own cards
  - tab_blur:    window blur/focus event pair
  - brief_offline: 300ms network outage via context.setOffline

Chaos counts roll up into ScenarioResult.customMetrics.chaos_fired.

Important detail: chaos loop has a 3-second initial delay so room
creation, joiners, and game start can complete without interference.
Chaos during lobby setup (especially brief_offline) was causing
#create-room-btn to go unstable.

Verified: stress smoke with --games-per-room=3, 4 accounts + 1 CPU,
first game completed with 37 turns and chaos events fired across all
three event types.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:49:30 -04:00

25 lines
578 B
TypeScript

/**
* Scenario registry — name → Scenario mapping.
*
* Runner looks up scenarios by name. Add a new scenario by importing
* it here and adding an entry to `registry`. No filesystem scanning,
* no magic.
*/
import type { Scenario } from '../core/types';
import populate from './populate';
import stress from './stress';
const registry: Record<string, Scenario> = {
populate,
stress,
};
export function getScenario(name: string): Scenario | undefined {
return registry[name];
}
export function listScenarios(): Scenario[] {
return Object.values(registry);
}