fix(test-runner): do not consider retries for maxFailures
This commit is contained in:
parent
9fa06be49e
commit
059a678470
|
|
@ -31,8 +31,12 @@ export class FailureTracker {
|
||||||
}
|
}
|
||||||
|
|
||||||
onTestEnd(test: TestCase, result: TestResult) {
|
onTestEnd(test: TestCase, result: TestResult) {
|
||||||
if (result.status !== 'skipped' && result.status !== test.expectedStatus)
|
if (result.status === 'skipped')
|
||||||
|
return;
|
||||||
|
if (result.status !== test.expectedStatus)
|
||||||
++this._failureCount;
|
++this._failureCount;
|
||||||
|
else
|
||||||
|
this._failureCount -= result.retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
onWorkerError() {
|
onWorkerError() {
|
||||||
|
|
|
||||||
|
|
@ -181,3 +181,40 @@ test('max-failures should work across phases', async ({ runInlineTest }) => {
|
||||||
expect(result.output).toContain('running c');
|
expect(result.output).toContain('running c');
|
||||||
expect(result.output).not.toContain('running d');
|
expect(result.output).not.toContain('running d');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('max-failures should not consider retries as failures', async ({ runInlineTest }) => {
|
||||||
|
const result = await runInlineTest({
|
||||||
|
'playwright.config.ts': `
|
||||||
|
export default {
|
||||||
|
maxFailures: 10,
|
||||||
|
retries: 10,
|
||||||
|
};
|
||||||
|
`,
|
||||||
|
'example.spec.ts': `
|
||||||
|
import fs from 'fs';
|
||||||
|
import { test, expect } from '@playwright/test';
|
||||||
|
|
||||||
|
test('I fail 9 times 1', () => {
|
||||||
|
let count = parseInt(fs.readFileSync('count1', 'utf8'), 10);
|
||||||
|
count++;
|
||||||
|
fs.writeFileSync('count1', String(count));
|
||||||
|
if (count < 10)
|
||||||
|
throw new Error('failing intentionally');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('I fail 9 times 2', () => {
|
||||||
|
let count = parseInt(fs.readFileSync('count2', 'utf8'), 10);
|
||||||
|
count++;
|
||||||
|
fs.writeFileSync('count2', String(count));
|
||||||
|
if (count < 10)
|
||||||
|
throw new Error('failing intentionally');
|
||||||
|
});
|
||||||
|
`,
|
||||||
|
'count1': '0',
|
||||||
|
'count2': '0',
|
||||||
|
}, { workers: 1 });
|
||||||
|
expect(result.exitCode).toBe(0);
|
||||||
|
expect(result.failed).toBe(0);
|
||||||
|
expect(result.flaky).toBe(2);
|
||||||
|
expect(result.passed).toBe(0);
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue