// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information.
//-----------------------------------------------------------------------------
//
// Abstract:
//
// Accessibility Tests for the tooltip. Mainly check the ARIA tags.
//
// Author: evanwi
//
//-----------------------------------------------------------------------------
//
//
///
///
//
module WinJSTests {
'use strict';
var tooltipUtils = TooltipUtils;
var commonUtils = Helper;
export class TooltipAccessibilityTests {
setUp() {
tooltipUtils.setUp();
}
tearDown() {
tooltipUtils.cleanUp();
}
//-----------------------------------------------------------------------------------
testTooltip_VerifyARIA(signalTestCaseCompleted) {
LiveUnit.LoggingCore.logComment("Window size: " + window.innerWidth + " " + window.innerHeight);
// Set up the anchor/trigger element.
var element = document.getElementById(tooltipUtils.defaultElementID);
tooltipUtils.positionElement(element, "center");
// set up the tooltip
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID, { innerHTML: "tooltip", placement: "top" });
function tooltipEventListener(event) {
LiveUnit.Assert.isNotNull(event);
LiveUnit.LoggingCore.logComment(event.type);
tooltipUtils.logTooltipInformation(tooltip);
LiveUnit.LoggingCore.logComment("element aria-describedby: " + tooltip._anchorElement.getAttribute("aria-describedby"));
if (tooltip._domElement) {
LiveUnit.LoggingCore.logComment("tooltip id: " + tooltip._domElement.getAttribute("id"));
LiveUnit.LoggingCore.logComment("tooltip role: " + tooltip._domElement.getAttribute("role"));
}
switch (event.type) {
case "trigger":
tooltipUtils.displayTooltip("mouse", element, tooltip);
break;
case "beforeopen":
LiveUnit.Assert.isNull(tooltip._anchorElement.getAttribute("aria-describedby"));
break;
case "opened":
LiveUnit.Assert.areEqual(tooltip._domElement.getAttribute("role"), "tooltip");
LiveUnit.Assert.areEqual(tooltip._anchorElement.getAttribute("aria-describedby"),
tooltip._domElement.getAttribute("id"));
// If we have an aria-hidden attribute, make sure it says we're visible
var hidden = tooltip._domElement.getAttribute("aria-hidden");
if (hidden) {
LiveUnit.Assert.areEqual(hidden, "false");
}
// Make sure we can't tab to the tooltip
var tabindex = tooltip._domElement.getAttribute("tabindex");
LiveUnit.LoggingCore.logComment("tooltip tabindex: " + tabindex);
LiveUnit.Assert.isTrue(parseInt(tabindex) < 0);
// fire mouse out which should dismiss the tooltip.
commonUtils.mouseOverUsingMiP(element, null);
break;
case "beforeclose":
LiveUnit.Assert.areEqual(tooltip._domElement.getAttribute("role"), "tooltip");
LiveUnit.Assert.areEqual(tooltip._anchorElement.getAttribute("aria-describedby"),
tooltip._domElement.getAttribute("id"));
// If we have an aria-hidden attribute, make sure it says we're visible
var hidden = tooltip._domElement.getAttribute("aria-hidden");
if (hidden) {
LiveUnit.Assert.areEqual(hidden, "false");
}
break;
case "closed":
LiveUnit.Assert.isNull(tooltip._anchorElement.getAttribute("aria-describedby"));
signalTestCaseCompleted();
break;
}
}
tooltipUtils.setupTooltipListener(tooltip, tooltipEventListener);
}
};
}
// Register the object as a test class by passing in the name
LiveUnit.registerTestClass("WinJSTests.TooltipAccessibilityTests");