From 8e396fdac01ef6c4dd1e43d0e8a14589d619b99d Mon Sep 17 00:00:00 2001 From: Joel Einbinder Date: Wed, 20 May 2020 07:34:36 -0700 Subject: [PATCH] fix(types): add missing types for removing event listeners (#2307) --- utils/generate_types/index.js | 2 +- utils/generate_types/test/test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/utils/generate_types/index.js b/utils/generate_types/index.js index 1997fecf17..03b2a6b2e8 100644 --- a/utils/generate_types/index.js +++ b/utils/generate_types/index.js @@ -159,7 +159,7 @@ function createEventDescriptions(classDesc) { function classBody(classDesc) { const parts = []; const eventDescriptions = createEventDescriptions(classDesc); - for (const method of ['on', 'once', 'addListener']) { + for (const method of ['on', 'once', 'addListener', 'removeListener', 'off']) { for (const {eventName, params, comment} of eventDescriptions) { if (comment) parts.push(writeComment(comment, ' ')); diff --git a/utils/generate_types/test/test.ts b/utils/generate_types/test/test.ts index 23c648a06a..b871b9973d 100644 --- a/utils/generate_types/test/test.ts +++ b/utils/generate_types/test/test.ts @@ -88,6 +88,7 @@ playwright.chromium.launch().then(async browser => { import * as crypto from 'crypto'; import * as fs from 'fs'; +import { EventEmitter } from 'events'; playwright.chromium.launch().then(async browser => { const page = await browser.newPage(); @@ -729,3 +730,14 @@ playwright.chromium.launch().then(async browser => { // Register the engine. Selectors will be prefixed with "tag=". await playwright.selectors.register('tag', createTagNameEngine); })(); + +// Event listeners +(async function() { + const eventEmitter = {} as (playwright.Page|playwright.BrowserContext|EventEmitter); + const listener = () => {}; + eventEmitter.addListener('close', listener) + .on('close', listener) + .once('close', listener) + .removeListener('close', listener) + .off('close', listener); +});