001 /* 002 * Copyright 2006-2012 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 017 package edu.samplu.krad.validationmessagesview; 018 019 import com.thoughtworks.selenium.Selenium; 020 import junit.framework.Assert; 021 import org.openqa.selenium.firefox.FirefoxDriver; 022 import org.openqa.selenium.WebDriver; 023 import org.openqa.selenium.WebDriverBackedSelenium; 024 import org.junit.After; 025 import org.junit.Before; 026 import org.junit.Test; 027 028 public class ServerErrorsIT { 029 private Selenium selenium; 030 031 @Before 032 public void setUp() throws Exception { 033 WebDriver driver = new FirefoxDriver(); 034 selenium = new WebDriverBackedSelenium(driver, 035 "http://localhost:8080/kr-dev/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start"); 036 037 // Login 038 selenium.open( 039 "http://localhost:8080/kr-dev/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start"); 040 Assert.assertEquals("Login", selenium.getTitle()); 041 selenium.type("__login_user", "admin"); 042 selenium.click("//input[@value='Login']"); 043 selenium.waitForPageToLoad("30000"); 044 } 045 046 @Test 047 public void testServerErrorsIT() throws Exception { 048 selenium.click("//button[contains(.,'Get Error Messages')]"); 049 selenium.waitForPageToLoad("30000"); 050 Assert.assertTrue(selenium.isVisible("css=div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"]")); 051 Assert.assertTrue(selenium.isElementPresent( 052 "css=div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] .uif-errorMessageItem")); 053 Assert.assertTrue(selenium.isVisible("css=div[data-messagesfor=\"Demo-ValidationLayout-Section1\"]")); 054 Assert.assertTrue(selenium.isElementPresent( 055 "css=div[data-messagesfor=\"Demo-ValidationLayout-Section1\"] .uif-errorMessageItem")); 056 Assert.assertTrue(selenium.isElementPresent("css=div[data-role=\"InputField\"] img[alt=\"Error\"]")); 057 selenium.click("//a[contains(.,'\"Section 1 Title\"')]"); 058 selenium.mouseOver("//a[contains(.,'Field 1')]"); 059 Assert.assertTrue(selenium.isElementPresent("css=.uif-errorHighlight")); 060 selenium.click("//a[contains(.,'Field 1')]"); 061 for (int second = 0; ; second++) { 062 if (second >= 60) { 063 Assert.fail("timeout"); 064 } 065 try { 066 if (selenium.isVisible("css=.jquerybubblepopup-innerHtml")) { 067 break; 068 } 069 } catch (Exception e) { 070 } 071 Thread.sleep(1000); 072 } 073 074 Assert.assertTrue(selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems")); 075 Assert.assertTrue(selenium.isVisible( 076 "css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-errorMessageItem-field")); 077 selenium.type("name=field1", ""); 078 selenium.fireEvent("name=field1", "blur"); 079 selenium.fireEvent("name=field1", "focus"); 080 for (int second = 0; ; second++) { 081 if (second >= 60) { 082 Assert.fail("timeout"); 083 } 084 try { 085 if (selenium.isVisible("css=.jquerybubblepopup-innerHtml")) { 086 break; 087 } 088 } catch (Exception e) { 089 } 090 Thread.sleep(1000); 091 } 092 093 Assert.assertTrue(selenium.isVisible( 094 "css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-errorMessageItem-field")); 095 for (int second = 0; ; second++) { 096 if (second >= 60) { 097 Assert.fail("timeout"); 098 } 099 try { 100 if (selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems")) { 101 break; 102 } 103 } catch (Exception e) { 104 } 105 Thread.sleep(1000); 106 } 107 108 Assert.assertTrue(selenium.isVisible( 109 "css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems .uif-errorMessageItem-field")); 110 selenium.keyDown("name=field1", "t"); 111 selenium.keyPress("name=field1", "t"); 112 selenium.keyUp("name=field1", "t"); 113 for (int second = 0; ; second++) { 114 if (second >= 60) { 115 Assert.fail("timeout"); 116 } 117 try { 118 if (!selenium.isElementPresent("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems")) { 119 break; 120 } 121 } catch (Exception e) { 122 } 123 Thread.sleep(1000); 124 } 125 126 Assert.assertTrue(selenium.isVisible( 127 "css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-errorMessageItem-field")); 128 Assert.assertFalse(selenium.isElementPresent("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems")); 129 } 130 131 @After 132 public void tearDown() throws Exception { 133 selenium.stop(); 134 } 135 }