ฉันมีโปรเจ็กต์ Jenkins ที่รันแบตช์ไฟล์ที่รันเซิร์ฟเวอร์ซีลีเนียมเพื่อให้ไม้โปรแทรกเตอร์ใช้ก่อน จากนั้นจะรันไฟล์แบตช์ที่สองเพื่อรันการทดสอบผ่านไม้โปรแทรกเตอร์
การเรียกใช้การทดสอบเหล่านี้จะทำงานได้ดีหากฉันรันไฟล์แบตช์ด้วยตนเอง และสร้างรายงานผ่าน Mocha อย่างไรก็ตาม หากฉันเรียกใช้ไฟล์แบตช์เหล่านี้ผ่าน Jenkins จะไม่มีการสร้างรายงาน
นี่คือการกำหนดค่าของฉัน:
var today = new Date().toJSON().slice(0, 10);
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
rootElement: '[ng-app]',
allScriptsTimeout: 80000,
// resultJsonOutputFile: './Report.json', // adds a JSON file from protractor test reults
framework: 'mocha',
mochaOpts: {
reporter: 'mochawesome-screenshots',
reporterOptions: {
reportDir: 'reports/' + today + '/',
reportName: 'DOCS Dev QA Automation' + today, // TODO: Enter desired report name
reportTitle: 'DOCS Dev QA Automation', // TODO: Enter desired report title
takePassedScreenshot: false,
clearOldScreenshots: true
},
timeout: 60000
},
specs: [ 'yadda_runner.js' ],
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [ '--lang=en',
'--window-size=1280,1024' ]
}
//browserName: 'firefox'
},
// Runs on start up and logs in to Docs
onPrepare: function() {
browser.ignoreSynchronization = true;
browser.driver.get(browser.params.baseUrl);
browser.driver.findElement(by.id('sign_in')).click();
browser.driver.switchTo().frame('loginframe');
browser.driver.findElement(by.id('userName')).sendKeys(browser.params.login.username);
browser.driver.findElement(by.id('verify_user_btn')).click();
// TODO: see if there is a better way to wait for this, unfortunately the browser.driver.wait isElementPresent doesn't seem to work
browser.driver.sleep(2000); // wait for password field to be visible
browser.driver.findElement(by.id('password')).sendKeys(browser.params.login.password);
browser.driver.findElement(by.id('btnSubmit')).click();
// Wait for login to complete
return browser.driver.wait(function () {
return browser.driver.getCurrentUrl().then(function (url) {
return /projects/.test(url); // tests that the current URL contains the word 'projects'
});
}, 60000);
},
// Runs on exit and logs out of Docs
onComplete: function() {
browser.driver.findElement(by.css('.header__control.header__control--profile')).click();
browser.driver.findElement(by.css('body > div > div > header > div > ul > li:nth-child(2) > flyout > div > div > ul > li:nth-child(3) > ul > li > a')).click();
return browser.driver.wait(function () {
return browser.driver.getCurrentUrl().then(function (url) {
return /session/.test(url); // tests that the current URL contains the word 'session'
});
}, 60000);
}
};