Gebruik storageState() voor authenticatie

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Authenticatietests met behulp van Playwright's opgeslagen sessie-cookies

Not for use with personal data

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
})
note

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.

Zie ook