blob: 28d73ed56e5dfbfe93bedfea4b44c9f51b938451 [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} = await testRunner.startBlank(
`Tests that cross-origin embedder policy (COEP) related blocking is reported correctly.`);
await session.protocol.Network.clearBrowserCache();
await session.protocol.Network.setCacheDisabled({cacheDisabled: true});
await dp.Target.setAutoAttach({autoAttach: true, waitForDebuggerOnStart: true, flatten: true});
let numberOfMessages = 0;
const expectedNumberOfMessages = 21;
const resources = new Map();
function record(requestId, info) {
resources.set(requestId, {...resources.get(requestId), ...info});
if (++numberOfMessages === expectedNumberOfMessages) {
function compareInfo(a, b) {
return `${a.requestWillBeSent?.request?.url}`.localeCompare(`${b.requestWillBeSent?.request?.url}`);
}
const entries = Array.from(resources.values()).sort(compareInfo);
for (const entry of entries) {
if (entry.loadingFailed) {
testRunner.log(`${entry.requestWillBeSent.request?.url}: ${entry.loadingFailed.errorText} ${entry.loadingFailed.blockedReason}`);
}
if (entry.loadingFinished) {
testRunner.log(`${entry.requestWillBeSent.request?.url}: *loading finished*`);
}
}
testRunner.completeTest();
}
}
async function initalizeTarget(dp) {
dp.Network.onLoadingFailed(event => record(event.params.requestId, {loadingFailed: event.params})),
dp.Network.onLoadingFinished(event => record(event.params.requestId, {loadingFinished: event.params})),
dp.Network.onRequestWillBeSent(event => record(event.params.requestId, {requestWillBeSent: event.params})),
await Promise.all([
dp.Network.enable(),
dp.Page.enable()
]);
}
await initalizeTarget(dp);
dp.Target.onAttachedToTarget(async e => {
const dp = session.createChild(e.params.sessionId).protocol;
await initalizeTarget(dp);
});
page.navigate('https://devtools.test:8443/inspector-protocol/network/cross-origin-isolation/resources/coep-page-with-resources.php');
// `record` above makes sure to complete the test.
})