我正在进行设置,以便在OS X下使用Chrome Canary作为测试浏览器运行angular-phonecat教程。
我得到了一切正常,除非我输入npm run protractor
e2e测试在所有浏览器的SAFARI上运行,尽管事实上我已将Chrome Canary指定为protractor-conf.js文件中的浏览器名称。这是代码:
exports.config = {
allScriptsTimeout: 11000,
specs: [
'e2e/*.js'
],
capabilities: {
'browserName': 'ChromeCanary',
'ChromeOptions': {
'binary': '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
},
chromeOnly: false,
baseUrl: 'http://localhost:8000/',
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
}
};
当我设置chromeOnly: true
时,测试会返回ELIFECYCLE
错误。我觉得这很尴尬,因为在Karma配置文件中指定了相同的浏览器名称,并且单元测试按照预期在Canary上运行。这是karma.conf.js代码:
module.exports = function(config){
config.set({
basePath : '../',
files : [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-route/angular-route.js',
'app/bower_components/angular-resource/angular-resource.js',
'app/bower_components/angular-animate/angular-animate.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/js/**/*.js',
'test/unit/**/*.js'
],
autoWatch : true,
frameworks: ['jasmine'],
browsers : ['ChromeCanary'],
plugins : [
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine'
],
junitReporter : {
outputFile: 'test_out/unit.xml',
suite: 'unit'
}
});
};
两个问题:
答案 0 :(得分:3)
我只需重复使用Chrome浏览器名称,但提供备用二进制路径,就可以使用Chrome Canary。这是适用于上述示例的代码段。
capabilities: {
'browserName': 'Chrome',
'ChromeOptions': {
'binary': '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
可能更容易将其抽象为单独的browsers.js文件,因此您可以像这样使用canary和chrome。
exports.chrome = {
name: 'Chrome',
browserName: 'chrome',
chromeOptions: {
'args': [
'incognito',
'disable-extensions',
'start-maximized',
'enable-crash-reporter-for-testing'
]
}
};
exports.chromeCanary = {
name: 'ChromeCanary',
browserName: 'chrome',
chromeOptions: {
'binary': 'C:/Users/gattridg/AppData/Local/Google/Chrome SxS/Application/chrome.exe',
'args': [
'incognito',
'disable-extensions',
'start-maximized',
'enable-crash-reporter-for-testing'
]
}
};
然后在你的protractor.conf.js
var browsers = require('./browsers'),
multiCapabilities: [
browsers.chrome
browsers.chromeCanary
],