===== SOURCE FILES ===== -rw-r--r-- 1 aiwebpageseo.com_nx466y811e psacln 541K Oct 9 02:51 /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/axe.min.js -rw-r--r-- 1 aiwebpageseo.com_nx466y811e psacln 5.5K Oct 21 22:33 /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/run.js -rw-r--r-- 1 aiwebpageseo.com_nx466y811e psacln 4.0K Oct 21 22:33 /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/text-spacing.js ===== JAVASCRIPT SYNTAX ===== ===== BROWSER SCRIPT LOADING ===== 1041- 1042-// Extra WCAG A/AA checks with axe-core (Deque Systems, open source, MPL-2.0: the engine most professional audits 1043-// use), for what this tool does not check itself: ARIA attributes and roles, list structure, nested controls, 1044-// zoom blocked by the viewport tag, scroll areas the keyboard cannot reach, links told apart by colour only, 1045-// the page title and others (the rule list is in /a11y-axe/run.js). The page is checked in a separate sandboxed 1046-// frame that can run axe but cannot reach this page or its data: all of the audited page's own scripts, event 1047-// attributes, javascript: links, embedded frames and objects are taken out first. axe and its runner are placed 1048-// in the frame as inline scripts: a sandboxed frame is not "this site", so it may not load scripts by address 1049-// under this page's security policy, which does allow inline scripts. Their text comes from /a11y-axe/ (fetched 1050-// once), or from window.__a11yAxeSrc when the server's check (lib/a11y-rendered.js) provides it from disk. 1051-const A11Y_AXE_BASE = /^https?:$/.test(location.protocol) ? location.origin + '/a11y-axe/' : 'https://aiwebpageseo.com/a11y-axe/'; 1052- 1053:function a11yAxeSources() { 1054- if (window.__a11yAxeSrc && window.__a11yAxeSrc.axe && window.__a11yAxeSrc.run && window.__a11yAxeSrc.spacing) return Promise.resolve(window.__a11yAxeSrc); 1055- if (!window.__a11yAxeSrcP) { 1056- // Sent with this site's cookies, so the server's firewall knows the visitor has already passed its check; anything 1057- // that is not a script (a firewall check page, an error page) counts as not loaded. 1058- const get = f => fetch(A11Y_AXE_BASE + f, { credentials: 'same-origin' }).then(r => r.ok && /javascript/i.test(r.headers.get('content-type') || '') ? r.text() : Promise.reject(new Error('HTTP ' + r.status))); 1059: window.__a11yAxeSrcP = Promise.all([get('axe.min.js'), get('run.js'), get('text-spacing.js')]).then(([axe, run, spacing]) => ({ axe, run, spacing })).catch(() => { window.__a11yAxeSrcP = null; return null; }); 1060- } 1061- return window.__a11yAxeSrcP; 1062-} 1063- 1064:function a11yAxeDoc(html, baseUrl, srcs) { 1065- const d = new DOMParser().parseFromString(html, 'text/html'); 1066- d.querySelectorAll('script, noscript, meta[http-equiv], object, embed, applet, frame, frameset, portal, animate, set, animateMotion, animateTransform, base').forEach(n => n.remove()); 1067- d.querySelectorAll('iframe').forEach(f => { f.removeAttribute('src'); f.removeAttribute('srcdoc'); }); 1068- for (const el of d.querySelectorAll('*')) { 1069- for (const a of [...el.attributes]) { 1070- const n = a.name.toLowerCase(); 1071- if (n.startsWith('on') || (/^(href|src|action|formaction|xlink:href|data|poster|background)$/.test(n) && /^\s*(javascript|vbscript|data:text\/html)/i.test(a.value))) el.removeAttribute(a.name); 1072- } 1073- } 1074- const head = d.head || d.documentElement.insertBefore(d.createElement('head'), d.body); 1075- if (baseUrl) { const b = d.createElement('base'); b.setAttribute('href', baseUrl); head.insertBefore(b, head.firstChild); } 1076- const st = d.createElement('style'); st.textContent = '*,*::before,*::after{animation:none!important;transition:none!important;content-visibility:visible!important}'; head.appendChild(st); -- 1102- ? v 1103- : { 1104- id: v.id, 1105- outcome: 'unavailable', 1106- error: 'Stylesheet retrieval was incomplete' 1107- } 1108- ); 1109- } 1110- finish(r); 1111- }; 1112- window.addEventListener('message', onMsg); 1113- const timer = setTimeout(() => finish({ ok: false, error: 'the checks took too long' }), 25000); 1114: a11yAxeSources().then(srcs => { 1115- if (done) return; 1116- if (!srcs) return finish({ ok: false, error: 'the checker could not be loaded' }); 1117: let src; try { src = a11yAxeDoc(html, baseUrl, srcs); } catch (e) { return finish({ ok: false, error: 'the page could not be prepared' }); } 1118- fr.setAttribute('sandbox', 'allow-scripts'); // scripts (axe only) may run; no access to this page, no pop-ups, no navigation 1119- fr.setAttribute('aria-hidden', 'true'); 1120- fr.setAttribute('tabindex', '-1'); 1121- fr.style.cssText = 'position:fixed;left:-20000px;top:0;width:1280px;height:900px;border:0;opacity:0;pointer-events:none'; 1122- // The frame has loaded (its scripts have run) but the checker never said it started: it could not be loaded. 1123- fr.onload = () => setTimeout(() => { if (!started) finish({ ok: false, error: 'the checker could not be loaded' }); }, 3000); 1124- fr.srcdoc = src; 1125- document.body.appendChild(fr); 1126- }); 1127- }); 1128-} 1129- ===== VALIDATOR EXPORTS AND REFERENCES ===== /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/run.js:53: id: '9e45ec', /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/run.js:59: id: '24afc2', /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/run.js:68: if (!window.a11yTextSpacing || /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/run.js:69: typeof window.a11yTextSpacing.validateTextSpacing !== 'function') { /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/run.js:74: window.a11yTextSpacing.validateTextSpacing(rule.id); /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/text-spacing.js:4: '9e45ec': { property: 'word-spacing', threshold: 0.16 }, /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/text-spacing.js:5: '24afc2': { property: 'letter-spacing', threshold: 0.12 } /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/text-spacing.js:8:function validateTextSpacing(ruleId) { /var/www/vhosts/aiwebpageseo.com/site-audit/public/a11y-axe/text-spacing.js:153:module.exports = { validateTextSpacing }; /var/www/vhosts/aiwebpageseo.com/site-audit/public/accessibility-audit.js:1079: for (const code of [srcs.axe, 'var module={exports:{}};var exports=module.exports;\n' + srcs.spacing + '\n;window.a11yTextSpacing=module.exports;', srcs.run]) { const sc = d.createElement('script'); sc.textContent = String(code).replace(/<\/script/gi, '<\\/script'); body.appendChild(sc); } /var/www/vhosts/aiwebpageseo.com/site-audit/public/accessibility-audit.js:1098: !/^(link-in-text-block|scrollable-region-focusable|avoid-inline-spacing|act-9e45ec|act-24afc2)$/.test(v.id) /var/www/vhosts/aiwebpageseo.com/site-audit/public/accessibility-audit.js:1847: const name = result.id === '9e45ec' /var/www/vhosts/aiwebpageseo.com/site-audit/public/accessibility-audit.js:1849: : result.id === '24afc2' /var/www/vhosts/aiwebpageseo.com/site-audit/public/accessibility-audit.js:1866: !(axeHasSpacing && /^act-(9e45ec|24afc2)$/.test(v.id)) /var/www/vhosts/aiwebpageseo.com/site-audit/public/accessibility-audit.js:1875: (result.id === '9e45ec' ===== ACT EVIDENCE INVENTORY ===== /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-comprehensive-diagnostics.txt (7564 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c-evidence-inventory-2026-10-22.txt (993212 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-evaluator-source-search.txt (557370 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-evidence-suite.js (2836 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-implementation-evidence.html (1238 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-evidence-review.txt (8712 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-reconciliation.html (2161 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-reconciliation.md (1234 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-rule-a-diagnostics.json (24235 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-rule-a-final.html (5179 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-rule-a-final.json (6873 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/act-w3c-rule-a-final.md (4734 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/recovered-act-evidence.json (56177 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/rule-a-evidence-comparison.json (65231 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/act-w3c/rule-a-existing-results.txt (17137 bytes) /var/www/vhosts/aiwebpageseo.com/site-audit/public/tests/test/act-spacing-evaluator-source.txt (9592 bytes) ===== NODE BROWSER GLOBAL CHECK ===== Browser-style execution error: ReferenceError: module is not defined