test-ui-qsflisted
Install: claude install-skill lgtm-hq/ai-skills
# QSF Playwright E2E Conventions
Project-specific conventions for the QSF Playwright suite. For generic Playwright
best practices (locators, auto-waiting, POM, anti-patterns), follow the `test-ui`
skill — this skill only adds what is QSF-specific.
## Commands
- `source ./bin/load_env.sh && bunx playwright test` — run all tests headless
- `source ./bin/load_env.sh && bunx playwright test --project=regression-tests` —
skip auth-setup
- `bun run test` / `bunx playwright test --ui` — interactive UI mode
- `bunx playwright test --reporter=list` — verbose terminal output
- `bunx playwright test --grep '@smoke'` — run tagged tests
- `bunx playwright show-trace <trace.zip>` — inspect failure traces
## Test IDs
`getByTestId` resolves to the **`data-test-label`** attribute (set via
`testIdAttribute` in `playwright.config.ts`):
```typescript
page.getByTestId("no-handles-available-indicator");
page.getByTestId("open-filter-section-button");
```
## Fixtures (Auth Pattern)
The project extends Playwright's `test` with pre-authenticated user fixtures via
storage state files in `playwright-tests/.auth/`.
```typescript
// fixtures/authFixtures.ts
const authFiles = {
guest: "guest_storage_state.json",
testView: "test_view_storage_state.json",
testNoRights: "test_no_rights_storage_state.json",
// ... more users
};
const baseFixtures = Object.fromEntries(
Object.entries(authFiles).map(([key, fileName]) => [
key,
async ({ browser }: { browser: Browser }, use: (page: P