Playwrightを試してみた。
主にAstro公式のドキュメントを参考にしながら設定。
npm init playwright@latest
すると設定ファイル等が作られる。 playwright.config.ts
に baseURL やテストで利用するブラウザを設定。 tests/
以下にテストを入力。
画面キャプチャの差分があるかどうかは toHaveScreenshot()
で行う。
import { test, expect } from '@playwright/test';
test('前回の画面スクリーンショットと差分がないこと', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveScreenshot();
});
期待のキャプチャを更新するには npx playwright test --update-snapshots
をする。
axeのテストは @axe-core/playwright
をインストールして使う。
import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
test('axeでエラーがないこと', async ({ page }) => {
await page.goto('/');
const accessibilityScanResults = await new AxeBuilder({ page }).analyze();
expect(accessibilityScanResults.violations).toEqual([]);
});
.withRules()
や .withTags()
でルールの指定や無効ができる。
このブログのフッターの <ul>
内に <p>Playwright</p>
を追加してテスト実行してみるとそれぞれのテストにエラーが出る。
見た目の比較は新旧画像をスライダーでも見比べられる。
axeのテストは配列に違反内容が入る。