2017-08-24 31 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 
相關問題