Jasmine 如何获取规范名,将其用作dragrator-html-reporter-2中的输出文件名?
我正在使用Progrator html reporter 2进行报告。我需要得到规范名为html报告输出文件名 我正在配置文件中使用下面的代码Jasmine 如何获取规范名,将其用作dragrator-html-reporter-2中的输出文件名?,jasmine,protractor,Jasmine,Protractor,我正在使用Progrator html reporter 2进行报告。我需要得到规范名为html报告输出文件名 我正在配置文件中使用下面的代码 var today = new Date(), timeStamp = today.getMonth() + 1 + '-' + today.getDate() + '-' + today.getFullYear(); onPrepare: function () { browser.driver.manage().window().maxi
var today = new Date(),
timeStamp = today.getMonth() + 1 + '-' + today.getDate() + '-' + today.getFullYear();
onPrepare:
function ()
{
browser.driver.manage().window().maximize();
var fs = require('fs-extra');
scriptName=function(){
return browser.getProcessedConfig().then(function(config){
return config.specs;
});
};
fs.emptyDir('./target/htmlReports/'+scriptName+'-'+timeStamp+'/screenShots/', function (err) {
console.log(err);
});
jasmine.getEnv().addReporter({
specDone: function(result) {
//if (result.status == 'failed' || result.status == 'passed') {
if (1==1) {
browser.getCapabilities().then(function (caps) {
var browserName = userData.testUser.browser.toUpperCase();
browser.takeScreenshot().then(function (png) {
var stream = fs.createWriteStream('./target/htmlReports/'+scriptName+'-'+timeStamp+'/screenShots/'+ result.fullName+'.png');
stream.write(new Buffer(png, 'base64'));
stream.end();
});
});
}
}
});
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: 'target/XMLReports',
filePrefix: 'xmlresults'
}));
},
onComplete: function() {
var browserName, browserVersion;
var capsPromise = browser.getCapabilities();
capsPromise.then(function (caps) {
browserName = userData.testUser.browser.toUpperCase();
platform=caps.get('platform');
browserVersion = caps.get('version');
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: './target/htmlReports/'+scriptName+'-'+timeStamp,
screenshotPath: './target/htmlReports/'+scriptName+'-'+timeStamp+'/screenShots',
testBrowser: browserName,
browserVersion: browserVersion,
outputFilename:'ProtractorTestReport',
testPlatform: platform,
//browserVersion: browserVersion,
modifiedSuiteName: true,
screenshotsOnlyOnFailure: false
};
new HTMLReport().from('./target/XMLReports/xmlresults.xml', testConfig);
});
},
plugins: [{
package: 'jasmine2-protractor-utils',
disableHTMLReport: true,
disableScreenshot: false,
screenshotPath:'./target/htmlReports/'+scriptName+'-'+timeStamp+'/screenShots',
screenshotOnExpectFailure:true,
screenshotOnSpecFailure:true,
clearFoldersBeforeTest: true,
htmlReportDir: './target/htmlReports'
}],
我试过了
browser.getProcessedConfig().then(函数(配置){
console.log(config.specs);
});代码>
,它返回
['D:\projects\HeartlandSSP\Automation\TenantManagement\Ssp.TenantManagement.dragor\u Test\specs\createTenantSpec.js',
'C:\Users\renusri.rajalingam\AppData\Roaming\npm\node\u modules\dragrator\builded\frameworks\uuuuuu dragrator\u internal\u每次安装后\u spec.js']
但是实际的规范名createTenantSpec.js不会返回。我只需要规范的文件名,而不需要描述或它的函数名。因为我有5个规范,所以我需要用规范名生成单独的报告。有人能帮我一下吗?config.specs的值是一个数组,根据输出,文件的绝对路径位于索引0
。因此,可以按如下方式提取文件名
browser.getProcessedConfig().then(function (config) {
var fullName = config.specs[0];
var fileName = fullName.substring(fullName.lastIndexOf('/')+1);
console.log('fileName:', fileName);
});
// output:
// fileName: createTenantSpec.js
或者,如果希望将所有文件名都包含在此数组中,可以使用以下命令:
browser.getProcessedConfig().then(function (config) {
var fileNames = config.specs.map(function(path) {
return path.substring(path.lastIndexOf('/')+1);
});
fileNames.forEach(function(fileName) {
console.log('fileName:', fileName);
});
});
// output:
// fileName: createTenantSpec.js
// __protractor_internal_afterEach_setup_spec.js
参考资料:
array.prototype.map()
=>
array.prototype.forEach()
browser.getProcessedConfig().then(function (config)
{
var fullName = config.specs[0];
console.log('fullName' ,fullName);
var start= fullName.lastIndexOf('\\');
var stop=fullName.length;
console.log('start:', start);
console.log('stop:', stop);
var fileName = fullName.substring(start+1,stop);
console.log('fileName:', fileName);
});
我尝试用上面的代码替换var fullName=config.specs;(实际返回上面提到的数组输出)但仍然返回未定义的。我无法提取名称。@Renu嗯,我没有看到它是一个数组。我调整了我的答案。