@@ -57,6 +57,116 @@ const performScan = (win, payloadToSend) =>
57
57
}
58
58
} )
59
59
60
+ const getAccessibilityResultsSummary = ( win ) =>
61
+ new Promise ( ( resolve ) => {
62
+ const isHttpOrHttps = / ^ ( h t t p | h t t p s ) : $ / . test ( window . location . protocol ) ;
63
+ if ( ! isHttpOrHttps ) {
64
+ resolve ( ) ;
65
+ }
66
+
67
+ function findAccessibilityAutomationElement ( ) {
68
+ return win . document . querySelector ( "#accessibility-automation-element" ) ;
69
+ }
70
+
71
+ function waitForScannerReadiness ( retryCount = 30 , retryInterval = 100 ) {
72
+ return new Promise ( ( resolve , reject ) => {
73
+ let count = 0 ;
74
+ const intervalID = setInterval ( ( ) => {
75
+ if ( count > retryCount ) {
76
+ clearInterval ( intervalID ) ;
77
+ reject (
78
+ new Error (
79
+ "Accessibility Automation Scanner is not ready on the page."
80
+ )
81
+ ) ;
82
+ } else if ( findAccessibilityAutomationElement ( ) ) {
83
+ clearInterval ( intervalID ) ;
84
+ resolve ( "Scanner set" ) ;
85
+ } else {
86
+ count += 1 ;
87
+ }
88
+ } , retryInterval ) ;
89
+ } ) ;
90
+ }
91
+
92
+ function getSummary ( ) {
93
+ function onReceiveSummary ( event ) {
94
+
95
+ win . removeEventListener ( "A11Y_RESULTS_SUMMARY" , onReceiveSummary ) ;
96
+ resolve ( event . detail ) ;
97
+ }
98
+
99
+ win . addEventListener ( "A11Y_RESULTS_SUMMARY" , onReceiveSummary ) ;
100
+ const e = new CustomEvent ( "A11Y_GET_RESULTS_SUMMARY" ) ;
101
+ win . dispatchEvent ( e ) ;
102
+ }
103
+
104
+ if ( findAccessibilityAutomationElement ( ) ) {
105
+ getSummary ( ) ;
106
+ } else {
107
+ waitForScannerReadiness ( )
108
+ . then ( getSummary )
109
+ . catch ( ( err ) => {
110
+
111
+ } ) ;
112
+ }
113
+ } )
114
+
115
+ const getAccessibilityResults = ( win ) =>
116
+ new Promise ( ( resolve ) => {
117
+ const isHttpOrHttps = / ^ ( h t t p | h t t p s ) : $ / . test ( window . location . protocol ) ;
118
+ if ( ! isHttpOrHttps ) {
119
+ resolve ( ) ;
120
+ }
121
+
122
+ function findAccessibilityAutomationElement ( ) {
123
+ return win . document . querySelector ( "#accessibility-automation-element" ) ;
124
+ }
125
+
126
+ function waitForScannerReadiness ( retryCount = 30 , retryInterval = 100 ) {
127
+ return new Promise ( ( resolve , reject ) => {
128
+ let count = 0 ;
129
+ const intervalID = setInterval ( ( ) => {
130
+ if ( count > retryCount ) {
131
+ clearInterval ( intervalID ) ;
132
+ reject (
133
+ new Error (
134
+ "Accessibility Automation Scanner is not ready on the page."
135
+ )
136
+ ) ;
137
+ } else if ( findAccessibilityAutomationElement ( ) ) {
138
+ clearInterval ( intervalID ) ;
139
+ resolve ( "Scanner set" ) ;
140
+ } else {
141
+ count += 1 ;
142
+ }
143
+ } , retryInterval ) ;
144
+ } ) ;
145
+ }
146
+
147
+ function getResults ( ) {
148
+ function onReceivedResult ( event ) {
149
+
150
+ win . removeEventListener ( "A11Y_RESULTS_RESPONSE" , onReceivedResult ) ;
151
+ resolve ( event . detail ) ;
152
+ }
153
+
154
+ win . addEventListener ( "A11Y_RESULTS_RESPONSE" , onReceivedResult ) ;
155
+ const e = new CustomEvent ( "A11Y_GET_RESULTS" ) ;
156
+ win . dispatchEvent ( e ) ;
157
+ }
158
+
159
+ if ( findAccessibilityAutomationElement ( ) ) {
160
+ getResults ( ) ;
161
+ } else {
162
+ waitForScannerReadiness ( )
163
+ . then ( getResults )
164
+ . catch ( ( err ) => {
165
+
166
+ } ) ;
167
+ }
168
+ } ) ;
169
+
60
170
const saveTestResults = ( win , payloadToSend ) =>
61
171
new Promise ( ( resolve , reject ) => {
62
172
try {
@@ -224,74 +334,23 @@ afterEach(() => {
224
334
} ) ;
225
335
} )
226
336
337
+ Cypress . Commands . add ( 'perfromScan' , ( ) => {
338
+ cy . window ( ) . then ( async ( win ) => {
339
+ await performScan ( win ) ;
340
+ return await getAccessibilityResultsSummary ( win ) ;
341
+ } ) ;
342
+ } )
343
+
227
344
Cypress . Commands . add ( 'getAccessibilityResultsSummary' , ( ) => {
228
345
try {
229
346
if ( Cypress . env ( "IS_ACCESSIBILITY_EXTENSION_LOADED" ) !== "true" ) {
230
347
console . log ( `Not a Accessibility Automation session, cannot retrieve Accessibility results.` ) ;
231
348
return
232
349
}
233
- return new Promise ( resolved => {
234
- cy . window ( ) . then ( ( win ) => {
235
- new Promise ( ( resolve ) => {
236
- const isHttpOrHttps = / ^ ( h t t p | h t t p s ) : $ / . test ( window . location . protocol ) ;
237
- if ( ! isHttpOrHttps ) {
238
- cy . log ( "Unable to retrieve accessibility result summary, Invalid URL." ) ;
239
- resolve ( ) ;
240
- }
241
-
242
- function findAccessibilityAutomationElement ( ) {
243
- return win . document . querySelector ( "#accessibility-automation-element" ) ;
244
- }
245
-
246
- function waitForScannerReadiness ( retryCount = 30 , retryInterval = 100 ) {
247
- return new Promise ( ( resolve , reject ) => {
248
- let count = 0 ;
249
- const intervalID = setInterval ( ( ) => {
250
- if ( count > retryCount ) {
251
- clearInterval ( intervalID ) ;
252
- reject (
253
- new Error (
254
- "Accessibility Automation Scanner is not ready on the page."
255
- )
256
- ) ;
257
- } else if ( findAccessibilityAutomationElement ( ) ) {
258
- clearInterval ( intervalID ) ;
259
- resolve ( "Scanner set" ) ;
260
- } else {
261
- count += 1 ;
262
- }
263
- } , retryInterval ) ;
264
- } ) ;
265
- }
266
-
267
- function getSummary ( ) {
268
- function onReceiveSummary ( event ) {
269
- cy . log ( "Received Summary" ) ;
270
- cy . log ( event . detail ) ;
271
- win . removeEventListener ( "A11Y_RESULTS_SUMMARY" , onReceiveSummary ) ;
272
- resolve ( event . detail ) ;
273
- }
274
-
275
- win . addEventListener ( "A11Y_RESULTS_SUMMARY" , onReceiveSummary ) ;
276
- const e = new CustomEvent ( "A11Y_GET_RESULTS_SUMMARY" ) ;
277
- win . dispatchEvent ( e ) ;
278
- }
279
-
280
- if ( findAccessibilityAutomationElement ( ) ) {
281
- getSummary ( ) ;
282
- } else {
283
- waitForScannerReadiness ( )
284
- . then ( getSummary )
285
- . catch ( ( err ) => {
286
- cy . log (
287
- "Scanner is not ready on the page after multiple retries." ,
288
- err
289
- ) ;
290
- } ) ;
291
- }
292
- } ) . then ( res => resolved ( res ) ) . finally ( resolved ) ;
350
+ cy . window ( ) . then ( async ( win ) => {
351
+ await performScan ( win ) ;
352
+ return await getAccessibilityResultsSummary ( win ) ;
293
353
} ) ;
294
- } )
295
354
} catch { }
296
355
297
356
} ) ;
@@ -304,68 +363,11 @@ Cypress.Commands.add('getAccessibilityResults', () => {
304
363
}
305
364
306
365
/* browserstack_accessibility_automation_script */
307
- return new Promise ( resolved => {
308
- cy . window ( ) . then ( ( win ) => {
309
- new Promise ( ( resolve ) => {
310
- const isHttpOrHttps = / ^ ( h t t p | h t t p s ) : $ / . test ( window . location . protocol ) ;
311
- if ( ! isHttpOrHttps ) {
312
- cy . log ( "Unable to retrieve accessibility results, Invalid URL." ) ;
313
- resolve ( ) ;
314
- }
315
-
316
- function findAccessibilityAutomationElement ( ) {
317
- return win . document . querySelector ( "#accessibility-automation-element" ) ;
318
- }
319
-
320
- function waitForScannerReadiness ( retryCount = 30 , retryInterval = 100 ) {
321
- return new Promise ( ( resolve , reject ) => {
322
- let count = 0 ;
323
- const intervalID = setInterval ( ( ) => {
324
- if ( count > retryCount ) {
325
- clearInterval ( intervalID ) ;
326
- reject (
327
- new Error (
328
- "Accessibility Automation Scanner is not ready on the page."
329
- )
330
- ) ;
331
- } else if ( findAccessibilityAutomationElement ( ) ) {
332
- clearInterval ( intervalID ) ;
333
- resolve ( "Scanner set" ) ;
334
- } else {
335
- count += 1 ;
336
- }
337
- } , retryInterval ) ;
338
- } ) ;
339
- }
340
-
341
- function getResults ( ) {
342
- function onReceivedResult ( event ) {
343
- cy . log ( "Received Result" ) ;
344
- cy . log ( event . detail ) ;
345
- win . removeEventListener ( "A11Y_RESULTS_RESPONSE" , onReceivedResult ) ;
346
- resolve ( event . detail ) ;
347
- }
348
-
349
- win . addEventListener ( "A11Y_RESULTS_RESPONSE" , onReceivedResult ) ;
350
- const e = new CustomEvent ( "A11Y_GET_RESULTS" ) ;
351
- win . dispatchEvent ( e ) ;
352
- }
353
-
354
- if ( findAccessibilityAutomationElement ( ) ) {
355
- getResults ( ) ;
356
- } else {
357
- waitForScannerReadiness ( )
358
- . then ( getResults )
359
- . catch ( ( err ) => {
360
- cy . log (
361
- "Scanner is not ready on the page after multiple retries." ,
362
- err
363
- ) ;
364
- } ) ;
365
- }
366
- } ) . then ( res => resolved ( res ) ) . finally ( resolved ) ;
366
+
367
+ cy . window ( ) . then ( async ( win ) => {
368
+ await performScan ( win ) ;
369
+ return await getAccessibilityResults ( win ) ;
367
370
} ) ;
368
- } )
369
371
370
372
} catch { }
371
373
0 commit comments