blob: 19f9a466c621e05c5bc3c63eea7391f7c642708d [file] [log] [blame]
(async function(testRunner) {
const pageUrl =
'http://127.0.0.1:8000/inspector-protocol/prerender/resources/inspector-protocol-page.html';
const {page, session, dp} = await testRunner.startURL(
pageUrl, 'Test that prerender page is included in the trace events');
const bp = testRunner.browserP();
const tabs = (await bp.Target.getTargets({
filter: [{type: 'tab'}]
})).result.targetInfos;
const tabUnderTest = tabs.find(target => target.url === pageUrl);
const tabSessionId = (await bp.Target.attachToTarget({
targetId: tabUnderTest.targetId,
flatten: true
})).result.sessionId;
const tabSession = testRunner.browserSession().createChild(tabSessionId);
const tp = tabSession.protocol;
const TracingHelper =
await testRunner.loadScript('../resources/tracing-test.js');
const tracingHelper = new TracingHelper(testRunner, tabSession);
await dp.Preload.enable();
await tracingHelper.startTracing();
page.navigate('../prerender/resources/simple-prerender.html');
await dp.Preload.oncePrerenderStatusUpdated(e => e.params.status == 'Ready');
tp.Target.setAutoAttach({autoAttach: true, flatten: true, waitForDebuggerOnStart: false});
const prerenderSessionId = (await tp.Target.onceAttachedToTarget(
e => e.params.targetInfo.subtype === 'prerender')).params.sessionId;
const pp = session.createChild(prerenderSessionId).protocol;
await pp.Preload.enable();
session.evaluate(`document.getElementById('link').click()`);
await pp.Preload.oncePrerenderAttemptCompleted();
const devtoolsEvents = await tracingHelper.stopTracing();
const prerenderFrameCommitted =
tracingHelper
.findEvents('FrameCommittedInBrowser', TracingHelper.Phase.INSTANT)
.find(
e => e.args.data.url ===
'http://127.0.0.1:8000/inspector-protocol/prerender/resources/empty.html');
testRunner.log('Got prerender frame: ' + !!prerenderFrameCommitted);
const prerenderFrameId = prerenderFrameCommitted.args.data.frame;
const parsePrerenderHTML =
tracingHelper.findEvents('ParseHTML', TracingHelper.Phase.COMPLETE)
.find(e => e.args.beginData.frame === prerenderFrameId);
testRunner.log('Got parse prerender HTML: ' + !!parsePrerenderHTML);
testRunner.completeTest();
});