← ClaudeAtlas

test-ui-qsflisted

QSF project conventions for the Playwright E2E suite. Use when working in the QSF playwright-tests directory (authFixtures, ___ping-* handles, data-test-label test IDs, .auth storage states) — not for generic Playwright advice.
lgtm-hq/ai-skills · ★ 0 · Testing & QA · score 66
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