E2E tests (Playwright, Cypress) assert scenarios you code after the fact. /lamina-verify walks the live build as personas against the behavior contract and surfaces gaps in fix.md.
You want to know when to verify with Lamina vs encode invariants in Playwright.
E2E tests pass on happy path but edge gates were never scenarios.
AI agent shipped UI before you wrote test files.
Context
Testing and verification are adjacent. Developers hear verify and think QA replacement. Lamina verify is contract-driven exploration on the live build during development. E2E is assertion-driven regression in CI. Anti-testing framing would mislead; this page clarifies sequencing.
Common situations
Concrete cases from AI-shipping workflows. Each shows what the alternative handles and where a behavior contract helps.
First implementation of partner onboarding
Situation
No Playwright tests yet. Agent finished UI. You need to know if submit gate works before investing in test authoring.
What E2E tests does
You would manually click-test or write E2E from scratch based on assumptions.
What Lamina adds
/lamina-verify walks partner persona against run.yaml, outputs fix.md for agent.
Takeaway
Verify before you codify scenarios.
Stable checkout, CI regression suite exists
Situation
Playwright covers hold expiry and email gate. Feature unchanged except copy tweak.
What E2E tests does
Run existing E2E in CI.
What Lamina adds
Optional re-verify if contract changed; otherwise tests suffice.
Takeaway
Mature E2E reduces need for repeat verify.
E2E happy path only
Situation
Tests cover login and booking success. Pay-before-verify bug ships because no scenario asserted it.
Inventory hold with countdown. Playwright could assert hold expiry if you wrote the scenario. Lamina verify found pay-before-verify from the contract before tests existed. Teams then encoded the invariant in CI.