使用雲端服務
使用像 Sauce Labs、Browserstack、TestingBot、LambdaTest 或 Perfecto 這樣的隨選服務搭配 WebdriverIO 非常簡單。您只需要在選項中設定您服務的 user
和 key
即可。
您也可以選擇設定雲端特定的功能,例如 build
來參數化您的測試。如果您只想在 Travis 中執行雲端服務,您可以使用 CI
環境變數來檢查您是否在 Travis 中,並相應地修改組態。
// wdio.conf.js
export let config = {...}
if (process.env.CI) {
config.user = process.env.SAUCE_USERNAME
config.key = process.env.SAUCE_ACCESS_KEY
}
Sauce Labs
您可以設定您的測試以在 Sauce Labs 中遠端執行。
唯一的要求是在您的組態中設定 user
和 key
(可以從 wdio.conf.js
匯出,或傳遞到 webdriverio.remote(...)
) 為您的 Sauce Labs 使用者名稱和存取金鑰。
您也可以在任何瀏覽器的功能中傳遞任何可選的測試組態選項作為鍵/值對。
Sauce Connect
如果您想針對無法連線到網際網路的伺服器 (例如在 localhost
上) 執行測試,那麼您需要使用 Sauce Connect。
支援這點不在 WebdriverIO 的範圍內,所以您必須自行啟動它。
如果您正在使用 WDIO 測試執行器,請在您的 wdio.conf.js
中下載並設定 @wdio/sauce-service
。它可以協助 Sauce Connect 執行,並提供其他功能,可以更好地將您的測試整合到 Sauce 服務中。
搭配 Travis CI
但是,Travis CI 確實支援 在每次測試前啟動 Sauce Connect,因此遵循他們的操作說明是一個選項。
如果您這樣做,您必須在每個瀏覽器的 capabilities
中設定 tunnel-identifier
測試組態選項。Travis 預設會將此設定為 TRAVIS_JOB_NUMBER
環境變數。
此外,如果您希望 Sauce Labs 按建置編號將您的測試分組,您可以將 build
設定為 TRAVIS_BUILD_NUMBER
。
最後,如果您設定 name
,這會變更此建置在 Sauce Labs 中此測試的名稱。如果您將 WDIO 測試執行器與@wdio/sauce-service
結合使用,WebdriverIO 會自動設定測試的適當名稱。
範例 capabilities
browserName: 'chrome',
version: '27.0',
platform: 'XP',
'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER,
name: 'integration',
build: process.env.TRAVIS_BUILD_NUMBER
逾時
由於您是遠端執行測試,因此可能需要增加一些逾時。
您可以透過傳遞 idle-timeout
作為測試組態選項來變更閒置逾時。這會控制 Sauce 在關閉連線前等待指令之間的時間長度。
BrowserStack
WebdriverIO 也內建了 Browserstack 整合功能。
唯一的要求是在您的組態中設定 user
和 key
(可以從 wdio.conf.js
匯出,或傳遞到 webdriverio.remote(...)
) 為您的 Browserstack 自動化使用者名稱和存取金鑰。
您也可以在任何瀏覽器的功能中傳遞任何可選的支援的功能作為鍵/值對。如果您將 browserstack.debug
設定為 true
,它將錄製工作階段的螢幕截圖,這可能會有所幫助。
本機測試
如果您想針對無法連線到網際網路的伺服器 (例如在 localhost
上) 執行測試,那麼您需要使用 本機測試。
支援這點不在 WebdriverIO 的範圍內,所以您必須自行啟動它。
如果您確實使用本機,您應該在您的功能中將 browserstack.local
設定為 true
。
如果您正在使用 WDIO 測試執行器,請在您的 wdio.conf.js
中下載並設定 @wdio/browserstack-service
。它可以協助 BrowserStack 執行,並提供其他功能,可以更好地將您的測試整合到 BrowserStack 服務中。
搭配 Travis CI
如果您想在 Travis 中加入本機測試,您必須自行啟動它。
以下指令碼將下載並在背景中啟動它。您應該在開始測試前在 Travis 中執行此動作。
wget https://www.browserstack.com/browserstack-local/BrowserStackLocal-linux-x64.zip
unzip BrowserStackLocal-linux-x64.zip
./BrowserStackLocal -v -onlyAutomate -forcelocal $BROWSERSTACK_ACCESS_KEY &
sleep 3
此外,您可能會希望將 build
設定為 Travis 建置編號。
範例 capabilities
browserName: 'chrome',
project: 'myApp',
version: '44.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'browserstack.local': 'true',
'browserstack.debug': 'true'
TestingBot
唯一的要求是在您的組態中設定 user
和 key
(可以從 wdio.conf.js
匯出,或傳遞到 webdriverio.remote(...)
) 為您的 TestingBot 使用者名稱和密鑰。
您也可以在任何瀏覽器的功能中傳遞任何可選的支援的功能作為鍵/值對。
本機測試
如果您想針對無法連線到網際網路的伺服器 (例如在 localhost
上) 執行測試,那麼您需要使用 本機測試。TestingBot 提供了一個基於 Java 的通道,讓您可以測試無法從網際網路存取的網站。
他們的通道支援頁面包含讓它啟動並運作的必要資訊。
如果您正在使用 WDIO 測試執行器,請在您的 wdio.conf.js
中下載並設定 @wdio/testingbot-service
。它可以協助 TestingBot 執行,並提供其他功能,可以更好地將您的測試整合到 TestingBot 服務中。
LambdaTest
也內建了 LambdaTest 整合功能。
唯一的要求是在您的組態中設定 user
和 key
(可以從 wdio.conf.js
匯出,或傳遞到 webdriverio.remote(...)
) 為您的 LambdaTest 帳戶使用者名稱和存取金鑰。
您也可以在任何瀏覽器的功能中傳遞任何可選的支援的功能作為鍵/值對。如果您將 visual
設定為 true
,它將錄製工作階段的螢幕截圖,這可能會有所幫助。
本機測試通道
如果您想針對無法連線到網際網路的伺服器 (例如在 localhost
上) 執行測試,那麼您需要使用 本機測試。
支援這點不在 WebdriverIO 的範圍內,所以您必須自行啟動它。
如果您確實使用本機,您應該在您的功能中將 tunnel
設定為 true
。
如果您正在使用 WDIO 測試執行器,請在您的 wdio.conf.js
中下載並設定 wdio-lambdatest-service
。它可以協助 LambdaTest 執行,並提供其他功能,可以更好地將您的測試整合到 LambdaTest 服務中。
搭配 Travis CI
如果您想在 Travis 中加入本機測試,您必須自行啟動它。
以下指令碼將下載並在背景中啟動它。您應該在開始測試前在 Travis 中執行此動作。
wget http://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip
unzip LT_Linux.zip
./LT -user $LT_USERNAME -key $LT_ACCESS_KEY -cui &
sleep 3
此外,您可能會希望將 build
設定為 Travis 建置編號。
範例 capabilities
platform: 'Windows 10',
browserName: 'chrome',
version: '79.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'tunnel': 'true',
'visual': 'true'
Perfecto
當搭配 Perfecto
使用 wdio 時,您需要為每個使用者建立安全權杖,並將其新增到功能結構中 (除了其他功能之外),如下所示
export const config = {
capabilities: [{
// ...
securityToken: "your security token"
}],
此外,您還需要新增雲端組態,如下所示
hostname: "your_cloud_name.perfectomobile.com",
path: "/nexperience/perfectomobile/wd/hub",
port: 443,
protocol: "https",