diff --git a/utils/testrunner/TestRunner.js b/utils/testrunner/TestRunner.js index fef7f156b1..ee25255e6c 100644 --- a/utils/testrunner/TestRunner.js +++ b/utils/testrunner/TestRunner.js @@ -207,7 +207,7 @@ class TestWorker { return; } - if (test.expectation === TestExpectation.Fail) { + if (test.expectation === TestExpectation.Fail && test.declaredMode !== TestMode.Focus) { await this._testPass._willStartTest(this, test); test.result = TestResult.MarkedAsFailing; await this._testPass._didFinishTest(this, test); diff --git a/utils/testrunner/test/testrunner.spec.js b/utils/testrunner/test/testrunner.spec.js index 339f610582..5683517532 100644 --- a/utils/testrunner/test/testrunner.spec.js +++ b/utils/testrunner/test/testrunner.spec.js @@ -49,6 +49,15 @@ module.exports.addTests = function({testRunner, expect}) { expect(test.fullName).toBe('uno'); expect(test.declaredMode).toBe('focus'); }); + it('should run a failed focused test', async() => { + const t = newTestRunner(); + let run = false; + t.fit.fail(true)('uno', () => { run = true; throw new Error('failure'); }); + expect(t.tests().length).toBe(1); + await t.run(); + expect(run).toBe(true); + expect(t.failedTests()[0].name).toBe('uno'); + }); }); describe('TestRunner.describe', () => {