diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index b02989db44..4231514768 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -21,13 +21,13 @@ }, { "name": "firefox", - "revision": "1375", + "revision": "1376", "installByDefault": true, "browserVersion": "109.0" }, { "name": "firefox-beta", - "revision": "1377", + "revision": "1378", "installByDefault": false, "browserVersion": "110.0b7" }, diff --git a/packages/playwright-core/src/server/firefox/protocol.d.ts b/packages/playwright-core/src/server/firefox/protocol.d.ts index 8674fc9f72..4c69fb00a2 100644 --- a/packages/playwright-core/src/server/firefox/protocol.d.ts +++ b/packages/playwright-core/src/server/firefox/protocol.d.ts @@ -649,7 +649,7 @@ export module Protocol { }; export type dispatchTapEventReturnValue = void; export type dispatchMouseEventParameters = { - type: string; + type: ("mousedown"|"mousemove"|"mouseup"); button: number; x: number; y: number; diff --git a/tests/assets/counter.html b/tests/assets/counter.html new file mode 100644 index 0000000000..1e90289577 --- /dev/null +++ b/tests/assets/counter.html @@ -0,0 +1,10 @@ + + +

count: 0

+ diff --git a/tests/page/page-click.spec.ts b/tests/page/page-click.spec.ts index df446d2196..952eb7147e 100644 --- a/tests/page/page-click.spec.ts +++ b/tests/page/page-click.spec.ts @@ -38,6 +38,23 @@ it('should click button inside frameset', async ({ page, server }) => { expect(await frame.evaluate('result')).toBe('Clicked'); }); +it('should issue clicks in parallel in page and popup', async ({ page, server }) => { + await page.goto(server.PREFIX + '/counter.html'); + const [popup] = await Promise.all([ + page.waitForEvent('popup'), + page.evaluate(() => window.open('/counter.html')), + ]); + const clickPromises = []; + for (let i = 0; i < 21; ++i) { + if (i % 3 === 0) + clickPromises.push(popup.locator('button').click()); + else + clickPromises.push(page.locator('button').click()); + } + await Promise.all(clickPromises); + expect(await page.evaluate(() => window['count'])).toBe(14); + expect(await popup.evaluate(() => window['count'])).toBe(7); +}); it('should click svg', async ({ page }) => { await page.setContent(` @@ -1012,7 +1029,6 @@ it('should click in a nested transformed iframe', async ({ page }) => { it('ensure events are dispatched in the individual tasks', async ({ page, browserName }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/19685' }); - it.fixme(browserName === 'firefox'); await page.setContent(`
@@ -1052,4 +1068,4 @@ it('ensure events are dispatched in the individual tasks', async ({ page, browse 'timeout inner', 'timeout outer', ]); -}); \ No newline at end of file +});