在 Docker 跑 Nightwatch.js + Selenium Server (xvfb)

2018-07-02 Nightwatch.js

前陣子在寫 2018 iT 邦幫忙鐵人賽「Ops 的轉職之路 – Puppet 從入門就放棄」的時候看到了許多好文章,其中一個是「Nightwatch101:使用 Nightwatch 實現 End-to-End Testing 」講的是怎麼用 Nightwatch.js 做 e2e 測試,那時候就很想來玩一下自動化測試,直到最近工作有許多大型作業都要花費很多時間進行人工驗證,所以乾脆自己來練習一下怎麼寫自動化測試 …

 

但是這篇沒有要說怎麼寫 Nightwatch (雖然有一些些心得可以分享),而是要講怎麼在 Docker 跑 Nightwatch 測試 …

 

記得在更早之前有人問過我怎麼在 Travis CI 上跑 Nightwatch,當時沒有給一個很完整的答案,這次在這篇一起解答!

 

由於跑 Selenium 會需要啟動 Browser Driver,也需要圖形化功能,所以一般在 Container 都會跑不起來

大概會像這樣的錯誤訊息:

$ npm start

Starting selenium server… started – PID: 4041

[Test] Test Suite
=====================

Error retrieving a new session from the selenium server

Connection refused! Is selenium server started?

 

發現 selenium server 起不來 …

 

這時候就可以使用 xvfb 來模擬 Virtual Window 並且不需要把圖像輸出到螢幕,只跑在背景

 

說在前面,這篇的解法是參考「Connection Refused Is Selenium Server Started? unknown error #1529

 

安裝 xvfb 和 Browser driver

為了不要在主螢幕輸出,所以把圖像輸出到 99 這個螢幕上,因為根本不會用到 99 …

 

然後拿到 Travis CI 上跑一樣的指令丟到 before_install 內先跑

 

如果是 Circle CI 也可以如法炮製!

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱

%d 位部落客按了讚: