blob: 25c721ed193be36382ee572766122597219338ed [file] [log] [blame]
(async function(testRunner) {
testRunner.log('Tests that multiple sessions receives the same frame lifetime notifications.');
var page = await testRunner.createPage();
var session1 = await page.createSession();
var session2 = await page.createSession();
session1.protocol.Page.enable();
session2.protocol.Page.enable();
testRunner.log('\nAttaching frame in 1');
session1.evaluate(`
window.frame = document.createElement('iframe');
frame.src = '${testRunner.url('../resources/blank.html')}';
document.body.appendChild(frame);
`);
var attachedBoth = Promise.all([session1.protocol.Page.onceFrameAttached(), session2.protocol.Page.onceFrameAttached()]);
var startedLoadingBoth = Promise.all([session1.protocol.Page.onceFrameStartedLoading(), session2.protocol.Page.onceFrameStartedLoading()]);
var stopLoadingBoth = Promise.all([session1.protocol.Page.onceFrameStoppedLoading(), session2.protocol.Page.onceFrameStoppedLoading()]);
var navigatedBoth = Promise.all([session1.protocol.Page.onceFrameNavigated(), session2.protocol.Page.onceFrameNavigated()]);
await attachedBoth;
testRunner.log('Attached in both');
await startedLoadingBoth;
testRunner.log('Started loading in both');
await navigatedBoth;
testRunner.log('Navigated in both');
await stopLoadingBoth;
testRunner.log('\nNavigating frame in 2');
session2.evaluate('frame.src = "about:blank"');
startedLoadingBoth = Promise.all([session1.protocol.Page.onceFrameStartedLoading(), session2.protocol.Page.onceFrameStartedLoading()]);
navigatedBoth = Promise.all([session1.protocol.Page.onceFrameNavigated(), session2.protocol.Page.onceFrameNavigated()]);
await startedLoadingBoth;
testRunner.log('Started loading in both');
await navigatedBoth;
testRunner.log('Navigated in both');
testRunner.log('\nDetaching frame in 2');
session2.evaluate('document.body.removeChild(frame);');
var detachedBoth = Promise.all([session1.protocol.Page.onceFrameDetached(), session2.protocol.Page.onceFrameDetached()]);
await detachedBoth;
testRunner.log('Detached in both');
testRunner.completeTest();
})