| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script> |
| async function loadSubresource() { |
| let response = await fetch(`resources/data.json`); |
| let text = await response.text(); |
| TestPage.dispatchEventToFrontend("TestPage-loadSubresource", {text}); |
| } |
| |
| function test() |
| { |
| const interceptionRegex = "resources/data\.json"; |
| |
| let suite = ProtocolTest.createAsyncSuite("Network.interceptContinue"); |
| |
| InspectorProtocol.sendCommand("Network.enable"); |
| InspectorProtocol.sendCommand("Network.setInterceptionEnabled", {enabled: true}); |
| |
| suite.addTestCase({ |
| name: "Network.interceptContinue.Request", |
| description: "Test an override continue request to let the original load complete.", |
| async test() { |
| ProtocolTest.log("Adding interception..."); |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.addInterception", |
| params: { |
| url: interceptionRegex, |
| stage: /* Network.NetworkStage */ "request", |
| isRegex: true, |
| }, |
| }); |
| |
| ProtocolTest.log("Triggering load..."); |
| let [requestInterceptedEvent] = await Promise.all([ |
| InspectorProtocol.awaitEvent({event: "Network.requestIntercepted"}), |
| ProtocolTest.evaluateInPage(`loadSubresource()`), |
| ]); |
| |
| ProtocolTest.newline(); |
| |
| ProtocolTest.log("Testing invalid requestId..."); |
| await ProtocolTest.expectException(async () => { |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.interceptContinue", |
| params: { |
| requestId: "INVALID", |
| stage: /* Network.NetworkStage */ "request", |
| }, |
| }); |
| }); |
| |
| ProtocolTest.newline(); |
| |
| ProtocolTest.log("Testing incorrect stage..."); |
| await ProtocolTest.expectException(async () => { |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.interceptContinue", |
| params: { |
| requestId: requestInterceptedEvent.params.requestId, |
| stage: /* Network.NetworkStage */ "response", |
| }, |
| }); |
| }); |
| |
| ProtocolTest.newline(); |
| |
| ProtocolTest.log("Continuing load..."); |
| let [loadSubresourceEvent] = await Promise.all([ |
| ProtocolTest.awaitEvent("TestPage-loadSubresource"), |
| InspectorProtocol.awaitCommand({ |
| method: "Network.interceptContinue", |
| params: { |
| requestId: requestInterceptedEvent.params.requestId, |
| stage: /* Network.NetworkStage */ "request", |
| }, |
| }), |
| ]); |
| |
| ProtocolTest.log(loadSubresourceEvent.data.text); |
| |
| ProtocolTest.log("Removing interception..."); |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.removeInterception", |
| params: { |
| url: interceptionRegex, |
| stage: /* Network.NetworkStage */ "request", |
| isRegex: true, |
| }, |
| }); |
| }, |
| }); |
| |
| suite.addTestCase({ |
| name: "Network.interceptContinue.Response", |
| description: "Test an override continue response to let the original load complete.", |
| async test() { |
| ProtocolTest.log("Adding interception..."); |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.addInterception", |
| params: { |
| url: interceptionRegex, |
| stage: /* Network.NetworkStage */ "response", |
| isRegex: true, |
| }, |
| }); |
| |
| ProtocolTest.log("Triggering load..."); |
| let [responseInterceptedEvent] = await Promise.all([ |
| InspectorProtocol.awaitEvent({event: "Network.responseIntercepted"}), |
| ProtocolTest.evaluateInPage(`loadSubresource()`), |
| ]); |
| |
| ProtocolTest.newline(); |
| |
| ProtocolTest.log("Testing invalid requestId..."); |
| await ProtocolTest.expectException(async () => { |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.interceptContinue", |
| params: { |
| requestId: "INVALID", |
| stage: /* Network.NetworkStage */ "response", |
| }, |
| }); |
| }); |
| |
| ProtocolTest.newline(); |
| |
| ProtocolTest.log("Testing incorrect stage..."); |
| await ProtocolTest.expectException(async () => { |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.interceptContinue", |
| params: { |
| requestId: responseInterceptedEvent.params.requestId, |
| stage: /* Network.NetworkStage */ "request", |
| }, |
| }); |
| }); |
| |
| ProtocolTest.newline(); |
| |
| ProtocolTest.log("Continuing load..."); |
| let [loadSubresourceEvent] = await Promise.all([ |
| ProtocolTest.awaitEvent("TestPage-loadSubresource"), |
| InspectorProtocol.awaitCommand({ |
| method: "Network.interceptContinue", |
| params: { |
| requestId: responseInterceptedEvent.params.requestId, |
| stage: /* Network.NetworkStage */ "response", |
| }, |
| }), |
| ]); |
| |
| ProtocolTest.log(loadSubresourceEvent.data.text); |
| |
| ProtocolTest.log("Removing interception..."); |
| await InspectorProtocol.awaitCommand({ |
| method: "Network.removeInterception", |
| params: { |
| url: interceptionRegex, |
| stage: /* Network.NetworkStage */ "response", |
| isRegex: true, |
| }, |
| }); |
| }, |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for Network.interceptContinue.</p> |
| </body> |
| </html> |