Skip to content

Commit b6b2096

Browse files
committed
[bidi][js] Add 'fetchError' command
1 parent 0b22bc8 commit b6b2096

File tree

3 files changed

+51
-6
lines changed

3 files changed

+51
-6
lines changed

javascript/node/selenium-webdriver/bidi/network.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
const { BeforeRequestSent, ResponseStarted } = require('./networkTypes')
18+
const { BeforeRequestSent, ResponseStarted, FetchError} = require('./networkTypes')
1919
const {AddInterceptParameters} = require("./addInterceptParameters");
2020

2121
class Network {
@@ -44,6 +44,10 @@ class Network {
4444
await this.subscribeAndHandleEvent('network.authRequired', callback)
4545
}
4646

47+
async fetchError(callback) {
48+
await this.subscribeAndHandleEvent('network.fetchError', callback)
49+
}
50+
4751
async subscribeAndHandleEvent(eventType, callback) {
4852
if (this._browsingContextIds != null) {
4953
await this.bidi.subscribe(eventType, this._browsingContextIds)
@@ -77,9 +81,18 @@ class Network {
7781
params.timestamp,
7882
params.response,
7983
)
84+
} else if ('errorText' in params) {
85+
response = new FetchError(
86+
params.context,
87+
params.navigation,
88+
params.redirectCount,
89+
params.request,
90+
params.timestamp,
91+
params.errorText,
92+
)
8093
}
8194
callback(response)
82-
}
95+
}
8396
})
8497
}
8598

javascript/node/selenium-webdriver/bidi/networkTypes.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,17 @@ class BeforeRequestSent extends BaseParameters {
347347
}
348348
}
349349

350+
class FetchError extends BaseParameters {
351+
constructor(id, navigation, redirectCount, request, timestamp, errorText) {
352+
super(id, navigation, redirectCount, request, timestamp)
353+
this._errorText = errorText
354+
}
355+
356+
get errorText() {
357+
return this._errorText
358+
}
359+
}
360+
350361
class ResponseData {
351362
constructor(
352363
url,
@@ -442,4 +453,4 @@ class ResponseStarted extends BaseParameters {
442453
}
443454
}
444455

445-
module.exports = { BeforeRequestSent, ResponseStarted }
456+
module.exports = { BeforeRequestSent, ResponseStarted, FetchError }

javascript/node/selenium-webdriver/test/bidi/network_test.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919

2020
const assert = require('assert')
2121
const firefox = require('../../firefox')
22-
const { Browser } = require('../../')
23-
const { Pages, suite } = require('../../lib/test')
22+
const {Browser} = require('../../')
23+
const {Pages, suite} = require('../../lib/test')
2424
const Network = require('../../bidi/network')
2525
const until = require('../../lib/until')
2626

@@ -174,6 +174,27 @@ suite(
174174
assert.equal(authRequiredEvent.response.url.includes('basicAuth'), true)
175175
})
176176

177+
xit('can listen to fetch error event', async function () {
178+
let fetchErrorEvent = null
179+
const network = await Network(driver)
180+
await network.fetchError(function (event) {
181+
fetchErrorEvent = event
182+
})
183+
184+
try {
185+
await driver.get('https://not_a_valid_url.test/')
186+
} catch (e) {
187+
// ignore
188+
}
189+
190+
const url = fetchErrorEvent.request.url
191+
assert.equal(fetchErrorEvent.id, await driver.getWindowHandle())
192+
assert.equal(fetchErrorEvent.request.method, 'GET')
193+
assert.equal(url.includes('valid_url'), true)
194+
assert.equal(fetchErrorEvent.request.headers.length > 1, true)
195+
assert.equal(fetchErrorEvent.errorText, 'NS_ERROR_UNKNOWN_HOST')
196+
})
197+
177198
it('test response completed mime type', async function () {
178199
let onResponseCompleted = []
179200
const network = await Network(driver)
@@ -196,5 +217,5 @@ suite(
196217
})
197218
})
198219
},
199-
{ browsers: [Browser.FIREFOX] },
220+
{browsers: [Browser.FIREFOX]},
200221
)

0 commit comments

Comments
 (0)