本文へ移動

新しいネットワークプリミティブ(ベータ版)

·3分間の読書

WebdriverIO チームは、API に新しいネットワークプリミティブを提供することで、自動化インターフェースの機能をさらに向上させる取り組みを続けています。最新のv6.3アップデートでは、テストで Web リソースを簡単にモックし、個々のシナリオをより効果的にテストできるため、テスト時間を大幅に削減できるカスタムレスポンスを定義できるようになりました。これにより、WebdriverIO は PuppeteerPlaywrightCypress などの他の一般的なテストツールに追いつき、モックをさらに簡素化しています。

ブラウザからの 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 を 2 番目の自動化ドライバーとして組み込むようになり、可能な限りこれらの追加機能を使用できます。今後、チームは Chrome DevTools の機能を組み込み API に有効にするためのさらなる機会を探しています。

ご意見をお聞かせください!いくつかバグがあることは予想していますが、すぐに修正いたします。現在のインターフェースデザインには自信がありますが、さらにユーザーフレンドリーにするために微調整が行われる可能性もあります。

フィードバックをお寄せください!

これはベータ機能としてリリースしており、実装とサポートにおける弱点の特定にご協力いただければ幸いです。ぜひお試しいただき、不明な点や動作しない点があれば、問題を報告してください。コミュニティの皆様のご協力により、今後数か月以内に安定版としてリリースできることを期待しています!

ようこそ!お手伝いできることはありますか?

WebdriverIO AI Copilot