# Metamorph e2e End-to-end tests powered by [Playwright](https://playwright.dev/). Each milestone in `tasks/todo.md` should add at least one spec file (`tests/m-*.spec.ts`). ## One-time setup ```bash cd e2e npm install npm run install-browsers # downloads chromium (uses sudo for system deps) ``` ## Running against a live stack ```bash # 1. Bring the stack up from the repo root: cd .. && make up # 2. Run the tests: cd e2e && npm test # 3. Open the HTML report: npm run report # opens playwright-report/index.html in your browser ``` Or from the repo root: ```bash make e2e # runs against the already-up stack make e2e-report # opens the HTML report make e2e-up # one-shot: make up + wait healthy + run tests ``` ## Auto-spawn mode Set `PW_AUTOSTART=1` to let Playwright spawn `make up` itself before the run: ```bash PW_AUTOSTART=1 npm test ``` ## Configuration | Env var | Default | Purpose | |--------------|--------------------------|-----------------------------------------------| | `BASE_URL` | `http://localhost:8080` | The front nginx URL (which proxies `/api/*`) | | `PW_AUTOSTART` | `0` | If `1`, spawn `make up` before the tests | | `CI` | unset | When set, retries=2 and parallel workers=2 | ## Reports - **HTML** : `e2e/playwright-report/index.html` - **JUnit** : `e2e/playwright-report/junit.xml` (CI ingestion) - **Trace** : kept on first retry, opened with `npx playwright show-trace …` ## Layout ``` e2e/ ├── tests/ │ └── m0-smoke.spec.ts # bootstrap milestone (current) │ └── m-*.spec.ts # one spec per milestone, added as features land ├── playwright.config.ts ├── tsconfig.json └── package.json ```