feat(reporter): Add parallelIndex field to TestResult (#19570)
This commit is contained in:
parent
41174e74a7
commit
467d9f37fc
|
|
@ -78,3 +78,9 @@ List of steps inside this test run.
|
||||||
Index of the worker where the test was run. If the test was not run a single time, for example when the user interrupted testing, the only result will have a `workerIndex` equal to `-1`.
|
Index of the worker where the test was run. If the test was not run a single time, for example when the user interrupted testing, the only result will have a `workerIndex` equal to `-1`.
|
||||||
|
|
||||||
Learn more about [parallelism and sharding](../test-parallel.md) with Playwright Test.
|
Learn more about [parallelism and sharding](../test-parallel.md) with Playwright Test.
|
||||||
|
|
||||||
|
## property: TestResult.parallelIndex
|
||||||
|
* since: v1.30
|
||||||
|
- type: <[int]>
|
||||||
|
|
||||||
|
The index of the worker between `0` and `workers - 1`. It is guaranteed that workers running at the same time have a different `parallelIndex`.
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,7 @@ export class Dispatcher {
|
||||||
const data = this._testById.get(params.testId)!;
|
const data = this._testById.get(params.testId)!;
|
||||||
const result = data.test._appendTestResult();
|
const result = data.test._appendTestResult();
|
||||||
data.resultByWorkerIndex.set(worker.workerIndex, { result, stepStack: new Set(), steps: new Map() });
|
data.resultByWorkerIndex.set(worker.workerIndex, { result, stepStack: new Set(), steps: new Map() });
|
||||||
|
result.parallelIndex = worker.parallelIndex;
|
||||||
result.workerIndex = worker.workerIndex;
|
result.workerIndex = worker.workerIndex;
|
||||||
result.startTime = new Date(params.startWallTime);
|
result.startTime = new Date(params.startWallTime);
|
||||||
this._reporter.onTestBegin?.(data.test, result);
|
this._reporter.onTestBegin?.(data.test, result);
|
||||||
|
|
@ -495,7 +496,7 @@ let lastWorkerIndex = 0;
|
||||||
class Worker extends EventEmitter {
|
class Worker extends EventEmitter {
|
||||||
private process: child_process.ChildProcess;
|
private process: child_process.ChildProcess;
|
||||||
private _hash: string;
|
private _hash: string;
|
||||||
private parallelIndex: number;
|
readonly parallelIndex: number;
|
||||||
readonly workerIndex: number;
|
readonly workerIndex: number;
|
||||||
private _didSendStop = false;
|
private _didSendStop = false;
|
||||||
private _didFail = false;
|
private _didFail = false;
|
||||||
|
|
|
||||||
|
|
@ -212,6 +212,7 @@ export class TestCase extends Base implements reporterTypes.TestCase {
|
||||||
_appendTestResult(): reporterTypes.TestResult {
|
_appendTestResult(): reporterTypes.TestResult {
|
||||||
const result: reporterTypes.TestResult = {
|
const result: reporterTypes.TestResult = {
|
||||||
retry: this.results.length,
|
retry: this.results.length,
|
||||||
|
parallelIndex: -1,
|
||||||
workerIndex: -1,
|
workerIndex: -1,
|
||||||
duration: 0,
|
duration: 0,
|
||||||
startTime: new Date(),
|
startTime: new Date(),
|
||||||
|
|
|
||||||
|
|
@ -282,7 +282,13 @@ export interface TestResult {
|
||||||
*
|
*
|
||||||
* Learn more about [parallelism and sharding](https://playwright.dev/docs/test-parallel) with Playwright Test.
|
* Learn more about [parallelism and sharding](https://playwright.dev/docs/test-parallel) with Playwright Test.
|
||||||
*/
|
*/
|
||||||
workerIndex: number;}
|
workerIndex: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The index of the worker between `0` and `workers - 1`. It is guaranteed that workers running at the same time have
|
||||||
|
* a different `parallelIndex`.
|
||||||
|
*/
|
||||||
|
parallelIndex: number;}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Result of the full test run.
|
* Result of the full test run.
|
||||||
|
|
|
||||||
|
|
@ -607,6 +607,29 @@ var import_test = __toModule(require("@playwright/test"));
|
||||||
expect(result.output).toContain('a.spec.ts');
|
expect(result.output).toContain('a.spec.ts');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('parallelIndex is presented in onTestEnd', async ({ runInlineTest }) => {
|
||||||
|
const result = await runInlineTest({
|
||||||
|
'reporter.ts': `
|
||||||
|
class Reporter {
|
||||||
|
onTestEnd(test, result) {
|
||||||
|
console.log('parallelIndex: ' + result.parallelIndex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports = Reporter;`,
|
||||||
|
'playwright.config.ts': `
|
||||||
|
module.exports = {
|
||||||
|
reporter: './reporter',
|
||||||
|
};
|
||||||
|
`,
|
||||||
|
'a.spec.js': `
|
||||||
|
pwt.test('test', () => {});
|
||||||
|
`,
|
||||||
|
}, { 'reporter': '', 'workers': 1 });
|
||||||
|
|
||||||
|
expect(result.output).toContain('parallelIndex: 0');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
function stripEscapedAscii(str: string) {
|
function stripEscapedAscii(str: string) {
|
||||||
return str.replace(/\\u00[a-z0-9][a-z0-9]\[[^m]+m/g, '');
|
return str.replace(/\\u00[a-z0-9][a-z0-9]\[[^m]+m/g, '');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue