001/** 002 * Copyright 2005-2014 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package edu.sampleu.krad.configview; 017 018import org.kuali.rice.testtools.common.JiraAwareFailable; 019import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase; 020 021/** 022 * @author Kuali Rice Team (rice.collab@kuali.org) 023 */ 024public abstract class HelpAftBase extends WebDriverLegacyITBase { 025 026 /** 027 * /kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page 028 */ 029 public static final String BOOKMARK_URL = "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page"; 030 public static final String HELP_FOR_CONFIGURATION_TEST_VIEW_XPATH = 031 "//a[@title='Help for Configuration Test View']"; 032 033 @Override 034 protected String getBookmarkUrl() { 035 return BOOKMARK_URL; 036 } 037 038 protected void navigation() throws Exception { 039 waitAndClickKRAD(); 040 waitAndClickByXpath(CONFIGURATION_VIEW_XPATH); 041 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 042 waitAndClickByLinkText("Help"); 043 Thread.sleep(5000); 044 } 045 046 protected void testHelpNav(JiraAwareFailable failable) throws Exception { 047 navigation(); 048 testViewHelp(); 049 testPageHelp(); 050 testTooltipHelp(); 051 testDisplayOnlyTooltipHelp(); 052 testMissingTooltipHelp(); 053 passed(); 054 } 055 056 protected void testHelpBookmark(JiraAwareFailable failable) throws Exception { 057 testViewHelp(); 058 testPageHelp(); 059 testTooltipHelp(); 060 testDisplayOnlyTooltipHelp(); 061 testMissingTooltipHelp(); 062 passed(); 063 } 064 065 066 /** 067 * Test the tooltip and external help on the page 068 */ 069 protected void testPageHelp() throws Exception { 070 // test tooltip help 071 fireMouseOverEventByXpath("//a/span[@class='uif-headerText-span']"); 072 waitForTextPresent("Sample text for section help - tooltip help"); 073 074 // test external help 075 waitAndClickByXpath(HELP_FOR_CONFIGURATION_TEST_VIEW_XPATH); 076 Thread.sleep(5000); 077 switchToWindow("Kuali Foundation"); 078 Thread.sleep(5000); 079 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 080 } 081 082 /** 083 * Test the tooltip help on the section and fields 084 */ 085 protected void testTooltipHelp() throws Exception { 086 // verify that no tooltips are displayed initially 087 if (isElementPresentByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]")) { 088 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]")); 089 } 090 091 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label left')]")) { 092 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]")); 093 } 094 095 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label right')]")) { 096 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label right')]")); 097 } 098 099 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label top')]")) { 100 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]")); 101 } 102 103 if (isElementPresentByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]")) { 104 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]")); 105 } 106 107 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip')]")) { 108 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip')]")); 109 } 110 111 if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) { 112 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")); 113 } 114 115 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]")) { 116 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]")); 117 } 118 119 if (isElementPresentByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]")) { 120 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]")); 121 } 122 123 if (isElementPresentByXpath("//td[contains(text(),'Sample text for check box help')]")) { 124 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]")); 125 } 126 127 // test tooltip help of section header 128 fireMouseOverEventByXpath("//section[@id='ConfigurationTestView-Help-Section1']/header/h3[@class='uif-headerText']"); 129 waitForElementPresentByXpath("//div[@class='popover top in']"); 130 131 // verify that no external help exist 132 assertFalse(isElementPresent("#ConfigurationTestView-Help-Section1 input.uif-helpImage")); 133 134 // test tooltip help of field with label to the left 135 fireMouseOverEventByXpath("//label[@id='field-label-left_label']"); 136 waitForElementPresentByXpath("//div[@class='popover top in']"); 137 138 // test tooltip help of field with label to the right 139 fireMouseOverEventByXpath("//label[@id='field-label-right_label']"); 140 waitForElementPresentByXpath("//div[@class='popover top in']"); 141 142 // test tooltip help of field with label to the top 143 fireMouseOverEventByXpath("//label[@id='field-label-top_label']"); 144 waitForElementPresentByXpath("//div[@class='popover top in']"); 145 146 // verify that standalone help with tooltip is not rendered 147 assertFalse(isElementPresentByXpath("//*[@id='standalone-help-not-rendered']")); 148 149 // test tooltip help when it overrides a tooltip 150 fireMouseOverEventByXpath("//label[@id='override-tooltip_label']"); 151 waitForElementPresentByXpath("//div[@class='popover top in']"); 152 if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) { 153 assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")); 154 } 155 156 // test tooltip help in conjunction with a focus event tooltip 157 fireMouseOverEventByXpath("//input[@id='on-focus-tooltip_control']"); 158 waitForElementPresentByXpath("//div[@class='popover top in']"); 159 fireMouseOverEventByXpath("//label[@id='on-focus-tooltip_label']"); 160 waitForElementPresentByXpath("//div[@class='popover top in']"); 161 162 // test tooltip help against a check box - help contains html 163 fireMouseOverEventByXpath("//label[@id='checkbox_label']"); 164 waitForElementPresentByXpath("//div[@class='popover top in']"); 165 } 166 167 /** 168 * Test the tooltip help on the sub-section and fields that are display only 169 */ 170 protected void testDisplayOnlyTooltipHelp() throws Exception { 171 172 // test tooltip help of sub-section header 173 fireMouseOverEventByXpath("//section[@data-parent='ConfigurationTestView-Help-Section1']/header/h4"); 174 waitForElementPresentByXpath("//td[contains(text(),'Sample text for sub-section help')]"); 175 176 // test tooltip help of display only data field 177 fireMouseOverEventByXpath("//label[@for='display-field_control']"); 178 waitForElementPresentByXpath("//td[contains(text(),'Sample text for read only field help')]"); 179 } 180 181 /** 182 * Test the tooltip help on the section and fields with no content 183 */ 184 protected void testMissingTooltipHelp() throws Exception { 185 186 // test tooltip help of section header 187 fireMouseOverEventByXpath("//section[@id='ConfigurationTestView-Help-Section2']/div"); 188 assertFalse(isElementPresentByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black' and @style='opacity: 0; top: 627px; left: 2px; position: absolute; display: block;']")); 189 190 // test tooltip help of field 191 fireMouseOverEventByXpath("//label[@id='missing-tooltip-help_label']"); 192 assertFalse(isElementPresentByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black' and @style='opacity: 0; top: 627px; left: 2px; position: absolute; display: block;']")); 193 } 194 195 /** 196 * Test the tooltip and external help on the view 197 */ 198 protected void testViewHelp() throws Exception { 199 // test tooltip help 200 fireEvent("field102", "blur"); 201 fireMouseOverEventByXpath("//label[@id='field-label-left_label']"); 202 waitForTextPresent("Sample text for field help - label left"); 203 204 // test external help 205 waitAndClickByXpath(HELP_FOR_CONFIGURATION_TEST_VIEW_XPATH); 206 Thread.sleep(5000); 207 switchToWindow("Kuali Foundation"); 208 Thread.sleep(5000); 209 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 210 } 211}