PR: #428: [Story-1735] Add BDD quality gates
by @pramaan-board-bot[bot]
View PR →
Story-1735
BDD quality gates
This walkthrough documents the two CI gates added for RFD-BDD-001 D-5 and D-6 in
pramaan-app.
What changed
Feature binding gate
pnpm run check:features runs bddgen and rejects
undefined, skipped, pending, or work-in-progress BDD scenarios.
Readable Gherkin gate
pnpm run check:gherkin scans feature files for implementation jargon
such as selectors, URLs, SQL, IDs, internal type names, and setQueryData.
CI wiring
Both checks run in the existing quality job before TypeScript and lint.
Bad-input proof
pnpm run check:features -- --feature scripts/bdd/fixtures/unbound-step.feature pnpm run check:gherkin -- scripts/bdd/fixtures/jargon.feature
The fixtures live outside tests/features/, so they prove the gates fail
without becoming part of the required Playwright BDD suite.
Expected operator flow
- Run
pnpm run check:featuresafter adding or editing BDD scenarios. - Run
pnpm run check:gherkinbefore opening a PR with feature files. - Fix the Gherkin sentence or step binding before CI, not after e2e starts.
Files changed
6 file(s), +420 / -0 lines
| Path | Role | + | - |
|---|---|---|---|
| .github/workflows/ci.yml | Workflow | +10 | -0 |
| package.json | Config | +2 | -0 |
| scripts/bdd/check-features.ts | Script | +249 | -0 |
| scripts/bdd/check-gherkin.ts | Script | +149 | -0 |
| scripts/bdd/fixtures/jargon.feature | Script | +5 | -0 |
| scripts/bdd/fixtures/unbound-step.feature | Script | +5 | -0 |