新網路基礎元件 (Beta)
WebdriverIO 團隊持續努力為其自動化介面提供更多功能,透過將新的網路基礎元件加入其 API。 透過最新的 v6.3
更新,您現在可以輕鬆地在測試中模擬 Web 資源,並定義自訂回應,讓您能夠大幅縮短測試時間,因為現在您可以更好地測試個別情境。 透過此功能,WebdriverIO 趕上了其他熱門的測試工具,如 Puppeteer、Playwright 或 Cypress,甚至進一步簡化了模擬。
從瀏覽器取代 REST API 請求現在可以像以下一樣簡單
const mock = browser.mock('https://todo-backend-express-knex.herokuapp.com/')
mock.respond([{
title: 'Injected (non) completed Todo',
order: null,
completed: false
}, {
title: 'Injected completed Todo',
order: null,
completed: true
}])
browser.url('https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/')
$('#todo-list li').waitForExist()
console.log($$('#todo-list li').map(el => el.getText()))
// outputs: "[ 'Injected (non) completed Todo', 'Injected completed Todo' ]"
除此之外,您還可以修改 JavaScript 的 CSS 檔案,並根據原始回應動態中止請求或修改回應。 您可以在文件中的模擬與間諜章節找到有關所有功能的更多資訊。
頻寬調節
除了模擬外,新版本還提供了另一個網路命令,允許修改瀏覽器的網路輸送量,讓您能夠在不同的網路條件下進行測試,例如,一般的 3G 甚至離線模式
// throttle to Regular 3G
browser.throttle('Regular 3G')
// disable network completely
browser.throttle('Offline')
// set custom network throughput
browser.throttle({
'offline': false,
'downloadThroughput': 200 * 1024 / 8,
'uploadThroughput': 200 * 1024 / 8,
'latency': 20
})
這可以開啟有趣的用例,讓您能夠確保您的漸進式網頁應用程式 (PWA) 為離線使用者儲存所有必要的資源,以便使用該應用程式。
支援
此功能使用 Chrome DevTools 功能來啟用此行為。 因此,它只能在提供此類介面的地方受到支援,目前為 Chrome、Firefox Nightly 和 Chromium Edge。 Mozilla 的 Firefox 團隊正在努力將其發佈到 Firefox 的穩定版本中,因此預計很快就會支援。
此外,Sauce Labs 的人員正在開發各種 WebDriver 擴充功能,甚至允許在雲端支援此功能。 有關此方面的更多更新將很快發布。
實作
透過此功能,WebdriverIO 現在總是將 Puppeteer 作為第二個自動化驅動程式納入,盡可能啟用這些額外功能。 展望未來,團隊正在尋找更多機會,將 Chrome DevTools 功能加入內建的 API 中。
請告訴我們您的想法! 我們預期這裡和那裡會出現一些錯誤,但我們會確保立即修正它們。 雖然我們對目前介面設計非常有信心,但仍然可能進行一些調整,使其更加使用者友善。
給我們回饋!
我們將此功能作為 beta
功能發布,並希望您能協助我們找出實作和支援方面的弱點。 請試用看看,如果事情不清楚或無法正常運作,請建立一個議題。 我們希望在社群和您的協助下,我們能夠在接下來的幾個月內將其作為穩定版本發布!