diff --git a/packages/playwright/src/reporters/list.ts b/packages/playwright/src/reporters/list.ts index 01ec7825ae..f87a7d4fe8 100644 --- a/packages/playwright/src/reporters/list.ts +++ b/packages/playwright/src/reporters/list.ts @@ -212,7 +212,7 @@ class ListReporter extends BaseReporter { private _appendLine(text: string, prefix: string) { const line = prefix + this.fitToScreen(text, prefix); if (process.env.PW_TEST_DEBUG_REPORTERS) { - process.stdout.write(this._lastRow + ' : ' + line + '\n'); + process.stdout.write('#' + this._lastRow + ' : ' + line + '\n'); } else { process.stdout.write(line); process.stdout.write('\n'); @@ -223,7 +223,7 @@ class ListReporter extends BaseReporter { private _updateLine(row: number, text: string, prefix: string) { const line = prefix + this.fitToScreen(text, prefix); if (process.env.PW_TEST_DEBUG_REPORTERS) - process.stdout.write(row + ' : ' + line + '\n'); + process.stdout.write('#' + row + ' : ' + line + '\n'); else this._updateLineForTTY(row, line); } diff --git a/tests/playwright-test/reporter-list.spec.ts b/tests/playwright-test/reporter-list.spec.ts index 49f0f2a744..576c84d55c 100644 --- a/tests/playwright-test/reporter-list.spec.ts +++ b/tests/playwright-test/reporter-list.spec.ts @@ -72,22 +72,22 @@ for (const useIntermediateMergeReport of [false, true] as const) { `, }, { reporter: 'list' }, { PW_TEST_DEBUG_REPORTERS: '1', PLAYWRIGHT_LIST_PRINT_STEPS: '1', PLAYWRIGHT_FORCE_TTY: '80' }); const text = result.output; - const lines = text.split('\n').filter(l => l.match(/^\d :/)).map(l => l.replace(/[.\d]+m?s/, 'Xms')); + const lines = text.split('\n').filter(l => l.match(/^#.* :/)).map(l => l.replace(/[.\d]+m?s/, 'Xms')); lines.pop(); // Remove last item that contains [v] and time in ms. expect(lines).toEqual([ - '0 : 1 a.test.ts:3:15 › passes', - '1 : 1.1 passes › outer 1.0', - '2 : 1.2 passes › outer 1.0 › inner 1.1', - '2 : 1.2 passes › outer 1.0 › inner 1.1 (Xms)', - '3 : 1.3 passes › outer 1.0 › inner 1.2', - '3 : 1.3 passes › outer 1.0 › inner 1.2 (Xms)', - '1 : 1.1 passes › outer 1.0 (Xms)', - '4 : 1.4 passes › outer 2.0', - '5 : 1.5 passes › outer 2.0 › inner 2.1', - '5 : 1.5 passes › outer 2.0 › inner 2.1 (Xms)', - '6 : 1.6 passes › outer 2.0 › inner 2.2', - '6 : 1.6 passes › outer 2.0 › inner 2.2 (Xms)', - '4 : 1.4 passes › outer 2.0 (Xms)', + '#0 : 1 a.test.ts:3:15 › passes', + '#1 : 1.1 passes › outer 1.0', + '#2 : 1.2 passes › outer 1.0 › inner 1.1', + '#2 : 1.2 passes › outer 1.0 › inner 1.1 (Xms)', + '#3 : 1.3 passes › outer 1.0 › inner 1.2', + '#3 : 1.3 passes › outer 1.0 › inner 1.2 (Xms)', + '#1 : 1.1 passes › outer 1.0 (Xms)', + '#4 : 1.4 passes › outer 2.0', + '#5 : 1.5 passes › outer 2.0 › inner 2.1', + '#5 : 1.5 passes › outer 2.0 › inner 2.1 (Xms)', + '#6 : 1.6 passes › outer 2.0 › inner 2.2', + '#6 : 1.6 passes › outer 2.0 › inner 2.2 (Xms)', + '#4 : 1.4 passes › outer 2.0 (Xms)', ]); }); @@ -107,22 +107,22 @@ for (const useIntermediateMergeReport of [false, true] as const) { });`, }, { reporter: 'list' }, { PW_TEST_DEBUG_REPORTERS: '1', PLAYWRIGHT_FORCE_TTY: '80' }); const text = result.output; - const lines = text.split('\n').filter(l => l.match(/^\d :/)).map(l => l.replace(/[.\d]+m?s/, 'Xms')); + const lines = text.split('\n').filter(l => l.match(/^#.* :/)).map(l => l.replace(/[.\d]+m?s/, 'Xms')); lines.pop(); // Remove last item that contains [v] and time in ms. expect(lines).toEqual([ - '0 : 1 a.test.ts:3:11 › passes', - '0 : 1 a.test.ts:4:20 › passes › outer 1.0', - '0 : 1 a.test.ts:5:22 › passes › outer 1.0 › inner 1.1', - '0 : 1 a.test.ts:4:20 › passes › outer 1.0', - '0 : 1 a.test.ts:6:22 › passes › outer 1.0 › inner 1.2', - '0 : 1 a.test.ts:4:20 › passes › outer 1.0', - '0 : 1 a.test.ts:3:11 › passes', - '0 : 1 a.test.ts:8:20 › passes › outer 2.0', - '0 : 1 a.test.ts:9:22 › passes › outer 2.0 › inner 2.1', - '0 : 1 a.test.ts:8:20 › passes › outer 2.0', - '0 : 1 a.test.ts:10:22 › passes › outer 2.0 › inner 2.2', - '0 : 1 a.test.ts:8:20 › passes › outer 2.0', - '0 : 1 a.test.ts:3:11 › passes', + '#0 : 1 a.test.ts:3:11 › passes', + '#0 : 1 a.test.ts:4:20 › passes › outer 1.0', + '#0 : 1 a.test.ts:5:22 › passes › outer 1.0 › inner 1.1', + '#0 : 1 a.test.ts:4:20 › passes › outer 1.0', + '#0 : 1 a.test.ts:6:22 › passes › outer 1.0 › inner 1.2', + '#0 : 1 a.test.ts:4:20 › passes › outer 1.0', + '#0 : 1 a.test.ts:3:11 › passes', + '#0 : 1 a.test.ts:8:20 › passes › outer 2.0', + '#0 : 1 a.test.ts:9:22 › passes › outer 2.0 › inner 2.1', + '#0 : 1 a.test.ts:8:20 › passes › outer 2.0', + '#0 : 1 a.test.ts:10:22 › passes › outer 2.0 › inner 2.2', + '#0 : 1 a.test.ts:8:20 › passes › outer 2.0', + '#0 : 1 a.test.ts:3:11 › passes', ]); }); @@ -143,15 +143,15 @@ for (const useIntermediateMergeReport of [false, true] as const) { `, }, { reporter: 'list' }, { PW_TEST_DEBUG_REPORTERS: '1', PLAYWRIGHT_LIST_PRINT_STEPS: '1' }); const text = result.output; - const lines = text.split('\n').filter(l => l.match(/^\d :/)).map(l => l.replace(/[.\d]+m?s/, 'Xms')); + const lines = text.split('\n').filter(l => l.match(/^#.* :/)).map(l => l.replace(/[.\d]+m?s/, 'Xms')); lines.pop(); // Remove last item that contains [v] and time in ms. expect(lines).toEqual([ - '0 : 1.1 a.test.ts:5:26 › passes › outer 1.0 › inner 1.1 (Xms)', - '1 : 1.2 a.test.ts:6:26 › passes › outer 1.0 › inner 1.2 (Xms)', - '2 : 1.3 a.test.ts:4:24 › passes › outer 1.0 (Xms)', - '3 : 1.4 a.test.ts:9:26 › passes › outer 2.0 › inner 2.1 (Xms)', - '4 : 1.5 a.test.ts:10:26 › passes › outer 2.0 › inner 2.2 (Xms)', - '5 : 1.6 a.test.ts:8:24 › passes › outer 2.0 (Xms)', + '#0 : 1.1 a.test.ts:5:26 › passes › outer 1.0 › inner 1.1 (Xms)', + '#1 : 1.2 a.test.ts:6:26 › passes › outer 1.0 › inner 1.2 (Xms)', + '#2 : 1.3 a.test.ts:4:24 › passes › outer 1.0 (Xms)', + '#3 : 1.4 a.test.ts:9:26 › passes › outer 2.0 › inner 2.1 (Xms)', + '#4 : 1.5 a.test.ts:10:26 › passes › outer 2.0 › inner 2.2 (Xms)', + '#5 : 1.6 a.test.ts:8:24 › passes › outer 2.0 (Xms)', ]); }); @@ -185,13 +185,13 @@ for (const useIntermediateMergeReport of [false, true] as const) { `, }, { reporter: 'list', retries: '1' }, { PW_TEST_DEBUG_REPORTERS: '1', PLAYWRIGHT_FORCE_TTY: '80' }); const text = result.output; - const lines = text.split('\n').filter(l => l.startsWith('0 :') || l.startsWith('1 :')).map(l => l.replace(/\d+(\.\d+)?m?s/, 'XXms')); + const lines = text.split('\n').filter(l => l.startsWith('#0 :') || l.startsWith('#1 :')).map(l => l.replace(/\d+(\.\d+)?m?s/, 'XXms')); expect(lines).toEqual([ - `0 : 1 a.test.ts:3:15 › flaky`, - `0 : ${NEGATIVE_STATUS_MARK} 1 a.test.ts:3:15 › flaky (XXms)`, - `1 : 2 a.test.ts:3:15 › flaky (retry #1)`, - `1 : ${POSITIVE_STATUS_MARK} 2 a.test.ts:3:15 › flaky (retry #1) (XXms)`, + `#0 : 1 a.test.ts:3:15 › flaky`, + `#0 : ${NEGATIVE_STATUS_MARK} 1 a.test.ts:3:15 › flaky (XXms)`, + `#1 : 2 a.test.ts:3:15 › flaky (retry #1)`, + `#1 : ${POSITIVE_STATUS_MARK} 2 a.test.ts:3:15 › flaky (retry #1) (XXms)`, ]); });