Playwright dùng storageState để lưu và tái sử dụng trạng thái đăng nhập giữa các test — tránh login lặp lại.
- globalSetup — chạy một lần trước toàn bộ test: login qua UI hoặc API rồi lưu
await context.storageState({ path: 'auth/user.json' }). - Reuse — trong
playwright.config.ts:use: { storageState: 'auth/user.json' }— mỗi test bắt đầu ở trạng thái đã đăng nhập. - Nhiều role — lưu storageState riêng cho admin, user thường, guest; dùng
projectstrong config để chạy cùng bộ test với các role khác nhau. - Auth qua API nhanh hơn UI login —
await request.post('/api/login', { data: { email, password } })rồipage.context().addCookies([...])— tránh flakiness của UI. - Fixtures —
test.extend({ loggedInPage: async ({ page }, use) => { await loginUser(page); await use(page) } })— pre-setup state, gọn và composable. - Test độc lập — mỗi test không phụ thuộc state của test trước; reset state trong beforeEach.