javascript - 无法使用 Nightwatchjs 获取 html 报告
问题描述
我想有测试结果的 html 报告所以去试试这个。但是我有一个问题,我已经完成了我的设置,但无法运行它。
在设置之前,我已经完成了fs
和的安装path
。
下面nightwatch.json
的文件。
{
"src_folders" : ["tests"],
"page_objects_path": "page-objects",
"globals_path": "./globals.js",
"output_folder": "reports",
"webdriver" : {
"start_process": true,
"server_path": "node_modules/chromedriver/lib/chromedriver/chromedriver.exe",
"port": 9515
},
"test_settings" : {
"default" : {
"desiredCapabilities": {
"browserName": "chrome",
"chromeOptions": {
"args": ["incognito", "start-maximized", "disable-infobars"]
}
}
}
}
}
我已经完成了链接中提到的所有设置。但得到一个错误:运行它npm test --reporter html-reporter.js
失败:1 个错误(1 毫秒)类型错误:无法在 processTicksAndRejections(内部/进程/task_queues. js:93:5)
在下面的代码中,由于options
参数为空而导致的错误。
module.exports = {
write : function(results, options, done) {
var reportFilename = options.filename_prefix + (Math.floor(Date.now() / 1000)) + '.html';
var reportFilePath = path.join(__dirname, options.output_folder, reportFilename);
但我看到它是链接中提到的所有设置
解决方案
试试这个...在同一目录中创建一个 html-reporter.hbs 和 html-reporter.js 文件
从下面复制粘贴下面的代码到 html-reporter.js 中。还要注意使用的路径。它会起作用的。html-reporter.hbs 的代码可以从https://gist.github.com/denji/204690bf21ef65ac7778使用
var fs = require('fs');
var path = require('path');
var handlebars = require('../../node_modules/handlebars');
var json2csv = require('../../node_modules/json2csv');
var _ = require('../../node_modules/lodash');
module.exports = {
write : function(results, options, done) {
var date = new Date();
var dateString = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
var ampm = ((date.getHours()) >= 12) ? "PM" : "AM";
var timeStamp = dateString + " " + date.getHours() + ":" + date.getMinutes() + " " +ampm;
var serverUrl = options.globals.server;
var browser = options.filename_prefix.split('_').join(' ');
var skippedCount = 0, totalTests = 0, testFailures = 0, totalTime = 0.0;
var suiteNames = [];
for (var workflow in results.modules) {
if ((results.modules).hasOwnProperty(workflow)) {
totalTests = totalTests + results.modules[workflow].tests;
testFailures = testFailures + results.modules[workflow].failures;
totalTime = parseFloat(totalTime)+ parseFloat(results.modules[workflow].time);
suiteNames.push(results.modules[workflow].group);
for (var skippedTests in results.modules[workflow].skipped) {
if ((results.modules[workflow].skipped).hasOwnProperty(skippedTests)) {
skippedCount = skippedCount + parseInt(skippedTests.length);
}
}
}
}
var testsPassed = totalTests - testFailures - skippedCount;
this.writeToHTML(results, options, timeStamp,browser, serverUrl,totalTests, testsPassed,testFailures,skippedCount,done);
},
writeToHTML : function(results, options, timeStamp,browser, serverUrl,totalTests, testsPassed,testFailures,skippedCount,done) {
let datestm = new Date();
let month = parseInt(datestm.getMonth()) + 1;
let executionTime = datestm.getDate() + '-' + month + '-' +datestm.getFullYear() +'_'+datestm.getHours()+'-'+datestm.getMinutes()+'-'+datestm.getSeconds();
var htmlFilename = options.globals.reportFileName +'_'+executionTime+'.html';
var htmlFilePath = __dirname + '/../../testReports/' + htmlFilename;
// var htmlFilename = options.globals.reportFileName + '.html';
// var htmlFilePath = __dirname + '/../../testReports/' + htmlFilename;
// read the html template
fs.readFile('./testReports/custom-report/html-reporter.hbs', function (err, data) {
if (err) throw err;
var template = data.toString();
// merge the template with the test results data
var html = handlebars.compile(template)({
results: results,
options: options,
timestamp: timeStamp,
browser: browser,
server: serverUrl,
totalTests: totalTests,
testsPassed: testsPassed,
testsFailed: testFailures,
testsSkipped: skippedCount,
totalAssertions: results.tests,
assertionsPassed: results.passed,
assertionsFailed: results.failed
});
// write the html to a file
fs.writeFile(htmlFilePath, html, function (err) {
if (err) throw err;
console.log('Report generated: ' + htmlFilePath);
done();
});
});
}
};
推荐阅读
- python-3.x - 我试试这个,不知道如何打开第一个视频。此代码在浏览器中打开搜索
- java - 带有用于从 JSON 转换为类的聚合对象的 Jackon API
- javascript - Jquery 选择器没有正确定位
- sql - 与一个 ID 关联多个 ID 的关联“朋友”ID 进行比较时,如何列出得分最低的 ID?
- python - 使用 APScheduler 运行 scrapy spider 时不生成输出
- azure - 是否可以在 azure 数据工厂的 foreach 中迭代 2 个不同的输入?
- google-cloud-platform - 如何使用 Google 服务帐户获取刷新令牌?
- php - php || 当检查不为空或字符串时,条件语句没有给出正确的结果
- karate - 空手道无法使用嵌套的 json 数组设置多个
- javascript - 如何从 .txt 文件中获取动态内容以在动态加载时显示在多个 html 页面中