Verwendung von storageState() für die Authentifizierung

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

Authentifizierungstests mit den gespeicherten Sitzungscookies von Playwright

Not for use with personal data

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

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.

Siehe auch