У меня есть проект Jenkins, который сначала запускает командный файл, который запускает сервер селена для использования Protractor. Затем он запускает второй командный файл, чтобы запустить тесты через Protractor.
Выполнение этих тестов работает нормально, если я выполняю командные файлы вручную и генерирую отчет через 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);
}
};