Work around more Forme 0.25 layout defects in the converter: row-reverse laid out as row, min and max widths ignored along a row, text dropping view children, empty text taking a line, overflowing optimal line breaks, a text in a splitting row wrecking later pages, page breaks on row items, four equal border sides, percentage corner radii, pictures under their shadow, and imported table rows. Rotation is left out while Forme misplaces rotated boxes; the stylesheet editor warns about it and about percentage padding. The page map rebuilds blocks Forme drops from its layout, the browser renderer rejects documents whose fonts can't load so callers fall back to the server PDF, and every render gets fresh font entries. Glalie's sidebar is one band at the combined tint. Tests are re-baselined where they encoded react-pdf metrics, and engine limits (list marker keep-together, RTL line order, characters above U+FFFF, percentage padding) are expected failures. The plan logs the migration in section 13.
E2E Tests
Reactive Resume uses Playwright for PR-gated browser coverage of deterministic core flows.
Local setup
Start PostgreSQL:
sudo docker compose -f compose.dev.yml up -d postgres
Generate local test secrets:
export AUTH_SECRET=$(openssl rand -hex 32)
export ENCRYPTION_SECRET=$(openssl rand -hex 32)
Run database migrations:
APP_URL=http://localhost:3000 PORT=3000 DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres FLAG_DISABLE_SIGNUPS=false FLAG_DISABLE_EMAIL_AUTH=false FLAG_DISABLE_API_RATE_LIMIT=true LOCAL_STORAGE_PATH=/workspace/data/e2e pnpm db:migrate
Build the production app:
APP_URL=http://localhost:3000 PORT=3000 DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres FLAG_DISABLE_SIGNUPS=false FLAG_DISABLE_EMAIL_AUTH=false FLAG_DISABLE_API_RATE_LIMIT=true LOCAL_STORAGE_PATH=/workspace/data/e2e pnpm build
Run tests:
APP_URL=http://localhost:3000 PORT=3000 DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres FLAG_DISABLE_SIGNUPS=false FLAG_DISABLE_EMAIL_AUTH=false FLAG_DISABLE_API_RATE_LIMIT=true FLAG_ALLOW_UNSAFE_AI_BASE_URL=true LOCAL_STORAGE_PATH=/workspace/data/e2e pnpm test:e2e
Coverage
- Email/password auth smoke.
- Dashboard resume lifecycle: create, rename, duplicate, delete.
- Builder section editing, autosave/navigation, and locking.
- JSON export/import.
- Public sharing for anonymous visitors.
- The assistant and inline Improve, against a scripted OpenAI-compatible provider (
fixtures/ai-stub.ts). It needsFLAG_ALLOW_UNSAFE_AI_BASE_URL=trueso the server may call the stub on 127.0.0.1, and skips without it.
Visual regression, PDF/DOCX rasterization parity, thumbnail resolution, and import-fixture reproduction are intentionally outside the PR gate to keep it fast; the opt-in geometry, offline-font, and root-resume suites stay behind their environment flags.