1
+ const fs = require ( 'fs' ) ;
2
+ const path = require ( 'path' ) ;
3
+
1
4
/* Event listeners + custom commands for Cypress */
2
5
3
6
const browserStackLog = ( message ) => {
@@ -15,6 +18,7 @@ const commandToOverwrite = ['visit', 'click', 'type', 'request', 'dblclick', 'ri
15
18
and chaning available from original cypress command.
16
19
*/
17
20
const performModifiedScan = ( originalFn , Subject , stateType , ...args ) => {
21
+ process . env . PERFORM_MODIFIED_SCAN = 'true' ;
18
22
let customChaining = cy . wrap ( null ) . performScan ( ) ;
19
23
const changeSub = ( args , stateType , newSubject ) => {
20
24
if ( stateType !== 'parent' ) {
@@ -41,8 +45,10 @@ const performModifiedScan = (originalFn, Subject, stateType, ...args) => {
41
45
}
42
46
}
43
47
runCustomizedCommand ( ) ;
48
+ process . env . PERFORM_MODIFIED_SCAN = 'true' ;
44
49
}
45
50
51
+
46
52
const performScan = ( win , payloadToSend ) =>
47
53
new Promise ( async ( resolve , reject ) => {
48
54
const isHttpOrHttps = / ^ ( h t t p | h t t p s ) : $ / . test ( win . location . protocol ) ;
@@ -289,7 +295,7 @@ const shouldScanForAccessibility = (attributes) => {
289
295
290
296
const fullTestName = attributes . title ;
291
297
const excluded = excludeTagArray . some ( ( exclude ) => fullTestName . includes ( exclude ) ) ;
292
- const included = includeTagArray . length === 0 || includeTagArray . some ( ( include ) => fullTestName . includes ( include ) ) ;
298
+ const included = includeTagArray . length === 0 || includeTags . some ( ( include ) => fullTestName . includes ( include ) ) ;
293
299
shouldScanTestForAccessibility = ! excluded && included ;
294
300
} catch ( error ) {
295
301
browserStackLog ( `Error while validating test case for accessibility before scanning. Error : ${ error . message } ` ) ;
@@ -316,20 +322,35 @@ commandToOverwrite.forEach((command) => {
316
322
} ) ;
317
323
} ) ;
318
324
325
+ const logFilePath = path . join ( __dirname , 'accessibility-log.txt' ) ;
319
326
afterEach ( ( ) => {
327
+
328
+ const logMessage = `afterEach executed for test`
329
+ try {
330
+ fs . appendFileSync ( logFilePath , logMessage ) ;
331
+ } catch ( err ) {
332
+ // ignore logging errors
333
+ }
334
+ if ( process . env . AFTER_EACH_RUN === 'true' || process . env . PERFORM_MODIFIED_SCAN === 'true' ) {
335
+ return ;
336
+ }
337
+ process . env . AFTER_EACH_RUN = 'true' ;
338
+
339
+ try {
340
+ throw new Error ( 'Deliberate exception thrown for testing purposes' ) ;
341
+ } catch ( error ) {
342
+ console . error ( 'Exception caught in afterEach:' , error ) ;
343
+ if ( error && error . stack ) {
344
+ console . error ( error . stack ) ;
345
+ }
346
+ }
347
+
320
348
const attributes = Cypress . mocha . getRunner ( ) . suite . ctx . currentTest ;
321
- console . log ( `--- ENTERING AFTEREACH FOR: ${ testTitle } ---` ) ; // Added
322
- console . log ( `Timestamp (afterEach start): ${ new Date ( ) . toISOString ( ) } ` )
323
349
cy . window ( ) . then ( async ( win ) => {
324
350
let shouldScanTestForAccessibility = shouldScanForAccessibility ( attributes ) ;
325
- if ( ! shouldScanTestForAccessibility ) {
326
- console . log ( `Skipping scan for: ${ testTitle } (not accessibility session)` ) ; // Added
327
- return cy . wrap ( { } ) ;
328
- }
329
- console . log ( `Performing initial scan within afterEach for: ${ testTitle } ` ) ; // Added
351
+ if ( ! shouldScanTestForAccessibility ) return cy . wrap ( { } ) ;
330
352
331
353
cy . wrap ( performScan ( win ) , { timeout : 30000 } ) . then ( ( ) => {
332
- console . log ( `Initial scan completed within afterEach for: ${ testTitle } ` ) ; // Added
333
354
try {
334
355
let os_data ;
335
356
if ( Cypress . env ( "OS" ) ) {
@@ -361,19 +382,15 @@ afterEach(() => {
361
382
"browser_version" : Cypress . browser . version
362
383
}
363
384
} ;
364
- browserStackLog ( `Saving accessibility test results` ) ;
365
- console . log ( `Timestamp (saveTestResults call): ${ new Date ( ) . toISOString ( ) } ` ) ; // Added
385
+ browserStackLog ( `afterEach hook called from function: ${ attributes . title } , file: ${ filePath } ` ) ;
386
+ browserStackLog ( `File name: ${ __filename } ` ) ;
387
+ browserStackLog ( `Saving accessibility test results123` ) ;
366
388
cy . wrap ( saveTestResults ( win , payloadToSend ) , { timeout : 30000 } ) . then ( ( ) => {
367
389
browserStackLog ( `Saved accessibility test results` ) ;
368
- console . log ( `Timestamp (saveTestResults completed): ${ new Date ( ) . toISOString ( ) } ` ) ; // Added
369
- console . log ( `--- EXITING AFTEREACH FOR: ${ testTitle } ---` ) ; // Added
370
-
371
390
} )
372
391
373
392
} catch ( er ) {
374
393
browserStackLog ( `Error in saving results with error: ${ er . message } ` ) ;
375
- console . error ( `Error in afterEach for ${ testTitle } :` , er ) ; // Added
376
-
377
394
}
378
395
} )
379
396
} ) ;
0 commit comments