/** * Micro-interaction test fixtures with deterministic seeds (MI8) * * Usage: * - Import these constants in Storybook stories and Playwright tests * - Use frozenTimestamp for all date operations * - Use rngSeed for any randomized content */ // Frozen timestamp: 2025-12-04T12:00:00Z (as per advisory) export const FROZEN_TIMESTAMP = new Date('2025-12-04T12:00:00.000Z'); export const FROZEN_TIMESTAMP_MS = 1733313600000; // Fixed RNG seed as per advisory: 0x5EED2025 export const RNG_SEED = 0x5EED2025; // Deterministic UUID generator (seeded) export function seededUuid(seed: number = RNG_SEED, index: number = 0): string { const hash = ((seed + index) * 2654435761) >>> 0; const hex = hash.toString(16).padStart(8, '0'); return `${hex.slice(0, 8)}-${hex.slice(0, 4)}-4${hex.slice(1, 4)}-8${hex.slice(4, 7)}-${hex}0000`.slice(0, 36); } // Skeleton state fixture export const skeletonFixture = { showAfterMs: 400, loadingDurationMs: 1200, state: 'loading' as const, timestamp: FROZEN_TIMESTAMP, }; // Error state fixture export const errorFixture = { code: 'UI_ERR_001', message: 'Failed to load data', retryAvailable: true, timestamp: FROZEN_TIMESTAMP, correlationId: seededUuid(RNG_SEED, 1), }; // Offline state fixture export const offlineFixture = { isOffline: true, lastOnline: new Date(FROZEN_TIMESTAMP_MS - 300000), // 5 minutes ago cachedDataAge: 'less than 1 hour', timestamp: FROZEN_TIMESTAMP, }; // Toast/snackbar fixture export const toastFixture = { id: seededUuid(RNG_SEED, 2), type: 'info' as const, message: 'Changes saved successfully', undoAvailable: true, undoWindowMs: 8000, timestamp: FROZEN_TIMESTAMP, }; // Reduced motion test config export const reducedMotionConfig = { enabled: true, emulateQuery: true, dataAttribute: 'data-reduce-motion', dataValue: '1', }; // Playwright/Storybook timer config export const timerConfig = { useFakeTimers: true, now: FROZEN_TIMESTAMP_MS, shouldAdvanceTime: false, }; // Sample telemetry event export const sampleTelemetryEvent = { schema_version: 'v1.0', event_type: 'ui.micro.interaction', timestamp: FROZEN_TIMESTAMP.toISOString(), tenant_id: 'test-tenant', surface: 'dashboard', component: 'button', action: 'click', latency_ms: 45, outcome: 'success', reduced_motion: false, offline_mode: false, error_code: null, correlation_id: seededUuid(RNG_SEED, 3), };