Verwendung von storageState() für die Authentifizierung
Authentifizierungstests mit den gespeicherten Sitzungscookies von Playwright
Wenn Ihre Tests authentifizierte Sitzungen erfordern, können Sie Playwrights storageState() verwenden, um zuvor gespeicherte Authentifizierungs-Cookies in den Browserkontext zu laden. Da Axe Watcher seine eigenen Playwright-Fixtures verwendet, müssen Sie das Authentifizierungs-Fixture mit dem Fixture von Axe Watcher mittels mergeTests zusammenführen.
Fixtures-Datei
Erstellen Sie eine fixtures.ts-Datei, die Cookies aus einer gespeicherten storageState.json-Datei liest und diese in den Playwright BrowserContext injiziert:
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 }Verwendung in Tests
Rufen Sie in Ihren Testdateien authCookie.inject() auf, bevor Sie zu authentifizierten Seiten navigieren:
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
})Generieren Sie storageState.json, bevor Sie Ihre Tests mit Playwrights globale Einrichtung ausführen. Diese Datei enthält Authentifizierungs-Cookies und sollte nicht in die Versionskontrolle aufgenommen werden.
