From bdd306b2924fe377749ad70a2517feca501e5c30 Mon Sep 17 00:00:00 2001 From: Jake Fried Date: Wed, 28 Apr 2021 16:56:30 -0400 Subject: [PATCH 1/2] Report on failures after test complete. --- src/adapter.js | 4 ++++ test/src/adapter.spec.js | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/adapter.js b/src/adapter.js index 78ceea1..13d6892 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -115,6 +115,8 @@ var reportTestResult = function (karma, test) { karma.result(result) } +var completedTests = new Set(); + var createMochaReporterConstructor = function (tc, pathname) { var isDebugPage = /debug.html$/.test(pathname) @@ -168,10 +170,12 @@ var createMochaReporterConstructor = function (tc, pathname) { } else { test.$errors.push(isDebugPage ? error : simpleError) if (assertionError) test.$assertionErrors.push(assertionError) + if (completedTests.has(test)) reportTestResult(tc, test) } }) runner.on('test end', function (test) { + completedTests.add(test) reportTestResult(tc, test) }) } diff --git a/test/src/adapter.spec.js b/test/src/adapter.spec.js index c0097d3..d924d68 100644 --- a/test/src/adapter.spec.js +++ b/test/src/adapter.spec.js @@ -182,6 +182,28 @@ describe('adapter mocha', function () { expect(tc.result.called).to.eq(true) }) + it('should report failure even after test end', function () { + const spy = sandbox.spy(tc, 'result'); + var mockMochaResult = { + parent: {title: 'desc', root: true}, + state: 'failed', + title: 'should do something', + $errors: [] + } + + runner.emit('test end', mockMochaResult) + expect(tc.result.calledOnce).to.eq(true) + expect(spy.firstCall.args[0]).deep.include({ success: false, skipped: false }) + expect(spy.firstCall.args[0].log).to.deep.eq([]) + expect(spy.firstCall.args[0].assertionErrors).to.deep.eq([]) + + runner.emit('fail', mockMochaResult, {message: 'Biggest trouble.'}) + expect(tc.result.calledTwice).to.eq(true) + expect(spy.firstCall.args[0]).deep.include({ success: false, skipped: false }) + expect(spy.secondCall.args[0].log).to.deep.eq(['Biggest trouble.']) + expect(spy.firstCall.args[0].assertionErrors).to.deep.eq([]) + }) + it('should report failed mocha result', function () { sandbox.stub(tc, 'result', function (result) { expect(result.log).to.deep.eq(['Big trouble.', 'Another fail.']) From 9e2daeff9485a890f244413ebeb5ce14bf2797ae Mon Sep 17 00:00:00 2001 From: Jake Fried Date: Wed, 28 Apr 2021 17:40:21 -0400 Subject: [PATCH 2/2] remove extra semi --- src/adapter.js | 2 +- test/src/adapter.spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/adapter.js b/src/adapter.js index 13d6892..627f2f3 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -115,7 +115,7 @@ var reportTestResult = function (karma, test) { karma.result(result) } -var completedTests = new Set(); +var completedTests = new Set() var createMochaReporterConstructor = function (tc, pathname) { var isDebugPage = /debug.html$/.test(pathname) diff --git a/test/src/adapter.spec.js b/test/src/adapter.spec.js index d924d68..a192b56 100644 --- a/test/src/adapter.spec.js +++ b/test/src/adapter.spec.js @@ -183,7 +183,7 @@ describe('adapter mocha', function () { }) it('should report failure even after test end', function () { - const spy = sandbox.spy(tc, 'result'); + const spy = sandbox.spy(tc, 'result') var mockMochaResult = { parent: {title: 'desc', root: true}, state: 'failed',