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 */ 016 package edu.sampleu.krad.configview; 017 018 import org.kuali.rice.testtools.common.JiraAwareFailable; 019 import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase; 020 import org.openqa.selenium.By; 021 022 /** 023 * @author Kuali Rice Team (rice.collab@kuali.org) 024 */ 025 public abstract class HelpAftBase extends WebDriverLegacyITBase { 026 027 /** 028 * /kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page 029 */ 030 public static final String BOOKMARK_URL = "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page"; 031 032 @Override 033 protected String getBookmarkUrl() { 034 return BOOKMARK_URL; 035 } 036 037 protected void navigation() throws Exception { 038 waitAndClickKRAD(); 039 waitAndClickByXpath(CONFIGURATION_VIEW_XPATH); 040 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 041 waitAndClickByLinkText("Help"); 042 Thread.sleep(5000); 043 } 044 045 protected void testHelpNav(JiraAwareFailable failable) throws Exception { 046 navigation(); 047 testViewHelp(); 048 testPageHelp(); 049 testTooltipHelp(); 050 testDisplayOnlyTooltipHelp(); 051 testMissingTooltipHelp(); 052 passed(); 053 } 054 055 protected void testHelpBookmark(JiraAwareFailable failable) throws Exception { 056 testViewHelp(); 057 testPageHelp(); 058 testTooltipHelp(); 059 testDisplayOnlyTooltipHelp(); 060 testMissingTooltipHelp(); 061 passed(); 062 } 063 064 065 /** 066 * Test the tooltip and external help on the page 067 */ 068 protected void testPageHelp() throws Exception { 069 // test tooltip help 070 fireMouseOverEventByXpath("//a/span[@class='uif-headerText-span']"); 071 waitForTextPresent("Sample text for section help - tooltip help"); 072 073 // test external help 074 waitAndClickByXpath("//input[@alt='Help for Configuration Test View']"); 075 Thread.sleep(5000); 076 switchToWindow("Kuali Foundation"); 077 Thread.sleep(5000); 078 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 079 } 080 081 /** 082 * Test the tooltip help on the section and fields 083 */ 084 protected void testTooltipHelp() throws Exception { 085 // verify that no tooltips are displayed initially 086 if (isElementPresentByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]")) { 087 waitNotVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"); 088 } 089 090 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label left')]")) { 091 waitNotVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"); 092 } 093 094 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label right')]")) { 095 waitNotVisibleByXpath("//td[contains(text(),'Sample text for field help - label right')]"); 096 } 097 098 // Comment out to see how CI handles the following tests 099 // if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label top')]")) { 100 // waitNotVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]", "passes locally"); 101 // } 102 103 if (isElementPresentByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]")) { 104 waitNotVisibleByXpath("//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 waitNotVisibleByXpath("//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 waitNotVisibleByXpath("//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 waitNotVisibleByXpath("//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 waitNotVisibleByXpath("//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 waitNotVisibleByXpath("//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 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for section help - tooltip help')]")); 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 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for field help - label left')]")); 137 138 // test tooltip help of field with label to the right 139 fireMouseOverEventByXpath("//label[@id='field-label-right_label']"); 140 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for field help - label right')]")); 141 142 // test tooltip help of field with label to the top 143 fireMouseOverEventByXpath("//label[@id='field-label-top_label']"); 144 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for field help - label top')]")); 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 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip')]")); 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 waitNotVisibleByXpath("//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 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for on-focus event tooltip')]")); 159 fireMouseOverEventByXpath("//label[@id='on-focus-tooltip_label']"); 160 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]")); 161 162 // test tooltip help against a check box - help contains html 163 fireMouseOverEventByXpath("//label[@id='checkbox_label']"); 164 waitIsVisible(By.xpath("//td[contains(text(),'Sample text for check box help')]")); 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("//input[@alt='Help for Configuration Test View']"); 206 Thread.sleep(5000); 207 switchToWindow("Kuali Foundation"); 208 Thread.sleep(5000); 209 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 210 } 211 }