我有一个名为" test"的Grunt任务。此任务的职责是执行端到端测试。目前,如果我在一个单独的命令行窗口中启动grunt-protractor-runner,我可以运行我的测试。我通过执行以下命令开始:
node_modules\grunt-protractor-runner\node_modules\protractor\bin\webdriver-manager start
我的问题是,如果webdriver-manager尚未启动,有没有办法可以将其作为我的grunt任务的一部分启动?如果是这样,怎么样?我已经看过像grunt-contrib-connect这样的任务,但我不知道那些允许我让我的测试服务器作为任务的一部分运行。
答案 0 :(得分:2)
量角器会为你启动selenium服务器。
看起来你好像在那里。你的测试'任务应首先使用grunt-contrib-connect启动服务器以服务您要测试的应用程序。然后该任务应使用grunt-protractor-runner启动量角器,量角器将启动selenium服务器(假设seleniumAddress = null)。
如下所示:
connect: {
test: {
options: {
port: 9001,
base: [
'app'
]
}
}
}
protractor: {
options: {
keepAlive: true,
configFile: 'protractor.conf.js'
},
run: {}
}
grunt.registerTask('test', [
'connect:test',
'protractor:run'
]);
答案 1 :(得分:0)
启动webdriver会自动将以下内容放入您的grunt文件中:
grunt.initConfig: ({
..
protractor: {
test: {
options: {
configFile: 'protractor.conf.js'
}
}
},
..
}
..
grunt.registerTask('test': ['protractor:test']);
并在您的./protractor.conf.js
中关注 var chromeDriver =
'./node_modules/protractor/selenium/chromeDriver';
var platform = require('os').platform();
var fs = require('fs');
var platformChrome = chromeDriver + '-' + platform;
if (fs.existsSync(platformChrome)){
log.console('Using ' + platform + ' specific driver ');
chromeDriver = platformChrome;
}
exports.config = {
directConnect: true,
chromeDriver: chromeDriver,
// Capabilities to be passed to the webdriver instance
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
args: ['--no-sandbox']
}
},
..
}
启动你的grunt服务器:
grunt serve;
并在另一个终端开始测试:
grunt test