Path: blob/trunk/javascript/selenium-webdriver/test/bidi/network_commands_test.js
2885 views
// Licensed to the Software Freedom Conservancy (SFC) under one1// or more contributor license agreements. See the NOTICE file2// distributed with this work for additional information3// regarding copyright ownership. The SFC licenses this file4// to you under the Apache License, Version 2.0 (the5// "License"); you may not use this file except in compliance6// with the License. You may obtain a copy of the License at7//8// http://www.apache.org/licenses/LICENSE-2.09//10// Unless required by applicable law or agreed to in writing,11// software distributed under the License is distributed on an12// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY13// KIND, either express or implied. See the License for the14// specific language governing permissions and limitations15// under the License.1617'use strict'1819const assert = require('node:assert')20const { Browser, By } = require('selenium-webdriver')21const { Pages, suite } = require('../../lib/test')22const { Network } = require('selenium-webdriver/bidi/network')23const { AddInterceptParameters } = require('selenium-webdriver/bidi/addInterceptParameters')24const { InterceptPhase } = require('selenium-webdriver/bidi/interceptPhase')25const { until } = require('selenium-webdriver/index')26const { ContinueRequestParameters } = require('selenium-webdriver/bidi/continueRequestParameters')27const { ContinueResponseParameters } = require('selenium-webdriver/bidi/continueResponseParameters')28const { ProvideResponseParameters } = require('selenium-webdriver/bidi/provideResponseParameters')2930suite(31function (env) {32let driver33let network3435beforeEach(async function () {36driver = await env.builder().build()3738network = await Network(driver)39})4041afterEach(async function () {42await network.close()43await driver.quit()44})4546describe('Network commands', function () {47it('can add intercept', async function () {48const intercept = await network.addIntercept(new AddInterceptParameters(InterceptPhase.BEFORE_REQUEST_SENT))49assert.notEqual(intercept, null)50})5152it('can remove intercept', async function () {53const network = await Network(driver)54const intercept = await network.addIntercept(new AddInterceptParameters(InterceptPhase.BEFORE_REQUEST_SENT))55assert.notEqual(intercept, null)5657await network.removeIntercept(intercept)58})5960it('can continue with auth credentials ', async function () {61await network.addIntercept(new AddInterceptParameters(InterceptPhase.AUTH_REQUIRED))6263await network.authRequired(async (event) => {64await network.continueWithAuth(event.request.request, 'genie', 'bottle')65})66await driver.get(Pages.basicAuth)6768await driver.wait(until.elementLocated(By.css('pre')))69let source = await driver.getPageSource()70assert.equal(source.includes('Access granted'), true)71})7273it('can continue without auth credentials ', async function () {74await network.addIntercept(new AddInterceptParameters(InterceptPhase.AUTH_REQUIRED))7576await network.authRequired(async (event) => {77await network.continueWithAuthNoCredentials(event.request.request)78})7980await driver.get(Pages.basicAuth)81const alert = await driver.wait(until.alertIsPresent())82await alert.dismiss()8384await driver.wait(until.elementLocated(By.css('pre')))85let source = await driver.getPageSource()86assert.equal(source.includes('Access denied'), true)87})8889it('can cancel auth ', async function () {90await network.addIntercept(new AddInterceptParameters(InterceptPhase.AUTH_REQUIRED))9192await network.authRequired(async (event) => {93await network.cancelAuth(event.request.request)94})95try {96await driver.wait(until.alertIsPresent(), 3000)97assert.fail('Alert should not be present')98} catch (e) {99assert.strictEqual(e.name, 'TimeoutError')100}101})102103it('can fail request', async function () {104await network.addIntercept(new AddInterceptParameters(InterceptPhase.BEFORE_REQUEST_SENT))105106await network.beforeRequestSent(async (event) => {107await network.failRequest(event.request.request)108})109110await driver.manage().setTimeouts({ pageLoad: 5000 })111112try {113await driver.get(Pages.basicAuth)114assert.fail('Page should not be loaded')115} catch (e) {116assert.strictEqual(e.name, 'TimeoutError')117}118})119120it('can continue request', async function () {121await network.addIntercept(new AddInterceptParameters(InterceptPhase.BEFORE_REQUEST_SENT))122123let counter = 0124125await network.beforeRequestSent(async (event) => {126await network.continueRequest(new ContinueRequestParameters(event.request.request))127counter = counter + 1128})129130await driver.get(Pages.logEntryAdded)131132assert.strictEqual(counter >= 1, true)133})134135it('can continue response', async function () {136await network.addIntercept(new AddInterceptParameters(InterceptPhase.RESPONSE_STARTED))137138let counter = 0139140await network.responseStarted(async (event) => {141await network.continueResponse(new ContinueResponseParameters(event.request.request))142counter = counter + 1143})144145await driver.get(Pages.logEntryAdded)146147assert.strictEqual(counter >= 1, true)148})149150it('can provide response', async function () {151await network.addIntercept(new AddInterceptParameters(InterceptPhase.BEFORE_REQUEST_SENT))152153let counter = 0154155await network.beforeRequestSent(async (event) => {156await network.provideResponse(new ProvideResponseParameters(event.request.request))157counter = counter + 1158})159160await driver.get(Pages.logEntryAdded)161162assert.strictEqual(counter >= 1, true)163})164})165},166{ browsers: [Browser.FIREFOX] },167)168169170