2017-08-24 26 views
0

我有一个无人驾驶的设置,我的管道运行以下:Drone CI:为什么运行一个使用Selenium的npm脚本在结束之前退出?

pipeline: 
    test: 
    image: node:8.3.0 
    commands: 
     - npm install --only=dev 
     - npm run automation 

在我的package.json自动化脚本如下:

"automation": "node automation/automation.js" 

所以它运行的JavaScript文件,该文件创建一个selenium驱动程序并将其发送到页面等。

如果我手动运行该脚本,它将运行我的selenium测试,并在完成所有操作后按预期结束。

但是当drone运行它时,尽管仍然存在异步任务(来自selenium驱动程序)正在运行,但只要执行完整个javascript,它就会退出管道步骤。这使我的测试尽早结束,无法正确报告结果。

我在做什么错?

回答

0

我找到了答案,这个问题:

如果你碰巧使用任何类型的setTimeout或其他异步的事情,我没有想法为什么,但它会使硒反应异常,导致我的行为。

我修改了代码,以便正常使用driver.wait等各类硒异步来电无处不在,所以我从来没有使用手动超时。

我的理论是,如果硒没有检测到任何新的驱动程序的说明,也没有driver.wait或承诺等待,它会认为程序已经完成。由于某种原因,即使节点仍在运行,这使无人机检测到一个退​​出信号。

0

我不知道该怎么硒的作品,但一旦通过雄蜂回报称为命令,它认为它完成。要等待异步任务(即子进程)完成,您需要自己实现这一点。假设硒过程称为selenium,像这样可以工作:

 - npm run automation && while ps -C selenium > /dev/null 2>&1; do sleep 1; done 
相关问题