Gebruik storageState() voor authenticatie
Authenticatietests met behulp van Playwright's opgeslagen sessie-cookies
Als je tests geauthenticeerde sessies vereisen, kun je Playwright's storageState() gebruiken om eerder opgeslagen authenticatie-cookies in de browsercontext te laden. Omdat Axe Watcher zijn eigen Playwright-fixtures gebruikt, moet je de authenticatiefixture met de fixture van Axe Watcher samenvoegen met behulp van mergeTests.
Fixtures-bestand
Maak een fixtures.ts die cookies leest uit een opgeslagen storageState.json-bestand en injecteer ze in de Playwright BrowserContext:
import { readFileSync } from 'fs'
import { test as base, type BrowserContext, mergeTests } from '@playwright/test'
import { playwrightTest } from '@axe-core/watcher/playwright-test'
// Environment variables for Axe Developer Hub
const ACCESSIBILITY_API_KEY = process.env.ACCESSIBILITY_API_KEY
const PROJECT_ID = process.env.PROJECT_ID
const SERVER_URL = process.env.SERVER_URL
// Configure Axe Watcher
const { test: watcherTest, expect } = playwrightTest({
axe: {
apiKey: ACCESSIBILITY_API_KEY,
projectId: PROJECT_ID,
serverURL: SERVER_URL
},
headless: false
})
// Custom fixture: Cookie-based authentication
class AuthCookie {
#context: BrowserContext
constructor(context: BrowserContext) {
this.#context = context
}
async inject() {
await this.#context.addCookies(
JSON.parse(readFileSync('storageState.json', 'utf-8')).cookies
)
}
}
// Define auth cookie fixture
const authCookieFixture = base.extend<{ authCookie: AuthCookie }>({
authCookie: async ({ context }, use) => {
const auth = new AuthCookie(context)
await use(auth)
}
})
// Merge fixtures
const test = mergeTests(authCookieFixture, watcherTest)
// Export merged test and expect
export { test, expect }Gebruik in tests
Roep in je testbestanden authCookie.inject() aan voordat je naar geauthenticeerde pagina's navigeert:
import { test, expect } from './fixtures'
test('should display accessible authenticated page', async ({ page, authCookie }) => {
await authCookie.inject()
await page.goto('https://example.com/authenticated-page')
// Accessibility testing happens automatically
})Genereer storageState.json voordat je je tests uitvoert met behulp van Playwright's globale setup. Dit bestand bevat authenticatie-cookies en mag niet in versiebeheer worden opgenomen.
