From 97951e0e8b972e3b74f88eccccbaa538171b75b8 Mon Sep 17 00:00:00 2001 From: sipayrt Date: Wed, 18 Apr 2018 18:39:56 +0300 Subject: [PATCH] fix(hermione gui): mark browser section as running on test run --- .../gemini/report-subscriber.js | 3 +-- .../hermione/report-subscriber.js | 3 +-- lib/static/modules/reducer.js | 14 +++++----- .../gemini/report-subscriber.js | 27 ++++++++++++++++++- .../hermione/report-subsciber.js | 25 ++++++++++++++++- 5 files changed, 59 insertions(+), 13 deletions(-) diff --git a/lib/gui/tool-runner-factory/gemini/report-subscriber.js b/lib/gui/tool-runner-factory/gemini/report-subscriber.js index 2bf18053e..acaea7b22 100644 --- a/lib/gui/tool-runner-factory/gemini/report-subscriber.js +++ b/lib/gui/tool-runner-factory/gemini/report-subscriber.js @@ -23,8 +23,7 @@ module.exports = (gemini, reportBuilder, client, reportPath) => { gemini.on(gemini.events.BEGIN_STATE, (data) => { const {name, suite: {path: suitePath}} = data.state; client.emit(clientEvents.BEGIN_STATE, { - name, - suitePath, + suitePath: suitePath.concat(name), browserId: data.browserId, status: RUNNING }); diff --git a/lib/gui/tool-runner-factory/hermione/report-subscriber.js b/lib/gui/tool-runner-factory/hermione/report-subscriber.js index 2b0d22c64..eff698700 100644 --- a/lib/gui/tool-runner-factory/hermione/report-subscriber.js +++ b/lib/gui/tool-runner-factory/hermione/report-subscriber.js @@ -23,10 +23,9 @@ module.exports = (hermione, reportBuilder, client, reportPath) => { }); hermione.on(hermione.events.TEST_BEGIN, (data) => { - const {title: name, browserId} = data; + const {browserId} = data; client.emit(clientEvents.BEGIN_STATE, { - name, suitePath: getSuitePath(data), browserId, status: RUNNING diff --git a/lib/static/modules/reducer.js b/lib/static/modules/reducer.js index b61c16b95..98225396a 100644 --- a/lib/static/modules/reducer.js +++ b/lib/static/modules/reducer.js @@ -50,16 +50,17 @@ export default function reducer(state = getInitialState(compiledData), action) { const suites = clone(state.suites); const {suitePath, status} = action.payload; const test = findNode(suites, suitePath); - test && (test.status = status); - - forceUpdateSuiteData(suites, test); + if (test) { + test.status = status; + forceUpdateSuiteData(suites, test); + } return assign({}, state, {suites}); } case actionNames.TEST_BEGIN: { const suites = clone(state.suites); - const {name, suitePath, status, browserId} = action.payload; - const test = findNode(suites, suitePath.concat(name)); + const {suitePath, status, browserId} = action.payload; + const test = findNode(suites, suitePath); if (test) { test.status = status; test.browsers.forEach((b) => { @@ -67,10 +68,9 @@ export default function reducer(state = getInitialState(compiledData), action) { b.result.status = status; } }); + forceUpdateSuiteData(suites, test); } - forceUpdateSuiteData(suites, test); - return assign({}, state, {suites}); } case actionNames.TESTS_END: { diff --git a/test/lib/gui/tool-runner-factory/gemini/report-subscriber.js b/test/lib/gui/tool-runner-factory/gemini/report-subscriber.js index 8af753173..f953b165a 100644 --- a/test/lib/gui/tool-runner-factory/gemini/report-subscriber.js +++ b/test/lib/gui/tool-runner-factory/gemini/report-subscriber.js @@ -4,6 +4,7 @@ const {EventEmitter} = require('events'); const reportSubscriber = require('lib/gui/tool-runner-factory/gemini/report-subscriber'); const ReportBuilder = require('lib/report-builder-factory/report-builder'); const clientEvents = require('lib/gui/constants/client-events'); +const {RUNNING} = require('lib/constants/test-statuses'); const {stubTool, stubConfig} = require('test/utils'); describe('lib/gui/tool-runner-factory/gemini/report-subscriber', () => { @@ -12,7 +13,8 @@ describe('lib/gui/tool-runner-factory/gemini/report-subscriber', () => { let client; const events = { - END_RUNNER: 'endRunner' + END_RUNNER: 'endRunner', + BEGIN_STATE: 'beginState' }; const mkGemini_ = () => stubTool(stubConfig(), events); @@ -47,4 +49,27 @@ describe('lib/gui/tool-runner-factory/gemini/report-subscriber', () => { .then(() => assert.calledOnceWith(client.emit, clientEvents.END)); }); }); + + describe('BEGIN_STATE', () => { + it('should emit "BEGIN_STATE" event for client with correct data', () => { + const gemini = mkGemini_(); + const testData = { + state: { + name: 'state-name', + suite: {path: ['suite-name']} + }, + browserId: 'bro' + }; + + reportSubscriber(gemini, reportBuilder, client); + + gemini.emit(gemini.events.BEGIN_STATE, testData); + + assert.calledOnceWith(client.emit, clientEvents.BEGIN_STATE, { + browserId: 'bro', + suitePath: ['suite-name', 'state-name'], + status: RUNNING + }); + }); + }); }); diff --git a/test/lib/gui/tool-runner-factory/hermione/report-subsciber.js b/test/lib/gui/tool-runner-factory/hermione/report-subsciber.js index 1552beb24..63bc48e93 100644 --- a/test/lib/gui/tool-runner-factory/hermione/report-subsciber.js +++ b/test/lib/gui/tool-runner-factory/hermione/report-subsciber.js @@ -4,6 +4,7 @@ const {EventEmitter} = require('events'); const reportSubscriber = require('lib/gui/tool-runner-factory/hermione/report-subscriber'); const ReportBuilder = require('lib/report-builder-factory/report-builder'); const clientEvents = require('lib/gui/constants/client-events'); +const {RUNNING} = require('lib/constants/test-statuses'); const {stubTool, stubConfig} = require('test/utils'); describe('lib/gui/tool-runner-factory/hermione/report-subscriber', () => { @@ -12,7 +13,8 @@ describe('lib/gui/tool-runner-factory/hermione/report-subscriber', () => { let client; const events = { - RUNNER_END: 'runnerEnd' + RUNNER_END: 'runnerEnd', + TEST_BEGIN: 'testBegin' }; const mkHermione_ = () => stubTool(stubConfig(), events); @@ -47,4 +49,25 @@ describe('lib/gui/tool-runner-factory/hermione/report-subscriber', () => { .then(() => assert.calledOnceWith(client.emit, clientEvents.END)); }); }); + + describe('TEST_BEGIN', () => { + it('should emit "BEGIN_STATE" event for client with correct data', () => { + const hermione = mkHermione_(); + const testData = { + title: 'suite-title', + parent: {title: 'root-title', parent: {root: true}}, + browserId: 'bro' + }; + + reportSubscriber(hermione, reportBuilder, client); + + hermione.emit(hermione.events.TEST_BEGIN, testData); + + assert.calledOnceWith(client.emit, clientEvents.BEGIN_STATE, { + browserId: 'bro', + suitePath: ['root-title', 'suite-title'], + status: RUNNING + }); + }); + }); });