From 8cdc4513f1083b98ce5f0cae4b9ac5edbaff81f6 Mon Sep 17 00:00:00 2001 From: Ross Wollman Date: Tue, 5 Jul 2022 11:09:36 -0700 Subject: [PATCH] test: repro for load event fired too often (#15320) Repro derived from #15086. This does not look like a recent regression (if any at all) as it reproduces in both 1.22 and 1.23. --- tests/page/page-event-load.spec.ts | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 tests/page/page-event-load.spec.ts diff --git a/tests/page/page-event-load.spec.ts b/tests/page/page-event-load.spec.ts new file mode 100644 index 0000000000..37181dbc20 --- /dev/null +++ b/tests/page/page-event-load.spec.ts @@ -0,0 +1,75 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { test as it, expect } from './pageTest'; + + +it('should fire once', async ({ page, server, browserName }) => { + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/15086' }); + it.fixme(browserName === 'firefox', 'Firefox sometimes double fires.'); + + let count = 0; + page.on('load', () => count++); + await page.goto(server.PREFIX + '/one-style.html'); + await page.waitForTimeout(1000); + expect(count).toBe(1); +}); + +it('should fire once with iframe navigation', async ({ page, server, browserName }) => { + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/15086' }); + it.fail(); + + let requestCount = 0; + server.setRoute('/tracker', (_, res) => { + res.write(`request count: ${++requestCount}`); + res.end(); + }); + server.setRoute('/home', (_, res) => { + res.write(` + + + + + + +
+ +
+