fix: make TeleSuite.project work for all suites (#29177)
Fixes https://github.com/microsoft/playwright/issues/29173
This commit is contained in:
parent
85c42939b1
commit
0113e8455b
|
|
@ -209,8 +209,8 @@ export class TeleReporterReceiver {
|
|||
this._rootSuite.suites.push(projectSuite);
|
||||
projectSuite.parent = this._rootSuite;
|
||||
}
|
||||
const p = this._parseProject(project);
|
||||
projectSuite.project = () => p;
|
||||
// Always update project in watch mode.
|
||||
projectSuite._project = this._parseProject(project);
|
||||
this._mergeSuitesInto(project.suites, projectSuite);
|
||||
|
||||
// Remove deleted tests when listing. Empty suites will be auto-filtered
|
||||
|
|
@ -428,6 +428,7 @@ export class TeleSuite implements SuitePrivate {
|
|||
_timeout: number | undefined;
|
||||
_retries: number | undefined;
|
||||
_fileId: string | undefined;
|
||||
_project: TeleFullProject | undefined;
|
||||
_parallelMode: 'none' | 'default' | 'serial' | 'parallel' = 'none';
|
||||
readonly _type: 'root' | 'project' | 'file' | 'describe';
|
||||
|
||||
|
|
@ -459,7 +460,7 @@ export class TeleSuite implements SuitePrivate {
|
|||
}
|
||||
|
||||
project(): TeleFullProject | undefined {
|
||||
return undefined;
|
||||
return this._project ?? this.parent?.project();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1677,3 +1677,35 @@ test('merge reports without --config preserves path separators', async ({ runInl
|
|||
expect(output).toContain(`test: ${test.info().outputPath('dir1', 'tests2', 'b.test.js').replaceAll(path.sep, otherSeparator)}`);
|
||||
expect(output).toContain(`test title: ${'tests2' + otherSeparator + 'b.test.js'}`);
|
||||
});
|
||||
|
||||
test('TestSuite.project() should return owning project', async ({ runInlineTest, mergeReports }) => {
|
||||
test.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/29173' });
|
||||
const files1 = {
|
||||
'echo-reporter.js': `
|
||||
export default class EchoReporter {
|
||||
onTestBegin(test) {
|
||||
console.log('test project:', test.parent?.project()?.name);
|
||||
}
|
||||
};
|
||||
`,
|
||||
'merge.config.ts': `module.exports = {
|
||||
testDir: 'mergeRoot',
|
||||
reporter: './echo-reporter.js'
|
||||
};`,
|
||||
'playwright.config.ts': `module.exports = {
|
||||
testDir: 'tests',
|
||||
reporter: [['blob', { outputDir: 'blob-report' }]],
|
||||
projects: [{name: 'my-project'}]
|
||||
};`,
|
||||
'tests/a.test.js': `
|
||||
import { test, expect } from '@playwright/test';
|
||||
test('math 1', async ({}) => { });
|
||||
`,
|
||||
};
|
||||
await runInlineTest(files1);
|
||||
|
||||
const { exitCode, output } = await mergeReports(test.info().outputPath('blob-report'), undefined, { additionalArgs: ['--config', 'merge.config.ts'] });
|
||||
expect(exitCode).toBe(0);
|
||||
console.log(output);
|
||||
expect(output).toContain(`test project: my-project`);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue