Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions bin/helpers/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -307,23 +307,25 @@ exports.getBuildDetails = (bsConfig, isO11y = false) => {
buildDescription = '',
buildTags = [];

/* Pick from environment variables */
buildName = process.env.BROWSERSTACK_BUILD_NAME || buildName;
projectName = process.env.BROWSERSTACK_PROJECT_NAME || projectName;

/* Pick from testObservabilityOptions */
/* Pick from testObservabilityOptions (explicit config takes precedence) */
if(isTestObservabilityOptionsPresent) {
buildName = buildName || bsConfig["testObservabilityOptions"]["buildName"];
projectName = projectName || bsConfig["testObservabilityOptions"]["projectName"];
if(!utils.isUndefined(bsConfig["testObservabilityOptions"]["buildTag"])) buildTags = [...buildTags, ...bsConfig["testObservabilityOptions"]["buildTag"]];
buildDescription = buildDescription || bsConfig["testObservabilityOptions"]["buildDescription"];
}

/* Pick from run settings */
/* Pick from run settings (explicit config) */
buildName = buildName || bsConfig["run_settings"]["build_name"];
projectName = projectName || bsConfig["run_settings"]["project_name"];
if(!utils.isUndefined(bsConfig["run_settings"]["build_tag"])) buildTags = [...buildTags, bsConfig["run_settings"]["build_tag"]];

/* Fall back to environment variables only when not explicitly configured.
Keeps the new dashboard (TestHub) consistent with the Automate capability
path, which honours run_settings.build_name over CI-derived env vars. [SDK-6431] */
buildName = buildName || process.env.BROWSERSTACK_BUILD_NAME;
projectName = projectName || process.env.BROWSERSTACK_PROJECT_NAME;

buildName = buildName || path.basename(path.resolve(process.cwd()));

return {
Expand Down
44 changes: 44 additions & 0 deletions test/unit/bin/helpers/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,48 @@ describe('helper', () => {
expect(helper.getSizeOfJsonObjectInBytes(truncatedVCSInfo)).to.be.lessThanOrEqual(64 * 1024);
});
});

describe('getBuildDetails', () => {
let originalBuildNameEnv, originalProjectNameEnv;

beforeEach(() => {
originalBuildNameEnv = process.env.BROWSERSTACK_BUILD_NAME;
originalProjectNameEnv = process.env.BROWSERSTACK_PROJECT_NAME;
delete process.env.BROWSERSTACK_BUILD_NAME;
delete process.env.BROWSERSTACK_PROJECT_NAME;
});

afterEach(() => {
if (originalBuildNameEnv === undefined) delete process.env.BROWSERSTACK_BUILD_NAME;
else process.env.BROWSERSTACK_BUILD_NAME = originalBuildNameEnv;
if (originalProjectNameEnv === undefined) delete process.env.BROWSERSTACK_PROJECT_NAME;
else process.env.BROWSERSTACK_PROJECT_NAME = originalProjectNameEnv;
});

// SDK-6431: explicit build_name from config must win over CI-derived
// BROWSERSTACK_BUILD_NAME so the new dashboard (TestHub) matches Automate.
it('prefers run_settings.build_name over BROWSERSTACK_BUILD_NAME env var', () => {
process.env.BROWSERSTACK_BUILD_NAME = 'Bamboo-42#10';
const bsConfig = { run_settings: { build_name: 'sanity' }, testObservabilityOptions: {} };
expect(helper.getBuildDetails(bsConfig, true).buildName).to.eq('sanity');
});

it('prefers testObservabilityOptions.buildName over the env var', () => {
process.env.BROWSERSTACK_BUILD_NAME = 'Bamboo-42#10';
const bsConfig = { run_settings: { build_name: 'sanity' }, testObservabilityOptions: { buildName: 'obs-build' } };
expect(helper.getBuildDetails(bsConfig, true).buildName).to.eq('obs-build');
});

it('falls back to BROWSERSTACK_BUILD_NAME env var when no build_name is configured', () => {
process.env.BROWSERSTACK_BUILD_NAME = 'ci-build-99';
const bsConfig = { run_settings: {}, testObservabilityOptions: {} };
expect(helper.getBuildDetails(bsConfig, true).buildName).to.eq('ci-build-99');
});

it('prefers run_settings.project_name over BROWSERSTACK_PROJECT_NAME env var', () => {
process.env.BROWSERSTACK_PROJECT_NAME = 'ci-project';
const bsConfig = { run_settings: { project_name: 'my-project' }, testObservabilityOptions: {} };
expect(helper.getBuildDetails(bsConfig, true).projectName).to.eq('my-project');
});
});
});
Loading