001/** 002 * Copyright 2005-2016 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.validationmessagesview; 017 018import com.thoughtworks.selenium.SeleneseTestBase; 019import org.kuali.rice.testtools.common.JiraAwareFailable; 020import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase; 021import org.openqa.selenium.By; 022 023/** 024 * Tests the Component section in Rice. 025 * 026 * @author Kuali Rice Team (rice.collab@kuali.org) 027 */ 028public abstract class ClientErrorsAftBase extends WebDriverLegacyITBase { 029 030 /** 031 * "/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start" 032 */ 033 public static final String BOOKMARK_URL = "/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start"; 034 035 @Override 036 public String getBookmarkUrl() { 037 return BOOKMARK_URL; 038 } 039 040 041 protected void navigation() throws InterruptedException { 042 waitAndClickKRAD(); 043 waitAndClickByXpath(VALIDATION_FRAMEWORK_DEMO_XPATH); 044 switchToWindow(KUALI_VIEW_WINDOW_TITLE); 045 } 046 047 protected void testClientErrorsNav(JiraAwareFailable failable) throws Exception { 048 navigation(); 049 testClientErrors(); 050 passed(); 051 } 052 053 protected void testClientErrorsBookmark(JiraAwareFailable failable) throws Exception { 054 testClientErrors(); 055 passed(); 056 } 057 058 protected void testClientErrors() throws Exception { 059 fireEvent("field1", "focus"); 060 fireEvent("field1", "blur"); 061 Thread.sleep(3000); 062 fireMouseOverEventByName("field1"); 063 waitIsVisibleByXpath("//div[@class='popover top in uif-tooltip-error-cs']"); 064 065 waitAndTypeByName("field1", "a"); 066 fireEvent("field1", "blur"); 067 fireMouseOverEventByName("field1"); 068 assertFalse(isVisibleByXpath( 069 "//div[@class='popover top in uif-tooltip-error-cs']")); 070 071 fireEvent("field2", "focus"); 072 fireEvent("field2", "blur"); 073 fireMouseOverEventByName("field2"); 074 Thread.sleep(500); 075 // SeleneseTestBase.assertEquals("true", waitAndGetAttributeByName("field2", "aria-invalid")); 076 SeleneseTestBase.assertEquals("true", waitAndGetAttributeByName("field2", "aria-required")); 077 078 fireEvent("field2", "focus"); 079 waitAndTypeByName("field2", "a"); 080 fireEvent("field2", "blur"); 081 Thread.sleep(500); 082 assertFalse(isElementPresentByXpath("//*[@name='field2' and @aria-invalid]")); 083 084 fireEvent("field3", "focus"); 085 fireEvent("field3", "blur"); 086 fireMouseOverEventByName("field3"); 087 088 fireEvent("field3", "focus"); 089 selectByName("field3", "Option 1"); 090 fireEvent("field3", "blur"); 091 Thread.sleep(500); 092 assertFalse(isElementPresentByXpath("//*[@name='field3' and @aria-invalid]")); 093 094 fireEvent("field114", "focus"); 095 fireMouseOverEventByName("field114"); 096 driver.findElement(By.name("field114")).findElements(By.tagName("option")).get(0).click(); 097 fireEvent("field114", "blur"); 098 Thread.sleep(500); 099 SeleneseTestBase.assertEquals("true", waitAndGetAttributeByName("field114", "aria-invalid")); 100 101 fireEvent("field114", "focus"); 102 selectByName("field114", "Option 1"); 103 fireEvent("field114", "blur"); 104 Thread.sleep(500); 105 assertFalse(isElementPresentByXpath("//*[@name='field114' and @aria-invalid]")); 106 107 fireEvent("field117", "3", "focus"); 108 checkByXpath("//*[@name='field117' and @value='3']"); 109 fireEvent("field117", "3", "blur"); 110 111 for (int second = 0;; second++) { 112 if (second >= waitSeconds) { 113 SeleneseTestBase.fail(TIMEOUT_MESSAGE); 114 } 115 116 try { 117 if (!isElementPresentByXpath("//input[@name='field117']/../../../img[@alt='Error']")) { 118 break; 119 } 120 } catch (Exception e) {} 121 122 Thread.sleep(1000); 123 } 124 125 assertFalse(isElementPresentByXpath("//*[@name='field117' and @value='3' and @aria-invalid]")); 126 assertTrue(waitAndGetAttributeByXpath("//*[@name='field117' and @value='3']", "class").matches(REGEX_VALID)); 127 assertFalse(isElementPresentByXpath("//input[@name='field117']/../../../img[@alt='Error']")); 128 129 fireEvent("bField1", "focus"); 130 uncheckByName("bField1"); 131 fireEvent("bField1", "blur"); 132 fireMouseOverEventByName("bField1"); 133 Thread.sleep(500); 134 SeleneseTestBase.assertEquals("true", waitAndGetAttributeByName("bField1", "aria-invalid")); 135 assertAttributeClassRegexMatches("bField1", REGEX_ERROR); 136 assertTrue(isTextPresent("Required")); 137 138 fireEvent("bField1", "focus"); 139 checkByName("bField1"); 140 fireEvent("bField1", "blur"); 141 Thread.sleep(500); 142 assertFalse(isElementPresentByXpath("//*[@name='bField1' and @aria-invalid]")); 143 assertAttributeClassRegexMatches("bField1", REGEX_VALID); 144 assertFalse(isElementPresentByXpath("//input[@name='bField1' and following-sibling::img[@alt='Error']]")); 145 146 fireEvent("field115", "3", "focus"); 147 uncheckByXpath("//*[@name='field115' and @value='3']"); 148 uncheckByXpath("//*[@name='field115' and @value='4']"); 149 fireEvent("field115", "blur"); 150 fireMouseOverEventByName("field115"); 151 152 fireEvent("field115", "3", "focus"); 153 checkByXpath("//*[@name='field115' and @value='3']"); 154 checkByXpath("//*[@name='field115' and @value='4']"); 155 fireEvent("field115", "blur"); 156 157 for (int second = 0;; second++) { 158 if (second >= waitSeconds) { 159 SeleneseTestBase.fail(TIMEOUT_MESSAGE); 160 } 161 162 try { 163 if (!isElementPresentByXpath("//input[@name='field115']/../../../img[@alt='Error']")) { 164 break; 165 } 166 } catch (Exception e) {} 167 168 Thread.sleep(1000); 169 } 170 171 assertFalse(isElementPresentByXpath("//*[@name='field115' and @value='3' and @aria-invalid]")); 172 assertFalse(isElementPresentByXpath("//input[@name='field115']/../../../img[@alt='Error']")); 173 } 174}