From bf7716ac90edeab5d4f6ab37be37138520b21efe Mon Sep 17 00:00:00 2001 From: jonghoonpark Date: Fri, 3 May 2024 01:01:23 +0900 Subject: [PATCH] fix(html-reporter): add filter for anonymous describe --- packages/playwright/src/reporters/html.ts | 2 +- tests/playwright-test/reporter-html.spec.ts | 30 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/playwright/src/reporters/html.ts b/packages/playwright/src/reporters/html.ts index 8cad4e0eb21b9..9fa88fd3e71ab 100644 --- a/packages/playwright/src/reporters/html.ts +++ b/packages/playwright/src/reporters/html.ts @@ -359,7 +359,7 @@ class HtmlBuilder { private _createTestEntry(test: TestCasePublic, projectName: string, path: string[]): TestEntry { const duration = test.results.reduce((a, r) => a + r.duration, 0); const location = this._relativeLocation(test.location)!; - path = path.slice(1); + path = path.slice(1).filter(path => path.length > 0); const results = test.results.map(r => this._createTestResult(test, r)); return { diff --git a/tests/playwright-test/reporter-html.spec.ts b/tests/playwright-test/reporter-html.spec.ts index 0f8505889e39a..61f3b58af3def 100644 --- a/tests/playwright-test/reporter-html.spec.ts +++ b/tests/playwright-test/reporter-html.spec.ts @@ -2330,6 +2330,36 @@ for (const useIntermediateMergeReport of [false] as const) { await showReport(); await expect(page.getByTestId('report-errors')).toHaveText(/Error: From teardown.*at globalTeardown.ts:3.*export default async function globalTeardown/s); }); + + test('should not render anonymous describe', async ({ runInlineTest, showReport, page }) => { + const result = await runInlineTest({ + 'a.test.js': ` + const { expect, test } = require('@playwright/test'); + test.describe('Root describe', () => { + test.describe(() => { + test('Test passed', async ({}) => { + expect(1).toBe(1); + }); + }); + }); + `, + }, { reporter: 'dot,html' }, { PW_TEST_HTML_REPORT_OPEN: 'never' }); + + expect(result.exitCode).toBe(0); + expect(result.passed).toBe(1); + + await showReport(); + + await expect(page.locator('.test-file-test')).toHaveCount(1); + await expect(page.locator('.test-file-test').getByText('Root describe › Test passed', { exact: true })).toHaveCount(1); + await expect(page.locator('.test-file-test').locator('a').first()).toHaveAttribute('title', 'Root describe › Test passed'); + + const testFilePathLink = page.locator('.test-file-path-link'); + await expect(testFilePathLink).toHaveAttribute('title', 'Root describe › Test passed'); + + await testFilePathLink.click(); + await expect(page.locator('.test-case-path').getByText('Root describe', { exact: true })).toHaveCount(1); + }); }); }