/** * e2e-verify — `peaks e2e verify --slice ` CLI for the merged slice. * * calls this command once after the merge-back step. The CLI delegates * to `runE2EVerify`, which uses the e2e-fixtures reader * (`src/services/dispatch/e2e-fixtures.ts`) to enumerate the fixtures * for the slice and runs each fixture through a per-dispatch Chromium * profile. * * The runner is layered: * * 1. **Real Playwright runner** (preferred): spawns Chromium with the * per-dispatch `--user-data-dir` and `--profile-directory` flags * read from `PEAKS_PLAYWRIGHT_USER_DATA_DIR` / * `PEAKS_PLAYWRIGHT_PROFILE_NAME` (env stamped by * `peaks sub-agent dispatch`). For each fixture: navigates to * `url`, asserts each matcher (substring or CSS selector) appears * in the page, and increments passCount / failCount. * * 2. **Graceful fallback** (CI smoke): when the env vars are unset * OR the Chromium binary is missing, the runner falls back to the * deterministic stub that counts fixtures. This keeps the * `tests/integration/dispatch-merge-and-e2e.e2e.test.ts` smoke * green on Chromium-less CI runners. * * The fallback decision is made on every invocation; the operator is * never silently blocked from running the real runner — they can set * the env vars and re-run. */ import type { Command } from 'commander'; import { type ProgramIO } from '../cli-helpers.js'; import { type E2EVerifyInput, type E2EVerifyResult } from './e2e-verify-env.js'; export type { E2EVerifyInput, E2EVerifyResult } from './e2e-verify-env.js'; export declare function runE2EVerify(input: E2EVerifyInput): Promise; export declare function registerE2EVerifyCommand(program: Command, io: ProgramIO): void;