通过grunt

时间:2015-10-10 20:26:46

标签: node.js gruntjs protractor

我试图通过一个grunt任务在live-server上运行我的portractor测试。 我已经安装了live-server(https://www.npmjs.com/package/live-server)和grunt-execute。通过grunt执行,我设法用两个步骤中的grunt命令启动live-server:

我创建了一个节点脚本(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'
]);

但不幸的是,这不起作用,实时服务器启动然后......没有任何反应,量角器测试没有运行。我尝试更改一些实时服务器参数,如打开和等待,但没有任何运气。也没有错误消息。

正如我之前单独说过的那样,任务工作都很好(有两个命令窗口,首先在一个中启动live-server,然后在另一个中启动量角器)

是否有人知道为什么在实时服务器启动后我没有继续?

1 个答案:

答案 0 :(得分:1)

实时服务器的执行会阻止所有后续任务,因为它没有完成",即为了使任务仍在运行,这就是为什么它不会继续执行下一个任务。您可以使用grunt-concurrent并行运行任务。