我希望 protractor-screenshoter-plugin 创建带有spec name作为目录名的报告目录。在运行Protractor时,Spec name将作为参数传递:
量角器--specs my_spec.js conf.js
在调用上述命令后,我希望运行我的测试并在目录 my_spec.js (或my_spec)中创建报告。
插件的配置包含在 conf.js 中:
plugins: [{
package: 'protractor-screenshoter-plugin',
screenshotOnExpect: 'failure+success',
screenshotOnSpec: 'failure',
withLogs: false,
htmlReport: true,
screenshotPath: '',//I would like to put the --specs parameter value here
writeReportFreq: 'end',
clearFoldersBeforeTest: true
}]
任何想法怎么做?如何在conf.js中访问Protractor的'--specs'参数值?
答案 0 :(得分:0)
您可以使用process.argv
访问在触发Protractor时传递的所有CLI参数,这将为您提供包含所有参数的数组
请参阅process.argv
上的Nodejs文档中的以下摘录process.argv属性返回包含命令行的数组 启动Node.js进程时传递的参数。首先 元素将是process.execPath。如果访问,请参阅process.argv0 需要argv [0]的原始值。第二个元素是 正在执行的JavaScript文件的路径。剩下的要素 将是任何其他命令行参数。
执行protractor conf.js --spec demo2.js
console.log(process.argv)
中的语句conf.js
将输出如下所示的内容
[ 'C:\\Program Files\\nodejs\\node.exe',
'C:\\Users\\aditya\\AppData\\Roaming\\npm\\node_modules\\protractor\\bin\\protractor',
'conf.js',
'--specs',
'demo2.js' ]
然后构建您的逻辑以提取您需要的值。在这种特定情况下,要获取specs
值(没有扩展名,以便不发生文件名冲突),以下函数将有所帮助
function getSpecsFromCLIArg() {
for (i = 0; i < process.argv.length; i++) {
if (process.argv[i] === '--specs') {
var specFile = process.argv[i + 1];
return specFile.substr(0, specFile.indexOf('.'));
}
}
}
console.log(getSpecsFromCLIArg())
plugins: [{
package: 'protractor-screenshoter-plugin',
screenshotOnExpect: 'failure+success',
screenshotOnSpec: 'failure',
withLogs: false,
htmlReport: true,
screenshotPath: getSpecsFromCLIArg(),
writeReportFreq: 'end',
clearFoldersBeforeTest: true
}]