diff --git a/tests/playwright-test/reporter-html.spec.ts b/tests/playwright-test/reporter-html.spec.ts index 9ab49f9060..beecb68f71 100644 --- a/tests/playwright-test/reporter-html.spec.ts +++ b/tests/playwright-test/reporter-html.spec.ts @@ -1881,3 +1881,38 @@ test('should list tests in the right order', async ({ runInlineTest, showReport, /main › second › passes\d+m?ssecond.ts:5/, ]); }); + +test('tests should filter by file', async ({ runInlineTest, showReport, page }) => { + const result = await runInlineTest({ + 'file-a.test.js': ` + const { test } = require('@playwright/test'); + test('a test 1', async ({}) => {}); + test('a test 2', async ({}) => {}); + `, + 'file-b.test.js': ` + const { test } = require('@playwright/test'); + test('b test 1', async ({}) => {}); + test('b test 2', async ({}) => {}); + `, + }, { reporter: 'dot,html' }, { PW_TEST_HTML_REPORT_OPEN: 'never' }); + + expect(result.exitCode).toBe(0); + expect(result.passed).toBe(4); + expect(result.failed).toBe(0); + + await showReport(); + + const searchInput = page.locator('.subnav-search-input'); + + await searchInput.fill('file-a'); + await expect(page.getByText('file-a.test.js', { exact: true })).toBeVisible(); + await expect(page.getByText('a test 1')).toBeVisible(); + await expect(page.getByText('a test 2')).toBeVisible(); + await expect(page.getByText('file-b.test.js', { exact: true })).not.toBeVisible(); + await expect(page.getByText('b test 1')).not.toBeVisible(); + await expect(page.getByText('b test 2')).not.toBeVisible(); + + await searchInput.fill('file-a:3'); + await expect(page.getByText('a test 1')).toBeVisible(); + await expect(page.getByText('a test 2')).not.toBeVisible(); +});