blob: 9c59b7e1bc9dc9bd479038b65b5a250977354247 [file] [log] [blame] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">
<header>header</header>
<footer>footer</footer>
<section>section</section>
<article>article</article>
<nav>nav</nav>
<aside>aside</aside>
<article id="article">
<header id="article_header">Should be section header because it's inside an article, and should not be a landmark</header>
<footer id="article_footer">Should be section footer because it's inside an article, and should not be a landmark</footer>
</article>
<section id="section">
<header id="section_header">Should be section header because it's inside a section, and should not be a landmark</header>
<footer id="section_footer">Should be section footer because it's inside a section, and should not be a landmark</footer>
</section>
<main id="main">
<header id="main_header">Should be section header because it's inside a main, and should not be a landmark</header>
<footer id="main_footer">Should be section footer because it's inside a main, and should not be a landmark</footer>
</main>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests that the HTML5 section elements map to the correct AX roles.");
if (window.accessibilityController) {
document.getElementById("body").focus();
var body = accessibilityController.focusedElement;
shouldBe("body.childAtIndex(0).subrole", "'AXSubrole: AXLandmarkBanner'");
shouldBe("body.childAtIndex(1).subrole", "'AXSubrole: AXLandmarkContentInfo'");
shouldBe("body.childAtIndex(2).subrole", "'AXSubrole: '");
shouldBe("body.childAtIndex(3).subrole", "'AXSubrole: AXDocumentArticle'");
shouldBe("body.childAtIndex(4).subrole", "'AXSubrole: AXLandmarkNavigation'");
shouldBe("body.childAtIndex(5).subrole", "'AXSubrole: AXLandmarkComplementary'");
// When a header and footer are inside an article, they should be sectionheader/sectionfooter.
shouldBe("body.childAtIndex(6).domIdentifier", "'article'");
shouldBe("body.childAtIndex(6).childAtIndex(0).domIdentifier", "'article_header'");
shouldBe("body.childAtIndex(6).childAtIndex(0).role", "'AXRole: AXGroup'");
shouldBe("body.childAtIndex(6).childAtIndex(0).subrole", "'AXSubrole: AXSectionHeader'");
shouldBe("body.childAtIndex(6).childAtIndex(1).domIdentifier", "'article_footer'");
shouldBe("body.childAtIndex(6).childAtIndex(1).role", "'AXRole: AXGroup'");
shouldBe("body.childAtIndex(6).childAtIndex(1).subrole", "'AXSubrole: AXSectionFooter'");
// When a header and footer are inside a section, they should be sectionheader/sectionfooter.
shouldBe("body.childAtIndex(7).domIdentifier", "'section_header'");
shouldBe("body.childAtIndex(7).role", "'AXRole: AXGroup'");
shouldBe("body.childAtIndex(7).subrole", "'AXSubrole: AXSectionHeader'");
shouldBe("body.childAtIndex(8).domIdentifier", "'section_footer'");
shouldBe("body.childAtIndex(8).role", "'AXRole: AXGroup'");
// FIXME: AXSubrole of the footer should be empty.
shouldBe("body.childAtIndex(8).subrole", "'AXSubrole: AXSectionFooter'");
// When a header and footer are inside a main, they should be sectionheader/sectionfooter.
shouldBe("body.childAtIndex(9).domIdentifier", "'main'");
shouldBe("body.childAtIndex(9).childAtIndex(0).domIdentifier", "'main_header'");
shouldBe("body.childAtIndex(9).childAtIndex(0).role", "'AXRole: AXGroup'");
shouldBe("body.childAtIndex(9).childAtIndex(0).subrole", "'AXSubrole: AXSectionHeader'");
shouldBe("body.childAtIndex(9).childAtIndex(1).domIdentifier", "'main_footer'");
shouldBe("body.childAtIndex(9).childAtIndex(1).role", "'AXRole: AXGroup'");
shouldBe("body.childAtIndex(9).childAtIndex(1).subrole", "'AXSubrole: AXSectionFooter'");
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>