From a65beb9cd99ce1d5e0f98a03481c70a6c4ae6f76 Mon Sep 17 00:00:00 2001 From: Evgeniy Gavryushin Date: Thu, 17 Jan 2019 16:48:31 +0300 Subject: [PATCH] feat: add 'skipReason' for 'success' and 'fail' events --- lib/collector/index.js | 13 ++++++--- lib/collector/tool/hermione.js | 4 +-- test/lib/collector/index.js | 45 +++++++++++++++++++++++++++-- test/lib/collector/tool/hermione.js | 2 +- 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/lib/collector/index.js b/lib/collector/index.js index d986021..0841962 100644 --- a/lib/collector/index.js +++ b/lib/collector/index.js @@ -18,7 +18,10 @@ module.exports = class Collector { } addSuccess(result) { - this._addTestResult(result, {status: 'success'}); + this._addTestResult(result, { + status: 'success', + skipReason: this._toolCollector.getSkipReason(result) + }); } addFail(result) { @@ -27,14 +30,15 @@ module.exports = class Collector { this._addTestResult(result, { status: 'fail', errorReason: {message, stack}, - retries: [{message, stack}] + retries: [{message, stack}], + skipReason: this._toolCollector.getSkipReason(result) }); } addSkipped(result) { this._addTestResult(result, { status: 'skipped', - skipReason: this._toolCollector.getSkipReason(result) + skipReason: this._toolCollector.getSkipReason(result, 'No skip reason') }); } @@ -48,7 +52,8 @@ module.exports = class Collector { this._addTestResult(result, { status: 'error', errorReason: {message, stack}, - retries: [{message, stack}] + retries: [{message, stack}], + skipReason: this._toolCollector.getSkipReason(result) }); } diff --git a/lib/collector/tool/hermione.js b/lib/collector/tool/hermione.js index b722906..29bcd9d 100644 --- a/lib/collector/tool/hermione.js +++ b/lib/collector/tool/hermione.js @@ -24,8 +24,8 @@ exports.configureTestResult = (result) => { return testResult; }; -exports.getSkipReason = (result) => { +exports.getSkipReason = (result, reason) => { const findSkipReason = (test) => test.parent && findSkipReason(test.parent) || test.skipReason; - return findSkipReason(result) || 'No skip reason'; + return findSkipReason(result) || reason; }; diff --git a/test/lib/collector/index.js b/test/lib/collector/index.js index a4393ff..423621a 100644 --- a/test/lib/collector/index.js +++ b/test/lib/collector/index.js @@ -66,11 +66,24 @@ describe('collector/index', () => { 'some name.bro': { fullName: 'some name', browserId: 'bro', - status: 'success' + status: 'success', + skipReason: undefined }}); }); }); + it('should add succesfully passed test with skip reason', () => { + const data = {fullName: 'some name', browserId: 'bro'}; + const collector = mkCollector_({ + getSkipReason: sandbox.stub().returns('some-reason') + }); + + collector.addSuccess(data); + + return saveReport_(collector) + .then((result) => assert.include(result['some name.bro'], {skipReason: 'some-reason'})); + }); + it('should add failed test', () => { const testError = new Promise.OperationalError('test'); const data = {fullName: 'some name', browserId: 'bro', err: testError}; @@ -84,11 +97,24 @@ describe('collector/index', () => { browserId: 'bro', status: 'fail', errorReason: {message: testError.message, stack: testError.stack}, - retries: [{message: testError.message, stack: testError.stack}] + retries: [{message: testError.message, stack: testError.stack}], + skipReason: undefined }}); }); }); + it('should add failed test with skip reason', () => { + const data = {fullName: 'some name', browserId: 'bro', err: new Promise.OperationalError('test')}; + const collector = mkCollector_({ + getSkipReason: sandbox.stub().returns('some-reason') + }); + + collector.addFail(data); + + return saveReport_(collector) + .then((result) => assert.include(result['some name.bro'], {skipReason: 'some-reason'})); + }); + it('should add skipped test', () => { const data = {fullName: 'some name', browserId: 'bro'}; const collector = mkCollector_({ @@ -120,7 +146,8 @@ describe('collector/index', () => { browserId: 'bro', status: 'fail', errorReason: {message: testError.message, stack: testError.stack}, - retries: [{message: testError.message, stack: testError.stack}] + retries: [{message: testError.message, stack: testError.stack}], + skipReason: undefined }}); }); }); @@ -144,6 +171,18 @@ describe('collector/index', () => { return saveReport_(collector) .then((result) => assert.deepPropertyVal(result['some name.bro'], 'errorReason.stack', 'stack-msg')); }); + + it('should add errored test with skip reason', () => { + const data = {fullName: 'some name', browserId: 'bro'}; + const collector = mkCollector_({ + getSkipReason: sandbox.stub().returns('some-reason') + }); + + collector.addError(data); + + return saveReport_(collector) + .then((result) => assert.include(result['some name.bro'], {skipReason: 'some-reason'})); + }); }); describe('saveFile', () => { diff --git a/test/lib/collector/tool/hermione.js b/test/lib/collector/tool/hermione.js index 0dcf68d..0cbb2e3 100644 --- a/test/lib/collector/tool/hermione.js +++ b/test/lib/collector/tool/hermione.js @@ -108,7 +108,7 @@ describe('collector/tool/hermione', () => { describe('getSkipReason', () => { it('should return default skip reason if "skipReason" is not specified', () => { - assert.strictEqual(hermioneToolCollector.getSkipReason({}), 'No skip reason'); + assert.strictEqual(hermioneToolCollector.getSkipReason({}, 'No skip reason'), 'No skip reason'); }); it('should return skip reason from test result', () => {