我试图通过一项艰巨的任务在实时服务器上运行我的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并行运行任务。

10-06 15:30