blob: 5564acf6e0b4d82dc95301386ffbd93db93d290d [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} = await testRunner.startBlank(
`Tests that browser.Target.setAutoAttach() attaches to window.open targets.`);
const target = testRunner.browserP().Target;
await target.setDiscoverTargets({discover: true});
await target.setAutoAttach({autoAttach: true, waitForDebuggerOnStart: true, flatten: true});
session.evaluate(`
window.myWindow = window.open('../resources/inspector-protocol-page.html'); undefined;
`);
testRunner.log('Opened the window');
const attachedEvent = await target.onceAttachedToTarget();
testRunner.log('Attached to window, waitingForDebugger=' + attachedEvent.params.waitingForDebugger);
const popupSession = new TestRunner.Session(testRunner, attachedEvent.params.sessionId);
const changedPromise = target.onceTargetInfoChanged();
await popupSession.protocol.Runtime.runIfWaitingForDebugger();
testRunner.log('Resumed popup window');
const changeEvent = await changedPromise;
testRunner.log('Popup window URL changed to ' + changeEvent.params.targetInfo.url);
const secondChangedPromise = target.onceTargetInfoChanged();
session.evaluate(`
window.myWindow.location.assign('../resources/test-page.html'); undefined;
`);
testRunner.log('Navigated the window');
const secondChangeEvent = await secondChangedPromise;
testRunner.log('Target info changed, new URL is ' + secondChangeEvent.params.targetInfo.url);
const detachedPromise = target.onceDetachedFromTarget();
session.evaluate(`
window.myWindow.close(); undefined;
`);
testRunner.log('Closed the window');
await detachedPromise;
testRunner.log('Detached from window');
testRunner.completeTest();
})