import { Browser, BrowserContext, chromium, Page, expect } from '@playwright/test';
(async () => {
const browser: Browser = await chromium.launch({ headless: false, channel: 'chrome' });
const context: BrowserContext = await browser.newContext();
const page: Page = await context.newPage();
await page.goto('/playwright/widgets/windows-tabs.html');
const [popup] = await Promise.all([
context.waitForEvent('page'),
page.getByTestId('open-anchor').click()
]);
await popup.waitForLoadState();
await expect(popup).toHaveURL(/tab-popup\.html$/);
await expect(popup.getByTestId('popup-heading')).toContainText('Hello from the popup tab');
const [winPopup] = await Promise.all([
context.waitForEvent('page'),
page.getByTestId('open-popup').click()
]);
await winPopup.close();
const waiters = [0, 1, 2].map(() => context.waitForEvent('page'));
await page.getByTestId('open-three').click();
const threePages = await Promise.all(waiters);
expect(context.pages().length).toBeGreaterThanOrEqual(4);
for (const p of threePages) await p.close();
const [secure] = await Promise.all([
context.waitForEvent('page'),
page.getByTestId('open-noopener').click()
]);
await expect(secure.getByTestId('opener-url')).toContainText('(no opener)');
})();