This Typescript code, but you get the idea:
async function waitForPopupMatching( browser: Puppeteer.Browser, regex: RegExp, openAction: () => Promise<void>, timeout: number = 30000, ): Promise<Puppeteer.Page> { const promise = new Bluebird<Puppeteer.Target>(resolve => { const listener = async (target: Puppeteer.Target) => { if (target.type() === 'page' && regex.test(target.url())) { browser.removeListener('targetcreated', listener); resolve(target); } }; browser.addListener('targetcreated', listener); }).timeout(timeout); await openAction();
source share