diff --git a/packages/playwright/src/isomorphic/teleReceiver.ts b/packages/playwright/src/isomorphic/teleReceiver.ts index 91b1a1a434..b9aa5edba9 100644 --- a/packages/playwright/src/isomorphic/teleReceiver.ts +++ b/packages/playwright/src/isomorphic/teleReceiver.ts @@ -52,6 +52,7 @@ export type JsonProject = { testIgnore: JsonPattern[]; testMatch: JsonPattern[]; timeout: number; + use: { [key: string]: any }; }; export type JsonSuite = { @@ -326,7 +327,7 @@ export class TeleReporterReceiver { dependencies: project.dependencies, teardown: project.teardown, snapshotDir: this._absolutePath(project.snapshotDir), - use: {}, + use: project.use, }; } diff --git a/packages/playwright/src/reporters/teleEmitter.ts b/packages/playwright/src/reporters/teleEmitter.ts index 11d10987f2..10f31a742f 100644 --- a/packages/playwright/src/reporters/teleEmitter.ts +++ b/packages/playwright/src/reporters/teleEmitter.ts @@ -184,10 +184,17 @@ export class TeleReporterEmitter implements ReporterV2 { dependencies: project.dependencies, snapshotDir: this._relativePath(project.snapshotDir), teardown: project.teardown, + use: this._serializeProjectUseOptions(project.use), }; return report; } + private _serializeProjectUseOptions(use: reporterTypes.FullProject['use']): Record { + return { + testIdAttribute: use.testIdAttribute, + }; + } + private _serializeSuite(suite: reporterTypes.Suite): teleReceiver.JsonSuite { const result = { title: suite.title, diff --git a/tests/playwright-test/test-server.spec.ts b/tests/playwright-test/test-server.spec.ts index 6f03b2c804..157989c47e 100644 --- a/tests/playwright-test/test-server.spec.ts +++ b/tests/playwright-test/test-server.spec.ts @@ -120,6 +120,31 @@ test('file watching', async ({ startTestServer, writeFiles }, testInfo) => { ]); }); +test('should list tests with testIdAttribute', async ({ startTestServer, writeFiles }) => { + await writeFiles({ + 'a.test.ts': ` + import { test } from '@playwright/test'; + test('foo', () => {}); + `, + 'playwright.config.ts': ` + module.exports = { + projects: [{ + name: 'chromium', + use: { + testIdAttribute: 'testId', + } + }] + }; + `, + }); + + const testServerConnection = await startTestServer(); + const events = await testServerConnection.listFiles({}); + const onProject = events.report.find(e => e.method === 'onProject').params.project; + expect(onProject.name).toBe('chromium'); + expect(onProject.use.testIdAttribute).toBe('testId'); +}); + test('stdio interception', async ({ startTestServer, writeFiles }) => { const testServerConnection = await startTestServer(); await testServerConnection.initialize({ interceptStdio: true });