/** Playwright globalSetup: фиксирует run_id для всех воркеров и сбрасывает pg_stat_statements. PERF_SQLSTATS=0 - отключить. */ import { spawnSync } from 'node:child_process'; import path from 'node:path'; import { PERF_DIR } from './manifest'; import { runId } from './results'; export const PYTHON = process.env.PERF_PYTHON ?? path.join(PERF_DIR, '.venv', 'bin', 'python'); export function sqlstats(args: string[]): void { const r = spawnSync(PYTHON, ['-m', 'perfkit.sqlstats', ...args], { cwd: PERF_DIR, encoding: 'utf-8', timeout: 10 * 60_000 }); if (r.stdout?.trim()) console.log(r.stdout.trim()); if (r.error || r.status !== 0 || /WARNING \[perf sqlstats\]/.test(r.stderr ?? '')) { console.warn(`[perf] ПРЕДУПРЕЖДЕНИЕ: sqlstats ${args[0]} не отработал (Postgres недоступен?): ${r.error ?? ''} ${r.stderr ?? ''}`.trim()); } } export default async function globalSetup(): Promise { process.env.PERF_RUN_ID ??= runId(); // один run_id на весь прогон (воркеры наследуют env) if (process.env.PERF_SQLSTATS === '0') return; sqlstats(['reset']); }