@govtechsg/oobee 0.10.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/.dockerignore +22 -0
  2. package/.github/pull_request_template.md +11 -0
  3. package/.github/workflows/docker-test.yml +54 -0
  4. package/.github/workflows/image.yml +107 -0
  5. package/.github/workflows/publish.yml +18 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/purple-a11y.iml +9 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/.prettierrc.json +12 -0
  10. package/.vscode/extensions.json +5 -0
  11. package/.vscode/settings.json +10 -0
  12. package/CODE_OF_CONDUCT.md +128 -0
  13. package/DETAILS.md +163 -0
  14. package/Dockerfile +60 -0
  15. package/INSTALLATION.md +146 -0
  16. package/INTEGRATION.md +785 -0
  17. package/LICENSE +22 -0
  18. package/README.md +587 -0
  19. package/SECURITY.md +5 -0
  20. package/__mocks__/mock-report.html +1431 -0
  21. package/__mocks__/mockFunctions.ts +32 -0
  22. package/__mocks__/mockIssues.ts +64 -0
  23. package/__mocks__/mock_all_issues/000000001.json +64 -0
  24. package/__mocks__/mock_all_issues/000000002.json +53 -0
  25. package/__mocks__/mock_all_issues/fake-file.txt +0 -0
  26. package/__tests__/logs.test.ts +25 -0
  27. package/__tests__/mergeAxeResults.test.ts +278 -0
  28. package/__tests__/utils.test.ts +118 -0
  29. package/a11y-scan-results.zip +0 -0
  30. package/eslint.config.js +53 -0
  31. package/exclusions.txt +2 -0
  32. package/gitlab-pipeline-template.yml +54 -0
  33. package/jest.config.js +1 -0
  34. package/package.json +96 -0
  35. package/scripts/copyFiles.js +44 -0
  36. package/scripts/install_oobee_dependencies.cmd +13 -0
  37. package/scripts/install_oobee_dependencies.command +101 -0
  38. package/scripts/install_oobee_dependencies.ps1 +110 -0
  39. package/scripts/oobee_shell.cmd +13 -0
  40. package/scripts/oobee_shell.command +11 -0
  41. package/scripts/oobee_shell.sh +55 -0
  42. package/scripts/oobee_shell_ps.ps1 +54 -0
  43. package/src/cli.ts +401 -0
  44. package/src/combine.ts +240 -0
  45. package/src/constants/__tests__/common.test.ts +44 -0
  46. package/src/constants/cliFunctions.ts +305 -0
  47. package/src/constants/common.ts +1840 -0
  48. package/src/constants/constants.ts +443 -0
  49. package/src/constants/errorMeta.json +319 -0
  50. package/src/constants/itemTypeDescription.ts +11 -0
  51. package/src/constants/oobeeAi.ts +141 -0
  52. package/src/constants/questions.ts +181 -0
  53. package/src/constants/sampleData.ts +187 -0
  54. package/src/crawlers/__tests__/commonCrawlerFunc.test.ts +51 -0
  55. package/src/crawlers/commonCrawlerFunc.ts +656 -0
  56. package/src/crawlers/crawlDomain.ts +877 -0
  57. package/src/crawlers/crawlIntelligentSitemap.ts +156 -0
  58. package/src/crawlers/crawlLocalFile.ts +193 -0
  59. package/src/crawlers/crawlSitemap.ts +356 -0
  60. package/src/crawlers/custom/extractAndGradeText.ts +57 -0
  61. package/src/crawlers/custom/flagUnlabelledClickableElements.ts +964 -0
  62. package/src/crawlers/custom/utils.ts +486 -0
  63. package/src/crawlers/customAxeFunctions.ts +82 -0
  64. package/src/crawlers/pdfScanFunc.ts +468 -0
  65. package/src/crawlers/runCustom.ts +117 -0
  66. package/src/index.ts +173 -0
  67. package/src/logs.ts +66 -0
  68. package/src/mergeAxeResults.ts +964 -0
  69. package/src/npmIndex.ts +284 -0
  70. package/src/screenshotFunc/htmlScreenshotFunc.ts +411 -0
  71. package/src/screenshotFunc/pdfScreenshotFunc.ts +762 -0
  72. package/src/static/ejs/partials/components/categorySelector.ejs +4 -0
  73. package/src/static/ejs/partials/components/categorySelectorDropdown.ejs +57 -0
  74. package/src/static/ejs/partials/components/pagesScannedModal.ejs +70 -0
  75. package/src/static/ejs/partials/components/reportSearch.ejs +47 -0
  76. package/src/static/ejs/partials/components/ruleOffcanvas.ejs +105 -0
  77. package/src/static/ejs/partials/components/scanAbout.ejs +263 -0
  78. package/src/static/ejs/partials/components/screenshotLightbox.ejs +13 -0
  79. package/src/static/ejs/partials/components/summaryScanAbout.ejs +141 -0
  80. package/src/static/ejs/partials/components/summaryScanResults.ejs +16 -0
  81. package/src/static/ejs/partials/components/summaryTable.ejs +20 -0
  82. package/src/static/ejs/partials/components/summaryWcagCompliance.ejs +94 -0
  83. package/src/static/ejs/partials/components/topFive.ejs +6 -0
  84. package/src/static/ejs/partials/components/wcagCompliance.ejs +70 -0
  85. package/src/static/ejs/partials/footer.ejs +21 -0
  86. package/src/static/ejs/partials/header.ejs +230 -0
  87. package/src/static/ejs/partials/main.ejs +40 -0
  88. package/src/static/ejs/partials/scripts/bootstrap.ejs +8 -0
  89. package/src/static/ejs/partials/scripts/categorySelectorDropdownScript.ejs +190 -0
  90. package/src/static/ejs/partials/scripts/categorySummary.ejs +141 -0
  91. package/src/static/ejs/partials/scripts/highlightjs.ejs +335 -0
  92. package/src/static/ejs/partials/scripts/popper.ejs +7 -0
  93. package/src/static/ejs/partials/scripts/reportSearch.ejs +248 -0
  94. package/src/static/ejs/partials/scripts/ruleOffcanvas.ejs +801 -0
  95. package/src/static/ejs/partials/scripts/screenshotLightbox.ejs +71 -0
  96. package/src/static/ejs/partials/scripts/summaryScanResults.ejs +14 -0
  97. package/src/static/ejs/partials/scripts/summaryTable.ejs +78 -0
  98. package/src/static/ejs/partials/scripts/utils.ejs +441 -0
  99. package/src/static/ejs/partials/styles/bootstrap.ejs +12375 -0
  100. package/src/static/ejs/partials/styles/highlightjs.ejs +54 -0
  101. package/src/static/ejs/partials/styles/styles.ejs +1843 -0
  102. package/src/static/ejs/partials/styles/summaryBootstrap.ejs +12458 -0
  103. package/src/static/ejs/partials/summaryHeader.ejs +70 -0
  104. package/src/static/ejs/partials/summaryMain.ejs +75 -0
  105. package/src/static/ejs/report.ejs +420 -0
  106. package/src/static/ejs/summary.ejs +47 -0
  107. package/src/static/mustache/.prettierrc +4 -0
  108. package/src/static/mustache/Attention Deficit.mustache +11 -0
  109. package/src/static/mustache/Blind.mustache +11 -0
  110. package/src/static/mustache/Cognitive.mustache +7 -0
  111. package/src/static/mustache/Colorblindness.mustache +20 -0
  112. package/src/static/mustache/Deaf.mustache +12 -0
  113. package/src/static/mustache/Deafblind.mustache +7 -0
  114. package/src/static/mustache/Dyslexia.mustache +14 -0
  115. package/src/static/mustache/Low Vision.mustache +7 -0
  116. package/src/static/mustache/Mobility.mustache +15 -0
  117. package/src/static/mustache/Sighted Keyboard Users.mustache +42 -0
  118. package/src/static/mustache/report.mustache +1709 -0
  119. package/src/types/print-message.d.ts +28 -0
  120. package/src/types/types.ts +46 -0
  121. package/src/types/xpath-to-css.d.ts +3 -0
  122. package/src/utils.ts +332 -0
  123. package/tsconfig.json +15 -0
