Docker 服務
此服務旨在與 WebdriverIO 搭配使用,並協助針對/使用容器化應用程式執行功能/整合測試。它使用廣受歡迎的 Docker 服務(需另外安裝)來執行容器。
為何要使用它?
理想情況下,您的測試會在某種類型的 CI/CD 管道中執行,其中通常沒有「真實」的瀏覽器和其他您的應用程式所依賴的資源。隨著 Docker 的出現,實際上所有必要的應用程式依賴項都可以容器化。使用此服務,您可以在 CI 中以及完全隔離的情況下執行您的應用程式容器或 docker-selenium(假設 CI 可以將 Docker 安裝為依賴項)。如果您的應用程式需要與您的主要作業系統隔離,這也適用於本機開發。
運作方式
服務將執行現有的 Docker 映像檔,一旦準備就緒,就會啟動 WebdriverIO 測試,這些測試應針對您的容器化應用程式執行。
安裝
執行
npm install wdio-docker-service --save-dev
有關如何安裝 WebdriverIO 的說明,請參閱此處。
設定
預設情況下,在主機系統上安裝 Google Chrome、Firefox 和 PhantomJS 時可以使用。為了使用此服務,您需要將 docker
加入您的服務陣列
// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};
選項
dockerOptions
執行 Docker 容器所需的各種選項
類型:Object
預設值:{ options: { rm: true } }
範例
dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'https://127.0.0.1:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}
dockerOptions.image
Docker 容器名稱標籤。可以是本機的或來自 Docker HUB。
類型:String
必要:true
dockerOptions.healthCheck
設定,在啟動測試之前檢查您的容器是否已準備就緒。通常這會是一個 localhost URL。如果未設定 healthCheck,Webdriver 會在 Docker 容器啟動後立即開始執行測試,考慮到 Web 服務在 Docker 容器內啟動需要時間,這可能太早了。
類型:String|Object
Object 使用的選項
- url - 容器內運行的應用程式的 URL
- maxRetries - 在 healthcheck 失敗之前的重試次數。預設值:10
- inspectInterval - 每次重試之間的間隔,以毫秒為單位。預設值:500
- startDelay - 開始 healthcheck 的初始延遲,以毫秒為單位。預設值:0
範例 1 (字串):healthCheck: 'https://127.0.0.1:4444'
範例 2 (物件)
healthCheck: {
url: 'https://127.0.0.1:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}
dockerOptions.options
docker run
命令使用的選項對應。如需有關 run
命令的更多詳細資訊,請按一下此處。
任何單字母選項都會轉換為 -[option]
(即 d: true
-> -d
)。
任何兩個或更多字元的選項都會轉換為 --[option]
(即 rm: true
-> --rm
)。
對於可能多次使用的選項(即 -e
、-add-host
、--expose
等),請使用陣列標記法(即 e: ["NODE_ENV=development", "FOO=bar"]
)。
類型:Object
範例
options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}
dockerOptions.args
您可能想要傳遞到容器中的任何引數。對應於 Docker run CLI 中的 [ARG...]
。
類型:String
dockerOptions.command
您可能想要傳遞到容器中的任何命令。對應於 Docker run CLI 中的 [COMMAND]
。
類型:String
onDockerReady
當 Docker 應用程式準備就緒時呼叫的回呼方法。是否準備就緒由 ping healthCheck
URL 的能力決定。
類型:Function
dockerLogs
應儲存 Docker 容器記錄的路徑
類型:String
測試使用案例/做法
如需更多詳細資訊,請瀏覽我們的 Wiki。