2015-09-29 40 views
6

我有一個使用grunt任務運行多個spec文件的自動化框架。一些使用預定義的套件運行,另一些使用文件命名約定。每個spec文件平均有一個「describe」塊,每個塊通常有多個「it」塊。在多個spec文件中彙總量角器結果

我目前使用茉莉花SPEC-記者這給每個規範文件,它看起來像後有用和詳細的結果:

------------------------------------ 
[chrome OS X 10.10 #1-78] PID: 1880 
[chrome OS X 10.10 #1-78] Specs: /**/**/jenkins/workspace/Main Suites/tests/User_Management/smoke_student_does_something.js 
[chrome OS X 10.10 #1-78] 
[chrome OS X 10.10 #1-78] Using SauceLabs selenium server at http://******* 
[chrome OS X 10.10 #1-78] Spec started 
[chrome OS X 10.10 #1-78] 
[chrome OS X 10.10 #1-78] 1 A student can link and unlink to another student account 
[chrome OS X 10.10 #1-78]  ✓ can link to another student account (33 secs) 
[chrome OS X 10.10 #1-78]  ✓ can unlink a student account (14 secs) 
[chrome OS X 10.10 #1-78] 
[chrome OS X 10.10 #1-78] Executed 2 of 2 specs SUCCESS in 46 secs. 
[chrome OS X 10.10 #1-78] SauceLabs results available at http://saucelabs.com/jobs/***************** 

[launcher] 5 instance(s) of WebDriver still running 

量角器給了我一個相當無用的總結控制檯輸出後,所有的jasmine報告引用taskId並列出了pass +失敗。這是量角器總結的樣子:

.... 
[launcher] chrome #1-69 passed 
[launcher] chrome #1-70 failed 1 test(s) 
[launcher] chrome #1-73 passed 
[launcher] chrome #1-71 passed 
[launcher] chrome #1-75 passed 
[launcher] chrome #1-72 passed 
[launcher] chrome #1-79 passed 
[launcher] chrome #1-74 passed 
[launcher] chrome #1-80 passed 
[launcher] chrome #1-81 passed 
[launcher] chrome #1-82 passed 
[launcher] chrome #1-84 passed 
[launcher] chrome #1-83 passed 
[launcher] chrome #1-85 passed 
[launcher] chrome #1-88 passed 
[launcher] chrome #1-87 passed 
[launcher] chrome #1-86 passed 
[launcher] chrome #1-76 passed 
[launcher] chrome #1-89 passed 
[launcher] chrome #1-90 passed 
[launcher] chrome #1-91 passed 
[launcher] chrome #1-92 passed 
[launcher] chrome #1-78 passed 
[launcher] chrome #1-93 passed 
[launcher] chrome #1-95 passed 
[launcher] chrome #1-77 passed 
[launcher] chrome #1-96 passed 
[launcher] chrome #1-94 failed 5 test(s) 
[launcher] overall: 12 failed spec(s) 
[launcher] Process exited with error code 1 
>> 
Warning: Tests failed, protractor exited with code: 1 Use --force to continue. 

我的問題是我想看到的所有規格文件,沒有TaskID的摘要,只有失敗的規格,而且他們全部完成運行後,才。 MVP將只是列表中失敗的規格文件名或者以易於閱讀的格式(xml,html等)寫入文件中。下一次迭代時,我會在類似茉莉花記者的每次失敗旁邊提供「描述」和「它」的塊描述,錯誤代碼和saucelabs鏈接。

我通常在單個作業中有數百個規格文件,並且不得不梳理所有單個結果來追蹤哪些規格文件失敗是非常煩人的(因爲我覺得自動生成的總結應該有這些信息)。我真的不得不在控制檯輸出上做一個ctrl + f來查找「失敗」,只是看看哪些規格失敗了。因爲我們的工作是如何通過Jenkins組織的,所以我想避免爲失敗者列表選擇saucelabs。一旦作業完成後,控制檯輸出應該是一個簡單的第一個源/參考。

每個第三方記者的範圍似乎只能達到spec文件級別。在每個spec文件執行後,它會報告,然後進入下一個覆蓋前一個報告的文件。我打開HTML或XML報告,它總是隻有一個spec文件的結果。我似乎無法將任何信息帶入多個spec文件的摘要中。我調整了「合併(全部)」設置,而且似乎沒有爲所有規格文件構建報告。他們似乎一次只考慮一個文件。

我有以下記者試驗:

茉莉花記者

茉莉-SPEC-記者

量角器,jasmine2-HTML-記者

茉莉花JSON - 測試 - 記者

我已經能夠直接操縱量角器「reportSummary」代碼給我最想要的東西(除了醬菜鏈接),但這並不理想,因爲我不得不說服他們採用它。這是我的總結看起來像:

******************** 
* FAILED SPEC(S) * 
******************** 

/Playground/Test_Spec_2.js failed 2 test(s) 
    can log in once 
     FAILURE: Expected false to be true, 'Didn't see home page'. 
     FAILURE: Expected false to be true, 'Didn't see link'. 
    can log in twice 
     PASSED 
    can log in thrice 
     FAILURE: Expected false to be true, 'Didn't see home page'. 

/Playground/Test_Spec_3.js failed 1 test(s) 
    can login 
     FAILURE: Expected false to be true, 'Didn't see home page'. 

******************** 
*  SUMMARY  * 
******************** 
overall: 2/4 failed spec(s) 
******************** 

我錯過了什麼使用這些茉莉花記者?我的框架是不是按照我想要的方式與這些記者合作?我是否應該說服量角器傢伙加強他們的總結記者的選擇?

+0

我認爲你最好的選擇可能是對其中一位記者提出要求的格式選項的拉取請求。我懷疑你會說服@Jmr爲你做出這種改變。 – MBielski

回答

0

您可以在所有測試運行後加入所有報告。只要確保你擁有所有你想要的同一個文件夾

return browser.getCapabilities().then(function (caps) { 
     var sessionId = caps.get('webdriver.remote.sessionid'); 
     var date = dateMethods.getCurrentDate(); 
     var folder = 'test-results/reports-' + date; 
     jasmine.getEnv().addReporter(new yourReporter({ 
      savePath: folder + '/report' + '-' + sessionId.substr(0, 5) 
     })); 
    }); 

然後你就可以加入他們的行列,並刪除該文件夾(使用「FS」模塊或類似的東西)的內部測試或每次運行時將其重命名等等創建

0

我使用這個記者一個新的文件夾:https://www.npmjs.com/package/protractor-jasmine2-screenshot-reporter 我在規範文件的日常所有規格文件與此代碼完整的報告

var HtmlScreenshotReporter = require(process.env['USERPROFILE'] + '/node_modules/protractor-jasmine2-screenshot-reporter'); 
var utils = require('../util/utils.js'); 
var reporter = new HtmlScreenshotReporter({ 
dest: 'target/screenshots_'+ utils.returnToday("_"), 
filename: 'AutoTestRun-report.html' 
}); 

beforeLaunch: function() { 
    return new Promise(function(resolve){ 
     reporter.beforeLaunch(resolve); 
    }); 
    }, 
onPrepare: function() { 
    jasmine.getEnv().addReporter(reporter); 
    browser.driver.manage().window().maximize(); 
    browser.driver.get('https://core.arkcase.dev.armedia.com/arkcase/login'); 
    browser.manage().timeouts().setScriptTimeout(60000); 
}, 

我用今天返回的方法日期到摺疊的名字呃是:

this.returnToday = function(sign){ 
     var now = new Date(); 
     var day = ("0" + now.getDate()).slice(-2); 
     var month = ("0" + (now.getMonth() + 1)).slice(-2); 
     return today = (month) + sign + (day) + sign + now.getFullYear(); 
    } 
0

你可以用你想要的設計創建你自己的記者。

爲此,您可以重寫以下茉莉花方法。

self.jasmineStarted = function(summary) { 

}; 

self.suiteStarted = function(suite) { 

}; 

self.specStarted = function(spec) { 

}; 

self.specDone = function(spec) { 

}; 

self.suiteDone = function(suite) { 

}; 

self.jasmineDone = function() { 

}; 

您可以使用所需的信息創建自己的模板。我爲我創建了一個如下。 enter image description here

您可以通過文檔here