From cda1c945af63f9996550c525b0aee0cc1f82f1cf Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 16 Apr 2024 17:37:25 -0700 Subject: [PATCH] test: web assertion inside expect.poll (#30391) Reference https://github.com/microsoft/playwright/issues/30322 --- tests/playwright-test/test-step.spec.ts | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/playwright-test/test-step.spec.ts b/tests/playwright-test/test-step.spec.ts index 00efd0161a..4b49a622ca 100644 --- a/tests/playwright-test/test-step.spec.ts +++ b/tests/playwright-test/test-step.spec.ts @@ -988,3 +988,52 @@ fixture | fixture: page fixture | fixture: context `); }); + +test('web assertion inside expect.poll', async ({ runInlineTest }) => { + test.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/30322' }); + const result = await runInlineTest({ + 'reporter.ts': stepIndentReporter, + 'playwright.config.ts': ` + module.exports = { + reporter: './reporter', + }; + `, + 'a.test.ts': ` + import { test, expect } from '@playwright/test'; + test('pass', async ({ page }) => { + await page.setContent('
foo
'); + let counter = 0 + await expect.poll(async () => { + await expect(page.locator('div')).toHaveText('foo'); + ++counter; + await test.step('iteration ' + counter, async () => { + await expect(page.locator('div')).toBeVisible(); + }); + return counter; + }).toBe(2); + }); + ` + }, { reporter: '', workers: 1 }); + + expect(result.exitCode).toBe(0); + expect(stripAnsi(result.output)).toBe(` +hook |Before Hooks +fixture | fixture: browser +pw:api | browserType.launch +fixture | fixture: context +pw:api | browser.newContext +fixture | fixture: page +pw:api | browserContext.newPage +pw:api |page.setContent @ a.test.ts:4 +expect |expect.poll.toBe @ a.test.ts:13 +expect | expect.toHaveText @ a.test.ts:7 +test.step | iteration 1 @ a.test.ts:9 +expect | expect.toBeVisible @ a.test.ts:10 +expect | expect.toHaveText @ a.test.ts:7 +test.step | iteration 2 @ a.test.ts:9 +expect | expect.toBeVisible @ a.test.ts:10 +hook |After Hooks +fixture | fixture: page +fixture | fixture: context +`); +});