无人机 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运行它时,它会在整个javascript执行后立即退出管道步骤,即使仍然有异步任务(来自selenium驱动程序(正在运行。这使我的测试提前结束,无法正确报告结果。

我做错了什么?

我不知道硒是如何工作的,但是一旦无人机调用的命令返回,它就会认为它完成了。要等待异步任务(即子进程(完成,您需要自己实现。假设硒过程被称为selenium,这样的事情可以工作:

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

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

如果你碰巧使用任何类型的setTimeout或其他异步的东西,我不知道为什么,但它会使硒反应奇怪,导致我的行为。

我修改了我的代码以正确使用driver.wait和其他类型的 selenium 异步调用,这样我就永远不会使用手动超时。

我的理论是,如果硒没有检测到任何新的驱动程序指令,并且没有驱动程序.wait或承诺等待,它将假设程序已完成。出于某种原因,即使节点仍在运行,这也使无人机检测到退出信号。

相关内容

  • 没有找到相关文章

最新更新