Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions utils/generate_types/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ function createEventDescriptions(classDesc) {
const argName = argNameForType(type);
const params = argName ? `${argName} : ${type}` : '';
descriptions.push({
type,
params,
eventName,
comment: value.comment
Expand All @@ -167,6 +168,16 @@ function classBody(classDesc) {
parts.push(members.map(member => {
if (member.kind === 'event')
return '';
if (member.name === 'waitForEvent') {
const parts = [];
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`);
}

return parts.join('\n');
}
const jsdoc = memberJSDOC(member, ' ');
const args = argsFromMember(member, classDesc.name);
const type = typeToString(member.type, classDesc.name, member.name);
Expand Down
26 changes: 25 additions & 1 deletion utils/generate_types/test/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,31 @@ playwright.chromium.launch().then(async browser => {
browser.close();
})();

// waitForEvent
(async () => {
const browser = await playwright.webkit.launch();
const page = await browser.newPage();
{
const frame = await page.waitForEvent('frameattached');
const assertion: AssertType<playwright.Frame, typeof frame> = true;
}
{
const worker = await page.waitForEvent('worker', {
predicate: worker => {
const condition: AssertType<playwright.Worker, typeof worker> = true;
return true;
}
});
const assertion: AssertType<playwright.Worker, typeof worker> = true;
}
{
const newPage = await page.context().waitForEvent('page', {
timeout: 500
});
const assertion: AssertType<playwright.Page, typeof newPage> = true;
}
})();

// typed handles
(async () => {
const browser = await playwright.webkit.launch();
Expand Down Expand Up @@ -515,7 +540,6 @@ playwright.chromium.launch().then(async browser => {
}
}


await browser.close();
})();

Expand Down