project-root/
├── playwright.config.tsbase URL, projects, test directoriesconfig
├── tsconfig.jsonTypeScript compiler settingsconfig
├── fixtures/
│ └── base.fixture.tswires pages into every test
├── pages/one class per app page or component
│ ├── index.page.ts
│ └── other-page.ts
├── utils/
│ └── date formatters, string helpers — reusable functions not tied to a specific page
├── test-data/data
│ ├── test.dbactive test database
│ ├── test-seed.dbclean seed — copied over test.db on reset
│ └── mock-responses/JSON fixtures for page.route() mocks
└── tests/tests
├── global-setup.tscopies seed DB before suite runs
├── global-teardown.tsresets DB after suite
├── component/mocked APIs — no backend needed
│ └── component-tests.spec.ts
├── integration/real DB + real API
│ ├── integration-tests.spec.ts
│ └── __snapshots__/baseline images for visual comparison testssnapshots
└── e2e/full user journeys — top of the test pyramid
└── user-journeys.spec.ts
── playwright-report/auto-generated HTML reportoutput
── .github/workflows/playwright.ymlCI pipeline configCI