Skip to content

Commit

Permalink
fix: fixed merging dashboard options (#7099)
Browse files Browse the repository at this point in the history
* test: added test Config options should recover storage options and Should merge options from storage, config, and environment with the right priority.

* fix: fixed merging dashboard options
  • Loading branch information
Aleksey28 committed Jun 22, 2022
1 parent e317d94 commit 992a1bf
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 16 deletions.
21 changes: 5 additions & 16 deletions src/runner/index.js
Expand Up @@ -10,6 +10,7 @@ import {
isFunction,
uniq,
castArray,
merge,
} from 'lodash';

import Bootstrapper from './bootstrapper';
Expand Down Expand Up @@ -543,14 +544,11 @@ export default class Runner extends EventEmitter {
}

async _getDashboardOptions () {
let options = this.configuration.getOption(OPTION_NAMES.dashboard);
const storageOptions = await this._loadDashboardOptionsFromStorage();
const configOptions = this.configuration.getOption(OPTION_NAMES.dashboard);
const envOptions = getEnvOptions();

if (!options)
options = await this._loadDashboardOptionsFromStorage();

this._mergeEnvDashboardOptions(options);

return options;
return merge({}, storageOptions, configOptions, envOptions);
}

async _loadDashboardOptionsFromStorage () {
Expand All @@ -561,15 +559,6 @@ export default class Runner extends EventEmitter {
return storage.options;
}

_mergeEnvDashboardOptions (options) {
const envDashboardOptions = getEnvOptions();

for (const key in envDashboardOptions) {
if (envDashboardOptions[key])
options[key] = envDashboardOptions[key];
}
}

async _prepareClientScripts (tests, clientScripts) {
return Promise.all(tests.map(async test => {
if (test.isLegacy)
Expand Down
44 changes: 44 additions & 0 deletions test/server/runner-test.js
Expand Up @@ -222,6 +222,21 @@ describe('Runner', () => {
sendReport: true,
};

it('Config options should recover storage options', async () => {
runner._loadDashboardOptionsFromStorage = () => TEST_DASHBOARD_SETTINGS;

runner.configuration.mergeOptions({ dashboard: { token: 'config-token' } });

await runner._addDashboardReporterIfNeeded();

const reporter = runner.configuration.getOption('reporter')[0];

expect(reporter.name).to.equal('dashboard');
expect(reporter.options).to.contains({
token: 'config-token',
});
});

describe('Environment options', () => {
before(() => {
process.env.TESTCAFE_DASHBOARD_URL = 'test-url';
Expand All @@ -232,6 +247,8 @@ describe('Runner', () => {
process.env.TESTCAFE_DASHBOARD_NO_VIDEO_UPLOAD = '1';
process.env.TESTCAFE_DASHBOARD_RESPONSE_TIMEOUT = '1000';
process.env.TESTCAFE_DASHBOARD_REQUEST_RETRY_COUNT = '5';

runner._loadDashboardOptionsFromStorage = () => ({});
});

after(() => {
Expand Down Expand Up @@ -278,6 +295,33 @@ describe('Runner', () => {
});
});


it('Should merge options from storage, config, and environment with the right priority.', async () => {
runner._loadDashboardOptionsFromStorage = () => TEST_DASHBOARD_SETTINGS;

runner.configuration.mergeOptions({
dashboard: {
sendReport: false,
url: 'config-dashboard-url',
},
});

process.env.TESTCAFE_DASHBOARD_URL = 'env-dashboard-url';
process.env.TESTCAFE_DASHBOARD_BUILD_ID = 'env-test-id';

const dashboardOptions = await runner._getDashboardOptions();

expect(dashboardOptions).to.contains({
token: 'test-token',
sendReport: false,
url: 'env-dashboard-url',
buildId: 'env-test-id',
});

delete process.env.TESTCAFE_DASHBOARD_URL;
delete process.env.TESTCAFE_DASHBOARD_BUILD_ID;
});

it('Should turn on screenshots flags autoTakeOnFails and takeOnFails', async () => {
runner._loadDashboardOptionsFromStorage = () => {
return TEST_DASHBOARD_SETTINGS;
Expand Down

0 comments on commit 992a1bf

Please sign in to comment.