带有 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"
}
// ...
如果有任何不清楚或不起作用的地方,请告诉我,干杯!
所以我有以下场景。
我们有一个基于 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"
}
// ...
如果有任何不清楚或不起作用的地方,请告诉我,干杯!