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 @@
+
+increment
+
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
+});