feat(types): add types for $eval (#6135)

This pulls in the types (based on the DefinitelyTyped repo) for
`page.$eval` (and the `$eval` method on other classes). The `$eval`
method is quite hard to type due to the way we wrap and unwrap
ElementHandles that are passed to / returned from the `pageFunction`
that users provide.

Longer term we can improve the types by providing type overloads as
DefinitelyTyped does but I've deferred that for now (see the `TODO` in
the code for more details).
This commit is contained in:
Jack Franklin
2020-07-02 10:09:34 +01:00
committed by GitHub
parent 8370ec88ae
commit 6474edb9ba
22 changed files with 282 additions and 72 deletions

View File

@@ -65,7 +65,7 @@ describe('request interception', function () {
</form>
`);
await Promise.all([
page.$eval('form', (form) => form.submit()),
page.$eval('form', (form: HTMLFormElement) => form.submit()),
page.waitForNavigation(),
]);
});
@@ -454,7 +454,7 @@ describe('request interception', function () {
page.on('request', async (r) => (request = r));
page.$eval(
'iframe',
(frame, url) => (frame.src = url),
(frame: HTMLIFrameElement, url: string) => (frame.src = url),
server.EMPTY_PAGE
),
// Wait for request interception.