Puppeteerでのエラーハンドリング
PuppeteerにおけるAxe DevTools for Webでよく見られる一般的なエラーの解決方法
Not for use with personal data
Axe DevTools for Webのバージョン4.3.0以降では、AxeDevToolsPuppeteer.analyze()を呼び出す際に新しい手法を使用し、実行の最後に新しいウィンドウを開きます。このドキュメントで説明されている多くの問題は、この手法に関連する一般的な問題とその解決策です。
ポップアップブロッカーが有効になっている場合
ポップアップブロッカーはAxeDevToolsPuppeteer.analyze()を呼び出した際に新しいウィンドウを開くことを妨げます。ほとんどの自動化テストライブラリのデフォルト設定ではポップアップが許可されています。テスト実行中に問題が発生しないよう、ポップアップブロッカーを明示的に有効にしないでください。
AxeDevToolsPuppeteer.setLegacyMode(legacy: boolean)
何らかの理由で新しいAxeDevToolsPuppeteer.analyze手法をエラーなしで実行できない場合、axeはレガシーバージョンのAxeDevToolsPuppeteer.analyzeを実行することを可能にする新しいチェインメソッドを提供します。この方法を使用すると、axeはクロスドメインフレームやiframe内で発生する可能性のあるアクセシビリティの問題を除外します。
note
AxeDevToolsPuppeteer.setLegacyModeは非推奨であり、v5.0で削除される予定です。レガシーバージョンが削除される前にAxeDevToolsPuppeteer.analyzeを実行中に発生する可能性のあるエラーを報告してください。
例
const { AxeDevToolsPuppeteer } = require('@axe-devtools/puppeteer');
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setBypassCSP(true);
await page.goto('https://dequeuniversity.com/demo/mars/');
try {
const results = await new AxeDevToolsPuppeteer(page).setLegacyMode().analyze();
console.log(results);
} catch(err) {
// do something with the error
}
await page.close();
await browser.close();
})();