带有 Typescript 实现的 Protractor Flake 不起作用

Protractor Flake with Typescript implementation not working

所以我有以下场景。

我们有一个基于 this 框架的 Protractor-Cucumber 框架。

修改框架,配置文件用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);
        }
    }
};

回顾一下这个实现的框架,现在他们已经实现了 protractor-flake,这是我需要包含的东西。

我已经尝试使用正在使用的实际配置,并且可以看到 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'

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

我还浏览了 Nick Tomlin 的量角器薄片存储库和黄瓜特定文档,并在 After 支持代码中添加了必要的 console.log 并从 cli 测试了 运行ning protractor flake 但没有似乎工作。我收到上面的错误,然后是:

Using cucumber to parse output Tests failed but no specs were found.

All specs will be run again.Re-running tests: test attempt 2

但是没有测试 运行 .i.e.根本没有 运行。

当我 运行 使用 npm 的通常配置时,所有 运行 都很好,没有 re 运行 of protractor flake。

任何人都可以在这个问题上提供他们的 2 美分,我错过了什么?

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

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

提前致谢。

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

1) 检查您当前的 debug.conf.js 是否有效。通过将 debug.conf.js 复制到您计算机上的某个文件夹并 运行ning protractor-flake 并在 args.

中使用您的 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中你可以看到一个默认导出函数,这个函数被执行immediately.That意味着,如果我们运行require('./somePath/debug.conf'),或者ts-node debug.conf.ts, protractor-flake 会直接执行。例如,您可以为 运行ning protractor-flake 存储以下 npm 脚本:

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

如果有任何不清楚或不起作用的地方,请告诉我,干杯!