From 55a78482e40484f80138f9c2a29bae317215e03e Mon Sep 17 00:00:00 2001 From: Joel Einbinder Date: Tue, 11 Aug 2020 14:31:20 -0700 Subject: [PATCH] fix(types): fix type generation to make ts tests work (#3385) --- utils/generate_types/index.js | 5 ++++- utils/generate_types/test/test.ts | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/utils/generate_types/index.js b/utils/generate_types/index.js index 943e41f098..f727dc275d 100644 --- a/utils/generate_types/index.js +++ b/utils/generate_types/index.js @@ -177,7 +177,7 @@ function classBody(classDesc) { for (const {eventName, params, comment, type} of eventDescriptions) { if (comment) parts.push(writeComment(comment, ' ')); - parts.push(` ${member.name}(event: '${eventName}', optionsOrPredicate?: { predicate?: (${params}) => boolean, timeout?: number }): Promise<${type}>;\n`); + parts.push(` ${member.name}(event: '${eventName}', optionsOrPredicate?: { predicate?: (${params}) => boolean, timeout?: number } | ((${params}) => boolean)): Promise<${type}>;\n`); } return parts.join('\n'); @@ -232,6 +232,9 @@ function writeComment(comment, indent = '') { function typeToString(type, ...namespace) { if (!type) return 'void'; + // Accessibility.snapshot has a recursive data structure, so special case it here. + if (namespace[0] === 'AccessibilitySnapshot' && namespace[1] === 'children') + return 'Array'; let typeString = stringifyType(parseType(type.name)); if (type.properties.length && typeString.indexOf('Object') !== -1) { const name = namespace.map(n => n[0].toUpperCase() + n.substring(1)).join(''); diff --git a/utils/generate_types/test/test.ts b/utils/generate_types/test/test.ts index 4df9cecd3a..963cbf3390 100644 --- a/utils/generate_types/test/test.ts +++ b/utils/generate_types/test/test.ts @@ -399,6 +399,10 @@ playwright.chromium.launch().then(async browser => { }); const assertion: AssertType = true; } + { + const response = await page.waitForEvent('response', response => response.url() === 'asdf'); + const assertion: AssertType = true; + } })(); // typed handles