如何与量角器一起使用ax access.tool?

问题描述

我正在尝试对我们的自动化测试套件实施可访问性测试工具。我正在BDD(黄瓜)中的vsCode上使用量角器测试角度应用程序。测试是用打字稿编写的,断言是使用chai进行的。

关于如何实现此测试工具,我看到了许多不同的想法。但是,大多数想法已经过时或对我不起作用。

基本上现在发生的是,当我运行一个测试用例时,它通过了,但是最后我在控制台中得到了一个错误

UnhandledPromiseRejection警告:NoSuchSessionError:此驱动程序 实例没有有效的会话ID(您是否致电 WebDriver.quit()?),可能不再使用。 在session_.flow_.promise(C:\ Projekt \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver.js:847:16)

这告诉我的是,该测试在after()钩子中运行,通过,关闭了窗口,然后(可能吗?)ax尝试运行其可访问性测试,但由于关闭了窗口,所以很有利。

到目前为止我做了什么:

已安装npm

  • “量角器-可访问性插件
  • -save-dev“ selenium-webdriver@^2.46.1”(我说没有安装对等依赖项时出错,
  • axe-core --save-dev

我将ax作为插件插入config.ts中:

import { browser,Config } from 'protractor';

从“ ../support/reporter”导入{Reporter}; 导入路径= require('path');

export const config:Config = { directConnect:是的, SELENIUM_PROMISE_MANAGER:否, ignoreUncaughtExceptions:是

capabilities: {
    browserName: 'chrome',chromeOptions: {
        prefs: {
            download: {
                'prompt_for_download': false,'directory_upgrade': true,'default_directory': path.resolve('./testdownloads'),}
        }
    }
},framework: 'custom',frameworkPath: require.resolve('protractor-cucumber-framework'),specs: [
    '../../features/**/*.feature',],plugins: [{
    axe: true,package: 'protractor-accessibility-plugin'
  }],onPrepare: () => {
    console.log('conf.js: onPrepare');
    browser.manage().window().maximize();
},allScriptsTimeout: 3 * 60 * 1000,cucumberOpts: {
    compiler: 'ts:ts-node/register',format: ['json:./reports/json/cucumber_report.json'],require: ['../../e2e-build/step_deFinitions/**/*.steps.js','../../e2e-build/support/*.js','../../e2e-build/step_deFinitions/**/*.walks.js'],tags: '@mystuff'
},onComplete: () => {
    console.log('conf.js: onComplete');
},afterLaunch: () => {
    console.log('conf.js: afterLaunch');
    Reporter.createHTMLReport();
}

在另一个来源上,我发现应该将其插入我的灯具中

<script src="node_modules/axe-core/axe.min.js"></script>

但是我真的不知道在这种情况下的固定装置是什么。我无法在pageObject.ts或stepDeFinition.ts文件中编写脚本,并且它肯定不应该进入我的功能文件。 我能想到的唯一可能性是将其写入js文件中,但随后又自动生成了多数民众赞成,因此编辑该文件感觉不对。

如果有人可以引导我逐步了解在哪里以及如何使用斧头,我将不胜感激。 基本上我的问题:

  • 我在config.ts文件中实现插件的方式正确吗?
  • 我想念什么吗? (我需要(东西)吗?)
  • 为什么after()挂钩在斧头测试套件之前运行?

让我们假设一个简单的情况供参考:

myFeature.feature:

Given i am on mywebsite.com
When i click my button
Then something happens

myStepDef.ts:

Given(/^i am on mywebsite.com$/,async function (){
 await browser.get('www.mywebsite.com');
}

When(/^i click my button$/,async function () {
await myButton.click();
}
Then(/^something happens/,async function () {
expect(somethingHappening()).to.be.true;
}

和过程适当选择,元件和函数定义一个页面文件

如果您需要更多信息,我会提供!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)