diff --git a/src/rpc/channels.ts b/src/rpc/channels.ts
index 31cef8206508c..ecadff6c04d72 100644
--- a/src/rpc/channels.ts
+++ b/src/rpc/channels.ts
@@ -924,6 +924,7 @@ export type FrameContentResult = {
export type FrameDblclickParams = {
selector: string,
force?: boolean,
+ noWaitAfter?: boolean,
modifiers?: ('Alt' | 'Control' | 'Meta' | 'Shift')[],
position?: {
x: number,
diff --git a/src/rpc/protocol.yml b/src/rpc/protocol.yml
index 8fbd2bdd743ab..8c8aa6515409a 100644
--- a/src/rpc/protocol.yml
+++ b/src/rpc/protocol.yml
@@ -1049,6 +1049,7 @@ Frame:
parameters:
selector: string
force: boolean?
+ noWaitAfter: boolean?
modifiers:
type: array?
items:
diff --git a/src/rpc/validator.ts b/src/rpc/validator.ts
index 79f9974e7fc4e..279f1091289cf 100644
--- a/src/rpc/validator.ts
+++ b/src/rpc/validator.ts
@@ -498,6 +498,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
scheme.FrameDblclickParams = tObject({
selector: tString,
force: tOptional(tBoolean),
+ noWaitAfter: tOptional(tBoolean),
modifiers: tOptional(tArray(tEnum(['Alt', 'Control', 'Meta', 'Shift']))),
position: tOptional(tObject({
x: tNumber,
diff --git a/test/autowaiting.jest.js b/test/autowaiting.jest.js
index 7294ed556ec70..58a3a4a08082d 100644
--- a/test/autowaiting.jest.js
+++ b/test/autowaiting.jest.js
@@ -154,6 +154,11 @@ describe('Auto waiting', () => {
await page.setContent(`empty.html`);
await page.click('a', { noWaitAfter: true });
});
+ it('should work with dblclick noWaitAfter: true', async({page, server}) => {
+ server.setRoute('/empty.html', async () => {});
+ await page.setContent(`empty.html`);
+ await page.dblclick('a', { noWaitAfter: true });
+ });
it('should work with waitForLoadState(load)', async({page, server}) => {
const messages = [];
server.setRoute('/empty.html', async (req, res) => {