diff --git a/.eslintrc.js b/.eslintrc.js index bdb925af..76c19cdd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -218,6 +218,8 @@ module.exports = { {ignoreVoid: true, ignoreIIFE: true}, ], '@typescript-eslint/prefer-ts-expect-error': 'error', + // This is more performant; see https://v8.dev/blog/fast-async. + '@typescript-eslint/return-await': ['error', 'always'], }, overrides: [ { diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 630e289b..12cc259b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,12 +37,12 @@ jobs: - uses: google/wireit@f3a3c79c553122e2fe5829eeac7d815326502903 # setup-github-actions-caching/v1 - name: Check code run: npm run check - - name: Lint code - run: npm run lint - name: Validate licenses run: npm run validate-licenses - name: Build every package run: npm run build + - name: Lint code + run: npm run lint - name: Generate documents run: npm run docs - name: Check if autogenerated docs differ diff --git a/packages/browsers/src/launch.ts b/packages/browsers/src/launch.ts index e47f14ae..f00cd0b1 100644 --- a/packages/browsers/src/launch.ts +++ b/packages/browsers/src/launch.ts @@ -305,7 +305,7 @@ export class Process { if (!this.#exited) { this.kill(); } - return this.#browserProcessExiting; + return await this.#browserProcessExiting; } hasClosed(): Promise { diff --git a/packages/puppeteer-core/src/api/ElementHandle.ts b/packages/puppeteer-core/src/api/ElementHandle.ts index 0a804cd2..b8aa7cab 100644 --- a/packages/puppeteer-core/src/api/ElementHandle.ts +++ b/packages/puppeteer-core/src/api/ElementHandle.ts @@ -179,14 +179,14 @@ export abstract class ElementHandle< override async getProperty( propertyName: HandleOr ): Promise> { - return this.handle.getProperty(propertyName); + return await this.handle.getProperty(propertyName); } /** * @internal */ override async getProperties(): Promise> { - return this.handle.getProperties(); + return await this.handle.getProperties(); } /** @@ -202,7 +202,7 @@ export abstract class ElementHandle< pageFunction: Func | string, ...args: Params ): Promise>> { - return this.handle.evaluate(pageFunction, ...args); + return await this.handle.evaluate(pageFunction, ...args); } /** @@ -225,7 +225,7 @@ export abstract class ElementHandle< * @internal */ override async jsonValue(): Promise { - return this.handle.jsonValue(); + return await this.handle.jsonValue(); } /** @@ -288,9 +288,9 @@ export abstract class ElementHandle< ): Promise>>> { const {updatedSelector, QueryHandler} = getQueryHandlerAndSelector(selector); - return AsyncIterableUtil.collect( + return await (AsyncIterableUtil.collect( QueryHandler.queryAll(this, updatedSelector) - ) as Promise>>>; + ) as Promise>>>); } /** @@ -419,7 +419,7 @@ export abstract class ElementHandle< if (expression.startsWith('//')) { expression = `.${expression}`; } - return this.$$(`xpath/${expression}`); + return await this.$$(`xpath/${expression}`); } /** @@ -491,7 +491,7 @@ export abstract class ElementHandle< * {@link ElementHandle.waitForSelector}. */ async isVisible(): Promise { - return this.#checkVisibility(true); + return await this.#checkVisibility(true); } /** @@ -499,7 +499,7 @@ export abstract class ElementHandle< * {@link ElementHandle.waitForSelector}. */ async isHidden(): Promise { - return this.#checkVisibility(false); + return await this.#checkVisibility(false); } /** @@ -575,7 +575,7 @@ export abstract class ElementHandle< if (xpath.startsWith('//')) { xpath = `.${xpath}`; } - return this.waitForSelector(`xpath/${xpath}`, options); + return await this.waitForSelector(`xpath/${xpath}`, options); } /** @@ -745,7 +745,7 @@ export abstract class ElementHandle< ); } - return this.evaluate((element, vals): string[] => { + return await this.evaluate((element, vals): string[] => { const values = new Set(vals); if (!(element instanceof HTMLSelectElement)) { throw new Error('Element is not a