@qualweb/act-rules
Version:
ACT rules module for qualweb web accessibility evaluator
1 lines • 437 kB
JavaScript
(()=>{var e={8290(e,t,n){e=n.nmd(e);var i="__lodash_hash_undefined__",a=9007199254740991,r="[object Arguments]",s="[object Boolean]",l="[object Date]",o="[object Function]",d="[object GeneratorFunction]",c="[object Map]",u="[object Number]",m="[object Object]",h="[object Promise]",p="[object RegExp]",g="[object Set]",f="[object String]",k="[object Symbol]",v="[object WeakMap]",b="[object ArrayBuffer]",y="[object DataView]",T="[object Float32Array]",A="[object Float64Array]",R="[object Int8Array]",w="[object Int16Array]",C="[object Int32Array]",j="[object Uint8Array]",W="[object Uint8ClampedArray]",_="[object Uint16Array]",I="[object Uint32Array]",E=/\w*$/,P=/^\[object .+?Constructor\]$/,Q=/^(?:0|[1-9]\d*)$/,x={};x[r]=x["[object Array]"]=x[b]=x[y]=x[s]=x[l]=x[T]=x[A]=x[R]=x[w]=x[C]=x[c]=x[u]=x[m]=x[p]=x[g]=x[f]=x[k]=x[j]=x[W]=x[_]=x[I]=!0,x["[object Error]"]=x[o]=x[v]=!1;var F="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,S="object"==typeof self&&self&&self.Object===Object&&self,O=F||S||Function("return this")(),D=t&&!t.nodeType&&t,M=D&&e&&!e.nodeType&&e,N=M&&M.exports===D;function L(e,t){return e.set(t[0],t[1]),e}function V(e,t){return e.add(t),e}function G(e,t,n,i){var a=-1,r=e?e.length:0;for(i&&r&&(n=e[++a]);++a<r;)n=t(n,e[a],a,e);return n}function q(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function U(e){var t=-1,n=Array(e.size);return e.forEach(function(e,i){n[++t]=[i,e]}),n}function H(e,t){return function(n){return e(t(n))}}function B(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var K,z=Array.prototype,$=Function.prototype,Z=Object.prototype,X=O["__core-js_shared__"],Y=(K=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+K:"",J=$.toString,ee=Z.hasOwnProperty,te=Z.toString,ne=RegExp("^"+J.call(ee).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ie=N?O.Buffer:void 0,ae=O.Symbol,re=O.Uint8Array,se=H(Object.getPrototypeOf,Object),le=Object.create,oe=Z.propertyIsEnumerable,de=z.splice,ce=Object.getOwnPropertySymbols,ue=ie?ie.isBuffer:void 0,me=H(Object.keys,Object),he=Me(O,"DataView"),pe=Me(O,"Map"),ge=Me(O,"Promise"),fe=Me(O,"Set"),ke=Me(O,"WeakMap"),ve=Me(Object,"create"),be=qe(he),ye=qe(pe),Te=qe(ge),Ae=qe(fe),Re=qe(ke),we=ae?ae.prototype:void 0,Ce=we?we.valueOf:void 0;function je(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function We(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function _e(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function Ie(e){this.__data__=new We(e)}function Ee(e,t){var n=He(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&Be(e)}(e)&&ee.call(e,"callee")&&(!oe.call(e,"callee")||te.call(e)==r)}(e)?function(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}(e.length,String):[],i=n.length,a=!!i;for(var s in e)!t&&!ee.call(e,s)||a&&("length"==s||Ve(s,i))||n.push(s);return n}function Pe(e,t,n){var i=e[t];ee.call(e,t)&&Ue(i,n)&&(void 0!==n||t in e)||(e[t]=n)}function Qe(e,t){for(var n=e.length;n--;)if(Ue(e[n][0],t))return n;return-1}function xe(e,t,n,i,a,h,v){var P;if(i&&(P=h?i(e,a,h,v):i(e)),void 0!==P)return P;if(!$e(e))return e;var Q=He(e);if(Q){if(P=function(e){var t=e.length,n=e.constructor(t);t&&"string"==typeof e[0]&&ee.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!t)return function(e,t){var n=-1,i=e.length;t||(t=Array(i));for(;++n<i;)t[n]=e[n];return t}(e,P)}else{var F=Le(e),S=F==o||F==d;if(Ke(e))return function(e,t){if(t)return e.slice();var n=new e.constructor(e.length);return e.copy(n),n}(e,t);if(F==m||F==r||S&&!h){if(q(e))return h?e:{};if(P=function(e){return"function"!=typeof e.constructor||Ge(e)?{}:(t=se(e),$e(t)?le(t):{});var t}(S?{}:e),!t)return function(e,t){return Oe(e,Ne(e),t)}(e,function(e,t){return e&&Oe(t,Ze(t),e)}(P,e))}else{if(!x[F])return h?e:{};P=function(e,t,n,i){var a=e.constructor;switch(t){case b:return Se(e);case s:case l:return new a(+e);case y:return function(e,t){var n=t?Se(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,i);case T:case A:case R:case w:case C:case j:case W:case _:case I:return function(e,t){var n=t?Se(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}(e,i);case c:return function(e,t,n){var i=t?n(U(e),!0):U(e);return G(i,L,new e.constructor)}(e,i,n);case u:case f:return new a(e);case p:return function(e){var t=new e.constructor(e.source,E.exec(e));return t.lastIndex=e.lastIndex,t}(e);case g:return function(e,t,n){var i=t?n(B(e),!0):B(e);return G(i,V,new e.constructor)}(e,i,n);case k:return r=e,Ce?Object(Ce.call(r)):{}}var r}(e,F,xe,t)}}v||(v=new Ie);var O=v.get(e);if(O)return O;if(v.set(e,P),!Q)var D=n?function(e){return function(e,t,n){var i=t(e);return He(e)?i:function(e,t){for(var n=-1,i=t.length,a=e.length;++n<i;)e[a+n]=t[n];return e}(i,n(e))}(e,Ze,Ne)}(e):Ze(e);return function(e,t){for(var n=-1,i=e?e.length:0;++n<i&&!1!==t(e[n],n,e););}(D||e,function(a,r){D&&(a=e[r=a]),Pe(P,r,xe(a,t,n,i,r,e,v))}),P}function Fe(e){return!(!$e(e)||(t=e,Y&&Y in t))&&(ze(e)||q(e)?ne:P).test(qe(e));var t}function Se(e){var t=new e.constructor(e.byteLength);return new re(t).set(new re(e)),t}function Oe(e,t,n,i){n||(n={});for(var a=-1,r=t.length;++a<r;){var s=t[a],l=i?i(n[s],e[s],s,n,e):void 0;Pe(n,s,void 0===l?e[s]:l)}return n}function De(e,t){var n,i,a=e.__data__;return("string"==(i=typeof(n=t))||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==n:null===n)?a["string"==typeof t?"string":"hash"]:a.map}function Me(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Fe(n)?n:void 0}je.prototype.clear=function(){this.__data__=ve?ve(null):{}},je.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},je.prototype.get=function(e){var t=this.__data__;if(ve){var n=t[e];return n===i?void 0:n}return ee.call(t,e)?t[e]:void 0},je.prototype.has=function(e){var t=this.__data__;return ve?void 0!==t[e]:ee.call(t,e)},je.prototype.set=function(e,t){return this.__data__[e]=ve&&void 0===t?i:t,this},We.prototype.clear=function(){this.__data__=[]},We.prototype.delete=function(e){var t=this.__data__,n=Qe(t,e);return!(n<0)&&(n==t.length-1?t.pop():de.call(t,n,1),!0)},We.prototype.get=function(e){var t=this.__data__,n=Qe(t,e);return n<0?void 0:t[n][1]},We.prototype.has=function(e){return Qe(this.__data__,e)>-1},We.prototype.set=function(e,t){var n=this.__data__,i=Qe(n,e);return i<0?n.push([e,t]):n[i][1]=t,this},_e.prototype.clear=function(){this.__data__={hash:new je,map:new(pe||We),string:new je}},_e.prototype.delete=function(e){return De(this,e).delete(e)},_e.prototype.get=function(e){return De(this,e).get(e)},_e.prototype.has=function(e){return De(this,e).has(e)},_e.prototype.set=function(e,t){return De(this,e).set(e,t),this},Ie.prototype.clear=function(){this.__data__=new We},Ie.prototype.delete=function(e){return this.__data__.delete(e)},Ie.prototype.get=function(e){return this.__data__.get(e)},Ie.prototype.has=function(e){return this.__data__.has(e)},Ie.prototype.set=function(e,t){var n=this.__data__;if(n instanceof We){var i=n.__data__;if(!pe||i.length<199)return i.push([e,t]),this;n=this.__data__=new _e(i)}return n.set(e,t),this};var Ne=ce?H(ce,Object):function(){return[]},Le=function(e){return te.call(e)};function Ve(e,t){return!!(t=null==t?a:t)&&("number"==typeof e||Q.test(e))&&e>-1&&e%1==0&&e<t}function Ge(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Z)}function qe(e){if(null!=e){try{return J.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function Ue(e,t){return e===t||e!=e&&t!=t}(he&&Le(new he(new ArrayBuffer(1)))!=y||pe&&Le(new pe)!=c||ge&&Le(ge.resolve())!=h||fe&&Le(new fe)!=g||ke&&Le(new ke)!=v)&&(Le=function(e){var t=te.call(e),n=t==m?e.constructor:void 0,i=n?qe(n):void 0;if(i)switch(i){case be:return y;case ye:return c;case Te:return h;case Ae:return g;case Re:return v}return t});var He=Array.isArray;function Be(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=a}(e.length)&&!ze(e)}var Ke=ue||function(){return!1};function ze(e){var t=$e(e)?te.call(e):"";return t==o||t==d}function $e(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ze(e){return Be(e)?Ee(e):function(e){if(!Ge(e))return me(e);var t=[];for(var n in Object(e))ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return xe(e,!0,!0)}},9313(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},9712(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},3471(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1177(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4015(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5279(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EvaluationModuleDefinition=void 0;const i=n(9237);t.EvaluationModuleDefinition=class EvaluationModuleDefinition{type;moduleOptions;report;tester;translate;constructor(e,t,n,a,r){this.type=e,this.moduleOptions=t,this.report=a,this.tester=r,this.translate=i.LocaleFetcher.transform(n),this.configure(t)}configure(e){return this.tester.resetConfiguration(),this.tester.configureByPrinciplesAndLevels(e.principles,e.levels),this.tester.configureIncluded(e.include),this.tester.configureExcluded(e.exclude),this}test(e){return this.tester.execute(e),this}testSpecial(){throw new Error("Method not implemented.")}getReport(){return this.report.getCopy()}}},8541(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4649(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExecutableModuleContext=void 0;t.ExecutableModuleContext=class ExecutableModuleContext{options;constructor(e={}){this.options=e}async execute(e,t,n){const i=this.getModulePackage?.();return i&&await e.addEvaluationScript(i),this.runModule(e,this.options,t,n)}}},9135(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Guideline=void 0;t.Guideline=class Guideline{}},4253(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6063(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7372(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8824(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8631(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4891(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModuleReport=void 0;t.ModuleReport=class ModuleReport{report;constructor(e){this.report={type:e,metadata:{passed:0,warning:0,failed:0,inapplicable:0},assertions:{}}}getAssertions(e){return this.report.assertions[e]}addAssertionResult(e){const t=e.getCode();this.report.assertions[t]=e.getFinalResults(),this.report.metadata[this.report.assertions[t].metadata.outcome]++}getCopy(){return{...this.report}}}},7177(e,t){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ModuleType=void 0,function(e){e.ACT_RULES="act-rules",e.WCAG_TECHNIQUES="wcag-techniques",e.BEST_PRACTICES="best-practices",e.COUNTER="counter",e.CUI_CHECKS="cui-checks"}(n||(t.ModuleType=n={}))},4164(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8353(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7224(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},683(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7408(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7997(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Test=void 0;const i=n(1368);t.Test=class Test{verdict;description;resultCode;elements;attributes;constructor(e,t,n){this.verdict=e??i.Verdict.INAPPLICABLE,this.description=t??"",this.resultCode=n??"I1",this.elements=[],this.attributes=[]}addElement(e,t=!0,n=!1,i){const a=e.getElementHtmlCode(t,n),r=e.getElementSelector();let s;return i&&(s=window.AccessibilityUtils.getAccessibleName(e)),this.elements.push({htmlCode:a,pointer:r,accessibleName:s}),this}addElements(e,t=!0,n=!1,i){return e.forEach(e=>this.addElement(e,t,n,i)),this}}},9992(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8678(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Tester=void 0;t.Tester=class Tester{assertions=new Map;toExecute={};report;constructor(e){this.report=e}configureByPrinciplesAndLevels(e,t){for(const[n,i]of this.assertions)e&&0!==e.length?t&&0!==t.length?i.hasPrincipleAndLevels(e,t)||(this.toExecute[n]=!1):i.hasPrincipleAndLevels(e,["A","AA","AAA"])||(this.toExecute[n]=!1):t&&0!==t.length&&!i.hasPrincipleAndLevels(["Perceivable","Operable","Understandable","Robust"],t)&&(this.toExecute[n]=!1)}configureIncluded(e){if(0!==this.assertions?.size&&e&&0!==e.length){const t=e?.map(e=>e.toLowerCase().startsWith("qw")?e.toUpperCase().trim():e.trim());for(const[e,n]of this.assertions)this.toExecute[e]=!(!t?.includes(n.getCode())&&!t?.includes(n.getMapping()))}}configureExcluded(e){if(e&&0!==e.length){const t=e.map(e=>e.toLowerCase().startsWith("qw")?e.toUpperCase().trim():e.trim());for(const[e,n]of this.assertions)this.toExecute[e]=!t.includes(n.getCode())&&!t.includes(n.getMapping())}}resetConfiguration(){for(const e in this.toExecute??{})this.toExecute[e]=!0}}},425(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2920(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1368(e,t){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Verdict=void 0,function(e){e.PASSED="passed",e.WARNING="warning",e.FAILED="failed",e.INAPPLICABLE="inapplicable"}(n||(t.Verdict=n={}))},7105(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(9313),t),a(n(9712),t),a(n(3471),t),a(n(1177),t),a(n(4015),t),a(n(5279),t),a(n(8541),t),a(n(4649),t),a(n(9135),t),a(n(4253),t),a(n(6063),t),a(n(7372),t),a(n(8824),t),a(n(8631),t),a(n(4891),t),a(n(4164),t),a(n(7177),t),a(n(8353),t),a(n(7224),t),a(n(683),t),a(n(7408),t),a(n(7997),t),a(n(8678),t),a(n(425),t),a(n(9992),t),a(n(2920),t),a(n(1368),t)},2849(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AssertionTranslator=void 0;const i=n(9237);t.AssertionTranslator=class AssertionTranslator{module;translator;constructor(e,t){this.module=e,this.translator=new i.Translator(t)}translate(e){e.name=this.translator.get([this.module,e.code,"name"])??e.name,e.description=this.translator.get([this.module,e.code,"description"])??e.description,e.metadata.description=this.translator.get([this.module,e.code,"results","I1"])??e.metadata.description}}},8941(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModuleTranslator=void 0;const i=n(2849),a=n(4873);t.ModuleTranslator=class ModuleTranslator{module;assertionTranslator;testTranslator;constructor(e,t){this.module=e,this.assertionTranslator=new i.AssertionTranslator(e,t),this.testTranslator=new a.TestTranslator(e,t)}translate(e){const t=e.modules[this.module];for(const e in t?.assertions??{}){const n=t?.assertions[e];n&&this.translateAssertion(n)}}translateAssertion(e){this.assertionTranslator.translate(e);for(const t of e.results??[])t.description=this.testTranslator.translate(e.code,t.resultCode);for(const t of e.results??[])if(t.verdict===e.metadata.outcome){e.metadata.description=t.description;break}}translateTest(e,t,n){return this.testTranslator.translate(e,t,n)}}},5007(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ReportTranslator=void 0;const a=i(n(8290)),r=n(9237),s=n(7105),l=n(8941);t.ReportTranslator=class ReportTranslator{locale;constructor(e){this.locale=r.LocaleFetcher.transform(e)}translate(e){const t=(0,a.default)(e);return this.translateModule(t,s.ModuleType.ACT_RULES),this.translateModule(t,s.ModuleType.WCAG_TECHNIQUES),this.translateModule(t,s.ModuleType.BEST_PRACTICES),t}translateModule(e,t){new l.ModuleTranslator(t,this.locale).translate(e)}}},4873(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TestTranslator=void 0;const i=n(9237);t.TestTranslator=class TestTranslator{module;translator;constructor(e,t){this.module=e,this.translator=t instanceof i.Translator?t:new i.Translator(t)}translate(e,t,n){let i=this.translator.get([this.module,e,"results",t]);if(i&&n)for(const e of Object.keys(n)||[])i=i.replace(new RegExp(`{${e}}`,"g"),n[e].toString());return i??""}}},9599(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(2849),t),a(n(8941),t),a(n(5007),t),a(n(4873),t)},9237(){(()=>{"use strict";var e={973(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(847),t),a(n(69),t),a(n(300),t)},69(e,t,n){var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),s=0;s<n.length;s++)"default"!==n[s]&&a(t,e,n[s]);return r(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.LocaleFetcher=void 0;const l=s(n(409));t.LocaleFetcher=class{static get(e){return l[e]}static transform(e){if(e){if("string"==typeof e){if(e in l)return{translate:l[e],fallback:l.en};throw new Error(`Locale "${e}" not supported.`)}return"translate"in e?this.verifyTranslationObject(e):{translate:e,fallback:l.en}}return{translate:l.en,fallback:l.en}}static verifyTranslationObject(e){const t={translate:l.en,fallback:l.en};if("string"==typeof e.translate){if(!(e.translate in l))throw new Error(`Locale "${e.translate}" not supported.`);t.translate=l[e.translate]}else t.translate=e.translate;if("string"==typeof e.fallback){if(!(e.fallback in l))throw new Error(`Locale "${e.fallback}" not supported.`);t.fallback=l[e.fallback]}else t.fallback=e.fallback;return t}}},258(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.en=void 0,t.en={"act-rules":{"QW-ACT-R1":{name:"HTML Page has a title",description:"This rule checks that the HTML page has a title.",results:{I1:"No test targets found.",P1:"The `title` element exists and it's not empty ('').",F1:"The `title` element doesn't exist.",F2:"The `title` element is empty ('').",F3:"The `title` element is not in the same context."}},"QW-ACT-R2":{name:"HTML has lang attribute",description:"This rule checks that the html element has a non-empty lang or xml:lang attribute.",results:{I1:"No test targets found.",P1:"The `lang` attribute exists and has a value.",F1:"The `lang` attribute doesn't exist or is empty ('')."}},"QW-ACT-R3":{name:"HTML lang and xml:lang match",description:"The rule checks that for the html element, there is no mismatch between the primary language in non-empty lang and xml:lang attributes, if both are used.",results:{I1:"No test targets found.",P1:"The `lang` and `xml:lang` attributes have the same value.",F1:"The `lang` and `xml:lang` attributes don't have the same value."}},"QW-ACT-R4":{name:"Meta-refresh no delay",description:"This rule checks that the meta element is not used for delayed redirecting or refreshing.",results:{I1:"No test targets found.",P1:"The test target refreshes/redirects immediately.",P2:"The test target refreshes/redirects after more than 20 hours.",F1:"The test target refreshes after {seconds} seconds.",F2:"The test target redirects after {seconds} seconds."}},"QW-ACT-R5":{name:"Validity of HTML Lang attribute",description:"This rule checks the lang or xml:lang attribute has a valid language subtag.",results:{I1:"No test targets found.",P1:"The `lang` attribute has a valid value.",F1:"The `lang` attribute does not have a valid value."}},"QW-ACT-R6":{name:"Image button has accessible name",description:"This rule checks that each image button element has an accessible name.",results:{I1:"No test targets found.",P1:"The test target has an accessible name.",F1:"The test target doesn't have an accessible name."}},"QW-ACT-R7":{name:"Orientation of the page is not restricted using CSS transform property",description:"This rule checks that page content is not restricted to either landscape or portrait orientation using CSS transform property.",results:{I1:"No test targets found.",P1:"A page where CSS transform property has rotateZ transform function conditionally applied on the orientation media feature which does not restrict the element to either portrait or landscape orientation.",F1:"A page where CSS transform property has rotate transform function conditionally applied on the orientation media feature which restricts the element to landscape orientation."}},"QW-ACT-R9":{name:"Links with identical accessible names have equivalent purpose",description:"This rule checks that links with identical accessible names resolve to the same resource or equivalent resources.",results:{I1:"No test targets found.",P1:"The `links` with the same accessible name have equal content.",F1:"The `links` with the same accessible name have different content. Verify is the content is equivalent."}},"QW-ACT-R10":{name:"`iframe` elements with identical accessible names have equivalent purpose",description:"This rule checks that `iframe` elements with identical accessible names embed the same resource or equivalent resources.",results:{I1:"No test targets found.",P1:"The `iframes` with the same accessible name have equal content.",F1:"The `iframes` with the same accessible name have different content."}},"QW-ACT-R11":{name:"Button has accessible name",description:"This rule checks that each button element has an accessible name.",results:{I1:"No test targets found.",P1:"The test target has an accessible name.",F1:"The test target doesn't have an accessible name, or it's empty ('')."}},"QW-ACT-R12":{name:"Link has accessible name",description:"This rule checks that each link has an accessible name.",results:{I1:"No test targets found.",P1:"The test target has an accessible name.",F1:"The test target doesn't have an accessible name, or it's empty ('')."}},"QW-ACT-R13":{name:"Element with `aria-hidden` has no focusable content",description:"This rule checks that elements with an aria-hidden attribute do not contain focusable elements.",results:{I1:"No test targets found.",P1:"The test target children are not focusable.",P2:"The test target is not focusable.",F1:"The test target has focusable children.",F2:"This test target is focusable."}},"QW-ACT-R14":{name:"meta viewport does not prevent zoom",description:"This rule checks that the meta element retains the user agent ability to zoom.",results:{I1:"No test targets found.",P1:"The `meta` element with a `name='viewport'` attribute doesn't define the `maximum-scale` and `user-scalable` values.",P2:"The `meta` element with a `name='viewport'` attribute retains the user agent ability to zoom.",F1:"The `meta` element with a `name='viewport'` attribute abolishes the user agent ability to zoom with user-scalable=no or maximum-scale < 2."}},"QW-ACT-R15":{name:"audio or video has no audio that plays automatically",description:"This rule checks that auto-play audio does not last for more than 3 seconds, or the audio has a control mechanism to stop or mute it.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R16":{name:"Form control has accessible name",description:"Form control has accessible name",results:{I1:"No test targets found.",P1:"The test target has an accessible name.",F1:"The test target accessible name doesn't exist or it's empty ('')."}},"QW-ACT-R17":{name:"Image has accessible name",description:"This rule checks that each image that is not marked as decorative, has an accessible name.",results:{I1:"No test targets found.",P1:"The test target is decorative.",P2:"The test target has an accessible name.",F1:"The test target doesn't have an accessible name."}},"QW-ACT-R18":{name:"`id` attribute value is unique",description:"This rule checks that all id attribute values on a single page are unique.",results:{I1:"No test targets found.",P1:"The test target has a unique `id` attribute.",F1:"Several elements have the same `id` attribute."}},"QW-ACT-R19":{name:"iframe element has accessible name",description:"This rule checks that each iframe element has an accessible name.",results:{I1:"No test targets found.",P1:"The test target has an accessible name.",F1:"The test target accessible name doesn't exist or it's empty ('')."}},"QW-ACT-R20":{name:"role attribute has valid value",description:"This rule checks that each role attribute has a valid value.",results:{I1:"No test targets found.",P1:"The test target has a valid `role` attribute.",F1:"The test target has an invalid `role` attribute."}},"QW-ACT-R21":{name:"svg element with explicit role has accessible name",description:"This rule checks that each SVG image element that is explicitly included in the accessibility tree has an accessible name.",results:{I1:"No test targets found.",P1:"The test target has an accessible name.",F1:"The test target accessible name doesn't exist or it's empty ('')."}},"QW-ACT-R22":{name:"Element within body has valid lang attribute",description:"This rule checks that the lang attribute of an element in the page body has a valid primary language subtag.",results:{I1:"No test targets found.",P1:"The test target has a valid `lang` attribute.",F1:"The test target has an invalid `lang` attribute."}},"QW-ACT-R23":{name:"video element visual content has accessible alternative",description:"This rule checks that video elements with audio have an alternative for the video content as audio or as text.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R24":{name:"autocomplete attribute has valid value",description:"This rule checks that the HTML autocomplete attribute has a correct value.",results:{I1:"No test targets found.",P1:"The test target has a valid `autocomplete` attribute.",F1:"The test target `autocomplete` attribute is not valid."}},"QW-ACT-R25":{name:"ARIA state or property is permitted",description:"This rule checks that WAI-ARIA states or properties are allowed for the element they are specified on.",results:{I1:"No test targets found.",P1:"The `{attr}` property is supported or inherited by the `role` {role}.",F1:"The `{attr}` property is neither inherited nor supported by the `role` {role}."}},"QW-ACT-R26":{name:"video element auditory content has accessible alternative",description:"This rule checks that video elements have an alternative for information conveyed through audio.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R27":{name:"aria-* attribute is defined in WAI-ARIA",description:"This rule checks that each aria-* attribute specified is defined in ARIA 1.1.",results:{I1:"No test targets found.",P1:"All aria-* attributes in this element are defined in ARIA 1.1.",F1:"One or more aria-* attributes are not defined in ARIA 1.1."}},"QW-ACT-R28":{name:"Element with role attribute has required states and properties",description:"This rule checks that elements that have an explicit role also specify all required states and properties.",results:{I1:"No test targets found.",P1:"The test target required attributes are listed.",P2:"The test target `role` doesn't have required state or property",F1:"The test target has unlisted required states or properties."}},"QW-ACT-R29":{name:"Audio element content has text alternative",description:"This rule checks if audio only elements have a text alternative available.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R30":{name:"Visible label is part of accessible name",description:"This rule checks that interactive elements labeled through their content have their visible label as part of their accessible name.",results:{I1:"No test targets found.",P1:"The complete visible text content of the test target either matches or is contained within its accessible name.",F1:"The test target doesn't have an accessible name.",F2:"The complete visible text content of the test target neither matches or is contained within its accessible name."}},"QW-ACT-R31":{name:"Video element visual-only content has accessible alternative",description:"This rule checks that video elements without audio have an alternative available.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R32":{name:"video element visual content has strict accessible alternative",description:"This rule checks that video elements with audio have audio description.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R33":{name:"ARIA required context role",description:"This rule checks that an element with an explicit semantic role exists inside its required context.",results:{I1:"No test targets found.",P1:"The test target parent has the required context `role`.",F1:"The test target parent doesn't have the required context `role`."}},"QW-ACT-R34":{name:"ARIA state or property has valid value",description:"This rule checks that each ARIA state or property has a valid value.",results:{I1:"No test targets found.",P1:"The test target `{attr}` attribute has a valid value.",F1:"The test target `{attr}` attribute has an invalid value."}},"QW-ACT-R35":{name:"Heading has accessible name",description:"This rule applies to any HTML element with the semantic role of heading that is included in the accessibility tree.",results:{I1:"No test targets found.",P1:"The test target has a non-empty accessible name.",F1:"The test target accessible name doesn't exist or it's empty ('')."}},"QW-ACT-R36":{name:"Headers attribute specified on a cell refers to cells in the same table element",description:"This rule checks that the headers attribute on a cell refer to other cells in the same table element with a semantic role of columnheader or rowheader.",results:{I1:"No test targets found.",P1:"All headers attributes refer to a cell with a semantic role of columnheader of rowheader within the same table.",F1:"The headers attribute `{attr}` refers to an ID that does not exist within the same table.",F2:"The headers attribute `{attr}` refers to an element inside the same table which does not have a role of rowheader or columnheader."}},"QW-ACT-R37":{name:"Text has minimum contrast",description:"This rule checks that the highest possible contrast of every text character with its background meets the minimal contrast requirement.",results:{I1:"No test targets found.",P1:"Element has contrast ratio higher than minimum.",P2:"Element doesn't have human language text.",P3:"Element has gradient with contrast ratio higher than minimum.",W1:"Element has text-shadow that needs manual verification.",W2:"Element has an image on background.",W3:"Element has an gradient that we can't verify.",F1:"Element has contrast ratio lower than minimum.",F2:"Element has gradient with contrast ratio lower than minimum."}},"QW-ACT-R38":{name:"ARIA required owned elements",description:"This rule checks that an element with an explicit semantic role has at least one of its required owned elements.",results:{I1:"No test targets found.",P1:"The test target only owns elements with correct role.",F1:"The test target owns elements that doesn't have the correct role."}},"QW-ACT-R39":{name:"All table header cells have assigned data cells",description:"This rule checks that each table header has assigned data cells in a table element.",results:{I1:"No test targets found.",P1:"The column header element has at least one assigned cell.",F1:"The column header element does not have at least one assigned cell."}},"QW-ACT-R40":{name:"Zoomed text node is not clipped with CSS overflow",description:"This rule checks that text nodes are not unintentionally clipped by overflow, when a page is zoomed to 200% on 1280 by 1024 viewport.",results:{I1:"No test targets found.",W1:"Check if each ancestor or the text node is not clipped by overflow."}},"QW-ACT-R41":{name:"Error message describes invalid form field value",description:"This rule checks that text error messages provided when the user completes a form field with invalid values or using an invalid format, identify the cause of the error or how to fix the error.",results:{I1:"No test targets found.",W1:"Check that text error messages provided, identify the cause of the error or how to fix the error."}},"QW-ACT-R42":{name:"Object element has non-empty accessible name",description:"This rule checks that each `object` element has a non-empty accessible name.",results:{I1:"No test targets found.",P1:"The test target has a non-empty accessible name.",F1:"The test target accessible name doesn't exist or it's empty ('')."}},"QW-ACT-R43":{name:"Scrollable element is keyboard accessible",description:"This rule checks that scrollable elements can be scrolled by keyboard",results:{I1:"No test targets found.",P1:"This scrollable section element is included in sequential focus navigation.",F1:"This vertically/horizontally scrollable section element is not included in sequential focus navigation, nor does it have any descendants that are."}},"QW-ACT-R44":{name:"Links with identical accessible names and context serve equivalent purpose",description:"This rule checks that links with identical accessible names and context resolve to the same or equivalent resources.",results:{I1:"No test targets found.",P1:"The `links` with the same accessible name have equal content.",W1:"The `links` with the same accessible name have different content. Verify is the content is equivalent."}},"QW-ACT-R48":{name:"Element marked as decorative is not exposed",description:"This rule checks that elements marked as decorative either are not included in the accessibility tree, or have a presentational role.",results:{I1:"No test targets found.",P1:"The test target is not in the accessibility tree.",F1:"The test target is in the accessibility tree."}},"QW-ACT-R49":{name:"Audio or video that plays automatically has no audio that lasts more than 3 seconds",description:"audio or video that plays automatically does not output audio for more than 3 seconds.",results:{I1:"No test targets found.",P1:"The test target plays for 3 seconds or less.",W1:"Can't collect data from the test target element.",W2:"Check if test target has a visible control mechanism."}},"QW-ACT-R50":{name:"audio or video that plays automatically has a control mechanism",description:"audio or video that plays automatically must have a control mechanism.",results:{I1:"No test targets found.",P1:"The test target has a visible control mechanism.",W1:"Can't collect data from the test target element.",W2:"Check if test target has a visible control mechanism."}},"QW-ACT-R51":{name:"video element visual-only content is media alternative for text",description:"This rule checks non-streaming silent video is a media alternative for text on the page.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"Check that the content in the video matches the information in the text."}},"QW-ACT-R52":{name:"video element visual-only content has description track",description:"This rule checks that description tracks that come with non-streaming video elements, without audio, are descriptive.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"Check if visual content has an accessible alternative."}},"QW-ACT-R53":{name:"video element visual-only content has transcript",description:"Non-streaming video elements without audio must have all visual information available in a transcript.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"Check if visual content has an accessible alternative."}},"QW-ACT-R54":{name:"video element visual-only content has audio track alternative",description:"Non-streaming video elements without audio must have an audio alternative.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"Check if visual content has an accessible alternative."}},"QW-ACT-R55":{name:"video element visual content has audio description",description:"This rule checks that non-streaming video elements have all visual information also contained in the audio.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"The test target has a sound track but we can't verify the volume. Check if the test target has audio and if it does check if visual content has an accessible alternative."}},"QW-ACT-R56":{name:"video element content is media alternative for text",description:"This rule checks non-streaming video is a media alternative for text on the page.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"Check that the content in the video matches the information in the text."}},"QW-ACT-R57":{name:"video element visual content has description track",description:"This rule checks that description tracks that come with non-streaming video elements are descriptive.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"The test target has a sound track but we can't verify the volume. Check if the test target has audio and if it does check if visual content has an accessible alternative."}},"QW-ACT-R58":{name:"audio element content has transcript",description:"Non-streaming audio elements must have a text alternative for all included auditory information.",results:{I1:"No test targets found.",W1:"Check if the test target audio has text-alternative."}},"QW-ACT-R59":{name:"audio element content is media alternative for text",description:"This rule checks audio is a media alternative for text on the page.",results:{I1:"No test targets found.",W1:"Check that the content in the audio matches the information in the text."}},"QW-ACT-R60":{name:"video element auditory content has captions",description:"This rule checks that captions are available for audio information in non-streaming video elements.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"The test target has a sound track but we can't verify the volume. Check if the test target has audio and if it does check if audio content has matching captions."}},"QW-ACT-R61":{name:"Audio and visuals of video element have transcript",description:"This rule checks that non-streaming video elements have all audio and visual information available in a transcript.",results:{I1:"No test targets found.",W1:"Can't collect data from the test target.",W2:"The test target has a sound track but we can't verify the volume. Check if the test target has audio and a transcript. If it does check if the transcript contains all the visual and audio information of the video."}},"QW-ACT-R62":{name:"Element in sequential focus order has visible focus",description:"This rule checks that each element in sequential focus order has some visible focus indication.",results:{I1:"No test targets found.",W1:"Check if the element has some visible focus indication"}},"QW-ACT-R63":{name:"Document has a landmark with non-repeated content",description:"This rule checks that each page has an element with a landmark semantic role starting with non-repeated content",results:{I1:"No test targets found.",P1:"The page doesn't have repeated content.",W1:"Check either there is no non-repeated content after repeated content or there exists an element for which all the following are true: - the element has semantic role inheriting from landmark; and - the first perceivable content (in tree order in the flat tree) which is an inclusive descendant of the element is non-repeated content after repeated content; and - the element is included in the accessibility tree."}},"QW-ACT-R64":{name:"Document has heading for non-repeated content",description:"This rule checks that the non-repeated content contains a heading",results:{I1:"No test targets found.",P1:"The page doesn't have repeated content.",W1:"Check either there is no non-repeated content after repeated content or there exists an element for which all the following are true: - the element is non-repeated content after repeated content; and - the element has a semantic role of heading; and - the element is visible; and - the element is included in the accessibility tree."}},"QW-ACT-R65":{name:"Element with presentational children has no focusable content",description:"This rule checks that elements with a role that makes its children presentational do not contain focusable elements.",results:{I1:"No test targets found.",P1:"The element doesn't have descendants in the flat tree that are part of sequential focus navigation.",F1:"The element has descendants in the flat tree that are part of sequential focus navigation."}},"QW-ACT-R66":{name:"Menuitem has non-empty accessible name",description:"This rule checks that each element with a menuitem role has a non-empty accessible name.",results:{I1:"No test targets found.",P1:"The test target has a non-empty accessible name.",F1:"The test target accessible name doesn't exist or it's empty ('')."}},"QW-ACT-R67":{name:"Letter spacing in style attributes is not !important",description:"This rule checks that the style attribute is not used to prevent adjusting letter-spacing by using !important, except if it's at least 0.12 times the font size.",results:{I1:"No test targets found.",P1:"The letter-spacing property is not !important.",P2:"The letter-spacing is at least 0.12 times the font-size.",P3:"The cascaded letter-spacing is not the declared value.",F1:"CSS styles prevent the letter-spacing to be above the minimum value."}},"QW-ACT-R68":{name:"Line height in style attributes is not !important",description:"This rule checks that the style attribute is not used to prevent adjusting line-height by using !important, except if it's at least 1.5 times the font size.",results:{I1:"No test targets found.",P1:"The line-height property is not !important.",P2:"The line-height is at least 1.5 times the font-size.",P3:"The cascaded line-height is not the declared value.",F1:"CSS styles prevent the line-height to be above the minimum value."}},"QW-ACT-R69":{name:"Word spacing in style attributes is not !important",description:"This rule checks that the style attribute is not used to prevent adjusting word-spacing by using !important, except if it's at least 0.16 times the font size.",results:{I1:"No test targets found.",P1:"The word-spacing property is not !important.",P2:"The word-spacing is at least 0.16 times the font-size.",P3:"The cascaded word-spacing is not the declared value.",F1:"CSS styles prevent the word-spacing to be above the minimum value."}},"QW-ACT-R70":{name:"iframe with negative tabindex has no interactive elements",description:"This rule checks that `iframe` elements with a negative `tabindex` attribute value contain no interactive elements.",results:{I1:"No test targets found.",P1:"The nested browsing context does not include elements that are visible and part of the sequential focus navigation.",F1:"The nested browsing context includes elements that are visible and part of the sequential focus navigation."}},"QW-ACT-R71":{name:"`meta` element has no refresh delay (no exception)",description:"This rule checks that the `meta` element is not used for delayed redirecting or refreshing.",results:{I1:"No test targets found.",P1:"The test target refreshes/redirects immediately.",F1:"The test target refreshes after {seconds} seconds.",F2:"The test target redirects after {seconds} seconds."}},"QW-ACT-R72":{name:"First focusable element is link to non-repeated content",description:"This rule checks that the first focusable element is a link to non-repeated content in the page",results:{I1:"No test targets found.",W1:"Check that the first focusable element has an accessible name that communicates that it skips content",W2:"Check that the first focusable element skips to the main content and its accessible name communicates so.",F1:"The first focusable element is not keyboard actionable.",F2:"The first focusable element is not in the accessibility tree.",F3:"The first focusable element does not have the role of link.",F4:"The first focusable element does not skip to the main content.",F5:"The page does not have focusable elements."}},"QW-ACT-R73":{name:"Block of repeated content is collapsible",description:"This rule checks that repeated blocks of content are collapsible.",results:{I1:"No test targets found.",P1:"The page doesn't have repeated content.",W1:"For each block of repeated content in each test target, which is before (in the flat tree) at least one node of non-repeated content after repeated content, check that all the following are true: - there exists an instrument to make all nodes in this block not visible; and - there exists an instrument to remove all nodes in this block from the accessibility tree."}},"QW-ACT-R74":{name:"Document has an instrument to move focus to non-repeated content",description:"This rule checks that there is an instrument to move focus to non-repeated content in the page.",results:{I1:"No test targets found.",P1:"The page doesn't have repeated content.",W1:"The page has one or more instrument(s) to move focus. Check if any of these instrument(s) is being used before a block of repeated content, and the focus is moved to just before a block of non-repeated content.",W2:"Check if the page has any instrument(s) to move focus. Check if any of these instrument(s) is being used before a block of repeated content, and the focus is moved to just before a block of non-repeated content."}},"QW-ACT-R75":{name:"Bypass Blocks of Repeated Content",description:"This rule checks that each page has a mechanism to bypass repeated blocks of content.",results:{I1:"No test targets found.",P1:"The rule passed because of the rule ",W1:"The rule can't tell because of the rule ",F1:"The rule failed because of the rule "}},"QW-ACT-R76":{name:"Text has enhanced contrast",description:"This rule checks that the highest possible contrast of every text character with its background meets the enhanced contrast requirement.",results:{I1:"No test targets found.",P1:"Element has contrast ratio higher than minimum.",P2:"Element doesn't have human language text.",P3:"Element has gradient with contrast ratio higher than minimum.",W1:"Element has text-shadow that needs manual verification.",W2:"Element has an image on background.",W3:"Element has an gradient that we can't verify.",F1:"Element has contrast ratio lower than minimum.",F2:"Element has gradient with contrast ratio lower than minimum."}},"QW-ACT-R77":{name:"ARIA required ID references exist",description:"This rule checks that every ID reference required by WAI-ARIA exists.",results:{I1:"No test targets found.",P1:"Referenced element exists.",F1:"Referenced element does not exist."}}},"wcag-techniques":{"QW-WCAG-T1":{name:"Providing text alternatives for the area elements of image maps",description:"This technique checks the text alternative of area elements of images maps",results:{I1:"No test targets found.",W1:"Please verify that the `alt` attribute describes correctly the corresponding area of the image.",F1:"The `alt` attribute doesn't exist or is empty ('')."}},"QW-WCAG-T2":{name:"Using caption elements to associate data table captions with data tables",description:"This technique checks the caption element is correctly use on tables",results:{I1:"No test targets found.",W1:"Please verify that the `caption` element identifies the table correctly.",F1:"The `caption` element doesn't exist o