diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 4577d508b3..1ca9bf1f45 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -468,6 +468,7 @@ export class Frame extends SdkObject { this._firedLifecycleEvents.add('commit'); this._subtreeLifecycleEvents.add('commit'); + this._startNetworkIdleTimer(); } isDetached(): boolean { diff --git a/tests/page/page-wait-for-load-state.spec.ts b/tests/page/page-wait-for-load-state.spec.ts index 9853ab2d05..75b24256fd 100644 --- a/tests/page/page-wait-for-load-state.spec.ts +++ b/tests/page/page-wait-for-load-state.spec.ts @@ -180,3 +180,32 @@ it('should work for frame', async ({ page, server }) => { request.continue(); await loadPromise; }); + +it('should work with javascript: iframe', async ({ page, server, browserName }) => { + it.fixme(browserName === 'firefox', 'no load event'); + + await page.goto(server.EMPTY_PAGE); + await page.setContent(``, { waitUntil: 'commit' }); + await page.waitForLoadState('domcontentloaded'); + await page.waitForLoadState('load'); + await page.waitForLoadState('networkidle'); +}); + +it('should work with broken data-url iframe', async ({ page, server }) => { + await page.goto(server.EMPTY_PAGE); + await page.setContent(``, { waitUntil: 'commit' }); + await page.waitForLoadState('domcontentloaded'); + await page.waitForLoadState('load'); + await page.waitForLoadState('networkidle'); +}); + +it('should work with broken blob-url iframe', async ({ page, server, browserName }) => { + it.fixme(browserName === 'chromium', 'no load event'); + it.fixme(browserName === 'firefox', 'no load event'); + + await page.goto(server.EMPTY_PAGE); + await page.setContent(``, { waitUntil: 'commit' }); + await page.waitForLoadState('domcontentloaded'); + await page.waitForLoadState('load'); + await page.waitForLoadState('networkidle'); +});