2016-12-23 121 views
4

我想我的量角器 - screenshoter插件創建報告目錄與規格名稱作爲目錄名稱。規格名稱是運行量角器時要作爲參數傳遞:
量角器--specs my_spec.js conf.js

調用上面的命令後,我想運行我的測試報告中,以創建目錄my_spec.js(或my_spec)。
插件的配置包括在conf.js

在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中訪問量角器的'--specs'參數值?

+0

你可以嘗試下面的建議,讓我知道是否可行! – AdityaReddy

回答

0

使用process.argv,這將給你一個包含所有參數

數組觸發量角器時,您可以訪問全部通過CLI參數請參閱從的NodeJS文檔下面的提取物對process.argv

過程.argv屬性返回一個數組,其中包含啓動Node.js進程時傳遞的命令行參數 。第一個 元素將是process.execPath。如果需要訪問argv [0]的 原始值,請參閱process.argv0。第二個元素將是正在執行的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 
}] 
+0

你的決議是好的,雖然我認爲也許框架提供了一些更容易獲得價值的方法。無論如何,謝謝! –

+0

修剪掉字符串中的'.js'非常重要 - 否則會發生錯誤(這很明顯 - 文件名和目錄名稱不能相同)。 –

+0

是的,懶得添加邏輯刪除.js :)無論如何批准你的編輯。謝謝! – AdityaReddy

相關問題