我试图通过一项艰巨的任务在实时服务器上运行我的portractor测试。
我已经安装了实时服务器(https://www.npmjs.com/package/live-server)并执行grunt-execute。使用grunt execute,我可以通过2个步骤使用grunt命令启动实时服务器:
1我创建了一个节点脚本(liveServer.js)
var liveServer = require("live-server");
var params = {
port: 8080,
host: "localhost",
open: true,
wait: 1000
};
liveServer.start(params);
第二,我在grunt文件中创建了一个任务来启动脚本:
(在grunt.initConfig中)
execute: {
liveserver: {
src: ['liveServer.js']
},
}
并注册了一个触发它的命令:
grunt.registerTask('live', [
'execute:liveserver'
]);
现在,如果我在命令行中运行“ grunt live”,则实时服务器将启动,打开浏览器,然后可以浏览我的应用程序。
我还在grunt文件中创建了一个量角器任务,它也可以正常工作。
(在grunt.initConfig中)
protractor: {
options: {
keepAlive: false,
noColor: false
},
e2e: {
options: {
configFile: 'protractor.conf.js',
}
}
},
如果我通过已注册的任务触发它,则量角器测试运行良好,仅需确保实时服务器先运行即可。
因此,我当然想将两者结合在一个命令中,该命令启动实时服务器,然后运行量角器测试。
所以我尝试了:
grunt.registerTask('runProtractor', [
'execute:liveserver',
'protractor'
]);
但是不幸的是,这不起作用,实时服务器启动,然后……什么也没发生,量角器测试没有运行。我尝试更改一些实时服务器参数,例如打开和等待,但是没有任何运气。也没有错误消息。
正如我之前所说,任务都可以正常运行(使用两个命令窗口,首先在一个窗口中启动实时服务器,然后在另一个窗口中使用量角器)
有人知道为什么实时服务器启动后我不继续吗?
最佳答案
实时服务器的执行会阻止所有后续任务,因为它不会“完成”,即,使任务仍在运行,这就是为什么它不会继续执行下一个任务的原因。您可以使用grunt-concurrent并行运行任务。