diff --git a/src/networkIdleObservable.ts b/src/networkIdleObservable.ts index cb2c692..bc43678 100644 --- a/src/networkIdleObservable.ts +++ b/src/networkIdleObservable.ts @@ -186,7 +186,7 @@ class ResourceLoadingIdleObservable { (element instanceof HTMLImageElement && element.complete) || (element instanceof HTMLLinkElement && !element.href) || (element instanceof HTMLScriptElement && !element.src) || - (element instanceof HTMLIFrameElement && !element.src) + (element instanceof HTMLIFrameElement && (!element.src || element.src === 'about:blank')) ) { return; } diff --git a/test/e2e/iframe3/index.html b/test/e2e/iframe3/index.html new file mode 100644 index 0000000..b7a105d --- /dev/null +++ b/test/e2e/iframe3/index.html @@ -0,0 +1,19 @@ + + + + + + +

Hello world!

+ + + diff --git a/test/e2e/iframe3/index.spec.ts b/test/e2e/iframe3/index.spec.ts new file mode 100644 index 0000000..7007f95 --- /dev/null +++ b/test/e2e/iframe3/index.spec.ts @@ -0,0 +1,20 @@ +import {test, expect} from '@playwright/test'; + +import {FUDGE} from '../../util/constants'; +import {getEntries} from '../../util/entries'; + +const PAGELOAD_DELAY = 200; + +test.describe('TTVC', () => { + test('an iframe with src="about:blank"', async ({page}) => { + await page.goto(`/test/iframe3?delay=${PAGELOAD_DELAY}`, { + waitUntil: 'networkidle', + }); + + const entries = await getEntries(page); + + expect(entries.length).toBe(1); + expect(entries[0].duration).toBeGreaterThanOrEqual(PAGELOAD_DELAY); + expect(entries[0].duration).toBeLessThanOrEqual(PAGELOAD_DELAY + FUDGE); + }); +});