├── logs └── .keep ├── .nvmrc ├── test ├── config │ ├── defaults.js │ ├── mobile.js │ ├── index.js │ └── local.js └── assessmentSpecs │ ├── specs │ ├── embedHasAssociatedNoEmbed │ │ └── assets │ │ │ ├── history_of_rome.mov │ │ │ └── transcript_history_rome.htm │ ├── imgHasAlt │ │ ├── assets │ │ │ └── rex.jpg │ │ ├── imgHasAlt-nomatch.html │ │ └── imgHasAlt.html │ ├── headersHaveText │ │ ├── assets │ │ │ └── rex.jpg │ │ └── headersHaveText.html │ ├── imgAltIsTooLong │ │ ├── assets │ │ │ └── rex.jpg │ │ └── imgAltIsTooLong.html │ ├── aMustContainText │ │ └── assets │ │ │ └── rex.jpg │ ├── imgAltIsDifferent │ │ ├── assets │ │ │ └── rex.jpg │ │ └── imgAltIsDifferent.html │ ├── newWindowIsOpened │ │ ├── assets │ │ │ └── go.gif │ │ └── newWindowIsOpened.html │ ├── aImgAltNotRepetitive │ │ └── assets │ │ │ └── rex.jpg │ ├── colorFontContrast │ │ └── assets │ │ │ ├── fish.gif │ │ │ ├── kids.jpg │ │ │ └── quail.png │ ├── imgAltNotPlaceHolder │ │ └── assets │ │ │ └── rex.jpg │ ├── labelMustNotBeEmpty │ │ └── assets │ │ │ └── name.jpg │ ├── documentStrictDocType │ │ ├── assets │ │ │ └── rex.jpg │ │ ├── documentStrictDocType-fail.html │ │ ├── documentStrictDocType.html │ │ ├── documentStrictDocType-fail-2.html │ │ ├── documentStrictDocType-fail-3.html │ │ └── documentStrictDocType-pass-2.html │ ├── imgAltNotEmptyInAnchor │ │ └── assets │ │ │ └── rex.jpg │ ├── imgNonDecorativeHasAlt │ │ └── assets │ │ │ └── rex.jpg │ ├── imgShouldNotHaveTitle │ │ ├── assets │ │ │ └── rex.jpg │ │ ├── imgShouldNotHaveTitle-nomatch.html │ │ └── imgShouldNotHaveTitle.html │ ├── imgWithMapHasUseMap │ │ ├── assets │ │ │ └── image.gif │ │ ├── imgWithMapHasUseMap-nomatch.html │ │ └── imgWithMapHasUseMap.html │ ├── inputImageAltIsShort │ │ └── assets │ │ │ ├── input.jpg │ │ │ └── name.jpg │ ├── animatedGifMayBePresent │ │ ├── assets │ │ │ ├── fish.gif │ │ │ ├── kids.jpg │ │ │ └── fishswim.gif │ │ └── animatedGifMayBePresent.html │ ├── areaAltRefersToText │ │ ├── assets │ │ │ └── welcome.gif │ │ ├── areaAltRefersToText-nomatch.html │ │ └── areaAltRefersToText.html │ ├── imgImportantNoSpacerAlt │ │ ├── assets │ │ │ ├── rex.jpg │ │ │ ├── spacer.gif │ │ │ └── big-fail.png │ │ └── imgImportantNoSpacerAlt.html │ ├── imgServerSideMapNotUsed │ │ ├── assets │ │ │ └── image.gif │ │ └── imgServerSideMapNotUsed-nomatch.html │ ├── objectMustContainText │ │ └── assets │ │ │ └── clock.png │ ├── documentHasTitleElement │ │ ├── documentHasTitleElement-nomatch.html │ │ ├── documentHasTitleElement-pass.html │ │ └── documentHasTitleElement-fail.html │ ├── documentTitleDescribesDocument │ │ ├── documentTitleDescribesDocument-nomatch.html │ │ └── documentTitleDescribesDocument.html │ ├── inputImageAltIsNotFileName │ │ └── assets │ │ │ ├── name.jpg │ │ │ └── input.jpg │ ├── inputImageAltNotRedundant │ │ ├── assets │ │ │ └── name.jpg │ │ └── inputImageAltNotRedundant.html │ ├── colorBackgroundImageContrast │ │ └── assets │ │ │ ├── fish.gif │ │ │ ├── kids.jpg │ │ │ └── quail.png │ ├── inputImageAltIsNotPlaceholder │ │ └── assets │ │ │ └── name.jpg │ ├── areaAltIdentifiesDestination │ │ ├── assets │ │ │ └── library.gif │ │ ├── areaAltIdentifiesDestination.html │ │ └── areaAltIdentifiesDestination-nomatch.html │ ├── tableLayoutMakesSenseLinearized │ │ └── assets │ │ │ └── logo.png │ ├── frameIsNotUsed │ │ ├── assets │ │ │ └── frame-a.html │ │ ├── frameIsNotUsed-nomatch.html │ │ └── frameIsNotUsed.html │ ├── imgMapAreasHaveDuplicateLink │ │ └── assets │ │ │ └── navigation.png │ ├── headerH1Format │ │ ├── headerH1Format-nomatch.html │ │ └── headerH1Format.html │ ├── aAdjacentWithSameResourceShouldBeCombined │ │ └── assets │ │ │ ├── go.gif │ │ │ └── bullet.gif │ ├── aLinkTextDoesNotBeginWithRedundantWord │ │ └── assets │ │ │ └── star.gif │ ├── colorElementBehindBackgroundImageContrast │ │ └── assets │ │ │ ├── fish.gif │ │ │ ├── kids.jpg │ │ │ └── quail.png │ ├── imageMapServerSide │ │ ├── imageMapServerSide-nomatch.html │ │ └── imageMapServerSide.html │ ├── formHasSubmitButton │ │ └── formHasSubmitButton-nomatch.html │ ├── documentTitleNotEmpty │ │ ├── documentTitleNotEmpty-fail.html │ │ └── documentTitleNotEmpty.html │ ├── formHasGoodErrorMessage │ │ └── formHasGoodErrorMessage-nomatch.html │ ├── headerH2Format │ │ ├── headerH2Format-nomatch.html │ │ └── headerH2Format.html │ ├── headerH3Format │ │ ├── headerH3Format-nomatch.html │ │ └── headerH3Format.html │ ├── headerH4Format │ │ ├── headerH4Format-nomatch.html │ │ └── headerH4Format.html │ ├── headerH5Format │ │ ├── headerH5Format-nomatch.html │ │ └── headerH5Format.html │ ├── headerH6Format │ │ ├── headerH6Format-nomatch.html │ │ └── headerH6Format.html │ ├── tableIsGrouped │ │ └── tableIsGrouped-nomatch.html │ ├── documentReadingDirection │ │ ├── documentReadingDirection-nomatch.html │ │ └── documentReadingDirection.html │ ├── fieldsetHasLabel │ │ └── fieldsetHasLabel-nomatch.html │ ├── formErrorMessageHelpsUser │ │ └── formErrorMessageHelpsUser-nomatch.html │ ├── framesHaveATitle │ │ └── framesHaveATitle-nomatch.html │ ├── iframeMustNotHaveLongdesc │ │ ├── iframeMustNotHaveLongdesc-nomatch.html │ │ └── iframeMustNotHaveLongdesc.html │ ├── inputImageHasAlt │ │ └── inputImageHasAlt-nomatch.html │ ├── marqueeIsNotUsed │ │ ├── marqueeIsNotUsed-nomatch.html │ │ └── marqueeIsNotUsed.html │ ├── svgContainsTitle │ │ └── svgContainsTitle-nomatch.html │ ├── tableUsesCaption │ │ └── tableUsesCaption-nomatch.html │ ├── framesetIsNotUsed │ │ └── framesetIsNotUsed-nomatch.html │ ├── imgAltIsSameInText │ │ ├── imgAltIsSameInText-nomatch.html │ │ └── imgAltIsSameInText.html │ ├── legendTextNotEmpty │ │ └── legendTextNotEmpty-nomatch.html │ ├── frameTitlesNotEmpty │ │ └── frameTitlesNotEmpty-nomatch.html │ ├── objectMustHaveEmbed │ │ └── objectMustHaveEmbed-nomatch.html │ ├── objectMustHaveTitle │ │ ├── objectMustHaveTitle-nomatch.html │ │ └── objectMustHaveTitle.html │ ├── scriptsDoNotFlicker │ │ ├── scriptsDoNotFlicker-nomatch.html │ │ └── scriptsDoNotFlicker.html │ ├── documentLangNotIdentified │ │ ├── documentLangNotIdentified-fail.html │ │ └── documentLangNotIdentified.html │ ├── documentMetaNotUsedWithTimeout │ │ ├── documentMetaNotUsedWithTimeout-nomatch.html │ │ └── documentMetaNotUsedWithTimeout.html │ ├── frameSrcIsAccessible │ │ └── frameSrcIsAccessible-nomatch.html │ ├── objectDoesNotFlicker │ │ ├── objectDoesNotFlicker-nomatch.html │ │ └── objectDoesNotFlicker.html │ ├── tableDataShouldHaveTh │ │ └── tableDataShouldHaveTh-nomatch.html │ ├── videoProvidesCaptions │ │ └── videoProvidesCaptions-nomatch.html │ ├── liDontUseImageForBullet │ │ ├── liDontUseImageForBullet-nomatch.html │ │ └── liDontUseImageForBullet.html │ ├── tableComplexHasSummary │ │ └── tableComplexHasSummary-nomatch.html │ ├── documentTitleIsNotPlaceholder │ │ ├── documentTitleIsNotPlaceholder-fail.html │ │ ├── documentTitleIsNotPlaceholder-fail-2.html │ │ ├── documentTitleIsNotPlaceholder-fail-3.html │ │ └── documentTitleIsNotPlaceholder.html │ ├── labelDoesNotContainInput │ │ ├── labelDoesNotContainInput-nomatch.html │ │ └── labelDoesNotContainInput.html │ ├── objectUIMustBeAccessible │ │ ├── objectUIMustBeAccessible-nomatch.html │ │ └── objectUIMustBeAccessible.html │ ├── embedMustHaveAltAttribute │ │ ├── embedMustHaveAltAttribute-nomatch.html │ │ └── embedMustHaveAltAttribute.html │ ├── objectDoesNotUseColorAlone │ │ ├── objectDoesNotUseColorAlone-nomatch.html │ │ └── objectDoesNotUseColorAlone.html │ ├── objectWithClassIDHasNoText │ │ ├── objectWithClassIDHasNoText-nomatch.html │ │ └── objectWithClassIDHasNoText.html │ ├── scriptsDoNotUseColorAlone │ │ ├── scriptsDoNotUseColorAlone-nomatch.html │ │ └── scriptsDoNotUseColorAlone.html │ ├── documentAutoRedirectNotUsed │ │ ├── documentAutoRedirectNotUsed-nomatch.html │ │ ├── documentAutoRedirectNotUsed-pass.html │ │ └── documentAutoRedirectNotUsed-fail.html │ ├── framesAreUsedToGroupContent │ │ ├── framesAreUsedToGroupContent-nomatch.html │ │ └── framesAreUsedToGroupContent-fail.html │ ├── imgNotReferredToByColorAlone │ │ └── imgNotReferredToByColorAlone-nomatch.html │ ├── linkUsedForAlternateContent │ │ ├── linkUsedForAlternateContent-nomatch.html │ │ ├── linkUsedForAlternateContent-fail.html │ │ └── linkUsedForAlternateContent-pass.html │ ├── linkUsedToDescribeNavigation │ │ └── linkUsedToDescribeNavigation-nomatch.html │ ├── noembedHasEquivalentContent │ │ ├── noembedHasEquivalentContent-nomatch.html │ │ └── noembedHasEquivalentContent.html │ ├── objectInterfaceIsAccessible │ │ ├── objectInterfaceIsAccessible-nomatch.html │ │ └── objectInterfaceIsAccessible.html │ ├── scriptInBodyMustHaveNoscript │ │ ├── scriptInBodyMustHaveNoscript-nomatch.html │ │ ├── scriptInBodyMustHaveNoscript-fail.html │ │ └── scriptInBodyMustHaveNoscript-pass.html │ ├── tableCaptionIdentifiesTable │ │ └── tableCaptionIdentifiesTable-nomatch.html │ ├── tableWithBothHeadersUseScope │ │ └── tableWithBothHeadersUseScope-nomatch.html │ ├── areaHasAltValue │ │ ├── areaHasAltValue-nomatch.html │ │ └── areaHasAltValue.html │ ├── appletsDoNotFlicker │ │ ├── appletsDoNotFlicker-nomatch.html │ │ └── appletsDoNotFlicker.html │ ├── doctypeProvided │ │ ├── doctypeProvided-fail.html │ │ └── doctypeProvided.html │ ├── documentTitleIsShort │ │ ├── documentTitleIsShort.html │ │ └── documentTitleIsShort-fail.html │ ├── framesetMustHaveNoFramesSection │ │ └── framesetMustHaveNoFramesSection-nomatch.html │ ├── imgAltEmptyForDecorativeImages │ │ └── imgAltEmptyForDecorativeImages-nomatch.html │ ├── imgAltIdentifiesLinkDestination │ │ ├── imgAltIdentifiesLinkDestination-nomatch.html │ │ └── imgAltIdentifiesLinkDestination.html │ ├── objectContentUsableWhenDisabled │ │ ├── objectContentUsableWhenDisabled-nomatch.html │ │ └── objectContentUsableWhenDisabled.html │ ├── objectShouldHaveLongDescription │ │ ├── objectShouldHaveLongDescription-nomatch.html │ │ └── objectShouldHaveLongDescription.html │ ├── frameRelationshipsMustBeDescribed │ │ └── frameRelationshipsMustBeDescribed-nomatch.html │ ├── areaLinksToSoundFile │ │ └── areaLinksToSoundFile-nomatch.html │ ├── objectTextUpdatesWhenObjectChanges │ │ ├── objectTextUpdatesWhenObjectChanges-nomatch.html │ │ └── objectTextUpdatesWhenObjectChanges.html │ ├── radioMarkedWithFieldgroupAndLegend │ │ └── radioMarkedWithFieldgroupAndLegend-nomatch.html │ ├── appletUIMustBeAccessible │ │ ├── appletUIMustBeAccessible-nomatch.html │ │ └── appletUIMustBeAccessible.html │ ├── appletsDonotUseColorAlone │ │ ├── appletsDonotUseColorAlone-nomatch.html │ │ └── appletsDonotUseColorAlone.html │ ├── noframesSectionMustHaveTextEquivalent │ │ └── noframesSectionMustHaveTextEquivalent-nomatch.html │ ├── aMultimediaTextAlternative │ │ └── aMultimediaTextAlternative-inapplicable.html │ ├── blinkIsNotUsed │ │ ├── blinkIsNotUsed-nomatch.html │ │ └── blinkIsNotUsed.html │ ├── objectLinkToMultimediaHasTextTranscript │ │ ├── objectLinkToMultimediaHasTextTranscript-nomatch.html │ │ └── objectLinkToMultimediaHasTextTranscript.html │ ├── objectProvidesMechanismToReturnToParent │ │ └── objectProvidesMechanismToReturnToParent-nomatch.html │ ├── fontIsNotUsed │ │ ├── fontIsNotUsed-nomatch.html │ │ └── fontIsNotUsed.html │ ├── appletTextEquivalentsGetUpdated │ │ ├── appletTextEquivalentsGetUpdated-nomatch.html │ │ └── appletTextEquivalentsGetUpdated.html │ ├── scriptContentAccessibleWithScriptsTurnedOff │ │ ├── scriptContentAccessibleWithScriptsTurnedOff-nomatch.html │ │ └── scriptContentAccessibleWithScriptsTurnedOff.html │ ├── aTitleDescribesDestination │ │ ├── aTitleDescribesDestination-nomatch.html │ │ └── aTitleDescribesDestination.html │ ├── aLinksToSoundFilesNeedTranscripts │ │ └── aLinksToSoundFilesNeedTranscripts-inapplicable.html │ ├── blockquoteNotUsedForIndentation │ │ ├── blockquoteNotUsedForIndentation-nomatch.html │ │ └── blockquoteNotUsedForIndentation.html │ ├── cssDocumentMakesSenseStyleTurnedOff │ │ └── cssDocumentMakesSenseStyleTurnedOff.html │ ├── formButtonsHaveValue │ │ └── formButtonsHaveValue-nomatch.html │ ├── aLinksToMultiMediaRequireTranscript │ │ └── aLinksToMultiMediaRequireTranscript-inapplicable.html │ ├── appletProvidesMechanismToReturnToParent │ │ └── appletProvidesMechanismToReturnToParent-nomatch.html │ ├── basefontIsNotUsed │ │ ├── basefontIsNotUsed-nomatch.html │ │ └── basefontIsNotUsed.html │ ├── documentContentReadableWithoutStylesheets │ │ └── documentContentReadableWithoutStylesheets.html │ ├── scriptOnmouseoverHasOnfocus │ │ └── scriptOnmouseoverHasOnfocus.html │ ├── aMustNotHaveJavascriptHref │ │ ├── aMustNotHaveJavascriptHref.html │ │ └── aMustNotHaveJavascriptHref-nomatch.html │ ├── siteMap │ │ └── siteMap.html │ ├── iIsNotUsed │ │ ├── iIsNotUsed-nomatch.html │ │ └── iIsNotUsed.html │ ├── boldIsNotUsed │ │ ├── boldIsNotUsed-nomatch.html │ │ └── boldIsNotUsed.html │ ├── KINGStrongList │ │ └── KINGStrongList.html │ ├── documentLangIsISO639Standard │ │ ├── documentLangIsISO639Standard-inapplicable.html │ │ ├── documentLangIsISO639Standard.html │ │ └── documentLangIsISO639Standard-fail.html │ ├── inputElementsDontHaveAlt │ │ ├── inputElementsDontHaveAlt-nomatch.html │ │ └── inputElementsDontHaveAlt.html │ ├── KINGUseCurrencyAsSymbol │ │ └── KINGUseCurrencyAsSymbol.html │ ├── aMustHaveTitle │ │ └── aMustHaveTitle.html │ ├── KINGUsePercentageWithSymbol │ │ └── KINGUsePercentageWithSymbol.html │ ├── documentAcronymsHaveElement │ │ └── documentAcronymsHaveElement.html │ ├── scriptOnmousemove │ │ └── scriptOnmousemove.html │ ├── linkDoesNotChangeContextOnFocus │ │ └── linkDoesNotChangeContextOnFocus.html │ ├── scriptOnmouseupHasOnkeyup │ │ └── scriptOnmouseupHasOnkeyup.html │ ├── listNotUsedForFormatting │ │ └── listNotUsedForFormatting.html │ ├── scriptOndblclickRequiresOnKeypress │ │ └── scriptOndblclickRequiresOnKeypress.html │ ├── preShouldNotBeUsedForTabularLayout │ │ └── preShouldNotBeUsedForTabularLayout.html │ ├── scriptOnmousedownRequiresOnKeypress │ │ └── scriptOnmousedownRequiresOnKeypress.html │ ├── whiteSpaceInWord │ │ └── whiteSpaceInWord.html │ ├── frameTitlesNotPlaceholder │ │ └── frameTitlesNotPlaceholder.html │ ├── inputTextValueNotEmpty │ │ └── inputTextValueNotEmpty.html │ ├── textIsNotSmall │ │ └── textIsNotSmall.html │ ├── headerH1 │ │ └── headerH1.html │ ├── headerH2 │ │ └── headerH2.html │ ├── headerH3 │ │ └── headerH3.html │ ├── scriptOnFocusChangeBackgroundOrBorder │ │ └── scriptOnFocusChangeBackgroundOrBorder.html │ ├── aLinksAreSeparatedByPrintableCharacters │ │ └── aLinksAreSeparatedByPrintableCharacters.html │ ├── blockquoteUseForQuotations │ │ └── blockquoteUseForQuotations.html │ ├── headerH4 │ │ └── headerH4.html │ ├── skipToContentLinkProvided │ │ ├── skipToContentLinkProvided.html │ │ ├── skipToContentLinkProvided-fail.html │ │ ├── skipToContentLinkProvided-pass-2.html │ │ └── skipToContentLinkProvided-fail-2.html │ ├── documentAbbrIsUsed │ │ └── documentAbbrIsUsed.html │ ├── scriptOnmouseoutHasOnmouseblur │ │ └── scriptOnmouseoutHasOnmouseblur.html │ ├── whiteSpaceNotUsedForFormatting │ │ └── whitespaceNotUsedForFormatting.html │ └── aLinksNotSeparatedBySymbols │ │ └── aLinksNotSeparatedBySymbols.html │ └── templates │ ├── htmlTemplate.html │ ├── assessmentHtmlTemplate.html │ └── componentTemplate.js ├── examples ├── editors │ └── plugins │ │ ├── aloha │ │ └── quail │ │ │ └── package.json │ │ ├── tinymce │ │ └── quail │ │ │ ├── langs │ │ │ └── en.js │ │ │ ├── img │ │ │ └── quail.png │ │ │ ├── editor_plugin.js │ │ │ └── css │ │ │ └── content.css │ │ └── ckeditor │ │ └── quail │ │ └── img │ │ └── quail.png ├── php │ ├── data │ │ ├── stats.json │ │ └── guideline.json │ ├── stats.php │ └── README.md └── common │ ├── kogepan.png │ └── Untitled copy.png ├── .babelrc ├── docs └── tests │ ├── tableIsGrouped.rst │ ├── scriptOnmouseupHasOnkeyup.rst │ ├── scriptOnmouseoverHasOnfocus.rst │ ├── scriptOnmouseoutHasOnmouseblur.rst │ ├── imgWithMapHasUseMap.rst │ ├── scriptOnclickRequiresOnKeypress.rst │ ├── scriptOnmousedownRequiresOnKeypress.rst │ ├── svgContainsTitle.rst │ ├── frameIsNotUsed.rst │ ├── objectDoesNotFlicker.rst │ ├── skipToContentLinkProvided.rst │ ├── tableComplexHasSummary.rst │ ├── videoProvidesCaptions.rst │ ├── imgServerSideMapNotUsed.rst │ ├── scriptOnmousemove.rst │ ├── frameTitlesNotEmpty.rst │ ├── tabIndexFollowsLogicalOrder.rst │ ├── tabularDataIsInTable.rst │ ├── framesetIsNotUsed.rst │ ├── imgAltIsDifferent.rst │ ├── imgAltIsSameInText.rst │ ├── inputElementsDontHaveAlt.rst │ ├── aLinkTextDoesNotBeginWithRedundantWord.rst │ ├── documentStrictDocType.rst │ ├── frameTitlesNotPlaceholder.rst │ ├── basefontIsNotUsed.rst │ ├── fontIsNotUsed.rst │ ├── scriptOndblclickRequiresOnKeypress.rst │ ├── scriptsDoNotFlicker.rst │ ├── bodyMustNotHaveBackground.rst │ ├── addressForAuthor.rst │ ├── imgNeedsLongDescWDlink.rst │ ├── textIsNotSmall.rst │ ├── areaAltIdentifiesDestination.rst │ ├── tableLayoutHasNoSummary.rst │ ├── tableUseColGroup.rst │ ├── cssTextHasContrast.rst │ ├── documentAllColorsAreSet.rst │ ├── inputImageAltIsShort.rst │ ├── tableCaptionIdentifiesTable.rst │ ├── videosEmbeddedOrLinkedNeedCaptions.rst │ ├── aMustNotHaveJavascriptHref.rst │ ├── aSuspiciousLinkText.rst │ ├── inputImageAltIsNotPlaceholder.rst │ ├── addressForAuthorMustBeValid.rst │ ├── headersUseToMarkSections.rst │ ├── iframeMustNotHaveLongdesc.rst │ ├── inputImageAltIsNotFileName.rst │ ├── radioMarkedWithFieldgroupAndLegend.rst │ ├── fileHasLabel.rst │ ├── imgAltEmptyForDecorativeImages.rst │ ├── inputTextHasLabel.rst │ ├── frameSrcIsAccessible.rst │ ├── preShouldNotBeUsedForTabularLayout.rst │ ├── radioHasLabel.rst │ ├── appletsDoNotFlicker.rst │ ├── siteMap.rst │ ├── textareaHasAssociatedLabel.rst │ ├── checkboxHasLabel.rst │ ├── selectHasAssociatedLabel.rst │ ├── imageMapServerSide.rst │ ├── imgNotReferredToByColorAlone.rst │ ├── scriptsDoNotUseColorAlone.rst │ ├── documentReadingDirection.rst │ ├── imgImportantNoSpacerAlt.rst │ ├── noframesSectionMustHaveTextEquivalent.rst │ ├── passwordHasLabel.rst │ ├── documentIsWrittenClearly.rst │ ├── labelsAreAssignedToAnInput.rst │ ├── tableLayoutMakesSenseLinearized.rst │ ├── linkUsedToDescribeNavigation.rst │ ├── headersHaveText.rst │ ├── tableWithBothHeadersUseScope.rst │ ├── appletProvidesMechanismToReturnToParent.rst │ ├── objectProvidesMechanismToReturnToParent.rst │ ├── areaHasAltValue.rst │ ├── bodyColorContrast.rst │ ├── embedProvidesMechanismToReturnToParent.rst │ ├── objectUIMustBeAccessible.rst │ ├── appletUIMustBeAccessible.rst │ ├── objectInterfaceIsAccessible.rst │ ├── scriptContentAccessibleWithScriptsTurnedOff.rst │ ├── areaDontOpenNewWindow.rst │ ├── ariaOrphanedContent.rst │ ├── formHasGoodErrorMessage.rst │ ├── bodyLinkColorContrast.rst │ ├── objectWithClassIDHasNoText.rst │ ├── selectJumpMenu.rst │ ├── areaAltRefersToText.rst │ ├── cssDocumentMakesSenseStyleTurnedOff.rst │ ├── documentContentReadableWithoutStylesheets.rst │ ├── bodyActiveLinkColorContrast.rst │ ├── documentAutoRedirectNotUsed.rst │ ├── framesetMustHaveNoFramesSection.rst │ ├── tableUsesCaption.rst │ ├── bodyVisitedLinkColorContrast.rst │ ├── areaLinksToSoundFile.rst │ ├── tableSummaryDoesNotDuplicateCaption.rst │ ├── frameRelationshipsMustBeDescribed.rst │ ├── imgAltIsTooLong.rst │ ├── objectDoesNotUseColorAlone.rst │ ├── appletsDoneUseColorAlone.rst │ ├── objectTextUpdatesWhenObjectChanges.rst │ ├── documentColorWaiAlgorithim.rst │ ├── blinkIsNotUsed.rst │ ├── imgMapAreasHaveDuplicateLink.rst │ ├── documentColorWaiLinkAlgorithim.rst │ ├── formDeleteIsReversable.rst │ ├── imgHasAlt.rst │ ├── tableSummaryIsEmpty.rst │ ├── aMustHaveTitle.rst │ ├── headerH1.rst │ ├── documentColorWaiActiveLinkAlgorithim.rst │ ├── documentColorWaiVisitedLinkAlgorithim.rst │ ├── headerH2.rst │ ├── documentLangNotIdentified.rst │ ├── headerH3.rst │ ├── imgShouldNotHaveTitle.rst │ ├── formErrorMessageHelpsUser.rst │ ├── headerH4.rst │ ├── objectMustHaveTitle.rst │ ├── documentHasTitleElement.rst │ ├── embedMustHaveAltAttribute.rst │ ├── framesHaveATitle.rst │ ├── headerH5.rst │ ├── linkUsedForAlternateContent.rst │ ├── objectMustHaveEmbed.rst │ ├── aLinksDontOpenNewWindow.rst │ ├── documentTitleNotEmpty.rst │ ├── embedMustNotHaveEmptyAlt.rst │ ├── iIsNotUsed.rst │ ├── objectMustHaveValidTitle.rst │ ├── documentIDsMustBeUnique.rst │ ├── boldIsNotUsed.rst │ ├── tableLayoutHasNoCaption.rst │ ├── documentAbbrIsUsed.rst │ ├── documentLangIsISO639Standard.rst │ ├── imgNonDecorativeHasAlt.rst │ ├── inputImageHasAlt.rst │ ├── marqueeIsNotUsed.rst │ ├── objectShouldHaveLongDescription.rst │ ├── doctypeProvided.rst │ ├── documentAcronymsHaveElement.rst │ ├── aTitleDescribesDestination.rst │ ├── documentTitleIsNotPlaceholder.rst │ ├── scriptInBodyMustHaveNoscript.rst │ └── inputImageAltNotRedundant.rst ├── bin └── quail.js ├── .editorconfig ├── .quailrc ├── scripts ├── regexes.txt └── upperCaseIt.py ├── .gitignore └── src └── assessments └── TagsAreNestedCorrectly.js /logs/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 0.12 2 | -------------------------------------------------------------------------------- /test/config/defaults.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /examples/editors/plugins/aloha/quail/package.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/php/data/stats.json: -------------------------------------------------------------------------------- 1 | {"severe":"0","moderate":"0","suggestion":"0"} -------------------------------------------------------------------------------- /examples/php/data/guideline.json: -------------------------------------------------------------------------------- 1 | ["imgAltIsDifferent","imgAltIsTooLong","imgHasAlt"] -------------------------------------------------------------------------------- /examples/common/kogepan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/examples/common/kogepan.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/embedHasAssociatedNoEmbed/assets/history_of_rome.mov: -------------------------------------------------------------------------------- 1 | empty text file 2 | -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/embedHasAssociatedNoEmbed/assets/transcript_history_rome.htm: -------------------------------------------------------------------------------- 1 | empty text file 2 | -------------------------------------------------------------------------------- /examples/common/Untitled copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/examples/common/Untitled copy.png -------------------------------------------------------------------------------- /examples/editors/plugins/tinymce/quail/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.quail',{ 2 | desc : 'Accessibility check' 3 | }); 4 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "es2015" 4 | ], 5 | "plugins": [ 6 | "transform-object-rest-spread" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/editors/plugins/tinymce/quail/img/quail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/examples/editors/plugins/tinymce/quail/img/quail.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgHasAlt/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgHasAlt/assets/rex.jpg -------------------------------------------------------------------------------- /examples/editors/plugins/ckeditor/quail/img/quail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/examples/editors/plugins/ckeditor/quail/img/quail.png -------------------------------------------------------------------------------- /examples/editors/plugins/tinymce/quail/editor_plugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/examples/editors/plugins/tinymce/quail/editor_plugin.js -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/headersHaveText/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/headersHaveText/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgAltIsTooLong/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgAltIsTooLong/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/aMustContainText/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/aMustContainText/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgAltIsDifferent/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgAltIsDifferent/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/newWindowIsOpened/assets/go.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/newWindowIsOpened/assets/go.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/aImgAltNotRepetitive/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/aImgAltNotRepetitive/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/colorFontContrast/assets/fish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/colorFontContrast/assets/fish.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/colorFontContrast/assets/kids.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/colorFontContrast/assets/kids.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/colorFontContrast/assets/quail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/colorFontContrast/assets/quail.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgAltNotPlaceHolder/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgAltNotPlaceHolder/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/labelMustNotBeEmpty/assets/name.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/labelMustNotBeEmpty/assets/name.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/documentStrictDocType/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/documentStrictDocType/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgAltNotEmptyInAnchor/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgAltNotEmptyInAnchor/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgNonDecorativeHasAlt/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgNonDecorativeHasAlt/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgShouldNotHaveTitle/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgShouldNotHaveTitle/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgWithMapHasUseMap/assets/image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgWithMapHasUseMap/assets/image.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/inputImageAltIsShort/assets/input.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/inputImageAltIsShort/assets/input.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/inputImageAltIsShort/assets/name.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/inputImageAltIsShort/assets/name.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/animatedGifMayBePresent/assets/fish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/animatedGifMayBePresent/assets/fish.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/animatedGifMayBePresent/assets/kids.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/animatedGifMayBePresent/assets/kids.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/areaAltRefersToText/assets/welcome.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/areaAltRefersToText/assets/welcome.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgImportantNoSpacerAlt/assets/rex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgImportantNoSpacerAlt/assets/rex.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgServerSideMapNotUsed/assets/image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgServerSideMapNotUsed/assets/image.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/objectMustContainText/assets/clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/objectMustContainText/assets/clock.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/documentHasTitleElement/documentHasTitleElement-nomatch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/documentTitleDescribesDocument/documentTitleDescribesDocument-nomatch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgImportantNoSpacerAlt/assets/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgImportantNoSpacerAlt/assets/spacer.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/inputImageAltIsNotFileName/assets/name.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/inputImageAltIsNotFileName/assets/name.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/inputImageAltNotRedundant/assets/name.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/inputImageAltNotRedundant/assets/name.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/animatedGifMayBePresent/assets/fishswim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/animatedGifMayBePresent/assets/fishswim.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/colorBackgroundImageContrast/assets/fish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/colorBackgroundImageContrast/assets/fish.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/colorBackgroundImageContrast/assets/kids.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/colorBackgroundImageContrast/assets/kids.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/colorBackgroundImageContrast/assets/quail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/colorBackgroundImageContrast/assets/quail.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/imgImportantNoSpacerAlt/assets/big-fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/imgImportantNoSpacerAlt/assets/big-fail.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/inputImageAltIsNotFileName/assets/input.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/inputImageAltIsNotFileName/assets/input.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/inputImageAltIsNotPlaceholder/assets/name.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/inputImageAltIsNotPlaceholder/assets/name.jpg -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/areaAltIdentifiesDestination/assets/library.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/areaAltIdentifiesDestination/assets/library.gif -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/tableLayoutMakesSenseLinearized/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quailjs/quail/HEAD/test/assessmentSpecs/specs/tableLayoutMakesSenseLinearized/assets/logo.png -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/frameIsNotUsed/assets/frame-a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Doctype was provided for this page.
7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/documentTitleIsShort/documentTitleIsShort.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |Doctype was provided for this page.
8 | 9 | 10 | -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/documentTitleIsNotPlaceholder/documentTitleIsNotPlaceholder.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |This page has no auto-redirect.
8 | 9 | 10 | -------------------------------------------------------------------------------- /.quailrc: -------------------------------------------------------------------------------- 1 | { 2 | "assessmentSpecsPath": "test/assessmentSpecs/specs", 3 | "quail": "dist/runInBrowser.js", 4 | "requireModules": [], 5 | "requireAssessmentModules": [ 6 | "config/all_assessments.json" 7 | ], 8 | "requirePaths": [ 9 | "./src/assessments" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /docs/tests/scriptOnmouseoverHasOnfocus.rst: -------------------------------------------------------------------------------- 1 | =============================== 2 | If an element has an "onmouseover" attribute 3 | =============================== 4 | 5 | Severity code: 0 6 | 7 | .. php:class:: scriptOnmouseoverHasOnfocus 8 | 9 | it should also have an "onfocus" attribute 10 | -------------------------------------------------------------------------------- /test/assessmentSpecs/specs/appletsDonotUseColorAlone/appletsDonotUseColorAlone-nomatch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |No blink!
10 |This paragraph has no font tag
9 |title element
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/appletTextEquivalentsGetUpdated/appletTextEquivalentsGetUpdated-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | appletTextEquivalentsGetUpdated
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/blinkIsNotUsed/blinkIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | blinkIsNotUsed
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/scriptContentAccessibleWithScriptsTurnedOff/scriptContentAccessibleWithScriptsTurnedOff-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | scriptContentAccessibleWithScriptsTurnedOff
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/tests/frameIsNotUsed.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Frames are not used
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: frameIsNotUsed
8 |
9 |
10 | .. code-block:: html
11 |
12 | Frame elements should not be used.
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aTitleDescribesDestination/aTitleDescribesDestination-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aTitleDescribesDestination
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/tests/objectDoesNotFlicker.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Objects do not flicker
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: objectDoesNotFlicker
8 |
9 |
10 | The content within an object tag must not flicker.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/skipToContentLinkProvided.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | A "skip to content" link should exist as one of the first links on the page
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: skipToContentLinkProvided
8 |
9 |
10 | A link reading "skip to content
11 |
--------------------------------------------------------------------------------
/docs/tests/tableComplexHasSummary.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Complex tables should have a summary
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: tableComplexHasSummary
8 |
9 |
10 | If a table is complex (for example, has some cells with "colspan" attributes
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aLinksToSoundFilesNeedTranscripts/aLinksToSoundFilesNeedTranscripts-inapplicable.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aLinksToSoundFilesNeedTranscripts
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/blockquoteNotUsedForIndentation/blockquoteNotUsedForIndentation-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | blockquoteNotUsedForIndentation
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/cssDocumentMakesSenseStyleTurnedOff/cssDocumentMakesSenseStyleTurnedOff.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | cssDocumentMakesSenseStyleTurnedOff
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/fontIsNotUsed/fontIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | fontIsNotUsed
5 |
6 |
7 |
8 | This paragraph has a font tag
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/formButtonsHaveValue/formButtonsHaveValue-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | formButtonsHaveValue
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/tests/videoProvidesCaptions.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All video tags must provide captions
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: videoProvidesCaptions
8 |
9 |
10 | All HTML5 video tags must provide captions.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aLinksToMultiMediaRequireTranscript/aLinksToMultiMediaRequireTranscript-inapplicable.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aLinksToMultiMediaRequireTranscript
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/docs/tests/imgServerSideMapNotUsed.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Server-side image maps should not be used
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: imgServerSideMapNotUsed
8 |
9 |
10 | Server-side image maps should not be used.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/scriptOnmousemove.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Any element with an "onmousemove" attribute shoul have a keyboard-related action as well
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: scriptOnmousemove
8 |
9 |
10 | If an element has an "onmousemove" attribute
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/appletProvidesMechanismToReturnToParent/appletProvidesMechanismToReturnToParent-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | appletProvidesMechanismToReturnToParent
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/basefontIsNotUsed/basefontIsNotUsed-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | basefontIsNotUsed
5 |
6 |
7 |
8 |
9 | A paragraph with no basefont.
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentContentReadableWithoutStylesheets/documentContentReadableWithoutStylesheets.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | documentContentReadableWithoutStylesheets
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/frameIsNotUsed/frameIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | frameIsNotUsed
5 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/framesAreUsedToGroupContent/framesAreUsedToGroupContent-fail.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | framesAreUsedToGroupContent
5 |
6 |
7 | There are no frames here
8 |
9 |
10 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/templates/componentTemplate.js:
--------------------------------------------------------------------------------
1 | /**
2 | * A wrapper for assessments that call a component to determine
3 | * the test outcome.
4 | */
5 | quail.%name% = function (quail, test, Case) {
6 | var options = {
7 | %options%
8 | };
9 | quail.components.%component%(quail, test, Case, options);
10 | };
11 |
--------------------------------------------------------------------------------
/docs/tests/frameTitlesNotEmpty.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Frames cannot have empty "title" attributes
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: frameTitlesNotEmpty
8 |
9 |
10 | All frame elements must have a valid "title" attribute.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/tabIndexFollowsLogicalOrder.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The tab order of a document is logical
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: tabIndexFollowsLogicalOrder
8 |
9 |
10 | Check that the tab-order of a page is logical.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/tabularDataIsInTable.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All tabular information should use a table
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: tabularDataIsInTable
8 |
9 |
10 | Tables should be used when displaying tabular information.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectUIMustBeAccessible/objectUIMustBeAccessible.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectUIMustBeAccessible
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/tests/framesetIsNotUsed.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The "frameset" element should not be used
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: framesetIsNotUsed
8 |
9 |
10 | .. code-block:: html
11 |
12 | Frameset elements should not be used.
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/tests/imgAltIsDifferent.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Image "alt" attributes should not be the same as the filename
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: imgAltIsDifferent
8 |
9 |
10 | All img elements should have an "alt" attribute that is not just the name of the file
11 |
--------------------------------------------------------------------------------
/docs/tests/imgAltIsSameInText.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Check that any text within an image is also in the "alt" attribute
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: imgAltIsSameInText
8 |
9 |
10 | If an image has text within it, that text should be repeated in the "alt" attribute
11 |
--------------------------------------------------------------------------------
/docs/tests/inputElementsDontHaveAlt.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Input elements which are not images should not have an "alt" attribute
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: inputElementsDontHaveAlt
8 |
9 |
10 | Because of inconsistencies in how user agents use the "alt" attribute
11 |
--------------------------------------------------------------------------------
/scripts/regexes.txt:
--------------------------------------------------------------------------------
1 | (\$?\(?[a-zA-Z0-9]+\)?)\.find\(('?[a-zA-Z0-9\.\#\-\[\]\"\=\_\, \$\:\(\)]+'?)\)
2 | (test\.get\('scope'\))\.find\(('?[a-zA-Z0-9\.\#\-\[\]\"\=\_\, \$\:\(\)]+'?)(?!\.each)\)
3 | \$\.each\(([a-zA-Z0-9]*), function \(index, ([a-zA-Z0-9]+)
4 | $1.forEach(function ($2, index
5 | \.each\(function \((index), ([a-zA-Z0-9\.#-\[\]'"=_, \$:]+)\)
6 |
--------------------------------------------------------------------------------
/docs/tests/aLinkTextDoesNotBeginWithRedundantWord.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Link text should not begin with redundant text
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: aLinkTextDoesNotBeginWithRedundantWord
8 |
9 |
10 | Link text should not begin with redundant words or phrases like "link
11 |
--------------------------------------------------------------------------------
/docs/tests/documentStrictDocType.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The page uses a strict doctype
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: documentStrictDocType
8 |
9 |
10 | The doctype of the page or document should be either an HTML or XHTML strict doctype.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/frameTitlesNotPlaceholder.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Frames cannot have "title" attributes that are just placeholder text
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: frameTitlesNotPlaceholder
8 |
9 |
10 | Frame "title" attributes should not be simple placeholder text like "frame
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/marqueeIsNotUsed/marqueeIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | marqueeIsNotUsed
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/tests/basefontIsNotUsed.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Basefont" should not be used
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: basefontIsNotUsed
8 |
9 |
10 | The basefont tag is deprecated and should not be used. Investigate using stylesheets instead.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/fontIsNotUsed.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Font" elements should not be used
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: fontIsNotUsed
8 |
9 |
10 | The basefont tag is deprecated and should not be used. Investigate using stylesheets instead.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/scriptOndblclickRequiresOnKeypress.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Any element with an "ondblclick" attribute shoul have a keyboard-related action as well
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: scriptOndblclickRequiresOnKeypress
8 |
9 |
10 | If an element has an "ondblclick" attribute
11 |
--------------------------------------------------------------------------------
/docs/tests/scriptsDoNotFlicker.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Scripts should not cause the screen to flicker
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: scriptsDoNotFlicker
8 |
9 |
10 | All scripts should be assessed to see if their interface does not flicker.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/basefontIsNotUsed/basefontIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | basefontIsNotUsed
5 |
6 |
7 |
8 |
9 | Wow, basefont. Yeah
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/tests/bodyMustNotHaveBackground.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Body elements do not use a background image
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: bodyMustNotHaveBackground
8 |
9 |
10 | The body element for the page may not have a "background" attribute.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/addressForAuthor.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The document should contain an address for the author
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: addressForAuthor
8 |
9 |
10 | Documents should provide a valid email address within an address element.
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/imgNeedsLongDescWDlink.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | An image with a "longdesc" attribute should have a corresponding description link
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: imgNeedsLongDescWDlink
8 |
9 |
10 | Any image that has a "longdesc" attribute must also have a corresponding "d-link
11 |
--------------------------------------------------------------------------------
/docs/tests/textIsNotSmall.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The text size is not less than 9 pixels high
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: textIsNotSmall
8 |
9 |
10 | To help users with difficulty reading small text, ensure text size is no less than 9 pixels high.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/config/mobile.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | desiredCapabilities: {
3 | browserName: process.env._BROWSER || '',
4 | platformName: (process.env._PLATFORM || '').replace(/_/g,' '),
5 | platformVersion: (process.env._VERSION || ''),
6 | 'appium-version': '1.0',
7 | deviceName: (process.env._DEVICENAME || '').replace(/_/g,' ')
8 | }
9 | };
10 |
--------------------------------------------------------------------------------
/docs/tests/areaAltIdentifiesDestination.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "area" elements must have an "alt" attribute which describes the link destination
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: areaAltIdentifiesDestination
8 |
9 |
10 | All area elements within a map must have an "alt" attribute
11 |
--------------------------------------------------------------------------------
/docs/tests/tableLayoutHasNoSummary.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All tables used for layout have no summary or an empty summary
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: tableLayoutHasNoSummary
8 |
9 |
10 | If a table contains no data, and is used simply for layout, then it should not have a "summary" attribute
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/scriptInBodyMustHaveNoscript/scriptInBodyMustHaveNoscript-fail.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | scriptInBodyMustHaveNoscript-fail
5 |
6 |
7 | There is a script element on this page.
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/tests/tableUseColGroup.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Group columns using "colgroup" or "col" elements
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: tableUseColGroup
8 |
9 |
10 | To help complex table headers make sense, use colgroup or col to group them together.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentAutoRedirectNotUsed/documentAutoRedirectNotUsed-fail.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | documentAutoRedirectNotUsed-fail
5 |
6 |
7 |
8 | This page has an auto-redirect.
9 |
10 |
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/linkUsedForAlternateContent/linkUsedForAlternateContent-fail.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | linkUsedForAlternateContent-fail
5 |
6 |
7 | This document has no link to alternate content.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/scriptOnmouseoverHasOnfocus/scriptOnmouseoverHasOnfocus.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | scriptOnmouseoverHasOnfocus
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/tests/cssTextHasContrast.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All elements should have appropriate color contrast
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: cssTextHasContrast
8 |
9 |
10 | For users who have color blindness, all text or other elements should have a color contrast of 5:1.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/documentAllColorsAreSet.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All the document colors must be set
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: documentAllColorsAreSet
8 |
9 |
10 | If any colors for text or the background are set in the body element, then all colors must be set.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/inputImageAltIsShort.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "input" elements with a type of "image" must have an "alt" attribute which is as short as possible
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: inputImageAltIsShort
8 |
9 |
10 | All input elements with a type of "image" should have an "alt" attribute
11 |
--------------------------------------------------------------------------------
/docs/tests/tableCaptionIdentifiesTable.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Captions should identify their table
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: tableCaptionIdentifiesTable
8 |
9 |
10 | Check to make sure that a table's caption identifies the table with a name, figure number, etc.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/videosEmbeddedOrLinkedNeedCaptions.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All linked or embedded videos need captions
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: videosEmbeddedOrLinkedNeedCaptions
8 |
9 |
10 | Any video hosted or otherwise which is linked or embedded must have a caption.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/examples/editors/plugins/tinymce/quail/css/content.css:
--------------------------------------------------------------------------------
1 | .quail-result { padding: 3px; border-radius: 3px;}
2 | .quail-result.severe { border: 3px dashed red; }
3 | .quail-result.moderate { border: 3px dashed orange; }
4 | .quail-result.reccomendation { border: 3px solid green; }
5 |
6 | .quail-message { position: fixed; background: #fff; color: #000; border: 1px solid black; padding: 10px;}
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentMetaNotUsedWithTimeout/documentMetaNotUsedWithTimeout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | documentMetaNotUsedWithTimeout
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/tests/aMustNotHaveJavascriptHref.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Links should not use "javascript" in their location
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: aMustNotHaveJavascriptHref
8 |
9 |
10 | Anchor (a) elements may not use the "javascript" protocol in their "href" attributes.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/aSuspiciousLinkText.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Link text should be useful
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: aSuspiciousLinkText
8 |
9 |
10 | Because many users of screen-readers use links to navigate the page, providing links with text that simply read "click here" gives no hint of the function of the link
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aMustNotHaveJavascriptHref/aMustNotHaveJavascriptHref.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aMustNotHaveJavascriptHref
5 |
6 |
7 |
8 | Scripted link
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/siteMap/siteMap.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | siteMap
5 |
6 |
7 |
8 | Site Map
9 |
10 |
11 | This document is part of a large collection of related documents.
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/tests/inputImageAltIsNotPlaceholder.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "input" elements with a type of "image" must have an "alt" attribute which is not placeholder text
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: inputImageAltIsNotPlaceholder
8 |
9 |
10 | All input elements with a type of "image" should have an "alt" attribute
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/iIsNotUsed/iIsNotUsed-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | iIsNotUsed
5 |
6 |
7 |
8 |
9 | What she really
10 | meant to say was, "This isn't ok, it is excellent!"
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/linkUsedForAlternateContent/linkUsedForAlternateContent-pass.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | linkUsedForAlternateContent-pass
6 |
7 |
8 | This document has a link to alternate content.
9 |
10 |
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectShouldHaveLongDescription/objectShouldHaveLongDescription.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectShouldHaveLongDescription
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/scriptsDoNotUseColorAlone/scriptsDoNotUseColorAlone.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | scriptsDoNotUseColorAlone
5 |
6 |
7 |
8 |
9 |
10 | No scripts be here.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/config/index.js:
--------------------------------------------------------------------------------
1 | var merge = require('deepmerge');
2 |
3 | var env = process.env.TRAVIS ? 'travis-ci' : 'local';
4 |
5 | var defaults = require('./defaults.js');
6 | var asked = require('./' + env + '.js');
7 |
8 | if (process.env._ENV === 'mobile') {
9 | var mobile = require('./mobile');
10 | asked = merge(asked,mobile);
11 | }
12 |
13 | module.exports = merge(defaults, asked);
14 |
--------------------------------------------------------------------------------
/docs/tests/addressForAuthorMustBeValid.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The document should contain a valid email address for the author
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: addressForAuthorMustBeValid
8 |
9 |
10 | Documents should provide a valid email address within an address element.
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/headersUseToMarkSections.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Use headers to mark the beginning of each section
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: headersUseToMarkSections
8 |
9 |
10 | Check that each logical section of the page is broken or introduced with a header () element.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/iframeMustNotHaveLongdesc.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Inline frames ("iframes") should not have a "longdesc" attribute
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: iframeMustNotHaveLongdesc
8 |
9 |
10 | .. code-block:: html
11 |
12 | Iframe elements should not have a "longdesc" attribute.
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/tests/inputImageAltIsNotFileName.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "input" elements with a type of "image" must have an "alt" attribute which is not the same as the filename
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: inputImageAltIsNotFileName
8 |
9 |
10 | All input elements with a type of "image" should have an "alt" attribute
11 |
--------------------------------------------------------------------------------
/examples/php/README.md:
--------------------------------------------------------------------------------
1 | =======================
2 | Note about this example
3 | =======================
4 |
5 | This is an example of how to integrate a PHP backend with QUAIL. You must run it from within a web server, it will not work by just viewing the html files in a browser.
6 |
7 | **WARNING:** This is a totally insecure way to do things, it's just a simple example. Do not post this to a public place.
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/iIsNotUsed/iIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | iIsNotUsed
5 |
6 |
7 |
8 |
9 | What she really
10 | meant to say was, "This isn't ok, it is excellent !"
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/radioMarkedWithFieldgroupAndLegend.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All radio button groups are marked using fieldset and legend elements.
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: radioMarkedWithFieldgroupAndLegend
8 |
9 | form element content must contain both fieldset and legend elements if there are related radio buttons.
10 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentStrictDocType/documentStrictDocType-fail.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | documentStrictDocType-fail
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectContentUsableWhenDisabled/objectContentUsableWhenDisabled.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectContentUsableWhenDisabled
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectDoesNotUseColorAlone/objectDoesNotUseColorAlone.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectDoesNotUseColorAlone
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | No object
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/tests/fileHasLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "file" input elements have a corresponding label
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: fileHasLabel
8 |
9 |
10 | All input elements of type "file" should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/docs/tests/imgAltEmptyForDecorativeImages.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | If an image is purely decorative, the "alt" text must be empty
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: imgAltEmptyForDecorativeImages
8 |
9 |
10 | Any image that is only decorative (serves no function or adds to the purpose of the page content) should have an "alt" attribute
11 |
--------------------------------------------------------------------------------
/docs/tests/inputTextHasLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "input" elements should have a corresponding "label
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: inputTextHasLabel
8 |
9 |
10 | All input elements should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/docs/tests/frameSrcIsAccessible.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The source for each frame is accessible content.
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: frameSrcIsAccessible
8 |
9 |
10 | Each frame should contain accessible content, and contain content accessible to screen readers, like HTML as opposed to an image.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/preShouldNotBeUsedForTabularLayout.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Pre" elements should not be used for tabular data
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: preShouldNotBeUsedForTabularLayout
8 |
9 |
10 | If a pre element is used for tabular data, change the data to use a well-formed table.
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/radioHasLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "radio" input elements have a corresponding label
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: radioHasLabel
8 |
9 |
10 | All input elements of type "radio" should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aMustNotHaveJavascriptHref/aMustNotHaveJavascriptHref-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aMustNotHaveJavascriptHref
5 |
6 |
7 |
8 |
9 | Scripted link with fallback href
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/iframeMustNotHaveLongdesc/iframeMustNotHaveLongdesc.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | iframeMustNotHaveLongdesc
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectTextUpdatesWhenObjectChanges/objectTextUpdatesWhenObjectChanges.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectTextUpdatesWhenObjectChanges
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/appletsDoNotFlicker.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All applets do not flicker
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: appletsDoNotFlicker
8 |
9 |
10 | Applets should not flicker.
11 |
12 |
13 |
14 |
15 | Applets cannot be checked using automated tools, this should be reviewed manually.
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/tests/siteMap.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Websites must have a site map
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: siteMap
8 |
9 |
10 | Every web site should have a page which provides a site map or another method to navigate most of the site from a single page to save time for users of assistive devices.
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/textareaHasAssociatedLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All textareas should have a corresponding label
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: textareaHasAssociatedLabel
8 |
9 |
10 | All textarea elements should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/boldIsNotUsed/boldIsNotUsed-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | boldIsNotUsed
5 |
6 |
7 |
8 |
9 |
10 | What she really
11 | meant to say was, "This isn't ok, it is excellent!"
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/imgAltIsSameInText/imgAltIsSameInText.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | imgAltIsSameInText
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | No image
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/scriptInBodyMustHaveNoscript/scriptInBodyMustHaveNoscript-pass.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | scriptInBodyMustHaveNoscript-pass
5 |
6 |
7 | There is a script element on this page.
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/tests/checkboxHasLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All checkboxes must have a corresponding label
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: checkboxHasLabel
8 |
9 |
10 | All input elements with a type of "checkbox" should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/docs/tests/selectHasAssociatedLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All select elements have an explicitly associated label.
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: selectHasAssociatedLabel
8 |
9 |
10 | All select elements should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aTitleDescribesDestination/aTitleDescribesDestination.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aTitleDescribesDestination
5 |
6 |
7 |
8 |
9 | We have more information about dogs on our site.
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectInterfaceIsAccessible/objectInterfaceIsAccessible.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectInterfaceIsAccessible
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | No object
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectLinkToMultimediaHasTextTranscript/objectLinkToMultimediaHasTextTranscript.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectLinkToMultimediaHasTextTranscript
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/imageMapServerSide.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All links in a server-side map should have duplicate links available in the document
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: imageMapServerSide
8 |
9 |
10 | Any image with an "usemap" attribute for a server-side image map should have the available links duplicated elsewhere.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/imgNotReferredToByColorAlone.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | For any image, the "alt" text cannot refer to color alone
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: imgNotReferredToByColorAlone
8 |
9 |
10 | The "alt" text or content text for any image should not refer to the image by color alone. This is often fixed by changing the "alt" text to the meaning of the image
11 |
--------------------------------------------------------------------------------
/docs/tests/scriptsDoNotUseColorAlone.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The interface in scripts should not use color alone
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: scriptsDoNotUseColorAlone
8 |
9 |
10 | All scripts should be assessed to see if their interface does not have an interface which requires distinguishing beteween colors alone.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/boldIsNotUsed/boldIsNotUsed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | boldIsNotUsed
5 |
6 |
7 |
8 | What she
9 | really
10 | meant to say was, "This isn't ok, it is
11 | excellent !"
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/documentReadingDirection.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Reading direction of text is correctly marked
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: documentReadingDirection
8 |
9 |
10 | Where required, the reading direction of the document (for language that read in different directions), or portions of the text, must be declared.
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/imgImportantNoSpacerAlt.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Images that are important should not have a purely white-space "alt" attribute
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: imgImportantNoSpacerAlt
8 |
9 |
10 | Any image that is not used decorativey or which is purely for layout purposes cannot have an "alt" attribute that consists solely of white space (i.e. a space
11 |
--------------------------------------------------------------------------------
/docs/tests/noframesSectionMustHaveTextEquivalent.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "noframes" elements should contain the text content from all frames
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: noframesSectionMustHaveTextEquivalent
8 |
9 |
10 | The noframes content should either replicate or link to the content visible within the frames.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/passwordHasLabel.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All password input elements should have a corresponding label
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: passwordHasLabel
8 |
9 |
10 | All input elements with a type of "password"should have a corresponding label element. Screen readers often enter a "form mode" where only label text is read aloud to the user
11 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/KINGStrongList/KINGStrongList.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | KINGStrongList
5 |
6 |
7 |
8 |
9 | - Some bold text.
10 |
11 |
12 |
13 |
14 | Bold at the wrong place.
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentStrictDocType/documentStrictDocType.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | documentStrictDocType-pass
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docs/tests/documentIsWrittenClearly.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | The document should be written to the target audience and read clearly
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: documentIsWrittenClearly
8 |
9 |
10 | If a document is beyond a 10th grade level, then a summary or other guide should also be provided to guide the user through the content.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/labelsAreAssignedToAnInput.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All labels should be associated with an input
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: labelsAreAssignedToAnInput
8 |
9 |
10 | All label elements should be assigned to an input item, and should have a for attribute which equals the id attribute of a form element.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/tableLayoutMakesSenseLinearized.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All tables used for layout should make sense when removed
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: tableLayoutMakesSenseLinearized
8 |
9 |
10 | If a table element is used for layout purposes only, then the content of the table should make sense if the table is linearized.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/linkUsedToDescribeNavigation.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Document uses link element to describe navigation if it is within a collection.
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: linkUsedToDescribeNavigation
8 |
9 | The link element can provide metadata about the position of an HTML page within a set of Web units or can assist in locating content with a set of Web units.
10 |
--------------------------------------------------------------------------------
/docs/tests/headersHaveText.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All headers should contain readable text
3 | ===============================
4 |
5 | *Severity code:* Severe error
6 |
7 | .. php:class:: headersHaveText
8 |
9 |
10 | Users with screen readers use headings like the tabs h1 to navigate the structure of a page. All headings should contain either text, or images with appropriate alt attributes.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/tableWithBothHeadersUseScope.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | Data tables with multiple headers should use the "scope" attribute
3 | ===============================
4 |
5 | *Severity code:* Possible error
6 |
7 | .. php:class:: tableWithBothHeadersUseScope
8 |
9 |
10 | Where there are table headers for both rows and columns, use the "scope" attribute to help relate those headers with their appropriate cells.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentLangIsISO639Standard/documentLangIsISO639Standard-inapplicable.html:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | documentLangIsISO639Standard-inapplicable
7 |
8 |
9 |
10 | This document has no language code.
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/documentLangIsISO639Standard/documentLangIsISO639Standard.html:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | documentLangIsISO639Standard-fail
7 |
8 |
9 |
10 | This document is missing a standard language code.
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/inputElementsDontHaveAlt/inputElementsDontHaveAlt-nomatch.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | inputElementsDontHaveAlt
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/newWindowIsOpened/newWindowIsOpened.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | newWindowIsOpened
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/objectWithClassIDHasNoText/objectWithClassIDHasNoText.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | objectWithClassIDHasNoText
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/scriptContentAccessibleWithScriptsTurnedOff/scriptContentAccessibleWithScriptsTurnedOff.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | scriptContentAccessibleWithScriptsTurnedOff
5 |
6 |
7 |
8 |
9 |
10 |
11 | No script element here.
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/tests/appletProvidesMechanismToReturnToParent.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All applets should provide a way for keyboard users to escape
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: appletProvidesMechanismToReturnToParent
8 |
9 |
10 | Ensure that a user who has only a keyboard as an input device can escape an applet element. This requires manual confirmation.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/tests/objectProvidesMechanismToReturnToParent.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All objects should provide a way for keyboard users to escape
3 | ===============================
4 |
5 | *Severity code:* Information only
6 |
7 | .. php:class:: objectProvidesMechanismToReturnToParent
8 |
9 |
10 | Ensure that a user who has only a keyboard as an input device can escape a object element. This requires manual confirmation.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/KINGUseCurrencyAsSymbol/KINGUseCurrencyAsSymbol.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | KINGUseCurrencyAsSymbol
5 |
6 |
7 |
8 | Text with a few prices, 500 dollars, 500 euros. Dollars 500
9 |
10 |
11 |
12 | Text with a few prices, 500 USD, 300€.
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/aMustHaveTitle/aMustHaveTitle.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | aMustHaveTitle
5 |
6 |
7 |
8 | We have information about dogs on our site.
9 |
10 | We have more information about dogs on our site.
11 |
12 |
13 |
--------------------------------------------------------------------------------
/test/assessmentSpecs/specs/imgAltIdentifiesLinkDestination/imgAltIdentifiesLinkDestination.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | imgAltIdentifiesLinkDestination
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/tests/areaHasAltValue.rst:
--------------------------------------------------------------------------------
1 | ===============================
2 | All "area" elements must have an "alt" attribute
3 | ===============================
4 |
5 | Severity code: 0
6 |
7 | .. php:class:: areaHasAltValue
8 |
9 |
10 | All area elements within a map must have an "alt" attribute.
11 |
12 |
13 |
14 | Example
15 | -------
16 | Wrong
17 | -----
18 |
19 | .. code-block:: html
20 |
21 |
13 |