1

我有一个页面,我可以使用操作从 Pa11y 5 获取可访问性测试报告。

当我单击该特定页面上的按钮时,我会得到一个弹出/覆盖,我希望 Pa11y 嗅探该弹出/覆盖页面并报告可访问性指标,但目前 Pa11y 5 只能为我提供主父页面忽略弹出页面中关于 html 的任何报告?有没有办法实现这一点,告诉 Pa11y 切换到弹出窗口并嗅探该弹出窗口 html 并报告。

Popup/overlay 包含 div[role='dialog'] 因为它是一个由 aria 组成的模态对话框。

我使用的是最新的 Pa11y,因此我一直将其称为 Pa11y 5。我没有使用过 Pa11y4,因此无法评论这是否适用于 Pa11y 4。

真诚感谢任何帮助/建议。

更新: 根据要求,以下是我的完整(相关)部分代码

const PageOptions1 = {  
    timeout: 30000,
    userAgent: 'A11Y TESTS',
    actions: [
        'screen capture screenshots/001-DefaultView.png'                    
    ]
};
const PageOptions2 = {
    timeout: 35000, 
    userAgent: 'A11Y TESTS',
    rootElement: 'div[role="dialog"]',
    actions: [
        'click element button[data-automation-id="ccbutton"]',
        'wait for element div[role="dialog"] to be added',
        'screen capture screenshots/002-Popup.png',
        'click element i.fa-close',
        'screen capture screenshots/002-DefaultView.png'
    ]
};

async function runPa11y(navigateUrl) {
    try {
        const results = await Promise.all([
            pa11y(navigateUrl, PageOptions1),
            pa11y(navigateUrl, PageOptions2),           
        ]);

        LogResults(results);
    } catch (error) {
        console.error("Error: " + error.message);
    }
}

runPa11y("Url to navigate");
4

1 回答 1

2

感谢您的更新!您正在做正确的事情,一切看起来都按预期工作。

Pa11y 将在运行测试之前执行所有操作,因此它会打开模式对话框,立即再次关闭它,然后在没有它的情况下运行测试。

分解PageOptions2成更小的单元,这样你的最后一个动作就是你想要测试的状态,一切都应该没问题。

于 2018-05-03T11:10:34.560 回答