ジオロケーションのモック
概要
WebサイトまたはWebアプリケーションがアクセス元の場所に基づいて変化する場合、これらのすべての場所でWebサイトをテストすることが重要になります。Selenium 4でChrome DevToolsプロトコルサポートが利用できるようになったため、Nightwatchは、1つのコマンドだけでテスト実行中にブラウザのジオロケーションをモックすることをサポートしています。
これにより、単一の場所からテストしながら、異なる場所で提供されるWebサイトの異なるバージョンにアクセスしてテストできます。
このコマンドは、Google ChromeやMicrosoft EdgeなどのChromiumベースのブラウザでのみ機能します。
ジオロケーションのモック
ブラウザのジオロケーションをモックすることで、ブラウザからWebサイトに送信される場所をオーバーライドできるため、Webサイトはその場所で提供されることを意図したバージョンで応答できます。
必要なパラメーターを使用してWebサイトに移動する前にbrowser.setGeolocation()
コマンドを呼び出すだけで、要求された場所 tarkoitettu Webサイトのバージョンが返されます。
setGeolocation()
は、最初の引数としてオブジェクトを受け入れます。オブジェクトの仕様は次のとおりです。
キー | タイプ | デフォルト | 説明 |
---|---|---|---|
緯度 |
数値 | 設定するジオロケーションの緯度。 | |
経度 |
数値 | 設定するジオロケーションの経度。 | |
精度 オプション |
数値 | 100 | ジオロケーションのモック時の予想精度。 |
例
tests/mock-geolocation.js
describe('mock geolocation', function() {
it('sets the geolocation to Tokyo, Japan', () => {
browser
.setGeolocation({
latitude: 35.689487,
longitude: 139.691706,
accuracy: 100
})
.navigateTo('https://www.gps-coordinates.net/my-location')
.pause(3000);
});
});
ジオロケーションのリセット
ブラウザのジオロケーションをオーバーライドした後、同じテスト実行中にブラウザのジオロケーションを元の値にリセットする場合、今回は引数なしでbrowser.setGeolocation()
コマンドを再度使用することで、これを行うことができます。
例
tests/mock-and-reset-geolocation.js
describe('mock and reset geolocation', function() {
it('sets the geolocation to Tokyo, Japan and then resets it', () => {
browser
.setGeolocation({
latitude: 35.689487,
longitude: 139.691706,
accuracy: 100
}) // sets the geolocation to Tokyo, Japan
.navigateTo('https://www.gps-coordinates.net/my-location')
.pause(3000)
.setGeolocation() // resets the geolocation
.navigateTo('https://www.gps-coordinates.net/my-location')
.pause(3000);
});
});