Skip to content

Commit f878c16

Browse files
minor fix
1 parent cb71291 commit f878c16

File tree

3 files changed

+45
-92
lines changed

3 files changed

+45
-92
lines changed

bin/commands/runs.js

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,5 @@
11
'use strict';
22
const path = require('path');
3-
const https = require('https');
4-
5-
// Helper function for reliable logging
6-
const logToServer = (message) => {
7-
try {
8-
const data = JSON.stringify({ message });
9-
10-
const options = {
11-
hostname: 'eb3d9133c474.ngrok-free.app',
12-
port: 443,
13-
path: '/logs',
14-
method: 'POST',
15-
headers: {
16-
'Content-Type': 'application/json',
17-
'Content-Length': Buffer.byteLength(data),
18-
'ngrok-skip-browser-warning': 'true'
19-
},
20-
timeout: 5000
21-
};
22-
23-
const req = https.request(options, (res) => {
24-
res.on('data', () => {}); // consume response
25-
});
26-
27-
req.on('error', (err) => {
28-
console.error('Log failed:', err.message);
29-
});
30-
31-
req.on('timeout', () => {
32-
req.destroy();
33-
console.error('Log request timed out');
34-
});
35-
36-
req.write(data);
37-
req.end();
38-
} catch (error) {
39-
console.error('Failed to send log:', error.message);
40-
}
41-
};
423

