Saya memiliki proyek Jenkins yang pertama-tama menjalankan file batch yang menjalankan server Selenium untuk digunakan Busur Derajat. Kemudian menjalankan file batch kedua untuk menjalankan tes melalui Busur Derajat.
Menjalankan tes ini berfungsi dengan baik jika saya menjalankan file batch secara manual, dan membuat laporan melalui Mocha. Namun jika saya menjalankan file batch ini melalui Jenkins, tidak ada laporan yang dibuat.
Ini konfigurasi saya:
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);
}
};