You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dual-layer verification for schema. Most schema tests check both the TypeScript source file and the generated migration SQL.
Cascade deletes tested live. Scenarios 14 and 15 run real SQL against an in-memory database with migrations applied.
Seed data validated against the database. Scenarios 21 and 24–28 query the actual local.db to verify row counts, enum values, date spread, booking types, and rider JSON content structure.
db:studio test is shallow. Only verifies the script exists in package.json — acceptable for CI.
No idempotency test for seed. The seed is verified to produce correct data, but there's no test for running db:seed twice.
Raw Output
Full Playwright output
Running 31 tests using 1 worker
✓ 1 .attractor/qa-report/gherkin.spec.ts:93:7 › AC #1 — Schema: Artist table › Scenario 1: Artist table has all required columns (36ms)
✓ 2 .attractor/qa-report/gherkin.spec.ts:138:7 › AC #2 — Schema: Tour table › Scenario 2: Tour table has all required columns (16ms)
✓ 3 .attractor/qa-report/gherkin.spec.ts:166:7 › AC #2 — Schema: Tour table › Scenario 3: Tour status column only allows valid enum values (1ms)
✓ 4 .attractor/qa-report/gherkin.spec.ts:179:7 › AC #2 — Schema: Tour table › Scenario 4: Tour has a foreign key to Artist (1ms)
✓ 5 .attractor/qa-report/gherkin.spec.ts:197:7 › AC #3 — Schema: Gig table › Scenario 5: Gig table has all required columns (6ms)
✓ 6 .attractor/qa-report/gherkin.spec.ts:223:7 › AC #3 — Schema: Gig table › Scenario 6: Gig rider_status column only allows valid enum values (1ms)
✓ 7 .attractor/qa-report/gherkin.spec.ts:233:7 › AC #3 — Schema: Gig table › Scenario 7: Gig has a foreign key to Tour (0ms)
✓ 8 .attractor/qa-report/gherkin.spec.ts:249:7 › AC #4 — Schema: Booking table › Scenario 8: Booking table has all required columns (4ms)
✓ 9 .attractor/qa-report/gherkin.spec.ts:273:7 › AC #4 — Schema: Booking table › Scenario 9: Booking type column only allows valid enum values (1ms)
✓ 10 .attractor/qa-report/gherkin.spec.ts:282:7 › AC #4 — Schema: Booking table › Scenario 10: Booking has a foreign key to Gig (1ms)
✓ 11 .attractor/qa-report/gherkin.spec.ts:298:7 › AC #5 — Schema: Rider table › Scenario 11: Rider table has all required columns (2ms)
✓ 12 .attractor/qa-report/gherkin.spec.ts:318:7 › AC #5 — Schema: Rider table › Scenario 12: Rider status column only allows valid enum values (1ms)
✓ 13 .attractor/qa-report/gherkin.spec.ts:328:7 › AC #5 — Schema: Rider table › Scenario 13: Rider has a unique foreign key to Gig (4ms)
✓ 14 .attractor/qa-report/gherkin.spec.ts:350:7 › AC #6 — Schema: Cascade deletes › Scenario 14: Deleting a tour cascades to its gigs (57ms)
✓ 15 .attractor/qa-report/gherkin.spec.ts:404:7 › AC #6 — Schema: Cascade deletes › Scenario 15: Deleting a gig cascades to its bookings and rider (47ms)
✓ 16 .attractor/qa-report/gherkin.spec.ts:469:7 › AC #7 — Tooling: Drizzle installed & configured › Scenario 16: Drizzle ORM and drizzle-kit are installed (1ms)
✓ 17 .attractor/qa-report/gherkin.spec.ts:481:7 › AC #7 — Tooling: Drizzle installed & configured › Scenario 17: Drizzle config file exists and targets SQLite (0ms)
✓ 18 .attractor/qa-report/gherkin.spec.ts:499:7 › AC #8 — db:generate creates SQL migration files › Scenario 18: db:generate script creates migration files from schema changes (1ms)
✓ 19 .attractor/qa-report/gherkin.spec.ts:528:7 › AC #9 — db:migrate applies pending migrations › Scenario 19: db:migrate script applies pending migrations (32ms)
✓ 20 .attractor/qa-report/gherkin.spec.ts:577:7 › AC #10 — db:studio launches Drizzle Studio › Scenario 20: db:studio script launches Drizzle Studio (0ms)
✓ 21 .attractor/qa-report/gherkin.spec.ts:591:7 › AC #11 — db:seed populates sample data › Scenario 21: db:seed script populates sample data (18ms)
✓ 22 .attractor/qa-report/gherkin.spec.ts:612:7 › AC #12 — SQLite database gitignored › Scenario 22: SQLite database file is gitignored (15ms)
✓ 23 .attractor/qa-report/gherkin.spec.ts:638:7 › AC #13 — Seed: 1 sample artist (Chic) › Scenario 23: Seed script file exists at the expected location (0ms)
✓ 24 .attractor/qa-report/gherkin.spec.ts:646:7 › AC #13 — Seed: 1 sample artist (Chic) › Scenario 24: Seed creates one sample artist named Chic (18ms)
✓ 25 .attractor/qa-report/gherkin.spec.ts:663:7 › AC #14 — Seed: 1 tour with 5 gigs across US cities › Scenario 25: Seed creates one tour with five gigs across different US cities (31ms)
✓ 26 .attractor/qa-report/gherkin.spec.ts:684:7 › AC #15 — Seed: Realistic dates › Scenario 26: Seed gigs have realistic dates spread across 2-3 weeks (14ms)
✓ 27 .attractor/qa-report/gherkin.spec.ts:704:7 › AC #16 — Seed: 2 bookings (flight + hotel) › Scenario 27: Seed creates sample bookings for the first gig (59ms)
✓ 28 .attractor/qa-report/gherkin.spec.ts:731:7 › AC #17 — Seed: 1 draft rider with hospitality/tech › Scenario 28: Seed creates a draft rider with hospitality and technical sections (15ms)
✓ 29 .attractor/qa-report/gherkin.spec.ts:755:7 › AC #18 — Database client exported › Scenario 29: Drizzle client is exported from the db module (0ms)
✓ 30 .attractor/qa-report/gherkin.spec.ts:771:7 › AC #19 — DATABASE_URL with fallback › Scenario 30: Database connection uses DATABASE_URL with a local fallback (0ms)
✓ 31 .attractor/qa-report/gherkin.spec.ts:789:7 › AC #20 — Type-safe query helpers › Scenario 31: Type-safe query helpers are exported for route handlers (1ms)
31 passed (1.0s)
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
QA Report
PR: #31 — feat: Database schema with Drizzle ORM, migrations, and seed data
Branch:
feat/database-schema-drizzleDate: 2026-02-26
Verdict: ✅ PASS
All 31 Gherkin scenarios passed. Zero failures, zero errors.
Gherkin Scenarios
Total: 31 passed, 0 failed, 0 errors (1.0s, 1 worker)
Failures
None. All 31 scenarios passed.
Screenshots
No screenshots were captured. Playwright only saves screenshots on failure by default, and all tests passed.
Analysis Notes
Test Categories and Approaches
.tsfiles,package.json,.gitignore, migration SQL, and config via Nodefsbun:sqlite)local.dbor in-memory databases to verify seeded data and cascade behaviorKey Observations
local.dbto verify row counts, enum values, date spread, booking types, and rider JSON content structure.db:studiotest is shallow. Only verifies the script exists inpackage.json— acceptable for CI.db:seedtwice.Raw Output
Full Playwright output
Beta Was this translation helpful? Give feedback.
All reactions