@@ -40,6 +40,26 @@ const { isTurboScaleSession, getTurboScaleGridDetails, patchCypressConfigFileCon
4040const { shouldProcessEventForTesthub, checkAndSetAccessibility, findAvailablePort } = require ( '../testhub/utils' ) ;
4141const TestHubHandler = require ( '../testhub/testhubHandler' ) ;
4242
43+ // Helper function to process accessibility response from server - matches C# SDK pattern
44+ const processAccessibilityResponse = ( bsConfig , buildResponse ) => {
45+ // Check if server response indicates accessibility should be enabled
46+ if ( buildResponse && buildResponse . accessibility && buildResponse . accessibility . success === true ) {
47+ logger . debug ( "Server response indicates accessibility should be auto-enabled" ) ;
48+ bsConfig . run_settings . accessibility = true ;
49+ process . env . BROWSERSTACK_TEST_ACCESSIBILITY = 'true' ;
50+
51+ if ( ! bsConfig . run_settings . system_env_vars ) {
52+ bsConfig . run_settings . system_env_vars = [ ] ;
53+ }
54+ if ( ! bsConfig . run_settings . system_env_vars . includes ( "BROWSERSTACK_TEST_ACCESSIBILITY" ) ) {
55+ bsConfig . run_settings . system_env_vars . push ( `BROWSERSTACK_TEST_ACCESSIBILITY=true` ) ;
56+ }
57+
58+ return true ;
59+ }
60+ return false ;
61+ } ;
62+
4363module . exports = function run ( args , rawArgs ) {
4464 utils . normalizeTestReportingEnvVars ( ) ;
4565 markBlockStart ( 'preBuild' ) ;
@@ -68,8 +88,44 @@ module.exports = function run(args, rawArgs) {
6888
6989 /* Set testObservability & browserstackAutomation flags */
7090 const [ isTestObservabilitySession , isBrowserstackInfra ] = setTestObservabilityFlags ( bsConfig ) ;
71- const checkAccessibility = checkAccessibilityPlatform ( bsConfig ) ;
72- const isAccessibilitySession = bsConfig . run_settings . accessibility || checkAccessibility ;
91+
92+ // Auto-enable A11y logic - similar to C# SDK implementation
93+ const determineAccessibilitySession = ( bsConfig ) => {
94+ const userAccessibilitySetting = bsConfig . run_settings . accessibility ;
95+ const platformSupportsAccessibility = checkAccessibilityPlatform ( bsConfig ) ;
96+
97+ // If user explicitly set accessibility to true, enable it
98+ if ( userAccessibilitySetting === true ) {
99+ return true ;
100+ }
101+
102+ // If user explicitly set accessibility to false, disable it
103+ if ( userAccessibilitySetting === false ) {
104+ return false ;
105+ }
106+
107+ // If user didn't specify (null/undefined), auto-enable based on platform support
108+ // This matches the C# SDK logic where server can auto-enable based on platform
109+ if ( userAccessibilitySetting === null || userAccessibilitySetting === undefined ) {
110+ return platformSupportsAccessibility ; // Auto-enable if platform supports it
111+ }
112+
113+ return false ;
114+ } ;
115+
116+ const isAccessibilitySession = determineAccessibilitySession ( bsConfig ) ;
117+
118+ // Log the accessibility decision for debugging
119+ if ( bsConfig . run_settings . accessibility === true ) {
120+ logger . debug ( "Accessibility explicitly enabled by user" ) ;
121+ } else if ( bsConfig . run_settings . accessibility === false ) {
122+ logger . debug ( "Accessibility explicitly disabled by user" ) ;
123+ } else if ( isAccessibilitySession ) {
124+ logger . debug ( "Accessibility auto-enabled based on platform support" ) ;
125+ } else {
126+ logger . debug ( "Accessibility not enabled - platform may not support it" ) ;
127+ }
128+
73129 const turboScaleSession = isTurboScaleSession ( bsConfig ) ;
74130 Constants . turboScaleObj . enabled = turboScaleSession ;
75131
@@ -323,6 +379,13 @@ module.exports = function run(args, rawArgs) {
323379 logger . debug ( "Completed build creation" ) ;
324380 markBlockEnd ( 'createBuild' ) ;
325381 markBlockEnd ( 'total' ) ;
382+
383+ // Process accessibility response from server - matches C# SDK logic
384+ const accessibilityAutoEnabled = processAccessibilityResponse ( bsConfig , data ) ;
385+ if ( accessibilityAutoEnabled ) {
386+ logger . info ( "Accessibility has been auto-enabled based on server response" ) ;
387+ }
388+
326389 utils . setProcessHooks ( data . build_id , bsConfig , bs_local , args , buildReportData ) ;
327390 if ( isTestObservabilitySession ) {
328391 utils . setO11yProcessHooks ( data . build_id , bsConfig , bs_local , args , buildReportData ) ;
0 commit comments