我有一个Jenkins项目,它首先运行一个批处理文件,运行一个selenium服务器供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);
}
};
答案 0 :(得分:0)
您需要检查以下内容:
您当前的问题,我认为主要是Jenkins无权在您的目录中编写文件(创建报告)。请检查一下!
答案 1 :(得分:0)
实际问题是Jenkins在后台作为服务运行。当作为服务运行时,量角器不可能打开chrome来进行测试。
量角器没有创建任何报告,因为它从未完成测试,因为它从未启动它们。当我运行批处理文件时,它没有作为服务运行,因为我的操作不是服务。