@@ -0,0 +1,1431 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head lang="en">
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Accessibility Report</title>
7
+ <link
8
+ href="https://fonts.googleapis.com/css2?family=Lato:wght@400;600;700&family=Ubuntu:wght@500&display=swap"
9
+ rel="stylesheet"
10
+ />
11
+ <style>
12
+ .container-fluid {
13
+ width: 100%;
14
+ padding-right: 15px;
15
+ padding-left: 15px;
16
+ margin-right: auto;
17
+ margin-left: auto;
18
+ }
19
+ .row {
20
+ display: -ms-flexbox;
21
+ display: flex;
22
+ -ms-flex-wrap: wrap;
23
+ flex-wrap: wrap;
24
+ margin-right: -15px;
25
+ margin-left: -15px;
26
+ }
27
+ .col-12,
28
+ .col-md-8,
29
+ .col-sm-12,
30
+ .col-sm-6 {
31
+ position: relative;
32
+ width: 100%;
33
+ padding-right: 15px;
34
+ padding-left: 15px;
35
+ }
36
+ .col-12 {
37
+ -ms-flex: 0 0 100%;
38
+ flex: 0 0 100%;
39
+ max-width: 100%;
40
+ }
41
+ @media (min-width: 768px) {
42
+ .col-md-8 {
43
+ -ms-flex: 0 0 66.666667%;
44
+ flex: 0 0 66.666667%;
45
+ max-width: 66.666667%;
46
+ }
47
+ .col-md-6 {
48
+ -ms-flex: 0 0 50%;
49
+ flex: 0 0 50%;
50
+ max-width: 50%;
51
+ }
52
+ .col-md-4 {
53
+ -ms-flex: 0 0 33.333333%;
54
+ flex: 0 0 33.333333%;
55
+ max-width: 33.333333%;
56
+ }
57
+ }
58
+ @media (min-width: 576px) {
59
+ .col-sm-6 {
60
+ -ms-flex: 0 0 50%;
61
+ flex: 0 0 50%;
62
+ max-width: 50%;
63
+ }
64
+ .col-sm-12 {
65
+ -ms-flex: 0 0 100%;
66
+ flex: 0 0 100%;
67
+ max-width: 100%;
68
+ }
69
+ }
70
+ .pb-2 {
71
+ padding-bottom: 0.5rem !important;
72
+ }
73
+ .pt-2 {
74
+ padding-top: 0.5rem !important;
75
+ }
76
+ .pl-3 {
77
+ padding-left: 1rem !important;
78
+ }
79
+ .pb-4 {
80
+ padding-bottom: 1.5rem !important;
81
+ }
82
+ .pt-4 {
83
+ padding-top: 1.5rem !important;
84
+ }
85
+ .mb-0 {
86
+ margin-bottom: 0 !important;
87
+ }
88
+ .d-flex {
89
+ display: -ms-flexbox !important;
90
+ display: flex !important;
91
+ }
92
+ .flex-shrink-0 {
93
+ -ms-flex-negative: 0 !important;
94
+ flex-shrink: 0 !important;
95
+ }
96
+ .text-center {
97
+ text-align: center !important;
98
+ }
99
+ @media (min-width: 576px) {
100
+ .text-sm-left {
101
+ text-align: left !important;
102
+ }
103
+ .text-sm-right {
104
+ text-align: right !important;
105
+ }
106
+ .d-sm-none {
107
+ display: none !important;
108
+ }
109
+ }
110
+ .form-control {
111
+ display: block;
112
+ width: 100%;
113
+ height: calc(1.5em + 0.75rem + 2px);
114
+ padding: 0.375rem 0.75rem;
115
+ font-size: 1rem;
116
+ font-weight: 400;
117
+ line-height: 1.5;
118
+ color: #495057;
119
+ background-color: #fff;
120
+ background-clip: padding-box;
121
+ border: 1px solid #ced4da;
122
+ border-radius: 0.25rem;
123
+ transition:
124
+ border-color 0.15s ease-in-out,
125
+ box-shadow 0.15s ease-in-out;
126
+ }
127
+ .form-control-sm {
128
+ height: calc(1.5em + 0.5rem + 2px);
129
+ padding: 0.25rem 0.5rem;
130
+ font-size: 0.875rem;
131
+ line-height: 1.5;
132
+ border-radius: 0.2rem;
133
+ }
134
+ .tooltip {
135
+ position: absolute;
136
+ z-index: 1070;
137
+ display: block;
138
+ margin: 0;
139
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
140
+ 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
141
+ 'Noto Color Emoji';
142
+ font-style: normal;
143
+ font-weight: 400;
144
+ line-height: 1.5;
145
+ text-align: left;
146
+ text-align: start;
147
+ text-decoration: none;
148
+ text-shadow: none;
149
+ text-transform: none;
150
+ letter-spacing: normal;
151
+ word-break: normal;
152
+ word-spacing: normal;
153
+ white-space: normal;
154
+ line-break: auto;
155
+ font-size: 0.875rem;
156
+ word-wrap: break-word;
157
+ opacity: 0;
158
+ }
159
+ .tooltip.show {
160
+ opacity: 0.9;
161
+ }
162
+ .bs-tooltip-auto[x-placement^='bottom'],
163
+ .bs-tooltip-bottom {
164
+ padding: 0.4rem 0;
165
+ }
166
+ .bs-tooltip-bottom .arrow,
167
+ bs-tooltip-auto[x-placement^='bottom'] .arrow {
168
+ top: 0;
169
+ }
170
+ .bs-tooltip-auto[x-placement^='top'] .arrow,
171
+ .bs-tooltip-top .arrow {
172
+ bottom: 0;
173
+ }
174
+ .tooltip .arrow {
175
+ position: absolute;
176
+ display: block;
177
+ width: 0.8rem;
178
+ height: 0.4rem;
179
+ }
180
+ .tooltip .arrow::before {
181
+ position: absolute;
182
+ content: '';
183
+ border-color: transparent;
184
+ border-style: solid;
185
+ }
186
+ .bs-tooltip-auto[x-placement^='bottom'] .arrow::before,
187
+ .bs-tooltip-bottom .arrow::before {
188
+ bottom: 0;
189
+ border-width: 0 0.4rem 0.4rem;
190
+ border-bottom-color: #000;
191
+ }
192
+ .bs-tooltip-auto[x-placement^='top'] .arrow::before,
193
+ .bs-tooltip-top .arrow::before {
194
+ top: 0;
195
+ border-width: 0.4rem 0.4rem 0;
196
+ border-top-color: #000;
197
+ }
198
+ .bs-tooltip-auto[x-placement^='top'],
199
+ .bs-tooltip-top {
200
+ padding: 0.4rem 0;
201
+ padding-top: 0.4rem;
202
+ padding-right: 0;
203
+ padding-bottom: 0.4rem;
204
+ padding-left: 0;
205
+ }
206
+ .tooltip-inner {
207
+ max-width: 200px;
208
+ padding: 0.25rem 0.5rem;
209
+ color: #fff;
210
+ text-align: center;
211
+ background-color: #000;
212
+ border-radius: 0.25rem;
213
+ }
214
+ div.dataTables_wrapper div.dataTables_filter {
215
+ text-align: right;
216
+ }
217
+ div.dataTables_wrapper div.dataTables_filter label {
218
+ font-weight: 400;
219
+ white-space: nowrap;
220
+ text-align: left;
221
+ }
222
+ div.dataTables_wrapper div.dataTables_filter input {
223
+ margin-left: 0.5em;
224
+ display: inline-block;
225
+ width: auto;
226
+ }
227
+ table.dataTable {
228
+ clear: both;
229
+ margin-top: 6px !important;
230
+ margin-bottom: 6px !important;
231
+ max-width: none !important;
232
+ border-collapse: separate !important;
233
+ border-spacing: 0;
234
+ }
235
+ div.dataTables_scrollBody table {
236
+ border-top: none;
237
+ margin-top: 0 !important;
238
+ margin-bottom: 0 !important;
239
+ }
240
+ table.dataTable td,
241
+ table.dataTable th {
242
+ -webkit-box-sizing: content-box;
243
+ box-sizing: content-box;
244
+ }
245
+ div.dataTables_scrollBody table tbody tr:first-child td,
246
+ div.dataTables_scrollBody table tbody tr:first-child th {
247
+ border-top: none;
248
+ position: relative;
249
+ }
250
+ div.dataTables_scrollHead table.dataTable {
251
+ margin-bottom: 0 !important;
252
+ }
253
+ table.dataTable thead .sorting,
254
+ table.dataTable thead .sorting_asc,
255
+ table.dataTable thead .sorting_asc_disabled,
256
+ table.dataTable thead .sorting_desc,
257
+ table.dataTable thead .sorting_desc_disabled {
258
+ cursor: pointer;
259
+ position: relative;
260
+ }
261
+ table.dataTable thead > tr > td.sorting,
262
+ table.dataTable thead > tr > td.sorting_asc,
263
+ table.dataTable thead > tr > td.sorting_desc,
264
+ table.dataTable thead > tr > th.sorting,
265
+ table.dataTable thead > tr > th.sorting_asc,
266
+ table.dataTable thead > tr > th.sorting_desc {
267
+ padding-right: 30px;
268
+ }
269
+ table.dataTable thead .sorting:after,
270
+ table.dataTable thead .sorting:before,
271
+ table.dataTable thead .sorting_asc:after,
272
+ table.dataTable thead .sorting_asc:before,
273
+ table.dataTable thead .sorting_asc_disabled:after,
274
+ table.dataTable thead .sorting_asc_disabled:before,
275
+ table.dataTable thead .sorting_desc:after,
276
+ table.dataTable thead .sorting_desc:before,
277
+ table.dataTable thead .sorting_desc_disabled:after,
278
+ table.dataTable thead .sorting_desc_disabled:before {
279
+ position: absolute;
280
+ bottom: 0.9em;
281
+ display: block;
282
+ opacity: 0.3;
283
+ }
284
+ table.dataTable thead .sorting:before,
285
+ table.dataTable thead .sorting_asc:before,
286
+ table.dataTable thead .sorting_asc_disabled:before,
287
+ table.dataTable thead .sorting_desc:before,
288
+ table.dataTable thead .sorting_desc_disabled:before {
289
+ right: 1em;
290
+ content: '\2191';
291
+ }
292
+ table.dataTable thead .sorting:after,
293
+ table.dataTable thead .sorting_asc:after,
294
+ table.dataTable thead .sorting_asc_disabled:after,
295
+ table.dataTable thead .sorting_desc:after,
296
+ table.dataTable thead .sorting_desc_disabled:after {
297
+ right: 0.5em;
298
+ content: '\2193';
299
+ }
300
+ table.dataTable tbody td.select-checkbox:before,
301
+ table.dataTable tbody th.select-checkbox:before {
302
+ content: ' ';
303
+ margin-top: -6px;
304
+ margin-left: -11px;
305
+ border: 1px solid #000;
306
+ border-radius: 3px;
307
+ }
308
+ table.dataTable tbody td.select-checkbox:after,
309
+ table.dataTable tbody td.select-checkbox:before,
310
+ table.dataTable tbody th.select-checkbox:after,
311
+ table.dataTable tbody th.select-checkbox:before {
312
+ display: block;
313
+ position: absolute;
314
+ top: 1.2em;
315
+ left: 50%;
316
+ width: 12px;
317
+ height: 12px;
318
+ box-sizing: border-box;
319
+ }
320
+ table.dataTable tr.selected td.select-checkbox:after,
321
+ table.dataTable tr.selected th.select-checkbox:after {
322
+ content: '\2714';
323
+ margin-top: -11px;
324
+ margin-left: -4px;
325
+ text-align: center;
326
+ text-shadow:
327
+ 1px 1px #b0bed9,
328
+ -1px -1px #b0bed9,
329
+ 1px -1px #b0bed9,
330
+ -1px 1px #b0bed9;
331
+ }
332
+ table.dataTable tbody td.select-checkbox,
333
+ table.dataTable tbody th.select-checkbox {
334
+ position: relative;
335
+ }
336
+ div.dataTables_wrapper div.dataTables_info {
337
+ padding-top: 0.85em;
338
+ white-space: nowrap;
339
+ }
340
+ table.dataTable thead .sorting:before,
341
+ table.dataTable thead .sorting_asc:before,
342
+ table.dataTable thead .sorting_asc_disabled:before,
343
+ table.dataTable thead .sorting_desc:before,
344
+ table.dataTable thead .sorting_desc_disabled:before {
345
+ right: 1em;
346
+ content: '\2191';
347
+ }
348
+ table.dataTable thead .sorting:after,
349
+ table.dataTable thead .sorting_asc:after,
350
+ table.dataTable thead .sorting_asc_disabled:after,
351
+ table.dataTable thead .sorting_desc:after,
352
+ table.dataTable thead .sorting_desc_disabled:after {
353
+ right: 0.5em;
354
+ content: '\2193';
355
+ }
356
+ table.dataTable thead .sorting:after,
357
+ table.dataTable thead .sorting:before,
358
+ table.dataTable thead .sorting_asc:after,
359
+ table.dataTable thead .sorting_asc:before,
360
+ table.dataTable thead .sorting_asc_disabled:after,
361
+ table.dataTable thead .sorting_asc_disabled:before,
362
+ table.dataTable thead .sorting_desc:after,
363
+ table.dataTable thead .sorting_desc:before,
364
+ table.dataTable thead .sorting_desc_disabled:after,
365
+ table.dataTable thead .sorting_desc_disabled:before {
366
+ position: absolute;
367
+ bottom: 0.9em;
368
+ display: block;
369
+ opacity: 0.3;
370
+ }
371
+ table.dataTable thead .sorting_asc:before,
372
+ table.dataTable thead .sorting_desc:after {
373
+ opacity: 1;
374
+ }
375
+ table.dataTable thead .sorting_asc:before,
376
+ table.dataTable thead .sorting_desc:after {
377
+ opacity: 1;
378
+ }
379
+ *,
380
+ ::after,
381
+ ::before {
382
+ box-sizing: border-box;
383
+ }
384
+ body,
385
+ html {
386
+ font-family: Lato, sans-serif;
387
+ background-color: #f6f8f9;
388
+ color: #444;
389
+ }
390
+ body {
391
+ display: flex;
392
+ -webkit-box-orient: vertical;
393
+ -webkit-box-direction: normal;
394
+ -webkit-flex-direction: column;
395
+ -ms-flex-direction: column;
396
+ flex-direction: column;
397
+ -webkit-box-flex: 1;
398
+ -webkit-flex: 1 0 auto;
399
+ -ms-flex: 1 0 auto;
400
+ flex: 1 0 auto;
401
+ min-height: 100vh;
402
+ line-height: 1.5;
403
+ margin: 0;
404
+ text-align: left;
405
+ }
406
+ body.dark {
407
+ background-color: #121212 !important;
408
+ color: #e1e1e1;
409
+ }
410
+ h1 {
411
+ font-family: Ubuntu, sans-serif;
412
+ font-size: 28px;
413
+ font-weight: 700;
414
+ margin-top: 0;
415
+ margin-bottom: 0.5rem;
416
+ font-weight: 500;
417
+ line-height: 1.2;
418
+ color: #000;
419
+ }
420
+ body.dark h1 {
421
+ color: #fff;
422
+ }
423
+ p {
424
+ font-size: 16px;
425
+ margin-top: 0;
426
+ margin-bottom: 1rem;
427
+ }
428
+ a {
429
+ color: #0b02b5;
430
+ text-decoration: none;
431
+ }
432
+ body.dark a {
433
+ color: #a68fce !important;
434
+ }
435
+ a:hover {
436
+ color: #08017e;
437
+ text-decoration: none;
438
+ }
439
+ body.dark a:hover {
440
+ color: #cfcdfe !important;
441
+ }
442
+ svg {
443
+ overflow: hidden;
444
+ vertical-align: middle;
445
+ }
446
+ hr {
447
+ margin-top: 1rem;
448
+ margin-bottom: 1rem;
449
+ border: 0;
450
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
451
+ }
452
+ body.dark hr {
453
+ border-color: #383838;
454
+ }
455
+ label {
456
+ display: inline-block;
457
+ margin-bottom: 0.5rem;
458
+ }
459
+ input {
460
+ margin: 0;
461
+ font-family: inherit;
462
+ font-size: inherit;
463
+ line-height: inherit;
464
+ }
465
+ .form-control:focus {
466
+ color: #444;
467
+ background-color: #fff;
468
+ border-color: #0b02b5;
469
+ box-shadow: none;
470
+ outline: 0;
471
+ }
472
+ .form-control-sm {
473
+ font-size: 16px;
474
+ }
475
+ .header {
476
+ background-color: #fff;
477
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);
478
+ }
479
+ body.dark .header {
480
+ background-color: #272727;
481
+ }
482
+ .header-meta {
483
+ text-align: right;
484
+ }
485
+ @media (max-width: 767px) {
486
+ .header-meta {
487
+ border-top: 1px solid #e1e7eb;
488
+ padding-top: 1.5rem !important;
489
+ margin-top: 1.5rem !important;
490
+ }
491
+ }
492
+ .show-ondark {
493
+ max-height: 0;
494
+ overflow: hidden;
495
+ padding-top: 0;
496
+ padding-bottom: 0;
497
+ border-bottom: 1px solid #e1e7eb;
498
+ }
499
+ body.dark .show-ondark {
500
+ max-height: 100px;
501
+ padding-top: 0.5rem;
502
+ padding-bottom: 0.5rem;
503
+ border-bottom: 1px solid #383838;
504
+ -webkit-transition: max-height 0.8s;
505
+ -moz-transition: max-height 0.8s;
506
+ transition: max-height 0.8s;
507
+ }
508
+ .main {
509
+ -webkit-box-flex: 1;
510
+ -webkit-flex: 1 0 auto;
511
+ -ms-flex: 1 0 auto;
512
+ flex: 1 0 auto;
513
+ width: 100%;
514
+ }
515
+ .footer {
516
+ -webkit-box-flex: 0;
517
+ -webkit-flex: none;
518
+ -ms-flex: none;
519
+ flex: none;
520
+ background-color: #fff;
521
+ box-shadow: 0 -2px 4px 0 rgba(0, 0, 0, 0.1);
522
+ }
523
+ body.dark .footer {
524
+ background-color: #272727;
525
+ }
526
+ #oobee-table {
527
+ background-color: #fff;
528
+ width: 100%;
529
+ }
530
+ body.dark #oobee-table {
531
+ background-color: #272727;
532
+ }
533
+ table.dataTable {
534
+ margin-top: 0 !important;
535
+ }
536
+ .dataTables_scroll {
537
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);
538
+ background-color: #fff;
539
+ }
540
+ body.dark .dataTables_scroll {
541
+ background-color: #1e1e1e;
542
+ }
543
+ tbody > tr {
544
+ vertical-align: top;
545
+ }
546
+ tbody > tr:hover {
547
+ background-color: #f0f0ff;
548
+ }
549
+ body.dark tbody > tr:hover {
550
+ background-color: #303033;
551
+ }
552
+ body.dark div.dataTables_wrapper div.dataTables_filter input {
553
+ border-color: #383838;
554
+ background-color: #333;
555
+ color: #e1e1e1;
556
+ }
557
+ th {
558
+ height: 47px;
559
+ color: #000;
560
+ background-color: #fff;
561
+ border-bottom: 2px solid #0b02b5 !important;
562
+ padding-left: 16px;
563
+ font-weight: 600;
564
+ }
565
+ body.dark th {
566
+ border-bottom: 2px solid #a68fce !important;
567
+ background-color: #272727;
568
+ color: #e1e1e1;
569
+ }
570
+ th.sorting_disabled {
571
+ padding-right: 16px;
572
+ }
573
+ td {
574
+ padding-top: 12px;
575
+ padding-bottom: 12px;
576
+ padding-left: 16px;
577
+ padding-right: 16px;
578
+ border-top: 1px solid #e1e7eb;
579
+ border-bottom: 1px solid #e1e7eb;
580
+ }
581
+ body.dark td {
582
+ border-top: 1px solid #383838;
583
+ border-bottom: 1px solid #383838;
584
+ }
585
+ .dt-nowrap {
586
+ white-space: nowrap;
587
+ }
588
+ td.issue {
589
+ min-width: 400px;
590
+ }
591
+ td.element {
592
+ text-overflow: ellipsis;
593
+ white-space: nowrap;
594
+ overflow: hidden;
595
+ max-width: 300px;
596
+ word-break: break-all;
597
+ }
598
+ td.element:hover {
599
+ overflow: visible;
600
+ white-space: normal;
601
+ height: auto;
602
+ }
603
+ th.element > span {
604
+ padding-left: 5px;
605
+ font-size: 14px;
606
+ font-weight: 400;
607
+ color: #969799;
608
+ }
609
+ td.page {
610
+ color: #0b02b5;
611
+ text-overflow: ellipsis;
612
+ white-space: nowrap;
613
+ overflow: hidden;
614
+ max-width: 150px;
615
+ word-break: break-all;
616
+ }
617
+ td.page:hover {
618
+ overflow: visible;
619
+ white-space: normal;
620
+ height: auto;
621
+ }
622
+ body.dark td.page {
623
+ color: #a68fce;
624
+ }
625
+ .wcag-clause {
626
+ font-size: 14px;
627
+ }
628
+ .hidden {
629
+ display: none;
630
+ }
631
+ .impact {
632
+ padding: 3px 5px;
633
+ color: #fff;
634
+ border-radius: 5px;
635
+ font-size: 12px;
636
+ font-weight: 700;
637
+ text-transform: uppercase;
638
+ }
639
+ body.dark .impact {
640
+ color: #121212;
641
+ }
642
+ .critical {
643
+ background-color: #d0021b;
644
+ }
645
+ body.dark .critical {
646
+ background-color: #d46e78;
647
+ }
648
+ .serious {
649
+ background-color: #fa6400;
650
+ }
651
+ body.dark .serious {
652
+ background-color: #f0a571;
653
+ }
654
+ .moderate {
655
+ background-color: #f7b500;
656
+ }
657
+ body.dark .moderate {
658
+ background-color: #f4d377;
659
+ }
660
+ .minor {
661
+ background-color: #969799;
662
+ }
663
+ body.dark .minor {
664
+ background-color: #c0c1c2;
665
+ }
666
+ .critical-stroke-icon {
667
+ stroke: #d0021b;
668
+ }
669
+ .critical-fill-icon {
670
+ fill: #d0021b;
671
+ }
672
+ body.dark .critical-stroke-icon {
673
+ stroke: #d46e78;
674
+ }
675
+ body.dark .critical-fill-icon {
676
+ fill: #d46e78;
677
+ }
678
+ .serious-stroke-icon {
679
+ stroke: #fa6400;
680
+ }
681
+ .serious-fill-icon {
682
+ fill: #fa6400;
683
+ }
684
+ body.dark .serious-stroke-icon {
685
+ stroke: #f0a571;
686
+ }
687
+ body.dark .serious-fill-icon {
688
+ fill: #f0a571;
689
+ }
690
+ .moderate-stroke-icon {
691
+ stroke: #f7b500;
692
+ }
693
+ .moderate-fill-icon {
694
+ fill: #f7b500;
695
+ }
696
+ body.dark .moderate-stroke-icon {
697
+ stroke: #f4d377;
698
+ }
699
+ body.dark .moderate-fill-icon {
700
+ fill: #f4d377;
701
+ }
702
+ .minor-stroke-icon {
703
+ stroke: #969799;
704
+ }
705
+ .minor-fill-icon {
706
+ fill: #969799;
707
+ }
708
+ body.dark .minor-stroke-icon {
709
+ stroke: #c0c1c2;
710
+ }
711
+ body.dark .minor-fill-icon {
712
+ fill: #c0c1c2;
713
+ }
714
+ .link-icon {
715
+ fill: #0b02b5;
716
+ }
717
+ .link-icon:hover {
718
+ fill: #08017e;
719
+ }
720
+ body.dark .link-icon {
721
+ fill: #a68fce;
722
+ }
723
+ body.dark .link-icon:hover {
724
+ fill: #cfcdfe;
725
+ }
726
+ table.dataTable tbody > tr.selected,
727
+ table.dataTable tbody > tr > .selected,
728
+ table.dataTable.display tbody > tr.even.selected > .sorting_1,
729
+ table.dataTable.display tbody > tr.odd.selected,
730
+ table.dataTable.display tbody > tr.odd.selected > .sorting_1 {
731
+ background-color: #f6ffed;
732
+ }
733
+ body.dark table.dataTable tbody > tr.selected,
734
+ body.dark table.dataTable.display tbody > tr.even.selected > .sorting_1,
735
+ body.dark table.dataTable.display tbody > tr.odd.selected,
736
+ body.dark table.dataTable.display tbody > tr.odd.selected > .sorting_1,
737
+ table.dataTable tbody > tr > .selected {
738
+ background-color: #2e352c;
739
+ }
740
+ table.dataTable.display tbody > tr.even.selected:hover > .sorting_1,
741
+ table.dataTable.display tbody > tr.odd.selected:hover > .sorting_1,
742
+ table.dataTable.display tbody > tr.selected:hover {
743
+ background-color: #ecffda;
744
+ }
745
+ body.dark table.dataTable.display tbody > tr.even.selected:hover > .sorting_1,
746
+ body.dark table.dataTable.display tbody > tr.odd.selected:hover > .sorting_1,
747
+ body.dark table.dataTable.display tbody > tr.selected:hover {
748
+ background-color: #3a4238;
749
+ }
750
+ tbody > tr:hover .checkbox-label .checkbox-style {
751
+ border-color: #969799;
752
+ }
753
+ body.dark tbody > tr:hover .checkbox-label .checkbox-style {
754
+ border-color: #e1e7eb;
755
+ }
756
+ table.dataTable tbody tr:hover td.select-checkbox:before,
757
+ table.dataTable tbody tr:hover th.select-checkbox:before {
758
+ border-color: #969799;
759
+ }
760
+ body.dark table.dataTable tbody tr:hover td.select-checkbox:before,
761
+ table.dataTable tbody tr:hover th.select-checkbox:before {
762
+ border-color: #e1e7eb;
763
+ }
764
+ table.dataTable tbody td.select-checkbox:before,
765
+ table.dataTable tbody th.select-checkbox:before {
766
+ position: absolute;
767
+ top: 22px;
768
+ height: 20px;
769
+ width: 20px;
770
+ background-color: transparent;
771
+ border-radius: 5px;
772
+ transition: all 0.3s ease-out;
773
+ -webkit-transition: all 0.3s ease-out;
774
+ -moz-transition: all 0.3s ease-out;
775
+ -ms-transition: all 0.3s ease-out;
776
+ -o-transition: all 0.3s ease-out;
777
+ border: 2px solid #e1e7eb;
778
+ cursor: pointer;
779
+ }
780
+ body.dark table.dataTable tbody td.select-checkbox:before,
781
+ table.dataTable tbody th.select-checkbox:before {
782
+ border-color: #969799;
783
+ }
784
+ table.dataTable tbody tr.selected td.select-checkbox:before,
785
+ table.dataTable tbody tr.selected th.select-checkbox:before {
786
+ background-color: #0a0;
787
+ color: #fff;
788
+ border-radius: 5px;
789
+ -webkit-transform: rotate(0) scale(1);
790
+ -ms-transform: rotate(0) scale(1);
791
+ transform: rotate(0) scale(1);
792
+ opacity: 1;
793
+ border: 2px solid #0a0 !important;
794
+ }
795
+ body.dark table.dataTable tbody tr.selected td.select-checkbox:before,
796
+ table.dataTable tbody tr.selected th.select-checkbox:before {
797
+ background-color: #98d490;
798
+ color: #121212;
799
+ border: 2px solid #98d490 !important;
800
+ }
801
+ table.dataTable tr.selected td.select-checkbox:after,
802
+ table.dataTable tr.selected th.select-checkbox:after {
803
+ content: '';
804
+ -webkit-transform: rotate(45deg) scale(1);
805
+ -ms-transform: rotate(45deg) scale(1);
806
+ transform: rotate(45deg) scale(1);
807
+ opacity: 1;
808
+ top: 29px;
809
+ left: 50%;
810
+ width: 6px;
811
+ height: 12px;
812
+ border: solid #fff;
813
+ border-width: 0 2px 2px 0;
814
+ background-color: transparent;
815
+ border-radius: 0;
816
+ }
817
+ body.dark table.dataTable tr.selected td.select-checkbox:after,
818
+ table.dataTable tr.selected th.select-checkbox:after {
819
+ border-color: #121212;
820
+ }
821
+ div.dataTables_wrapper div.dataTables_info {
822
+ visibility: hidden;
823
+ }
824
+ div.dataTables_wrapper span.select-info,
825
+ div.dataTables_wrapper span.select-item {
826
+ margin-left: 0;
827
+ visibility: visible;
828
+ float: left;
829
+ }
830
+ .toggleWrapper {
831
+ padding: 0 50px;
832
+ }
833
+ .toggleWrapper input {
834
+ position: absolute;
835
+ left: -99em;
836
+ }
837
+ .toggle {
838
+ cursor: pointer;
839
+ display: inline-block;
840
+ position: relative;
841
+ width: 45px;
842
+ height: 26px;
843
+ background-color: #83d8ff;
844
+ border-radius: 84px;
845
+ transition: background-color 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
846
+ margin-bottom: 0;
847
+ margin-top: 10px;
848
+ }
849
+ .toggle:before {
850
+ content: 'Light';
851
+ position: absolute;
852
+ left: -50px;
853
+ font-size: 18px;
854
+ color: #0b02b5;
855
+ }
856
+ .toggle:after {
857
+ content: 'Dark';
858
+ position: absolute;
859
+ right: -48px;
860
+ font-size: 18px;
861
+ color: #969799;
862
+ }
863
+ .toggle__handler {
864
+ display: inline-block;
865
+ position: relative;
866
+ z-index: 1;
867
+ top: 2px;
868
+ left: -21px;
869
+ width: 22px;
870
+ height: 22px;
871
+ background-color: #fff;
872
+ border-radius: 50px;
873
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
874
+ transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
875
+ transform: rotate(-45deg);
876
+ cursor: pointer;
877
+ }
878
+ .toggle__handler .crater {
879
+ position: absolute;
880
+ background-color: #e8cda5;
881
+ opacity: 0;
882
+ transition: opacity 0.2s ease-in-out;
883
+ border-radius: 100%;
884
+ }
885
+ .toggle__handler .crater--1 {
886
+ top: 9px;
887
+ left: 6px;
888
+ width: 2px;
889
+ height: 2px;
890
+ }
891
+ .toggle__handler .crater--2 {
892
+ top: 13px;
893
+ left: 11px;
894
+ width: 3px;
895
+ height: 3px;
896
+ }
897
+ .toggle__handler .crater--3 {
898
+ top: 5px;
899
+ left: 13px;
900
+ width: 4px;
901
+ height: 4px;
902
+ }
903
+ .star {
904
+ position: absolute;
905
+ background-color: #fff;
906
+ transition: all 0.3s cubic-bezier(0.445, 0.05, 0.55, 0.95);
907
+ border-radius: 50%;
908
+ }
909
+ .star--1 {
910
+ top: 6px;
911
+ left: 8px;
912
+ z-index: 0;
913
+ width: 30px;
914
+ height: 1px;
915
+ }
916
+ .star--2 {
917
+ top: 10px;
918
+ left: 15px;
919
+ z-index: 1;
920
+ width: 19px;
921
+ height: 1px;
922
+ }
923
+ .star--3 {
924
+ top: 14px;
925
+ left: 12px;
926
+ z-index: 0;
927
+ width: 30px;
928
+ height: 1px;
929
+ }
930
+ .star--4,
931
+ .star--5,
932
+ .star--6 {
933
+ opacity: 0;
934
+ transition: all 0.3s 0 cubic-bezier(0.445, 0.05, 0.55, 0.95);
935
+ }
936
+ .star--4 {
937
+ top: 19px;
938
+ left: 14px;
939
+ z-index: 0;
940
+ width: 1px;
941
+ height: 1px;
942
+ transform: translate3d(3px, 0, 0);
943
+ }
944
+ .star--5 {
945
+ top: 6px;
946
+ left: 15px;
947
+ z-index: 0;
948
+ width: 2px;
949
+ height: 2px;
950
+ transform: translate3d(3px, 0, 0);
951
+ }
952
+ .star--6 {
953
+ top: 16px;
954
+ left: 18px;
955
+ z-index: 0;
956
+ width: 1px;
957
+ height: 1px;
958
+ transform: translate3d(3px, 0, 0);
959
+ }
960
+ input:checked + .toggle {
961
+ background-color: #749dd6;
962
+ }
963
+ input:checked + .toggle:before {
964
+ color: #969799;
965
+ }
966
+ input:checked + .toggle:after {
967
+ color: #a68fce;
968
+ }
969
+ input:checked + .toggle .toggle__handler {
970
+ background-color: #ffe5b5;
971
+ transform: translate3d(19px, 0, 0) rotate(0);
972
+ }
973
+ input:checked + .toggle .toggle__handler .crater {
974
+ opacity: 1;
975
+ }
976
+ input:checked + .toggle .star--1 {
977
+ width: 2px;
978
+ height: 2px;
979
+ }
980
+ input:checked + .toggle .star--2 {
981
+ width: 3px;
982
+ height: 3px;
983
+ transform: translate3d(-5px, 0, 0);
984
+ }
985
+ input:checked + .toggle .star--3 {
986
+ width: 2px;
987
+ height: 2px;
988
+ transform: translate3d(-7px, 0, 0);
989
+ }
990
+ input:checked + .toggle .star--4,
991
+ input:checked + .toggle .star--5,
992
+ input:checked + .toggle .star--6 {
993
+ opacity: 1;
994
+ transform: translate3d(0, 0, 0);
995
+ }
996
+ input:checked + .toggle .star--4 {
997
+ transition: all 0.3s 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
998
+ }
999
+ input:checked + .toggle .star--5 {
1000
+ transition: all 0.3s 0.3s cubic-bezier(0.445, 0.05, 0.55, 0.95);
1001
+ }
1002
+ input:checked + .toggle .star--6 {
1003
+ transition: all 0.3s 0.4s cubic-bezier(0.445, 0.05, 0.55, 0.95);
1004
+ }
1005
+ #loader {
1006
+ margin: 15vh auto;
1007
+ border: 10px solid #cfcdfe;
1008
+ border-radius: 50%;
1009
+ border-top: 10px solid #5d30cf;
1010
+ width: 60px;
1011
+ height: 60px;
1012
+ -webkit-animation: spin 2s linear infinite;
1013
+ animation: spin 2s linear infinite;
1014
+ }
1015
+ body.dark #loader {
1016
+ border: 10px solid #514865 !important;
1017
+ border-top: 10px solid #a68fce !important;
1018
+ }
1019
+ @-webkit-keyframes spin {
1020
+ 0% {
1021
+ -webkit-transform: rotate(0);
1022
+ }
1023
+ 100% {
1024
+ -webkit-transform: rotate(360deg);
1025
+ }
1026
+ }
1027
+ @keyframes spin {
1028
+ 0% {
1029
+ transform: rotate(0);
1030
+ }
1031
+ 100% {
1032
+ transform: rotate(360deg);
1033
+ }
1034
+ }
1035
+ .impact-icon-size {
1036
+ display: inline-block;
1037
+ min-width: 16px;
1038
+ }
1039
+ .wcag-clause:not(:last-child):after {
1040
+ content: ', ';
1041
+ }
1042
+ </style>
1043
+ </head>
1044
+ <body onbeforeunload="return closeWarning()" onload="load()">
1045
+ <div class="header">
1046
+ <div class="container-fluid">
1047
+ <div class="row pt-4 pb-4">
1048
+ <div class="col-md-8 col-12">
1049
+ <div class="d-flex">
1050
+ <svg class="flex-shrink-0" width="70px" height="70px" viewBox="0 0 60 60">
1051
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
1052
+ <g transform="translate(-28.000000, -32.000000)">
1053
+ <g transform="translate(28.000000, 27.000000)">
1054
+ <g transform="translate(0.000000, 5.000000)">
1055
+ <circle fill="#533BE2" cx="30" cy="30" r="30"></circle>
1056
+ <path
1057
+ d="M28.4502649,29.642801 C28.3252903,29.5414933 28.1233305,29.5414933 27.998356,29.6424933 L27.0933986,30.3752304 C26.9688039,30.4764355 26.9688039,30.6402913 27.0937784,30.7415989 L29.6684816,32.8265056 C29.7610412,32.9014609 29.8808243,33 30.0032664,33 C30.1255819,33 30.2585336,32.9014609 30.3510932,32.8265056 L34.9061425,29.1747147 C35.0312436,29.0735096 35.0312436,28.9095512 34.9063957,28.8083461 L34.0016916,28.0757116 C33.8765904,27.9747116 33.6746306,27.9747116 33.5495294,28.0760192 L30.0097241,30.9053522 L28.4502649,29.642801 Z"
1058
+ fill="#FFFFFF"
1059
+ ></path>
1060
+ <path
1061
+ d="M30.5,35 C28.0147604,35 26,33.2092086 26,31 C26,28.7908982 28.0147604,27 30.5,27 C32.9852396,27 35,28.7908982 35,31 C35,33.2092086 32.9852396,35 30.5,35 M37.5248476,29.7923531 C36.8297901,29.8155839 36.1869369,29.4327578 35.9256839,28.8409617 C35.6735552,28.2688636 35.858003,27.5330795 36.3480544,27.1193147 C36.5094029,26.9819641 36.5289218,26.7547949 36.395408,26.5947488 C36.0434903,26.1788429 35.6399457,25.8007272 35.1957464,25.4701435 C35.0238877,25.3417854 34.7739534,25.3598776 34.6257715,25.5114665 C34.1531601,25.9954589 33.4009317,26.1522934 32.7548447,25.901037 C32.1616549,25.6706562 31.7613443,25.1209325 31.7419409,24.5238907 L31.7419409,22.1316558 C31.7419409,22.0174288 31.672181,21.9129439 31.5618819,21.861986 L29.7675292,21.0321012 C29.5513199,20.9321125 29.2972277,21.0778134 29.2972277,21.301771 L29.2972277,24.4391037 C29.2934163,25.0723298 28.8916042,25.6335084 28.2702334,25.869456 C27.6309606,26.1115057 26.8855466,25.9553135 26.4158225,25.4806349 C26.2683336,25.3312941 26.0215177,25.3129878 25.8500055,25.4383484 C25.4033807,25.7644358 24.9998362,26.1349506 24.650113,26.5396158 C24.5131342,26.6980561 24.5321911,26.930578 24.696196,27.0680357 C25.1913293,27.4823358 25.3753151,28.2266842 25.1164876,28.8018869 C24.84484,29.4002133 24.1904371,29.7777937 23.4881033,29.7406459 C23.2673896,29.7285487 23.07555,29.8782106 23.0499098,30.082042 C22.9851163,30.6012552 22.9831528,31.1252859 23.0455209,31.645998 C23.0695442,31.8473671 23.2567639,31.9969219 23.4748212,31.9901775 C24.1702252,31.967589 24.8130784,32.3496658 25.0749089,32.9421042 C25.3253051,33.5103483 25.1427053,34.2495581 24.6519609,34.6631088 C24.4903814,34.7997101 24.470516,35.0282709 24.6046074,35.1876748 C24.9573335,35.604223 25.361109,35.9830881 25.8042689,36.3121729 C25.9763586,36.440424 26.2260619,36.4215824 26.3740128,36.2707429 C26.8468552,35.7868576 27.5986216,35.6307724 28.2454016,35.8821359 C28.8485241,36.1167989 29.2786328,36.6901816 29.2972277,37.3508136 L29.2972277,37.868421 C29.2972277,37.97494 29.3621367,38.0723594 29.4650441,38.1198915 L31.3032854,38.9701166 C31.5048267,39.0632539 31.7419409,38.927402 31.7419409,38.7186461 L31.7419409,37.3600202 C31.7421719,37.3544534 31.7434423,37.3488866 31.7434423,37.3434268 C31.7268108,36.7379278 32.0894697,36.1569442 32.7295509,35.9128605 C33.3688237,35.6699543 34.1138913,35.8263606 34.5843083,36.3016816 C34.7317972,36.45038 34.9780356,36.4694357 35.1492014,36.343861 C35.5931697,36.0209853 35.9969452,35.6502563 36.3495559,35.2443065 C36.4881516,35.0849027 36.4686327,34.8532372 36.3043968,34.7151372 C35.8082241,34.2991242 35.6244692,33.5548829 35.8838742,32.9821425 C36.1548289,32.3819962 36.8091162,32.0045228 37.5116811,32.0414565 C37.7323947,32.0535536 37.9248118,31.9035706 37.9498745,31.7003815 C37.9833685,31.4346728 38,31.1674653 38,30.8995085 C38,30.6451475 37.9849855,30.3907865 37.9544944,30.1363185 C37.9304711,29.9347353 37.7430204,29.7855016 37.5248476,29.7923531 Z"
1062
+ fill="#FFFFFF"
1063
+ ></path>
1064
+ <path
1065
+ d="M29,17.4279646 C29,17.5512652 29.0705877,17.6640501 29.1820788,17.7191714 L41.4375735,23.766452 L41.4375735,35.734939 C41.4375735,35.8582397 41.5080443,35.9710245 41.6196524,36.0259147 L43.5240006,36.965288 C43.7427757,37.073335 44,36.9160602 44,36.6743123 L44,22.9825046 C44,22.5023599 43.7253625,22.063354 43.2905003,21.8489934 L29.4758825,15.0346369 C29.2571075,14.9267055 29,15.0840959 29,15.3258438 L29,17.4279646 Z"
1066
+ fill="#FFFFFF"
1067
+ ></path>
1068
+ <path
1069
+ d="M32,42.5719259 C32,42.4487411 31.9294129,42.3359565 31.8178057,42.2808354 L19.5624065,36.2335699 L19.5624065,24.2651127 C19.5624065,24.1418123 19.4919362,24.0290277 19.3803291,23.9740221 L17.4759957,23.0346512 C17.2572223,22.92672 17,23.0839944 17,23.3257418 L17,37.0173998 C17,37.4976588 17.2746354,37.9366636 17.7094942,38.1510237 L31.5241212,44.9653631 C31.7427777,45.0732943 32,44.9159043 32,44.674157 L32,42.5719259 Z"
1070
+ fill="#FFFFFF"
1071
+ ></path>
1072
+ </g>
1073
+ </g>
1074
+ </g>
1075
+ </g>
1076
+ </svg>
1077
+ <div class="pl-3">
1078
+ <h1>Accessibility Report</h1>
1079
+ <p class="mb-0">
1080
+ Measure of compliance against GovTech-defined and WCAG 2.1 standards
1081
+ </p>
1082
+ </div>
1083
+ </div>
1084
+ </div>
1085
+ <div class="col-md-4 col-12 header-meta">
1086
+ <p class="mb-0">Run on 7 Jun 2021, 0:15 am<br /><strong>4 issues spotted</strong></p>
1087
+ <div class="toggleWrapper">
1088
+ <input type="checkbox" class="dm" id="dm" />
1089
+ <label for="dm" class="toggle">
1090
+ <span class="toggle__handler">
1091
+ <span class="crater crater--1"></span>
1092
+ <span class="crater crater--2"></span>
1093
+ <span class="crater crater--3"></span>
1094
+ </span>
1095
+ <span class="star star--1"></span>
1096
+ <span class="star star--2"></span>
1097
+ <span class="star star--3"></span>
1098
+ <span class="star star--4"></span>
1099
+ <span class="star star--5"></span>
1100
+ <span class="star star--6"></span>
1101
+ </label>
1102
+ </div>
1103
+ </div>
1104
+ </div>
1105
+ </div>
1106
+ </div>
1107
+ <div class="show-ondark container-fluid">
1108
+ <em
1109
+ >Dark mode is an experimental feature, do
1110
+ <a href="mailto:enquiries_HATS@tech.gov.sg">drop us an email</a> to let us know what you
1111
+ think about it! :)</em
1112
+ >
1113
+ </div>
1114
+
1115
+ <div class="main">
1116
+ <div id="loader"></div>
1117
+ <div class="container-fluid">
1118
+ <div class="row" style="visibility: hidden" id="report">
1119
+ <div class="col-12 pt-4 pb-4">
1120
+ <table id="oobee-table" class="display" style="width: 100%">
1121
+ <thead>
1122
+ <tr>
1123
+ <th>IMPACT</th>
1124
+ <th class="dt-nowrap">ISSUE</th>
1125
+ <th class="dt-nowrap">PAGE</th>
1126
+ <th class="element">HTML ELEMENT <span>Hover to view full</span></th>
1127
+ <th class="dt-nowrap text-center">HELP URL</th>
1128
+ <th class="dt-nowrap text-center">FIXED?</th>
1129
+ </tr>
1130
+ </thead>
1131
+ <tbody>
1132
+ <tr>
1133
+ <td>
1134
+ <span class="impact critical"><span class="hidden">3</span>critical</span><br />
1135
+ <div class="impact-icon-size">disabilities</div>
1136
+ </td>
1137
+ <td class="issue">
1138
+ Buttons must have discernible text<br />
1139
+ <a class="wcag-clause" href="" target="_blank">WCAG </a>
1140
+ </td>
1141
+ <td class="page">
1142
+ <a
1143
+ href="https:&#x2F;&#x2F;www.isomer.gov.sg&#x2F;terms-of-use&#x2F;"
1144
+ target="_blank"
1145
+ >&#x2F;terms-of-use&#x2F;</a
1146
+ >
1147
+ </td>
1148
+ <td class="element">
1149
+ &lt;button class&#x3D;&#39;bp-button&#39;&gt;&lt;i class&#x3D;&#39;sgds-icon
1150
+ sgds-icon-mail is-size-4&#39;&gt;&lt;&#x2F;i&gt;&#x2F;button&gt;
1151
+ </td>
1152
+ <td class="text-center dt-nowrap">
1153
+ <a
1154
+ href="https:&#x2F;&#x2F;dequeuniversity.com&#x2F;rules&#x2F;axe&#x2F;4.2&#x2F;button-name?application&#x3D;oobee"
1155
+ target="_blank"
1156
+ >
1157
+ <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1">
1158
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
1159
+ <g
1160
+ class="link-icon"
1161
+ transform="translate(-1259.000000, -254.000000)"
1162
+ fill-rule="nonzero"
1163
+ >
1164
+ <g transform="translate(24.000000, 184.000000)">
1165
+ <g transform="translate(-3.000000, 50.000000)">
1166
+ <g transform="translate(1238.000000, 20.000000)">
1167
+ <path
1168
+ d="M15,2.22044605e-14 L8,2.22044605e-14 L8,2 L12.6,2 L6.3,8.3 L7.7,9.7 L14,3.4 L14,8 L16,8 L16,1 C16,0.4 15.6,2.22044605e-14 15,2.22044605e-14 Z"
1169
+ id="Path"
1170
+ ></path>
1171
+ <path
1172
+ d="M14,16 L1,16 C0.4,16 0,15.6 0,15 L0,2 C0,1.4 0.4,1 1,1 L5,1 L5,3 L2,3 L2,14 L13,14 L13,11 L15,11 L15,15 C15,15.6 14.6,16 14,16 Z"
1173
+ id="Path"
1174
+ ></path>
1175
+ </g>
1176
+ </g>
1177
+ </g>
1178
+ </g>
1179
+ </g>
1180
+ </svg>
1181
+ </a>
1182
+ </td>
1183
+ <td class="text-center dt-nowrap"></td>
1184
+ </tr>
1185
+ <tr>
1186
+ <td>
1187
+ <span class="impact serious"><span class="hidden">3</span>serious</span><br />
1188
+ <div class="impact-icon-size">disabilities</div>
1189
+ </td>
1190
+ <td class="issue">
1191
+ Buttons must have discernible text<br />
1192
+ <a class="wcag-clause" href="" target="_blank">WCAG </a>
1193
+ </td>
1194
+ <td class="page">
1195
+ <a
1196
+ href="https:&#x2F;&#x2F;www.isomer.gov.sg&#x2F;terms-of-use&#x2F;"
1197
+ target="_blank"
1198
+ >&#x2F;terms-of-use&#x2F;</a
1199
+ >
1200
+ </td>
1201
+ <td class="element">
1202
+ &lt;button class&#x3D;&#39;bp-button&#39;&gt;&lt;i class&#x3D;&#39;sgds-icon
1203
+ sgds-icon-mail is-size-4&#39;&gt;&lt;&#x2F;i&gt;&#x2F;button&gt;
1204
+ </td>
1205
+ <td class="text-center dt-nowrap">
1206
+ <a
1207
+ href="https:&#x2F;&#x2F;dequeuniversity.com&#x2F;rules&#x2F;axe&#x2F;4.2&#x2F;button-name?application&#x3D;oobee"
1208
+ target="_blank"
1209
+ >
1210
+ <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1">
1211
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
1212
+ <g
1213
+ class="link-icon"
1214
+ transform="translate(-1259.000000, -254.000000)"
1215
+ fill-rule="nonzero"
1216
+ >
1217
+ <g transform="translate(24.000000, 184.000000)">
1218
+ <g transform="translate(-3.000000, 50.000000)">
1219
+ <g transform="translate(1238.000000, 20.000000)">
1220
+ <path
1221
+ d="M15,2.22044605e-14 L8,2.22044605e-14 L8,2 L12.6,2 L6.3,8.3 L7.7,9.7 L14,3.4 L14,8 L16,8 L16,1 C16,0.4 15.6,2.22044605e-14 15,2.22044605e-14 Z"
1222
+ id="Path"
1223
+ ></path>
1224
+ <path
1225
+ d="M14,16 L1,16 C0.4,16 0,15.6 0,15 L0,2 C0,1.4 0.4,1 1,1 L5,1 L5,3 L2,3 L2,14 L13,14 L13,11 L15,11 L15,15 C15,15.6 14.6,16 14,16 Z"
1226
+ id="Path"
1227
+ ></path>
1228
+ </g>
1229
+ </g>
1230
+ </g>
1231
+ </g>
1232
+ </g>
1233
+ </svg>
1234
+ </a>
1235
+ </td>
1236
+ <td class="text-center dt-nowrap"></td>
1237
+ </tr>
1238
+ <tr>
1239
+ <td>
1240
+ <span class="impact minor"><span class="hidden">3</span>minor</span><br />
1241
+ <div class="impact-icon-size">disabilities</div>
1242
+ </td>
1243
+ <td class="issue">
1244
+ Buttons must have discernible text<br />
1245
+ <a class="wcag-clause" href="" target="_blank">WCAG </a>
1246
+ </td>
1247
+ <td class="page">
1248
+ <a
1249
+ href="https:&#x2F;&#x2F;www.isomer.gov.sg&#x2F;terms-of-use&#x2F;"
1250
+ target="_blank"
1251
+ >&#x2F;terms-of-use&#x2F;</a
1252
+ >
1253
+ </td>
1254
+ <td class="element">
1255
+ &lt;button class&#x3D;&#39;bp-button&#39;&gt;&lt;i class&#x3D;&#39;sgds-icon
1256
+ sgds-icon-mail is-size-4&#39;&gt;&lt;&#x2F;i&gt;&#x2F;button&gt;
1257
+ </td>
1258
+ <td class="text-center dt-nowrap">
1259
+ <a
1260
+ href="https:&#x2F;&#x2F;dequeuniversity.com&#x2F;rules&#x2F;axe&#x2F;4.2&#x2F;button-name?application&#x3D;oobee"
1261
+ target="_blank"
1262
+ >
1263
+ <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1">
1264
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
1265
+ <g
1266
+ class="link-icon"
1267
+ transform="translate(-1259.000000, -254.000000)"
1268
+ fill-rule="nonzero"
1269
+ >
1270
+ <g transform="translate(24.000000, 184.000000)">
1271
+ <g transform="translate(-3.000000, 50.000000)">
1272
+ <g transform="translate(1238.000000, 20.000000)">
1273
+ <path
1274
+ d="M15,2.22044605e-14 L8,2.22044605e-14 L8,2 L12.6,2 L6.3,8.3 L7.7,9.7 L14,3.4 L14,8 L16,8 L16,1 C16,0.4 15.6,2.22044605e-14 15,2.22044605e-14 Z"
1275
+ id="Path"
1276
+ ></path>
1277
+ <path
1278
+ d="M14,16 L1,16 C0.4,16 0,15.6 0,15 L0,2 C0,1.4 0.4,1 1,1 L5,1 L5,3 L2,3 L2,14 L13,14 L13,11 L15,11 L15,15 C15,15.6 14.6,16 14,16 Z"
1279
+ id="Path"
1280
+ ></path>
1281
+ </g>
1282
+ </g>
1283
+ </g>
1284
+ </g>
1285
+ </g>
1286
+ </svg>
1287
+ </a>
1288
+ </td>
1289
+ <td class="text-center dt-nowrap"></td>
1290
+ </tr>
1291
+ <tr>
1292
+ <td>
1293
+ <span class="impact moderate"><span class="hidden">3</span>moderate</span><br />
1294
+ <div class="impact-icon-size">disabilities</div>
1295
+ </td>
1296
+ <td class="issue">
1297
+ Buttons must have discernible text<br />
1298
+ <a class="wcag-clause" href="" target="_blank">WCAG </a>
1299
+ </td>
1300
+ <td class="page">
1301
+ <a
1302
+ href="https:&#x2F;&#x2F;www.isomer.gov.sg&#x2F;terms-of-use&#x2F;"
1303
+ target="_blank"
1304
+ >&#x2F;terms-of-use&#x2F;</a
1305
+ >
1306
+ </td>
1307
+ <td class="element">
1308
+ &lt;button class&#x3D;&#39;bp-button&#39;&gt;&lt;i class&#x3D;&#39;sgds-icon
1309
+ sgds-icon-mail is-size-4&#39;&gt;&lt;&#x2F;i&gt;&#x2F;button&gt;
1310
+ </td>
1311
+ <td class="text-center dt-nowrap">
1312
+ <a
1313
+ href="https:&#x2F;&#x2F;dequeuniversity.com&#x2F;rules&#x2F;axe&#x2F;4.2&#x2F;button-name?application&#x3D;oobee"
1314
+ target="_blank"
1315
+ >
1316
+ <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1">
1317
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
1318
+ <g
1319
+ class="link-icon"
1320
+ transform="translate(-1259.000000, -254.000000)"
1321
+ fill-rule="nonzero"
1322
+ >
1323
+ <g transform="translate(24.000000, 184.000000)">
1324
+ <g transform="translate(-3.000000, 50.000000)">
1325
+ <g transform="translate(1238.000000, 20.000000)">
1326
+ <path
1327
+ d="M15,2.22044605e-14 L8,2.22044605e-14 L8,2 L12.6,2 L6.3,8.3 L7.7,9.7 L14,3.4 L14,8 L16,8 L16,1 C16,0.4 15.6,2.22044605e-14 15,2.22044605e-14 Z"
1328
+ id="Path"
1329
+ ></path>
1330
+ <path
1331
+ d="M14,16 L1,16 C0.4,16 0,15.6 0,15 L0,2 C0,1.4 0.4,1 1,1 L5,1 L5,3 L2,3 L2,14 L13,14 L13,11 L15,11 L15,15 C15,15.6 14.6,16 14,16 Z"
1332
+ id="Path"
1333
+ ></path>
1334
+ </g>
1335
+ </g>
1336
+ </g>
1337
+ </g>
1338
+ </g>
1339
+ </svg>
1340
+ </a>
1341
+ </td>
1342
+ <td class="text-center dt-nowrap"></td>
1343
+ </tr>
1344
+ </tbody>
1345
+ </table>
1346
+ </div>
1347
+ </div>
1348
+ </div>
1349
+ </div>
1350
+
1351
+ <div class="footer">
1352
+ <div class="container-fluid">
1353
+ <div class="row text-center pt-2 pb-2">
1354
+ <div class="col-sm-6 text-sm-left">
1355
+ <a href="mailto:enquiries_HATS@tech.gov.sg">Help us improve</a>
1356
+ <hr class="d-sm-none" />
1357
+ </div>
1358
+ <div class="col-sm-6 text-sm-right">
1359
+ Created by
1360
+ <a href="https://www.hive.gov.sg/" target="_blank"
1361
+ >Government Digital Services Singapore</a
1362
+ >
1363
+ </div>
1364
+ </div>
1365
+ </div>
1366
+ </div>
1367
+
1368
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
1369
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
1370
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
1371
+ <script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
1372
+ <script src="https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap4.min.js"></script>
1373
+ <script src="https://cdn.datatables.net/select/1.3.1/js/dataTables.select.min.js"></script>
1374
+ <script>
1375
+ function closeWarning() {}
1376
+ $(document).ready(function () {
1377
+ $('#oobee-table').DataTable({
1378
+ paging: !1,
1379
+ columnDefs: [
1380
+ { targets: [3, 4, 5], orderable: !1 },
1381
+ { width: 500, targets: 1 },
1382
+ { width: 150, targets: 2 },
1383
+ { width: 300, targets: 3 },
1384
+ { orderable: !1, className: 'select-checkbox', targets: 5 },
1385
+ ],
1386
+ select: { style: 'multi', selector: 'td:last-child' },
1387
+ language: {
1388
+ select: { rows: { _: '%d issues fixed', 0: '0 issue fixed', 1: '1 issue fixed' } },
1389
+ emptyTable: 'No issue found in your website.',
1390
+ },
1391
+ oLanguage: { sInfo: 'Showing _TOTAL_ issues' },
1392
+ order: [[0, 'desc']],
1393
+ scrollX: !0,
1394
+ });
1395
+ ((window.onbeforeunload = function (e) {
1396
+ var t = 'Sure you want to leave?';
1397
+ return void 0 === e && (e = window.event), e && (e.returnValue = t), t;
1398
+ }),
1399
+ $(function () {
1400
+ $('[data-toggle="tooltip"]').tooltip();
1401
+ }),
1402
+ document.getElementById('dm').addEventListener(
1403
+ 'change',
1404
+ function (e) {
1405
+ if (e.target.checked) {
1406
+ var t = document.body;
1407
+ t.classList.add('dark');
1408
+ } else {
1409
+ var t = document.body;
1410
+ t.classList.remove('dark');
1411
+ }
1412
+ },
1413
+ !1,
1414
+ ),
1415
+ window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches)
1416
+ ? ((document.getElementById('dm').checked = !0), document.body.classList.add('dark'))
1417
+ : document.body.classList.remove('dark');
1418
+ });
1419
+ </script>
1420
+ <script>
1421
+ var timeout;
1422
+ function load() {
1423
+ timeout = setTimeout(showPage, 2000);
1424
+ }
1425
+ function showPage() {
1426
+ document.getElementById('loader').style.display = 'none';
1427
+ document.getElementById('report').style.visibility = 'visible';
1428
+ }
1429
+ </script>
1430
+ </body>
1431
+ </html>