package net.sourceforge.cruisecontrol.dashboard.seleniumtests; public class TooltipTest extends SeleniumTestCase { public void testShouldDisplayCurrentStatusAndLastStatusOnTooltip() throws Exception { openDashboardPage(); shouldDisplayCurrentStatusAndPreviusStatusForProject("cclive", "Failed", "Waiting"); shouldDisplayCurrentStatusAndPreviusStatusForProject("paused", "Failed", "Paused"); shouldDisplayCurrentStatusAndPreviusStatusForProject("queuedPassed", "Passed", "Queued"); openBuildsPage(); waitUntilStartBuilding(); openDashboardPage(); shouldDisplayCurrentStatusAndPreviusStatusForProject("cclive", "Failed", "Building"); } private void waitUntilStartBuilding() throws Exception { String before = user.getText("statistics_building"); forceBuildByClick("cclive"); waitUntilStatisticsChange(before, "building", 4 * AJAX_DURATION); } public void testTooltipBehaviour() throws Exception { openDashboardPage(); shouldAlwaysShowTooptipWhenUserDoesNotMouseOut(); shouldAlwaysShowTooltipWhenUserMouseOverTooltip(); shouldImmidiatelyCloseOriginalTooltipWhenUserMouseOvernotherProject(); } private void shouldAlwaysShowTooptipWhenUserDoesNotMouseOut() throws Exception { this.user.mouseOver("cclive_bar"); assertTrue(this.user.isVisible("tooltip_cclive")); Thread.sleep(3000); assertTrue(this.user.isVisible("tooltip_cclive")); } private void shouldAlwaysShowTooltipWhenUserMouseOverTooltip() throws Exception { this.user.mouseOver("tooltip_cclive"); assertTrue(this.user.isVisible("tooltip_cclive")); Thread.sleep(3000); assertTrue(this.user.isVisible("tooltip_cclive")); } private void shouldImmidiatelyCloseOriginalTooltipWhenUserMouseOvernotherProject() { this.user.mouseOver("paused_bar"); assertTrue(this.user.isVisible("tooltip_paused")); assertFalse(this.user.isVisible("tooltip_cclive")); } private void shouldDisplayCurrentStatusAndPreviusStatusForProject(String projectName, String previous, String current) { this.user.mouseOver(projectName + "_bar"); assertTrue(this.user.isVisible("tooltip_" + projectName)); assertNotNull(this.user.getText("tooltip_" + projectName + "_server_name")); assertEquals(previous, this.user.getText("tooltip_" + projectName + "_previous_result")); assertEquals(current, this.user.getText("tooltip_" + projectName + "_current_status")); } }