量角器辅助功能报告

Protractor Accessibility reporting

我正在尝试使用 Protractor 附带的辅助功能插件。据我所知,它确实检查了我所在的最后一页的 a11y。 有没有办法让2个测试脚本一个接一个地执行并提供不同的报告或将所有内容放在一个报告中但分开。

示例:

access.js

access1.js

输出文件:

resultJsonOutputFile: 'result/result.json'

我在conf.js中尝试过这种方式:

specs: ['../test/access.js', '../test/access1.js'],
or
specs: ['../test/access*.js'],

但仍会得到上次执行脚本的结果

我也尝试创建套件:

suites: {
   homepage: '../test/homepage/access.js',
   catalogpage: '../test/catalogpage/access1.js'
  },

但是当我检查 JSON 文件时,如果执行了 2 个脚本,那么第一个没有问题,并且为第二个脚本提供了错误。但是,如果单独 运行 第一个脚本,Protractor 会提供错误

我也尝试在一个js文件中创建不同的场景,但仍然是同样的问题

在当前的实现中,可访问性插件设置为 运行 每次调用 Protractor 运行ner,在最后一页。所以不幸的是,任何套件或测试文件的修改都不会使其 运行 不止一次。

您可以为您想要的每组测试文件创建单独的配置文件运行,或者使用shardTestFiles确保每个文件都是运行过程。有关分片的更多详细信息,请参阅 referenceConf

或者,您可以使用 ax 进行可访问性测试。为了将它与量角器和 Webdriver 中的 e2e 测试一起使用,请执行以下操作:

npm install --save-dev axe-webdriverjs

然后在你的 e2e 测试文件中,你做:

var AxeBuilder = require('path_to_the/axe-webdriverjs');

获取 AxeBuilder,然后在任何需要 运行 测试的地方,您:

AxeBuilder(browser.driver)
    .analyze(function (results) {
        expect(results.violations.length).toBe(0);
    });

以上示例使用的是 Jasmine,但您可以推断出任何其他断言库。

此外:这里有一个示例项目,您可以克隆 运行 https://github.com/dylanb/UITestingFramework

免责声明:我与 ax 项目有关,因此不是中立的

我 运行 也遇到了这个问题 - 正如另一位发帖人所说,该插件并非真正设计用于以这种方式运行。

我编写了该插件的衍生版本,它可以满足您的需求 - protractor-axe-report-plugin

每当您在浏览器中打开要测试的页面时,您都会调用 runAxeTest(或 runAxeTestWithSelector),它会使用 ax 引擎生成报告。

Continuum can be used for your use case where it seems the accessibility plugin that comes with Protractor cannot. Here's some documentation on a Protractor-based sample project that uses Continuum. It can be downloaded from webaccessibility.com 'Continuum for Protractor'。如果您查看示例项目的源代码,基本上可以归结为:

const continuum = require('../js/Continuum.js').Continuum;
continuum.setUp(driver, "../js/AccessEngine.community.js");
continuum.runAllTests().then(() => {
    const accessibilityConcerns = continuum.getAccessibilityConcerns();
    // accessibilityConcerns.length will be 0 if no accessibility concerns are found
});

(关于以上的更多信息,您可以查看the API documentation。)

您可以在测试中的任意位置执行 continuum.runAllTests 位。如果需要的话,这也包括在同一个测试中的多次,如果我理解正确的话,这最终就是你所追求的。

当然,没有任何自动可访问性测试工具可以替代手动可访问性测试。不过,您现在似乎只是希望获得基准水平的合规性,因此 Continuum 似乎适合您的用例来解决唾手可得的问题。