带有Typescript实现的量角器薄片不起作用

时间:2018-07-18 08:33:12

标签: typescript protractor cucumberjs

所以我有以下情况。

我们有一个基于this框架的量角器-黄瓜框架。

已对框架进行了修改,以将配置文件写入TS中。这是一个示例配置:

import { browser, Config } from 'protractor';
import { Reporter } from '../support/reporter';

const jsonReports = process.cwd() + '/reports/json';

export const config: Config = {

    directConnect: true,
    SELENIUM_PROMISE_MANAGER: false,

    stackTrace: true,

    capabilities: {
        browserName: 'chrome'
    },

    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'),

    specs: [
        '../../features/*.feature',
        '../../features/**/*.feature',
    ],

    onPrepare: () => {
        browser.manage().window().maximize();
        Reporter.createDirectory(jsonReports);
    },

    cucumberOpts: {
        compiler: 'ts:ts-node/register',
        format: 'json:./reports/json/cucumber_report.json',
        require: [
            '../../stepdefinitions/*.ts',
            '../../stepdefinitions/**/*.ts',
            '../../support/*.ts'
        ],
        strict: true,
        tags: '(@e2e) and (not @ignore) and (not @notImplemented)',
        keepAlive: false,
    },
    allScriptsTimeout: 10000,
    getPageTimeout: 5000,
    onComplete: () => {
        return Reporter.generateReports();
    },
    afterLaunch: exitCode => {
        if (exitCode === 1) {
            console.log('Actual Exit code: ' + exitCode);
            process.exit(0);
        }
    }
};

回头看一下这个框架是从现在开始实施的,现在他们已经实现了量角器薄片,这是我需要包括的东西。

我尝试使用正在使用的实际配置,可以看到here,但是当我尝试运行它时,出现以下错误:

E/configParser - Error code: 105
[09:14:04] E/configParser - Error message: failed loading configuration file ./build/config/conf.debug.js
[09:14:04] E/configParser - Error: Cannot find module 'C:\Users\Protractor\build\config\conf.debug.js'

请注意,我已经更改了量角器args以加载上面显示的配置,因此它表明无法加载config.debug.js。

我还浏览了尼克·汤姆林(Nick Tomlin)的量角器片库和黄瓜特定文档,并在After支持代码中添加了必要的console.log,并从cli中测试了量角器片,但是似乎没有任何效果。我收到上面的错误,然后是:

  

使用黄瓜来解析输出   测试失败,但未找到任何规格。

     

所有规格都将再次运行。重新运行测试:尝试2

但是没有运行任何测试。完全没有运行。

当我使用npm运行常规配置时,所有程序运行良好,而无需重新运行量角器薄片。

有人可以为此提供2美分吗?我想念什么?

我已经进行了很多搜索,找到了一个打字稿示例,但到目前为止,还没有找到,除非我错过了。

抱歉,我知道这很久了,但想尝试涵盖我尝试过的所有内容。

谢谢。

1 个答案:

答案 0 :(得分:1)

嵌入protractor-flake时,我也遇到了类似的问题。

1)检查您当前的debug.conf.js是否有效。通过将debug.conf.js复制到计算机上的某个文件夹中,并使用args中的protractor-flake的绝对路径运行debug.conf.js来实现此目的。

2)如果第1步有效,则必须将debug.conf.js迁移到typescript,只需将.ts放在最后并将内容更改为:

// debug.conf.ts
const protractorFlake = require('protractor-flake');
const argv = require('yargs').argv;

export default (function () {
  protractorFlake({
    maxAttempts: 2,
    parser: 'cucumber',
    protractorArgs: [
      './e2e-tests/config/protractor.e2e.conf.js',
      `--feature=${argv.feature || '*'}`,
      `--tags=${argv.tags || ''}`
    ]
  }, (status) => {
    process.exit(status);
  });
})();

您将不得不在配置'./e2e-tests/config/protractor.e2e.conf.js'中调整此路径,它应该是指向已构建的javascript protractor.e2e.conf.js的正确相对路径。

debug.conf.ts中,您可以看到默认导出,该导出是一个函数,该函数将立即执行。这意味着,如果我们运行require('./somePath/debug.conf'),或ts-node debug.conf.tsprotractor-flake将直接执行。然后,您可以例如存储以下npm脚本来运行protractor-flake

// ...
"scripts": {
   "protractor.flake": "ts-node ./somePath/debug.conf.ts"
}
// ...

让我知道是否有不清楚或不起作用的地方,干杯!