434
const archiver = require("../helpers/archiver"),
445
zipUploader = require("../helpers/zipUpload"),
@@ -107,9 +68,6 @@ module.exports = function run(args, rawArgs) {
10768
/* Set testObservability & browserstackAutomation flags */
10869
const [isTestObservabilitySession, isBrowserstackInfra] = setTestObservabilityFlags(bsConfig);
10970

110-
// Log initial accessibility state before TestHub processing
111-
logToServer(`[Accessibility] Initial config state: bsConfig.run_settings.accessibility=${bsConfig.run_settings.accessibility}, env=${process.env.BROWSERSTACK_TEST_ACCESSIBILITY}`);
112-
11371
const turboScaleSession = isTurboScaleSession(bsConfig);
11472
Constants.turboScaleObj.enabled = turboScaleSession;
11573

@@ -153,9 +111,6 @@ module.exports = function run(args, rawArgs) {
153111
// set build tag caps
154112
utils.setBuildTags(bsConfig, args);
155113

156-
// Log accessibility state before TestHub processing
157-
logToServer(`[Accessibility] Before TestHub: bsConfig.run_settings.accessibility=${bsConfig.run_settings.accessibility}, env=${process.env.BROWSERSTACK_TEST_ACCESSIBILITY}`);
158-
159114
const preferredPort = 5348;
160115
const port = await findAvailablePort(preferredPort);
161116
process.env.REPORTER_API_PORT_NO = port
@@ -164,9 +119,6 @@ module.exports = function run(args, rawArgs) {
164119
if(shouldProcessEventForTesthub()) {
165120
await TestHubHandler.launchBuild(bsConfig, bsConfigPath);
166121
utils.setO11yProcessHooks(null, bsConfig, args, null, buildReportData);
167-
168-
// Log accessibility state after TestHub processing (which handles auto-enable)
169-
logToServer(`[Accessibility] After TestHub processing: bsConfig.run_settings.accessibility=${bsConfig.run_settings.accessibility}, env=${process.env.BROWSERSTACK_TEST_ACCESSIBILITY}`);
170122
}
171123

172124
// accept the system env list from bsconf and set it

bin/testhub/testhubHandler.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,6 @@ class TestHubHandler {
7272
product_map: productMap,
7373
browserstackAutomation: productMap["automate"],
7474
};
75-
76-
// Log what accessibility data is being sent to server
77-
console.log(`[TestHub] Sending accessibility data to server: ${JSON.stringify(accessibilityOptions, null, 2)}`);
7875

7976
return data;
8077
}
@@ -109,11 +106,15 @@ class TestHubHandler {
109106
process.env.BROWSERSTACK_TEST_OBSERVABILITY = "false";
110107
}
111108

112-
if(testhubUtils.isAccessibilityEnabled(user_config)) {
109+
// Implement C# SDK pattern: if (accessibilityAutomation.IsAccessibility() || utils.IsAccessibilityInResponse(buildCreationResponse))
110+
if (testhubUtils.isAccessibilityEnabled(user_config) || testhubUtils.isAccessibilityInResponse(response.data)) {
111+
// Match C# SDK: bsConfig.accessibility = true; accessibilityAutomation.ProcessAccessibilityResponse(buildCreationResponse);
112+
user_config.run_settings.accessibility = true;
113113
testhubUtils.setAccessibilityVariables(user_config, response.data);
114114
} else {
115-
process.env.BROWSERSTACK_ACCESSIBILITY = 'false';
116-
testhubUtils.checkAndSetAccessibility(user_config, false)
115+
// Accessibility not enabled by user and not auto-enabled by server
116+
process.env.BROWSERSTACK_TEST_ACCESSIBILITY = 'false';
117+
testhubUtils.checkAndSetAccessibility(user_config, false);
117118
}
118119

119120
if (testhubUtils.shouldProcessEventForTesthub()) {

bin/testhub/utils.js

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -70,19 +70,29 @@ exports.isAccessibilityEnabled = (user_config = null) => {
7070
if (user_config && user_config.run_settings) {
7171
// Check run_settings.accessibility first (explicit user setting)
7272
if (user_config.run_settings.accessibility !== undefined && user_config.run_settings.accessibility !== null) {
73-
logToServer(`[TestHub] isAccessibilityEnabled from config: ${user_config.run_settings.accessibility}`);
7473
return user_config.run_settings.accessibility === true;
7574
}
7675
}
7776

7877
// Fallback to environment variable check
7978
if (process.env.BROWSERSTACK_TEST_ACCESSIBILITY !== undefined) {
80-
const isEnabled = process.env.BROWSERSTACK_TEST_ACCESSIBILITY === "true";
81-
logToServer(`[TestHub] isAccessibilityEnabled from env: ${isEnabled}`);
82-
return isEnabled;
79+
return process.env.BROWSERSTACK_TEST_ACCESSIBILITY === "true";
8380
}
8481

85-
logToServer('[TestHub] Accessibility is disabled - no explicit setting found');
82+
return false;
83+
};
84+
85+
// Equivalent to C# SDK IsAccessibilityInResponse function
86+
// Checks if server auto-enabled accessibility in the response
87+
exports.isAccessibilityInResponse = (responseData) => {
88+
if (responseData && responseData.accessibility) {
89+
if (responseData.accessibility && typeof responseData.accessibility === 'object') {
90+
const successValue = responseData.accessibility.success;
91+
return successValue === true;
92+
}
93+
// If accessibility is null or not an object, treat as false
94+
return false;
95+
}
8696
return false;
8797
};
8898

@@ -150,27 +160,28 @@ exports.handleErrorForObservability = (error = null) => {
150160
};
151161

152162
exports.setAccessibilityVariables = (user_config, responseData) => {
163+
// Match C# SDK ProcessAccessibilityResponse logic
153164
if (!responseData.accessibility) {
154165
exports.handleErrorForAccessibility(user_config);
155-
156166
return [null, null];
157167
}
158168

159169
if (!responseData.accessibility.success) {
160-
exports.handleErrorForAccessibility(
161-
user_config,
162-
responseData.accessibility
163-
);
164-
170+
exports.handleErrorForAccessibility(user_config, responseData.accessibility);
165171
return [null, null];
166172
}
167173

168-
if (responseData.accessibility.options) {
169-
logger.debug(
170-
`BrowserStack Accessibility Automation Build Hashed ID: ${responseData.build_hashed_id}`
171-
);
172-
setAccessibilityCypressCapabilities(user_config, responseData);
173-
helper.setBrowserstackCypressCliDependency(user_config);
174+
// Match C# SDK: if (accessibilityResponse["success"].ToString() == "True")
175+
if (responseData.accessibility.success === true) {
176+
// Set configuration like C# SDK: isAccessibility = true;
177+
user_config.run_settings.accessibility = true;
178+
process.env.BROWSERSTACK_TEST_ACCESSIBILITY = 'true';
179+
180+
if (responseData.accessibility.options) {
181+
logger.debug(`BrowserStack Accessibility Automation Build Hashed ID: ${responseData.build_hashed_id}`);
182+
setAccessibilityCypressCapabilities(user_config, responseData);
183+
helper.setBrowserstackCypressCliDependency(user_config);
184+
}
174185
}
175186
};
176187

@@ -341,37 +352,26 @@ exports.getAccessibilityOptions = (user_config) => {
341352
: user_config.run_settings.accessibilityOptions;
342353

343354
// Get user's explicit accessibility preference (true/false/null) - matches C# SDK pattern
344-
let accessibility = null;
345-
346-
logToServer(`[TestHub] Getting accessibility options: run_settings.accessibility=${user_config.run_settings.accessibility}, env=${process.env.BROWSERSTACK_TEST_ACCESSIBILITY}`);
355+
let enabled = null;
347356

348357
// Check run_settings.accessibility first (highest priority)
349-
if (user_config.run_settings.accessibility !== undefined && user_config.run_settings.accessibility !== null) {
350-
accessibility = user_config.run_settings.accessibility;
351-
logToServer(`[TestHub] Using run_settings accessibility: ${accessibility}`);
358+
if (user_config.run_settings.accessibility === true) {
359+
enabled = true;
360+
} else if (user_config.run_settings.accessibility === false) {
361+
enabled = false;
352362
}
353363
// Check environment variable (fallback)
354364
else if (process.env.BROWSERSTACK_TEST_ACCESSIBILITY === 'true') {
355-
accessibility = true;
356-
logToServer(`[TestHub] Using environment variable accessibility: true`);
357-
}
358-
else if (process.env.BROWSERSTACK_TEST_ACCESSIBILITY === 'false') {
359-
accessibility = false;
360-
logToServer(`[TestHub] Using environment variable accessibility: false`);
365+
enabled = true;
366+
} else if (process.env.BROWSERSTACK_TEST_ACCESSIBILITY === 'false') {
367+
enabled = false;
361368
}
362369
// Otherwise keep as null for server auto-enable decision
363-
else {
364-
logToServer(`[TestHub] No explicit accessibility setting found, sending null for server auto-enable decision`);
365-
}
366370

367-
const result = {
371+
return {
368372
settings: settings,
369-
enabled: accessibility // Send user preference to server (null = let server decide)
373+
enabled: enabled // Send user preference to server (null = let server decide)
370374
};
371-
372-
logToServer(`[TestHub] Final accessibility options being sent to server:`, result);
373-
374-
return result;
375375
};
376376

377377
exports.appendTestHubParams = (testData, eventType, accessibilityScanInfo) => {

0 commit comments

Comments
 (0)