我正在使用Nightwatch JS使用Mocha运行器运行e2e测试。 我想将HTML报告器与套件集成。
我正在尝试使用nightwatch-html-reporter
包。但据我了解,CLI 命令存在问题(它写在 Nightwatch 文档中,使用摩卡时--reporter
不起作用(。
我还将代码示例从nightwatch-html-reporter
复制到我的全局变量.js但它似乎也不起作用。
测试运行,但任何地方都没有输出。
这是我的文件夹结构:
project
src
spec
e2e
globals
globals.js
tests
smoke
testFile.js
nightwatch.conf.js
这是我的 conf 文件:
const seleniumServer = require('selenium-server-standalone-jar');
const chromeDriver = require('chromedriver');
module.exports = {
src_folders: ['src/spec/e2e/tests'],
output_folder: 'report',
page_objects_path: [
'src/spec/e2e/pageObjects'
],
globals_path: 'src/spec/e2e/globals/globals.js',
custom_commands_path: 'src/spec/e2e/customCommands',
selenium: {
start_process: true,
server_path: seleniumServer.path,
host: '127.0.0.1',
port: 4444,
cli_args: {
'webdriver.chrome.driver': chromeDriver.path
}
},
test_runner: {
type: 'mocha',
options: {
ui: 'bdd',
reporter: 'list'
}
},
test_settings: {
default: {
launch_url: 'http://URL',
silent: true,
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true,
chromeOptions: {
args: [
"--no-sandbox",
"start-fullscreen"
]
}
}
}
}
};
这是我global.js
文件:
var HtmlReporter = require('nightwatch-html-reporter');
var reporter = new HtmlReporter({
openBrowser: true,
reportsDirectory: __dirname + '/reports'
});
module.exports = {
reporter: reporter.fn
};
我认为它不适用于夜巡-html-reporter,因为它可能不是摩卡记者(如果我错了,请纠正我(。
您希望在将夜巡与摩卡一起使用时使用内置或自定义摩卡记者。 您可以使用像mochawesome这样的自定义摩卡html报告器,但您必须进行一些黑客攻击,我不提供任何保证,因为我只是轻轻地测试了这些黑客。
以下是使用mochawesome的说明 (使用
"摩卡"测试:"^5.2.0", "mochawesome": "^3.1.1", "夜巡":"^0.9.21"(
- npm install mochawesome
- 修改 mochawesome node_modules\mochawesome *.js 文件以要求摩卡夜巡而不是摩卡。(请参阅答案末尾的说明/解释(
-
假设您使用的是 nightwatch.conf.js,请将测试运行程序配置为等效的
test_runner : { type : "mocha", options : { ui : "bdd", reporter : require("mochawesome") // Please observe that you can pass a custom report constructor function here, not just reporter names } }
- 运行测试并观察您仍然会看到默认控制台报告器 (spec(,但在运行结束时您还会看到如下输出:
[mochawesome] Report HTML 保存到 C:\projects\myWebApp\mochawesome-report\mochawesome.html
- 打开 html 报告。
这个解决方案是黑客和脆弱的,因为守夜人带有它自己的摩卡版本。 当您安装夜巡时,您将在node_modules中看到摩卡夜巡文件夹。这是守夜人正在使用的摩卡咖啡。 然而,mochawesome不使用摩卡夜巡。如果你看一下node_modules\mochawsome\dist\mochawesome.js你会看到如下代码行:
var Base = require('mocha/lib/reporters/base');
var Spec = require('mocha/lib/reporters/spec');
这意味着需要摩卡,而不是摩卡夜巡。理想情况下,这些行应该是:require('mocha-nightwatch/...(。 因此,请在所有需要修复的 *.js 文件中更改它们。 你也可以叉出mochawesome,把它们做成那样;)
调试注意事项: 尝试在 Mocha.prototype.reporter 函数的 node_modules\mocha-nightwatch\lib\mocha.js 中放置一些额外的 console.logs。我就是这样弄清楚发生了什么。
如果你使用摩卡,你可以随时使用摩卡: https://www.npmjs.com/package/mochawesome 我自己没有尝试过,但它看起来很整洁。