blob: 9b599eda963c2360fcf59edaa5ad0c0e68be8c23 [file] [log] [blame]
(async function(testRunner) {
var {page, session, dp} = await testRunner.startBlank(`Tests that responseReceived contains the documented resource types.`);
var resources = [
{ url: '/resources-page.html', responseAvailable: false },
{ url: '/stylesheet.css'},
{ url: '/script.js'},
{ url: '/abe.png'},
{ url: '/test.wav'},
{ url: '/test.ogv'},
{ url: '/simple-captions.vtt'},
{ url: '/greenbox.png'}
];
var resourcesLeft = resources.length;
testRunner.log('Test started');
var messageObject = await dp.Network.enable();
if (messageObject.error) {
testRunner.log(`FAIL: Couldn't enable network agent: ${messageObject.error.message}`);
testRunner.completeTest();
return;
}
testRunner.log('Network agent enabled');
dp.Network.onRequestWillBeSent(event => {
var url = event.params.request.url;
if (url.startsWith('blob'))
return;
var type = event.params.type;
for (var resource of resources) {
if (!url.endsWith(resource.url))
continue;
if (resource.gotRequestType)
testRunner.fail('FAIL: Requested resource ' + url + ' twice.');
resource.gotRequestType = type;
return;
}
testRunner.fail('FAIL: Requested unexpected resource ' + url);
});
dp.Network.onResponseReceived(event => {
var url = event.params.response.url;
if (url.indexOf('blob') === 0)
return;
var type = event.params.type;
var requestId = event.params.requestId;
for (var resource of resources) {
if (url.substring(url.length - resource.url.length) !== resource.url)
continue;
if (resource.gotType)
testRunner.fail('FAIL: Received resource ' + url + ' twice.');
resource.gotType = type;
resource.requestId = requestId;
return;
}
testRunner.fail('FAIL: received unexpected resource ' + url);
});
dp.Network.onLoadingFinished(async event => {
var requestId = event.params.requestId;
for (var resource of resources) {
if (resource.requestId !== requestId)
continue;
if (!('responseAvailable' in resource)) {
var protocolResponse = await dp.Network.getResponseBody({requestId});
if (protocolResponse.error) {
resource.responseAvailable = false;
} else {
resource.responseAvailable = true;
resource.responseEncoded = protocolResponse.result.base64Encoded;
}
}
resourcesLeft -= 1;
if (resourcesLeft === 0)
receivedAllResources();
}
});
function receivedAllResources() {
for (var resource of resources) {
var description = [
'Resource ' + resource.url + ':',
' - request type: ' + resource.gotRequestType,
' - response type: ' + resource.gotType,
' - responseAvailable: ' + resource.responseAvailable
];
if (resource.responseAvailable)
description.push(' - responseEncoded: ' + resource.responseEncoded);
testRunner.log(description.join('\n'));
}
testRunner.completeTest();
}
session.evaluate(`
var iframe = document.createElement('iframe');
iframe.src = '${testRunner.url('../resources/resources-page.html')}';
document.body.appendChild(iframe);
`);
})