Playwright now accepts BDD features without losing the existing admin E2E suite
This story wires playwright-bdd into the existing
Playwright runner. The existing Chromium project still owns the
current TypeScript specs, and a sibling Chromium BDD project points at
the generated specs, so reporter, base URL, and web-server behavior
continue to use the same Playwright config.
What changed
playwright.config.ts now registers feature files from
tests/features/**/*.feature and scoped step definitions
from tests/steps/**/*.ts. Generated specs are emitted to
tests/e2e/.features-gen, which is ignored by git.
The test:e2e and test:e2e:ui scripts now run
bddgen before playwright test. Existing
Playwright specs under tests/e2e stay in the original
chromium project, while generated BDD specs run in
chromium-bdd.
First scenario
The seed scenario is intentionally small and real: it opens
/sign-in as a signed-out operator and verifies that the
browser remains on the admin sign-in route. It uses
createBdd(test) from playwright-bdd and does
not require the backend stub server.
Acceptance evidence
| Criterion | Evidence | State |
|---|---|---|
| Pin current 9.x line |
package.json pins playwright-bdd to
9.2.0.
|
done |
| Keep existing Playwright behavior |
testDir, the existing TypeScript
testMatch patterns, reporter, original Chromium
project, baseURL, and web-server environment switches
remain on the existing admin config path. The added
chromium-bdd project points only at generated BDD
*.spec.js files because playwright-bdd
v9 requires the project testDir to match its
generated output directory.
|
done |
| Generate BDD tests |
pnpm exec bddgen succeeds and emits the generated
spec under tests/e2e/.features-gen.
|
done |
| Local verify gate |
pnpm exec tsc --noEmit, pnpm run lint,
and pnpm run test:unit pass locally.
|
done |
This ticket only installs the BDD substrate and one example scenario. Product workflow scenarios remain out of scope for Story 1733.