What problem does it solve? Playwright E2E suites repeatedly re-implement login flows, leak sessions across roles, and flake on fixed timeouts. This Skill defines a single auth contract covering credential-based login, storage state reuse, and multi-role persona management so tests authenticate deterministically without boilerplate. ## Core Features & Use Cases - POM vs Fixture Decision Framework: Choose Page Object Model when the login page itself is under test, or test.extend() fixtures when login is pure setup for downstream assertions. - Persona Catalog and Setup Project: Define a typed persona catalog (role, credential env keys, .auth/<persona>.json paths) and generate storage state in a serial Playwright setup project, regenerated per CI run. - Credential Sourcing and Anti-Patterns: Use environment variables with deterministic seeded fallbacks, avoid waitForTimeout, shared contexts across roles, and silent privileged persona substitution. - Use Case: In a T3 Turbo monorepo with platform-admin and agency-agent roles, generate .auth/admin.json and .auth/agent.json in a setup project, then expose platformAdminPage and agentPage fixtures so test bodies never contain login code. ## Quick Start Set up Playwright auth fixtures for my e2e suite with separate admin and agent personas using storage state generated in a setup project.