From 3f0adf5dd063cb0b0464d5e786379085750ec16d Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Mon, 9 Jan 2023 18:49:18 -0800 Subject: [PATCH] chore: release from pause when the page closes (#19975) Fixes: https://github.com/microsoft/playwright/issues/19168 --- examples/todomvc/tests/integration.spec.ts | 6 +++--- packages/playwright-core/src/client/page.ts | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/todomvc/tests/integration.spec.ts b/examples/todomvc/tests/integration.spec.ts index 9f910b9e2e..8bc56948bb 100644 --- a/examples/todomvc/tests/integration.spec.ts +++ b/examples/todomvc/tests/integration.spec.ts @@ -1,6 +1,7 @@ /* eslint-disable notice/notice */ -import { test, expect, Page } from '@playwright/test'; +import { test, expect } from '@playwright/test'; +import type { Page } from '@playwright/test'; test.describe.configure({ mode: 'parallel' }); @@ -396,8 +397,7 @@ test.describe('Routing', () => { await expect(page.getByRole('link', { name: 'All' })).toHaveClass('selected'); await page.getByRole('link', { name: 'Active' }).click(); // Page change - active items. - await expect(page.getByRole('link', { name: 'Active' })). - toHaveClass('selected'); + await expect(page.getByRole('link', { name: 'Active' })).toHaveClass('selected'); await page.getByRole('link', { name: 'Completed' }).click(); // Page change - completed items. await expect(page.getByRole('link', { name: 'Completed' })).toHaveClass('selected'); diff --git a/packages/playwright-core/src/client/page.ts b/packages/playwright-core/src/client/page.ts index 1dd4f79937..0692ac9209 100644 --- a/packages/playwright-core/src/client/page.ts +++ b/packages/playwright-core/src/client/page.ts @@ -697,8 +697,12 @@ export class Page extends ChannelOwner implements api.Page } async pause() { - if (!require('inspector').url()) - await this.context()._channel.pause(); + if (require('inspector').url()) + return; + await Promise.race([ + this.context()._channel.pause(), + this._closedOrCrashedPromise + ]); } async pdf(options: PDFOptions = {}): Promise {