// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. //----------------------------------------------------------------------------- // // Abstract: // // Displaying Tests for the tooltip. Mainly check the ARIA tags. // // Author: evanwi // //----------------------------------------------------------------------------- // // /// /// // module WinJSTests { 'use strict'; var tooltipUtils = TooltipUtils; var commonUtils = Helper; //----------------------------------------------------------------------------------- // Verify the tooltip appears aligned correctly function testTooltip_VerifyAlignment(signalTestCaseCompleted, elementPlacement, tooltipPlacement, expectedAlignment) { LiveUnit.LoggingCore.logComment("When the anchor element is placed at: " + elementPlacement); LiveUnit.LoggingCore.logComment("And we request that the tooltip is displayed at: " + tooltipPlacement); LiveUnit.LoggingCore.logComment("We expect the tooltip alignment to be: " + expectedAlignment); LiveUnit.LoggingCore.logComment("Window size: " + window.innerWidth + " " + window.innerHeight); // Set up the anchor/trigger element var element = document.getElementById(tooltipUtils.defaultElementID); tooltipUtils.positionElement(element, elementPlacement); // set up the tooltip var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID, { innerHTML: "tooltip", placement: tooltipPlacement }); var completed = false; function tooltipEventListener(event) { if (completed) { return; } LiveUnit.Assert.isNotNull(event); LiveUnit.LoggingCore.logComment(event.type); tooltipUtils.logTooltipInformation(tooltip); switch (event.type) { case "trigger": tooltipUtils.displayTooltip("mouse", element, tooltip); break; case "opened": LiveUnit.Assert.areEqual(tooltipUtils.getTooltipAlignmentFromElement(tooltip), expectedAlignment); // Don't validate these, just log them since we have separate distance tests. tooltipUtils.getTooltipDistanceFromElement(tooltip); tooltipUtils.getTooltipDistanceFromWindow(tooltip); signalTestCaseCompleted(); completed = true; break; } } tooltipUtils.setupTooltipListener(tooltip, tooltipEventListener); } export class TooltipAlignmentTests { setUp() { tooltipUtils.setUp(); } tearDown() { tooltipUtils.cleanUp(); } testTooltip_VerifyAlignmentChangedText(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: "short text" }); var completed = false; function tooltipEventListener(event) { if (completed) { return; } LiveUnit.Assert.isNotNull(event); LiveUnit.LoggingCore.logComment(event.type); tooltipUtils.logTooltipInformation(tooltip); switch (event.type) { case "trigger": tooltipUtils.displayTooltip("mouse", element, tooltip); break; case "opened": // Verify the text is centered. LiveUnit.Assert.areEqual(tooltipUtils.getTooltipAlignmentFromElement(tooltip), "horizontal center"); tooltip.innerHTML = "longer string of text"; // fire mouse out which should dismiss the tooltip. commonUtils.mouseOverUsingMiP(element, null); break; case "beforeclose": // Verify the changed text is centered too (see Win8 bug: 275298) LiveUnit.Assert.areEqual(tooltipUtils.getTooltipAlignmentFromElement(tooltip), "horizontal center"); completed = true; signalTestCaseCompleted(); break; } } tooltipUtils.setupTooltipListener(tooltip, tooltipEventListener); } testTooltip_VerifyAlignmentChangedPlacement(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" }); var completed = false; function tooltipEventListener(event) { if (completed) { return; } LiveUnit.Assert.isNotNull(event); LiveUnit.LoggingCore.logComment(event.type); tooltipUtils.logTooltipInformation(tooltip); switch (event.type) { case "trigger": tooltipUtils.displayTooltip("mouse", element, tooltip); break; case "opened": // Verify the text is centered. LiveUnit.Assert.areEqual(tooltipUtils.getTooltipAlignmentFromElement(tooltip), "horizontal center"); // Now change the placement. tooltip.placement = "right"; // fire mouse out which should dismiss the tooltip. commonUtils.mouseOverUsingMiP(element, null); break; case "beforeclose": // Verify the changed placement is centered too (see Win8 bug: 292981) LiveUnit.Assert.areEqual(tooltipUtils.getTooltipAlignmentFromElement(tooltip), "vertical center"); signalTestCaseCompleted(); completed = true; break; } } tooltipUtils.setupTooltipListener(tooltip, tooltipEventListener); } // Element in the center testTooltip_VerifyAlignmentCenterTop(signalTestCaseCompleted) { testTooltip_VerifyAlignment(signalTestCaseCompleted, "center", "top", "horizontal center"); } testTooltip_AlignmentCenterRight(signalTestCaseCompleted) { testTooltip_VerifyAlignment(signalTestCaseCompleted, "center", "right", "vertical center"); } testTooltip_AlignmentCenterBottom(signalTestCaseCompleted) { testTooltip_VerifyAlignment(signalTestCaseCompleted, "center", "bottom", "horizontal center"); } testTooltip_AlignmentCenterLeft(signalTestCaseCompleted) { testTooltip_VerifyAlignment(signalTestCaseCompleted, "center", "left", "vertical center"); } } } // Register the object as a test class by passing in the name LiveUnit.registerTestClass("WinJSTests.TooltipAlignmentTests");