1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package edu.samplu.common;
17
18 import com.thoughtworks.selenium.SeleneseTestBase;
19 import edu.samplu.admin.test.AdminTmplMthdSTNavBase;
20 import org.apache.commons.lang.RandomStringUtils;
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.junit.After;
24 import org.junit.Before;
25 import org.junit.BeforeClass;
26 import org.junit.Rule;
27 import org.junit.rules.TestName;
28 import org.openqa.selenium.Alert;
29 import org.openqa.selenium.By;
30 import org.openqa.selenium.JavascriptExecutor;
31 import org.openqa.selenium.NoSuchElementException;
32 import org.openqa.selenium.NoSuchWindowException;
33 import org.openqa.selenium.WebDriver;
34 import org.openqa.selenium.WebElement;
35 import org.openqa.selenium.chrome.ChromeDriverService;
36 import org.openqa.selenium.interactions.Actions;
37 import org.openqa.selenium.remote.RemoteWebDriver;
38 import org.openqa.selenium.support.ui.Select;
39
40 import java.lang.reflect.Method;
41 import java.util.ArrayList;
42 import java.util.Calendar;
43 import java.util.LinkedList;
44 import java.util.List;
45 import java.util.Set;
46 import java.util.concurrent.TimeUnit;
47
48 import static org.junit.Assert.assertEquals;
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public abstract class WebDriverLegacyITBase implements Failable {
68
69
70
71
72 public static final String ADMINISTRATION_LINK_TEXT = "Administration";
73
74
75
76
77 public static final String AGENDA_LOOKUP_LINK_TEXT = "Agenda Lookup";
78
79
80
81
82 public static final String ARIA_INVALID_XPATH = "//input[@aria-invalid]";
83
84
85
86
87 public static final String BLANKET_APPROVE_NAME = "methodToCall.blanketApprove";
88
89
90
91
92
93 public static final String CANCEL_NAME = "methodToCall.cancel";
94
95
96
97
98
99 public static final String CANCEL2_XPATH = "//a[contains(text(), 'ancel')]";
100
101
102
103
104 public static final String CLOSE_WINDOW_XPATH_TITLE = "//*[@title='close this window']";
105
106
107
108
109 public static final String COLLECTIONS_LINK_TEXT = "Collections";
110
111
112
113
114 public static final String CONFIGURATION_VIEW_WINDOW_TITLE = "Kuali :: Configuration Test View";
115
116
117
118
119 public static final String CONFIGURATION_VIEW_XPATH = "(//a[contains(text(),'Configuration Test View')])";
120
121
122
123
124 public static final String COPY_LINK_TEXT = "copy";
125
126
127
128
129 public static final String CREATE_NEW_DOCUMENT_NOT_SUBMITTED_SUCCESSFULLY_MESSAGE_TEXT = "New Document not submitted successfully";
130
131
132
133
134 public static final String CREATE_NEW_XPATH = "//img[@alt='create new']";
135
136
137
138
139 public static final int DEFAULT_WAIT_SEC = 30;
140
141
142
143
144 public static final String DIV_LEFT_ERRMSG = "//div[@class='left-errmsg-tab']/div/div";
145
146
147
148
149 public static final String DOC_CODE_XPATH = "//input[@id='document.newMaintainableObject.code']";
150
151
152
153
154 public static final String DOC_ID_XPATH = "//div[@id='headerarea']/div/table/tbody/tr[1]/td[1]";
155
156
157
158
159 public static final String DOC_ID_XPATH_2 = "//table[@id='row']/tbody/tr[1]/td[1]";
160
161
162
163
164 public static final String DOC_ID_XPATH_3 ="//table[@id='row']/tbody/tr[1]/td[1]/a";
165
166
167
168
169 public static final String DOC_DESCRIPTION_XPATH ="//input[@id='document.documentHeader.documentDescription']";
170
171
172
173
174 public static final String DOC_SEARCH_XPATH = "//img[@alt='doc search']";
175
176
177
178
179 public static final String DOC_SEARCH_XPATH_TITLE = "//a[@title='Document Search']";
180
181
182
183
184 public static final String DOC_STATUS_ENROUTE = "ENROUTE";
185
186
187
188
189 public static final String DOC_STATUS_FINAL = "FINAL";
190
191
192
193
194 public static final String DOC_STATUS_SAVED = "SAVED";
195
196
197
198
199 public static final String DOC_STATUS_XPATH = "//table[@class='headerinfo']//tr[1]/td[2]";
200
201
202
203
204 public static final String DOC_STATUS_XPATH_2 = "//table[@id='row']/tbody/tr[1]/td[4]";
205
206
207
208
209 public static final String DOC_SUBMIT_SUCCESS_MSG_XPATH ="//div[contains(div,'Document was successfully submitted.')]";
210
211
212
213
214 public static final String DONT_TEAR_DOWN_ON_FAILURE_PROPERTY = "remote.driver.dontTearDownOnFailure";
215
216
217
218
219 public static final String EDIT_LINK_TEXT = "edit";
220
221
222
223
224 public static final String IFRAMEPORTLET_NAME = "iframeportlet";
225
226
227
228
229 public static final String KITCHEN_SINK_XPATH = "(//a[contains(text(),'Uif Components (Kitchen Sink)')])";
230
231
232
233
234 public static final String KRAD_XPATH = "KRAD";
235
236
237
238
239 public static final String KUALI_UIF_COMPONENTS_WINDOW_XPATH = "Kuali :: Uif Components";
240
241
242
243
244 public static final String KUALI_VIEW_WINDOW_TITLE = "Kuali :: View Title";
245
246
247
248
249 public static final String LOGOUT_XPATH = "//input[@name='imageField' and @value='Logout']";
250
251
252
253
254 public static final String MAIN_MENU_LINK_TEXT = "Main Menu";
255
256
257
258
259 public static final String REGEX_ERROR = "^[\\s\\S]*error[\\s\\S]*$";
260
261
262
263
264 public static final String REGEX_VALID = "^.*\\bvalid\\b.*$";
265
266
267
268
269 public static final String REMOTE_PUBLIC_USER_PROPERTY = "remote.public.user";
270
271
272
273
274 public static final String REMOTE_PUBLIC_USERPOOL_PROPERTY = "remote.public.userpool";
275
276
277
278
279 public static final String REMOTE_PUBLIC_WAIT_SECONDS_PROPERTY = "remote.public.wait.seconds";
280
281
282
283
284 public static final String RETURN_VALUE_LINK_TEXT = "return value";
285
286
287
288
289 public static final String RICH_MESSAGES_WINDOW_TITLE = "Kuali :: Rich Messages";
290
291
292
293
294 public static final String SAVE_SUCCESSFUL_XPATH = "//div[contains(div,'Document was successfully saved.')]";
295
296
297
298
299 public static final String SAVE_XPATH="//input[@name='methodToCall.save' and @alt='save']";
300
301
302
303
304
305 public static final String SAVE_XPATH_2 = "//*[@name='methodToCall.save' and @alt='save']";
306
307
308
309
310 public static final String SAVE_XPATH_3 = "//input[@title='search' and @name='methodToCall.search']";
311
312
313
314
315 public static final String SEARCH_XPATH="//input[@name='methodToCall.search' and @value='search']";
316
317
318
319
320 public static final String SUBMIT_XPATH="//input[@name='methodToCall.route' and @alt='submit']";
321
322
323
324
325 public static final String SEARCH_XPATH_2 = "//input[@value='search']";
326
327
328
329
330 public static final String SEARCH_XPATH_3 = "//button[contains(text(),'earch')]";
331
332
333
334
335 public static final String SUB_COLLECTION_UIF_DISCLOSURE_SPAN_UIF_HEADER_TEXT_SPAN_XPATH =
336 "div.uif-group.uif-collectionGroup.uif-tableCollectionGroup.uif-tableSubCollection.uif-disclosure span.uif-headerText-span";
337
338
339
340
341 public static final String TIMEOUT_MESSAGE = "timeout";
342
343
344
345
346 public static final String TRAVEL_ACCOUNT_LOOKUP_LINK_TEXT = "Travel Account Lookup";
347
348
349
350
351 public static final String UIF_COMPONENTS_KITCHEN_SINK_LINK_TEXT = "Uif Components (Kitchen Sink)";
352
353
354
355
356 public static final String VALIDATION_FRAMEWORK_DEMO_XPATH = "(//a[contains(text(),'Validation Framework Demo')])";
357
358
359
360
361 public static final String KUALI_COLLECTION_TOTALLING_WINDOW_XPATH = "Kuali :: Collection Totaling";
362
363
364
365
366 public static final String KUALI_COLLECTION_TOTALLING_XPATH = "//a[text()='Collection Totaling']";
367
368
369
370
371 public static final String XML_INGESTER_LINK_TEXT = "XML Ingester";
372
373
374
375
376 public static final String FISCAL_OFFICER_INFO_MAINTENANCE_NEW_XPATH = "//a[@title='FiscalOfficerInfo Maintenance (New)']";
377
378 static ChromeDriverService chromeDriverService;
379
380 protected WebDriver driver;
381 protected String user = "admin";
382 protected int waitSeconds = DEFAULT_WAIT_SEC;
383 protected boolean passed = false;
384 protected String uiFramework = ITUtil.REMOTE_UIF_KNS;
385
386 private Log log = LogFactory.getLog(getClass());
387
388 public @Rule
389 TestName testName = new TestName();
390
391 protected String testMethodName;
392
393 protected String jGrowlHeader;
394
395 String sessionId = null;
396
397
398
399
400
401
402 @BeforeClass
403 public static void chromeDriverService() throws Exception {
404 chromeDriverService = WebDriverUtil.chromeDriverCreateCheck();
405 if (chromeDriverService != null)
406 chromeDriverService.start();
407 }
408
409
410
411
412
413
414
415 public abstract String getTestUrl();
416
417
418
419
420
421 protected void navigateInternal() throws Exception {
422
423 }
424
425 protected void startSession(Method method) throws Exception {
426 testMethodName = method.getName();
427 }
428
429
430
431
432
433
434
435 @Before
436 public void testSetUp() {
437
438 try {
439 if (testName != null && testName.getMethodName() != null) {
440 testMethodName = testName.getMethodName();
441 }
442
443 waitSeconds = Integer.parseInt(System.getProperty(REMOTE_PUBLIC_WAIT_SECONDS_PROPERTY, DEFAULT_WAIT_SEC + ""));
444 String givenUser = WebDriverUtil.determineUser(this.toString());
445 if (givenUser != null) {
446 user = givenUser;
447 }
448
449 String testUrl = kulrice9804();
450
451 driver = WebDriverUtil.setUp(getUserName(), testUrl , getClass().getSimpleName(), testMethodName);
452 this.sessionId = ((RemoteWebDriver) driver).getSessionId().toString();
453
454 jGrowlHeader = getClass().getSimpleName() + "." + testMethodName;
455 System.out.println(jGrowlHeader + " sessionId is " + sessionId);
456 WebDriverUtil.loginKradOrKns(driver, user, this);
457
458 navigateInternal();
459
460 } catch (Throwable t) {
461 System.out.println("Throwable " + t.getMessage() + " in Before annotated method is very bad, ignoring and letting first method of test class to fail.");
462 t.printStackTrace();
463 System.out.println("Throwable " + t.getMessage() + " in Before annotated method is very bad, ignoring and letting first method of test class to fail.");
464 }
465 }
466
467
468
469
470
471 private String kulrice9804() {
472 String testUrl = getTestUrl();
473 if (testUrl.contains(ITUtil.HIDE_RETURN_LINK) &&
474 !testUrl.contains("&showMaintenanceLinks=true")) {
475 testUrl += "&showMaintenanceLinks=true";
476 }
477 return testUrl;
478 }
479
480
481
482
483
484
485
486
487 @After
488 public void tearDown() {
489 try {
490 if (!passed) {
491 jGrowlSticky("FAILURE!");
492 }
493
494 WebDriverUtil.tearDown(passed, sessionId, this.toString().trim(), user);
495 } catch (Throwable t) {
496 System.out.println("Exception in tearDown " + t.getMessage());
497 t.printStackTrace();
498 }
499
500 finally {
501 try {
502 closeAndQuitWebDriver();
503 } catch (Throwable t) {
504 System.out.println(t.getMessage() + " occured during tearDown, ignoring to avoid killing test run.");
505 t.printStackTrace();
506 System.out.println(t.getMessage() + " occured during tearDown, ignoring to avoid killing test run.");
507 }
508 }
509 }
510
511 private void closeAndQuitWebDriver() {
512 if (driver != null) {
513 if (ITUtil.dontTearDownPropertyNotSet() && dontTearDownOnFailure()) {
514 try {
515 driver.close();
516 } catch (NoSuchWindowException nswe) {
517 System.out.println("NoSuchWindowException closing WebDriver " + nswe.getMessage());
518 } finally {
519 if (driver != null) {
520 driver.quit();
521 }
522 }
523 }
524 } else {
525 System.out.println("WebDriver is null for " + this.getClass().toString() + ", if using saucelabs, has" +
526 " sauceleabs been uncommented in WebDriverUtil.java? If using a remote hub did you include the port?");
527 }
528 }
529
530 private boolean dontTearDownOnFailure() {
531 if (!"n".equalsIgnoreCase(System.getProperty(DONT_TEAR_DOWN_ON_FAILURE_PROPERTY, "n"))) {
532 return passed;
533 }
534 return true;
535 }
536
537
538
539
540 protected void passed() {
541 passed = true;
542 jGrowlSticky("Passed");
543 }
544
545 protected void agendaLookupAssertions() throws Exception {
546 testLookUp();
547 assertTextPresent("Rules");
548 waitAndClick(By.xpath(CANCEL2_XPATH));
549 }
550
551
552
553
554
555 protected void alertAccept() {
556 Alert alert = driver.switchTo().alert();
557
558 alert.accept();
559 }
560
561
562
563
564
565 protected void alertDismiss() {
566 Alert alert = driver.switchTo().alert();
567
568 alert.dismiss();
569 }
570
571 protected void assertAttributeClassRegexDoesntMatch(String field, String regex) throws InterruptedException {
572 Thread.sleep(1000);
573 String attribute = waitAndGetAttributeByName(field, "class");
574 SeleneseTestBase.assertTrue("waitAndGetAttributeByName(" + field + ", \"class\") should not be null", attribute != null);
575 SeleneseTestBase.assertFalse("attribute " + attribute + " matches regex " + regex + " and it should not",
576 attribute.matches(regex));
577 }
578
579 protected void assertAttributeClassRegexMatches(String field, String regex) throws InterruptedException {
580 Thread.sleep(1000);
581 String attribute = waitAndGetAttributeByName(field, "class");
582 SeleneseTestBase.assertTrue("waitAndGetAttributeByName(" + field + ", \"class\") should not be null", attribute != null);
583 SeleneseTestBase.assertTrue("attribute " + attribute + " doesn't match regex " + regex, attribute.matches(
584 regex));
585 }
586
587 protected void assertBlanketApproveButtonsPresent() {
588 assertElementPresentByName("methodToCall.route");
589 assertElementPresentByName("methodToCall.save");
590 assertElementPresentByName(BLANKET_APPROVE_NAME, "Blanket Approve button not present does " + user + " have permssion?");
591 assertElementPresentByName("methodToCall.close");
592 assertElementPresentByName(CANCEL_NAME);
593 }
594
595 protected void assertButtonDisabledByText(String buttonText) {
596 SeleneseTestBase.assertTrue(!findButtonByText(buttonText).isEnabled());
597 }
598
599 protected void assertButtonEnabledByText(String buttonText) {
600 SeleneseTestBase.assertTrue(findButtonByText(buttonText).isEnabled());
601 }
602
603 protected void assertCancelConfirmation() throws InterruptedException {
604 waitAndClickByLinkText("Cancel");
605 alertDismiss();
606 }
607
608 protected void assertDocFinal(String docId) throws InterruptedException {
609 jiraAwareWaitFor(By.linkText("spreadsheet"), "");
610
611 if (isElementPresent(By.linkText(docId))) {
612 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getDocStatus());
613 } else {
614 SeleneseTestBase.assertEquals(docId,findElement(By.xpath(DOC_ID_XPATH_2)));
615 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getDocStatus());
616 }
617 }
618
619 protected void assertElementPresentByName(String name) {
620 assertElementPresentByName(name, "");
621 }
622
623 protected void assertElementPresentByName(String name, String message) {
624 try {
625 findElement(By.name(name));
626 } catch (Exception e) {
627 failableFail(name + " not present " + message);
628 }
629 }
630
631 protected void assertElementPresentByXpath(String locator) {
632 assertElementPresentByXpath(locator, "");
633 }
634
635 protected void assertElementPresentByXpath(String locator, String message) {
636 try {
637 findElement(By.xpath(locator));
638 } catch (Exception e) {
639 jiraAwareFail(By.xpath(locator), message, e);
640 }
641 }
642
643 protected void assertElementPresentByLinkText(String linkText) {
644 try {
645 findElement(By.linkText(linkText));
646 } catch (Exception e) {
647 jiraAwareFail(By.cssSelector(linkText), "", e);
648 }
649
650 }
651
652 protected void assertElementPresent(String locator) {
653 try {
654 findElement(By.cssSelector(locator));
655 } catch (Exception e) {
656 jiraAwareFail(By.cssSelector(locator), "", e);
657 }
658 }
659
660 protected void assertFocusTypeBlurError(String field, String textToType) throws InterruptedException {
661 fireEvent(field, "focus");
662 waitAndTypeByName(field, textToType);
663 fireEvent(field, "blur");
664 Thread.sleep(200);
665 assertAttributeClassRegexMatches(field, REGEX_ERROR);
666 }
667
668 protected void assertFocusTypeBlurError(String field, String[] errorInputs) throws InterruptedException {
669 for (String errorInput: errorInputs) {
670 assertFocusTypeBlurError(field, errorInput);
671 clearTextByName(field);
672 }
673 }
674
675 protected void assertFocusTypeBlurValid(String field, String textToType) throws InterruptedException {
676 fireEvent(field, "focus");
677 waitAndTypeByName(field, textToType);
678 fireEvent(field, "blur");
679 Thread.sleep(200);
680 assertAttributeClassRegexMatches(field, REGEX_VALID);
681 assertAttributeClassRegexDoesntMatch(field, REGEX_ERROR);
682 }
683
684 protected void assertFocusTypeBlurValid(String field, String[] validInputs) throws InterruptedException {
685 for (String validInput: validInputs) {
686 assertFocusTypeBlurValid(field, validInput);
687 clearTextByName(field);
688 }
689 }
690
691 protected void assertIsVisibleByXpath(String xpath, String message) {
692 if (!isVisibleByXpath(xpath)) {
693 jiraAwareFail(xpath + " not visiable " + message);
694 }
695 }
696
697 protected void assertIsNotVisibleByXpath(String xpath, String message) {
698 if (isVisibleByXpath(xpath)) {
699 jiraAwareFail(xpath + " not visiable " + message);
700 }
701 }
702
703 protected void assertIsVisible(String locator) {
704 if (!isVisible(locator)) {
705 jiraAwareFail(locator + " is not visible and should be");
706 }
707 }
708
709 protected void assertIsVisibleById(String id) {
710 if (!isVisibleById(id)) {
711 jiraAwareFail(id + " is not visible and should be");
712 }
713 }
714
715 protected void assertIsNotVisible(String locator) {
716 if (isVisible(locator)) {
717 jiraAwareFail(locator + " is visible and should not be");
718 }
719 }
720
721 protected void assertIsNotVisibleByXpath(String xpath) {
722 if (isVisible(By.xpath(xpath))) {
723 jiraAwareFail(xpath + " is visible and should not be");
724 }
725 }
726
727 protected void assertLabelFor(String forElementId, String labelText) {
728 SeleneseTestBase.assertEquals(labelText, getForLabelText(forElementId));
729 }
730
731
732
733
734
735
736
737
738 protected void assertPopUpWindowUrl(By by, String windowName, String url) {
739 findElement(by).click();
740 String parentWindowHandle = driver.getWindowHandle();
741
742 driver.switchTo().window(windowName).findElements(By.tagName("head"));
743 SeleneseTestBase.assertEquals(url, driver.getCurrentUrl());
744 driver.switchTo().window(parentWindowHandle);
745 }
746
747 protected void assertTableLayout() {
748 String pageSource = driver.getPageSource();
749 SeleneseTestBase.assertTrue(pageSource.contains("Table Layout"));
750 SeleneseTestBase.assertTrue(pageSource.contains("Field 1"));
751 SeleneseTestBase.assertTrue(pageSource.contains("Field 2"));
752 SeleneseTestBase.assertTrue(pageSource.contains("Field 3"));
753 SeleneseTestBase.assertTrue(pageSource.contains("Field 4"));
754 SeleneseTestBase.assertTrue(pageSource.contains("Actions"));
755 }
756
757
758
759
760
761 protected void assertTextPresent(String text) {
762 assertTextPresent(text, "");
763 }
764
765
766
767
768
769 protected void assertTextPresent(String text, String message) {
770 String pageSource = driver.getPageSource();
771 if (!pageSource.contains(text)) {
772 failableFail(text + " not present " + message);
773 }
774 }
775
776
777
778
779
780 protected void assertTextPresent(String text, String cssSelector, String message){
781 WebElement element = findElement(By.cssSelector(cssSelector));
782 if (!element.getText().contains(text)){
783 failableFail(text + " for " + cssSelector + " not present " + message);
784 }
785 }
786
787
788
789
790
791
792 protected void assertTextNotPresent(String text) {
793 assertTextNotPresent(text, "");
794 }
795
796
797
798
799
800
801 protected void assertTextNotPresent(String text, String message) {
802 if (driver.getPageSource().contains(text)) {
803 failableFail(text + " is present and should not be " + message);
804 }
805 }
806
807 protected void back() {
808 driver.navigate().back();
809 }
810
811 private void blanketApproveAssert() throws InterruptedException {
812 checkForDocError();
813 ITUtil.checkForIncidentReport(driver.getPageSource(), DOC_SEARCH_XPATH, this, "Blanket Approve failure");
814 waitAndClickDocSearch();
815 waitForElementsPresentByClassName("footer-copyright", "footer-copyright");
816 SeleneseTestBase.assertEquals("Kuali Portal Index", driver.getTitle());
817 selectFrameIframePortlet();
818 waitAndClickSearch();
819 }
820
821 protected void blanketApproveCheck() throws InterruptedException {
822 ITUtil.checkForIncidentReport(driver.getPageSource(), BLANKET_APPROVE_NAME, this, "");
823 waitAndClickByName(BLANKET_APPROVE_NAME,
824 "No blanket approve button does the user " + getUserName() + " have permission?");
825 Thread.sleep(2000);
826 }
827
828
829
830
831
832
833
834
835 protected void blanketApproveTest() throws InterruptedException {
836 ITUtil.checkForIncidentReport(driver.getPageSource(), BLANKET_APPROVE_NAME, this, "");
837 waitAndClickByName(BLANKET_APPROVE_NAME,
838 "No blanket approve button does the user " + getUserName() + " have permission?");
839 Thread.sleep(2000);
840
841 blanketApproveAssert();
842 }
843
844 protected void check(By by) throws InterruptedException {
845 WebElement element = findElement(by);
846
847 if (!element.isSelected()) {
848 element.click();
849 }
850 }
851
852 protected void checkById(String id) throws InterruptedException {
853 check(By.id(id));
854 }
855
856 protected void checkByName(String name) throws InterruptedException {
857 check(By.name(name));
858 }
859
860 protected void checkByXpath(String locator) throws InterruptedException {
861 check(By.xpath(locator));
862 }
863
864 protected void checkErrorMessageItem(String message) {
865 final String error_locator = "//li[@class='uif-errorMessageItem']";
866 assertElementPresentByXpath(error_locator);
867 String errorText = null;
868
869 try {
870 errorText = getTextByXpath(error_locator);
871 } catch (InterruptedException e) {
872 e.printStackTrace();
873 }
874
875 if (errorText != null && errorText.contains("errors")) {
876 failableFail(errorText + message);
877 }
878 }
879
880
881
882
883 public void checkForDocError() {
884 checkForIncidentReport();
885 if (hasDocError()) {
886 String errorText = extractErrorText();
887 failableFail(errorText);
888 }
889 }
890
891 protected String extractErrorText() {
892 String errorText = driver.findElement(By.xpath(ITUtil.DIV_ERROR_LOCATOR)).getText();
893 errorText = ITUtil.blanketApprovalCleanUpErrorText(errorText);
894 if (driver.findElements(By.xpath(ITUtil.DIV_EXCOL_LOCATOR)).size() > 0) {
895 errorText = ITUtil.blanketApprovalCleanUpErrorText(driver.findElement(
896 By.xpath(ITUtil.DIV_EXCOL_LOCATOR)).getText());
897 }
898 if (driver.findElements(By.xpath(DIV_LEFT_ERRMSG)).size() > 0) {
899 errorText = errorText + ITUtil.blanketApprovalCleanUpErrorText(driver.findElement(By.xpath(DIV_LEFT_ERRMSG)).getText());
900 }
901 return errorText;
902 }
903
904
905
906
907
908 public boolean hasDocError() {
909 if (driver.findElements(By.xpath(ITUtil.DIV_ERROR_LOCATOR)).size() > 0) {
910 String errorText = driver.findElement(By.xpath(ITUtil.DIV_ERROR_LOCATOR)).getText();
911 if (errorText != null && errorText.contains("error(s) found on page.")) {
912 return true;
913 }
914 }
915 return false;
916 }
917
918
919
920
921
922
923 public boolean hasDocError(String errorTextToMatch) {
924 if (driver.findElements(By.xpath(ITUtil.DIV_ERROR_LOCATOR)).size() > 0) {
925 String errorText = driver.findElement(By.xpath(ITUtil.DIV_ERROR_LOCATOR)).getText();
926 if (errorText != null && errorText.contains("error(s) found on page.")) {
927 WebElement errorDiv = driver.findElement(By.xpath("//div[@class='left-errmsg']/div[2]/div")); // don't highlight
928 if (errorDiv != null) {
929 errorText = errorDiv.getText();
930 return errorText != null && errorText.contains(errorTextToMatch);
931 }
932 }
933 }
934 return false;
935 }
936
937 protected void checkForIncidentReport() {
938 checkForIncidentReport("", "");
939 }
940
941 protected void checkForIncidentReport(String locator) {
942 checkForIncidentReport(locator, "");
943 }
944
945 protected void checkForIncidentReport(String locator, String message) {
946 ITUtil.checkForIncidentReport(driver.getPageSource(), locator, this, message);
947 }
948
949 protected void checkForIncidentReport(String locator, Failable failable, String message) {
950 ITUtil.checkForIncidentReport(driver.getPageSource(), locator, failable, message);
951 }
952
953 protected void clearText(By by) throws InterruptedException {
954 findElement(by).clear();
955 }
956
957 protected void clearText(String selector) throws InterruptedException {
958 clearText(By.cssSelector(selector));
959 }
960
961 protected void clearTextByName(String name) throws InterruptedException {
962 clearText(By.name(name));
963 }
964
965 protected void clearTextByXpath(String locator) throws InterruptedException {
966 clearText(By.xpath(locator));
967 }
968
969 protected void close() {
970 driver.close();
971 }
972
973 protected void colapseExpandByXpath(String clickLocator, String visibleLocator) throws InterruptedException {
974 waitAndClickByXpath(clickLocator);
975 waitNotVisibleByXpath(visibleLocator);
976 waitAndClickByXpath(clickLocator);
977 waitIsVisibleByXpath(visibleLocator);
978 }
979
980 protected String configNameSpaceBlanketApprove() throws Exception {
981 String docId = waitForDocId();
982 String dtsPlusTwoChars = ITUtil.createUniqueDtsPlusTwoRandomChars();
983 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Namespace " + ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits());
984 assertBlanketApproveButtonsPresent();
985 waitAndTypeByXpath(DOC_CODE_XPATH, "VTN" + dtsPlusTwoChars);
986 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']",
987 "Validation Test NameSpace " + dtsPlusTwoChars);
988 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.applicationId']", "RICE");
989
990 return docId;
991 }
992
993 protected void contextLookupAssertions() throws Exception {
994 testLookUp();
995 assertTextPresent("Notes and Attachments");
996 waitAndClick(By.xpath(CANCEL2_XPATH));
997 passed();
998 }
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030 protected void expandColapseByXpath(String clickLocator, String visibleLocator) throws InterruptedException {
1031 waitAndClickByXpath(clickLocator);
1032 waitIsVisibleByXpath(visibleLocator);
1033 waitAndClickByXpath(clickLocator);
1034 waitNotVisibleByXpath(visibleLocator);
1035 }
1036
1037
1038
1039
1040
1041
1042 public String[] getAllWindowTitles() {
1043 return (String[]) driver.getWindowHandles().toArray();
1044 }
1045
1046 protected String waitAndGetAttribute(By by, String attribute) throws InterruptedException {
1047 jiraAwareWaitFor(by, attribute);
1048
1049 return findElement(by).getAttribute(attribute);
1050 }
1051
1052
1053
1054
1055
1056
1057
1058 protected String waitAndGetAttributeByName(String name, String attribute) throws InterruptedException {
1059 return waitAndGetAttribute(By.name(name), attribute);
1060 }
1061
1062
1063
1064
1065
1066
1067
1068 protected String waitAndGetAttributeByXpath(String locator, String attribute) throws InterruptedException {
1069 return waitAndGetAttribute(By.xpath(locator), attribute);
1070 }
1071
1072 protected String[] waitAndGetText(By by) throws InterruptedException {
1073 WebDriverUtil.waitFors(driver, DEFAULT_WAIT_SEC, by, "");
1074 List<WebElement> found = findElements(by);
1075 String[] texts = new String[found.size()];
1076 int i = 0;
1077
1078 for (WebElement element: found) {
1079 texts[i++] = element.getText();
1080 }
1081
1082 if (texts.length == 0) {
1083 jiraAwareFail(by.toString());
1084 }
1085
1086 return texts;
1087 }
1088
1089
1090 protected String getBaseUrlString() {
1091 return ITUtil.getBaseUrlString();
1092 }
1093
1094 protected int getCssCount(String selector) {
1095 return getCssCount(By.cssSelector(selector));
1096 }
1097
1098
1099
1100
1101
1102
1103 protected int getCssCount(By by) {
1104 return (findElements(by)).size();
1105 }
1106
1107 protected String getDocStatus() {
1108 return findElement(By.xpath(DOC_STATUS_XPATH_2)).getText();
1109 }
1110
1111
1112
1113
1114
1115
1116
1117 protected String[] getSelectOptions(By by) throws InterruptedException {
1118 WebElement select1 = driver.findElement(by);
1119 List<WebElement> options = select1.findElements(By.tagName("option"));
1120 String[] optionValues = new String[options.size()];
1121 int counter = 0;
1122
1123 for (WebElement option : options) {
1124 optionValues[counter] = option.getAttribute("value");
1125 counter++;
1126 }
1127
1128 return optionValues;
1129 }
1130
1131 protected String[] getSelectOptionsByName(String name) throws InterruptedException {
1132 return getSelectOptions(By.name(name));
1133 }
1134
1135 protected String[] getSelectOptionsByXpath(String locator) throws InterruptedException {
1136 return getSelectOptions(By.xpath(locator));
1137 }
1138
1139
1140
1141
1142
1143 public String getSessionId() {
1144 return sessionId;
1145 }
1146
1147 protected String getText(By by) throws InterruptedException {
1148 WebElement element = findElement(by);
1149 return element.getText();
1150 }
1151
1152 protected String getTextByClassName(String className) throws InterruptedException {
1153 return getText(By.className(className));
1154 }
1155
1156 protected String getTextById(String id) throws InterruptedException {
1157 return getText(By.id(id));
1158 }
1159
1160 protected String getTextByName(String name) throws InterruptedException {
1161 return getText(By.name(name));
1162 }
1163
1164 protected String getText(String locator) throws InterruptedException {
1165 return getText(By.cssSelector(locator));
1166 }
1167
1168 protected String getTextByXpath(String locator) throws InterruptedException {
1169 return getText(By.xpath(locator));
1170 }
1171
1172 protected String getTitle() {
1173 return driver.getTitle();
1174 }
1175
1176
1177
1178
1179
1180 public String getUserName() {
1181 return user;
1182 }
1183
1184
1185
1186
1187
1188
1189 protected void gotoNestedFrame() {
1190 driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
1191 driver.switchTo().defaultContent();
1192
1193 if (driver.findElements(By.xpath("//iframe")).size() > 0) {
1194 WebElement containerFrame = driver.findElement(By.xpath("//iframe")); // don't highlight
1195 driver.switchTo().frame(containerFrame);
1196 }
1197
1198 if (driver.findElements(By.xpath("//iframe")).size() > 0) {
1199 WebElement contentFrame = driver.findElement(By.xpath("//iframe")); // don't highlight
1200 driver.switchTo().frame(contentFrame);
1201 }
1202
1203 driver.manage().timeouts().implicitlyWait(waitSeconds, TimeUnit.SECONDS);
1204 }
1205
1206
1207
1208
1209
1210 public void failableFail(String message) {
1211 passed = false;
1212 jGrowlSticky(message);
1213 fail(message);
1214 }
1215
1216 protected WebElement findButtonByText(String buttonText) {
1217 return findElement(By.xpath("//button[contains(text(), '" + buttonText + "')]"));
1218 }
1219
1220 protected WebElement findElement(By by) {
1221 WebElement found = driver.findElement(by);
1222 WebDriverUtil.highlightElement(driver, found);
1223 return found;
1224 }
1225
1226 protected WebElement findElement(By by, WebElement elementToFindOn) {
1227 WebElement found = elementToFindOn.findElement(by);
1228 WebDriverUtil.highlightElement(driver, found);
1229 return found;
1230 }
1231
1232 protected List<WebElement> findVisibleElements(By by) {
1233 List<WebElement> webElements = driver.findElements(by);
1234 List<WebElement> visibleWebElements = new LinkedList<WebElement>();
1235 for (WebElement webElement: webElements) {
1236 if (webElement.isDisplayed()) {
1237 visibleWebElements.add(webElement);
1238 }
1239 }
1240
1241 return visibleWebElements;
1242 }
1243
1244 protected List<WebElement> findElements(By by) {
1245 List<WebElement> found = driver.findElements(by);
1246 return found;
1247 }
1248
1249 protected void fireEvent(String name, String event) {
1250 ((JavascriptExecutor) driver).executeScript("var elements=document.getElementsByName(\"" + name + "\");" +
1251 "for (var i = 0; i < elements.length; i++){" +
1252 "elements[i]." + event + "();}");
1253 }
1254
1255 protected void fireEvent(String name, String value, String event) {
1256 ((JavascriptExecutor) driver).executeScript("var elements=document.getElementsByName(\"" + name + "\");" +
1257 "for (var i = 0; i < elements.length; i++){" +
1258 "if(elements[i].value=='" + value + "')" +
1259 "elements[i]." + event + "();}");
1260 }
1261
1262
1263
1264
1265
1266 public void fireMouseOverEventByName(String name) {
1267 this.fireMouseOverEvent(By.name(name));
1268 }
1269
1270
1271
1272
1273
1274 public void fireMouseOverEventById(String id) {
1275 this.fireMouseOverEvent(By.id(id));
1276 }
1277
1278
1279
1280
1281
1282 public void fireMouseOverEventByXpath(String locator) {
1283 this.fireMouseOverEvent(By.xpath(locator));
1284 }
1285
1286
1287
1288
1289
1290 public void fireMouseOverEvent(By by) {
1291 Actions builder = new Actions(driver);
1292 Actions hover = builder.moveToElement(findElement(by));
1293 hover.perform();
1294 }
1295
1296 protected boolean isChecked(By by) {
1297 return findElement(by).isSelected();
1298 }
1299
1300 protected boolean isCheckedById(String id) {
1301 return isChecked(By.id(id));
1302 }
1303
1304 protected boolean isCheckedByName(String name) {
1305 return isChecked(By.name(name));
1306 }
1307
1308 protected boolean isCheckedByXpath(String locator) {
1309 return isChecked(By.xpath(locator));
1310 }
1311
1312 protected boolean isEnabled(By by) {
1313 return findElement(by).isEnabled();
1314 }
1315
1316 protected boolean isEnabledById(String id) {
1317 return isEnabled(By.id(id));
1318 }
1319
1320 protected boolean isEnabledByName(String name) {
1321 return isEnabled(By.name(name));
1322 }
1323
1324 protected boolean isEnabledByXpath(String locator) {
1325 return isEnabled(By.xpath(locator));
1326 }
1327
1328 protected int howManyAreVisible(By by) throws InterruptedException {
1329 int count = 0;
1330 if (by == null) {
1331
1332 return count;
1333 }
1334
1335 List<WebElement> webElementsFound = driver.findElements(by);
1336 for (WebElement webElement: webElementsFound) {
1337 if (webElement.isDisplayed()) {
1338 count++;
1339 }
1340 }
1341
1342 return count;
1343 }
1344
1345
1346
1347
1348
1349
1350 protected boolean isElementPresent(By by) {
1351 return (driver.findElements(by)).size() > 0;
1352 }
1353
1354
1355
1356
1357
1358
1359 protected boolean isElementPresent(String locator) {
1360 return (driver.findElements(By.cssSelector(locator))).size() > 0;
1361 }
1362
1363 protected boolean isElementPresentById(String id) {
1364 return isElementPresent(By.id(id));
1365 }
1366
1367 protected boolean isElementPresentByName(String name) {
1368 return isElementPresent(By.name(name));
1369 }
1370
1371 protected boolean isElementPresentByXpath(String locator) {
1372 return isElementPresent(By.xpath(locator));
1373 }
1374
1375 protected boolean isElementPresentByLinkText(String locator) {
1376 return isElementPresent(By.linkText(locator));
1377 }
1378
1379 protected boolean isElementPresentByDataAttributeValue(String dataAttributeName, String dataAttributeValue) {
1380 return isElementPresent(By.cssSelector("[data-" + dataAttributeName +"='"+ dataAttributeValue +"']"));
1381 }
1382
1383 protected boolean isNotVisible(By by) {
1384 return !(isVisible(by));
1385 }
1386
1387 protected Boolean isTextPresent(String text) {
1388 if (driver.getPageSource().contains(text)) {
1389 return Boolean.TRUE;
1390 }
1391
1392 return Boolean.FALSE;
1393 }
1394
1395 protected boolean isVisible(String locator) {
1396 return isVisible(By.cssSelector(locator));
1397 }
1398
1399 protected boolean isVisible(By by) {
1400 List<WebElement> elements = driver.findElements(by);
1401 for (WebElement element: elements) {
1402 if (element.isDisplayed()) {
1403 return true;
1404 }
1405 }
1406 return false;
1407 }
1408
1409 protected boolean isVisibleById(String id) {
1410 return isVisible(By.id(id));
1411 }
1412
1413 protected boolean isVisibleByXpath(String locator) {
1414 return isVisible(By.xpath(locator));
1415 }
1416
1417 protected void jGrowl(String message) {
1418 WebDriverUtil.jGrowl(driver, jGrowlHeader, false, message);
1419 }
1420
1421
1422
1423
1424
1425 protected void jGrowlSticky(String message) {
1426 WebDriverUtil.jGrowl(driver, jGrowlHeader, true, message);
1427 }
1428
1429 private void jiraAwareFail(By by, String message, Throwable t) {
1430 JiraAwareFailureUtil.failOnMatchedJira(by.toString(), message, this);
1431
1432 checkForIncidentReport(by.toString(), message);
1433 failableFail(t.getMessage() + "\n" + by.toString() + " " + message + " " + driver.getCurrentUrl());
1434 }
1435
1436 private void jiraAwareFail(String message) {
1437 JiraAwareFailureUtil.failOnMatchedJira(message, message, this);
1438
1439 checkForIncidentReport(message, message);
1440 failableFail(message + " " + driver.getCurrentUrl());
1441 }
1442
1443 protected void jiraAwareWaitAndClick(By by, String message) throws InterruptedException {
1444 jiraAwareWaitAndClick(by, message, this);
1445 }
1446
1447 protected void jiraAwareWaitAndClick(By by, String message, Failable failable) throws InterruptedException {
1448 try {
1449 jiraAwareWaitFor(by, message, failable);
1450 WebElement element = findElement(by);
1451 element.click();
1452 } catch (Exception e) {
1453 jiraAwareFail(by, message, e);
1454 }
1455 }
1456
1457 protected WebElement jiraAwareWaitFor(By by, String message) throws InterruptedException {
1458 try {
1459 return WebDriverUtil.waitFor(this.driver, this.waitSeconds, by, message);
1460 } catch (Throwable t) {
1461 jiraAwareFail(by, message, t);
1462 }
1463 return null;
1464 }
1465
1466 protected void jiraAwareWaitFors(By by, String message) throws InterruptedException {
1467 try {
1468 WebDriverUtil.waitFors(this.driver, this.waitSeconds, by, message);
1469 } catch (Throwable t) {
1470 jiraAwareFail(by, message, t);
1471 }
1472 }
1473
1474 protected void jiraAwareWaitFor(By by, String message, Failable failable) throws InterruptedException {
1475 try {
1476 WebDriverUtil.waitFor(this.driver, this.waitSeconds, by, message);
1477 } catch (Throwable t) {
1478 jiraAwareFail(by, message, t);
1479 }
1480 }
1481
1482 protected WebElement jiraAwareWaitFor(By by, int seconds, String message) throws InterruptedException {
1483 try {
1484 return WebDriverUtil.waitFor(this.driver, seconds, by, message);
1485 } catch (Throwable t) {
1486 jiraAwareFail(by, message, t);
1487 }
1488 return null;
1489 }
1490
1491 protected void open(String url) {
1492 driver.get(url);
1493 }
1494
1495 protected void selectFrameIframePortlet() {
1496 selectFrame(IFRAMEPORTLET_NAME);
1497 }
1498
1499 protected void selectFrame(String locator) {
1500
1501 if (IFRAMEPORTLET_NAME.equals(locator)) {
1502 gotoNestedFrame();
1503 } else {
1504 WebDriverUtil.selectFrameSafe(driver, locator);
1505 }
1506 }
1507
1508 protected void selectTopFrame() {
1509 driver.switchTo().defaultContent();
1510 }
1511
1512 protected void selectWindow(String locator) {
1513 driver.switchTo().window(locator);
1514 }
1515
1516 protected void selectByXpath(String locator, String selectText) throws InterruptedException {
1517 select(By.xpath(locator), selectText);
1518 }
1519
1520 protected void selectByName(String name, String selectText) throws InterruptedException {
1521 select(By.name(name), selectText);
1522 }
1523
1524
1525
1526
1527
1528
1529
1530 protected void select(By by, String selectText) throws InterruptedException {
1531 checkForIncidentReport(by.toString(), "trying to select text " + selectText);
1532 WebElement select1 = findElement(by);
1533 List<WebElement> options = select1.findElements(By.tagName("option"));
1534
1535 for (WebElement option : options) {
1536 if (option.getText().equals(selectText)) {
1537 option.click();
1538 break;
1539 }
1540 }
1541 }
1542
1543 protected void selectOptionByName(String name, String optionValue) throws InterruptedException {
1544 selectOption(By.name(name), optionValue);
1545 }
1546
1547 protected void selectOptionByXpath(String locator, String optionValue) throws InterruptedException {
1548 selectOption(By.name(locator), optionValue);
1549 }
1550
1551
1552
1553
1554
1555
1556
1557 protected void selectOption(By by, String optionValue) throws InterruptedException {
1558 WebElement select1 = findElement(by);
1559 List<WebElement> options = select1.findElements(By.tagName("option"));
1560
1561 if (options == null || options.size() == 0) {
1562 failableFail("No options for select " + select1.toString() + " was looking for value " + optionValue + " using " + by.toString());
1563 }
1564
1565 for (WebElement option : options) {
1566 if (option.getAttribute("value").equals(optionValue)) {
1567 option.click();
1568 break;
1569 }
1570 }
1571 }
1572
1573
1574
1575
1576
1577 public void switchToWindow(String title) {
1578 Set<String> windows = driver.getWindowHandles();
1579
1580 for (String window : windows) {
1581 driver.switchTo().window(window);
1582 if (driver.getTitle().contains(title)) {
1583 return;
1584 }
1585 }
1586 }
1587
1588
1589 protected void testAddingNamespace() throws Exception {
1590 testAddingNamespace(this);
1591 }
1592
1593
1594 protected void testAddingNamespace(Failable failable) throws Exception {
1595 selectFrameIframePortlet();
1596 waitAndCreateNew();
1597 waitForPageToLoad();
1598 assertElementPresentByXpath(SAVE_XPATH_2, "save button does not exist on the page");
1599
1600
1601 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Adding PEANUTS");
1602 waitAndTypeByXpath("//*[@id='document.documentHeader.explanation']", "I want to add PEANUTS to test KIM");
1603 waitAndTypeByXpath(DOC_CODE_XPATH, "PEANUTS");
1604 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", "The Peanuts Gang");
1605 checkByXpath("//input[@id='document.newMaintainableObject.active']");
1606 waitAndClickByXpath(SAVE_XPATH_2);
1607 waitForPageToLoad();
1608 checkForIncidentReport();
1609 assertDocumentStatusSaved();
1610
1611
1612 SeleneseTestBase.assertEquals(DOC_STATUS_SAVED, findElement(By.xpath(
1613 "//table[@class='headerinfo']/tbody/tr[1]/td[2]")).getText());
1614 SeleneseTestBase.assertEquals("admin", findElement(By.xpath(
1615 "//table[@class='headerinfo']/tbody/tr[2]/td[1]/a")).getText());
1616 }
1617
1618 protected void assertDocumentStatusSaved() {
1619 assertElementPresentByXpath(SAVE_SUCCESSFUL_XPATH,
1620 "Document is not saved successfully");
1621 }
1622
1623 protected void testAddingBrownGroup() throws Exception {
1624 selectFrameIframePortlet();
1625 waitAndCreateNew();
1626 waitForPageToLoad();
1627 String docId = waitForDocId();
1628
1629
1630 waitAndTypeByName("document.documentHeader.documentDescription", "Adding Brown Group");
1631 waitAndTypeByName("document.documentHeader.explanation", "I want to add Brown Group to test KIM");
1632 selectOptionByName("document.groupNamespace", "KR-IDM");
1633 waitForPageToLoad();
1634 String groupName = "BrownGroup " + ITUtil.createUniqueDtsPlusTwoRandomChars();
1635 waitAndTypeByName("document.groupName", groupName);
1636 checkByName("document.active");
1637 waitAndClickByXpath(SAVE_XPATH_2);
1638 waitForPageToLoad();
1639 assertElementPresentByXpath(SAVE_SUCCESSFUL_XPATH,"Document is not saved successfully");
1640 checkForIncidentReport();
1641
1642
1643 SeleneseTestBase.assertEquals(DOC_STATUS_SAVED, findElement(By.xpath("//table[@class='headerinfo']/tbody/tr[1]/td[2]")).getText());
1644 SeleneseTestBase.assertEquals("admin", findElement(By.xpath("//table[@class='headerinfo']/tbody/tr[2]/td[1]/a")).getText());
1645 waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kim.impl.identity.PersonImpl!!).(((principalId:member.memberId,principalName:member.memberName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorAssignees");
1646 waitForPageToLoad();
1647 waitAndClickSearch();
1648 waitForPageToLoad();
1649 waitAndClickReturnValue();
1650 waitForPageToLoad();
1651 waitAndClickByName("methodToCall.addMember.anchorAssignees");
1652 waitForPageToLoad();
1653 waitAndClickSave();
1654 waitAndClickSubmit();
1655 waitForPageToLoad();
1656 Thread.sleep(2000);
1657 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH,"Document is not submitted successfully");
1658 selectTopFrame();
1659 waitAndClickByLinkText("Administration");
1660 waitForPageToLoad();
1661 waitAndClickByLinkText("Group");
1662 waitForPageToLoad();
1663 selectFrameIframePortlet();
1664 waitAndTypeByName("name", groupName);
1665 waitAndClickSearch();
1666 isElementPresentByLinkText(groupName);
1667 }
1668
1669 protected void testAttributeDefinitionLookUp() throws Exception {
1670 waitForPageToLoad();
1671 selectFrameIframePortlet();
1672 checkForIncidentReport("testAttributeDefinitionLookUp");
1673 waitAndClickByXpath("//button[contains(.,'earch')]");
1674 Thread.sleep(3000);
1675 waitForPageToLoad();
1676 findElement(By.tagName("body")).getText().contains("Actions");
1677 waitAndClickByLinkText("1000");
1678 waitForPageToLoad();
1679 findElement(By.tagName("body")).getText().contains("Attribute Inquiry");
1680 findElement(By.tagName("body")).getText().contains("KRMS Attributes");
1681 findElement(By.tagName("body")).getText().contains("Attribute Label");
1682 findElement(By.tagName("body")).getText().contains("1000");
1683 findElement(By.tagName("body")).getText().contains("peopleFlowId");
1684 findElement(By.tagName("body")).getText().contains("KR-RULE");
1685 findElement(By.tagName("body")).getText().contains("PeopleFlow");
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699 passed();
1700 }
1701
1702 protected void testCancelConfirmation() throws InterruptedException {
1703 waitAndCancelConfirmation();
1704 passed();
1705 }
1706
1707 protected void testConfigParamaterBlanketApprove() throws Exception {
1708 selectFrameIframePortlet();
1709 waitAndCreateNew();
1710 String docId = waitForDocId();
1711 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Parameter ");
1712 assertBlanketApproveButtonsPresent();
1713 SeleneseTestBase.assertEquals("", getTextByName(CANCEL_NAME));
1714 selectByXpath("//select[@id='document.newMaintainableObject.namespaceCode']", "KR-NS - Kuali Nervous System");
1715 String componentLookUp = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.coreservice.impl.component.ComponentBo!!).(((code:document.newMaintainableObject.componentCode,namespaceCode:document.newMaintainableObject.namespaceCode,))).((`document.newMaintainableObject.componentCode:code,document.newMaintainableObject.namespaceCode:namespaceCode,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
1716 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
1717 waitAndClickByXpath(componentLookUp);
1718 waitAndClickSearch();
1719 waitAndClickReturnValue();
1720 String dtsTwo = ITUtil.createUniqueDtsPlusTwoRandomChars();
1721 String parameterName = "ValidationTestParameter" + dtsTwo;
1722 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", parameterName);
1723 waitAndTypeByXpath("//textarea[@id='document.newMaintainableObject.description']",
1724 "Validation Test Parameter Description" + dtsTwo);
1725 selectByXpath("//select[@id='document.newMaintainableObject.parameterTypeCode']", "Document Validation");
1726 waitAndClickByXpath("//input[@id='document.newMaintainableObject.evaluationOperatorCodeAllowed']");
1727 waitForPageToLoad();
1728 blanketApproveTest();
1729 assertDocFinal(docId);
1730 }
1731
1732 protected void testCreateNewAgenda() throws Exception {
1733 selectFrameIframePortlet();
1734 selectByName("document.newMaintainableObject.dataObject.namespace", "Kuali Rules Test");
1735 String agendaName = "Agenda Date :" + Calendar.getInstance().getTime().toString();
1736 waitAndTypeByName("document.newMaintainableObject.dataObject.agenda.name", "Agenda " + agendaName);
1737 waitAndTypeByName("document.newMaintainableObject.dataObject.contextName", "Context1");
1738 fireEvent("document.newMaintainableObject.dataObject.contextName", "blur");
1739 fireEvent("document.newMaintainableObject.dataObject.contextName", "focus");
1740 waitForElementPresentByName("document.newMaintainableObject.dataObject.agenda.typeId");
1741 selectByName("document.newMaintainableObject.dataObject.agenda.typeId", "Campus Agenda");
1742 waitForElementPresentByName("document.newMaintainableObject.dataObject.customAttributesMap[Campus]");
1743 waitAndTypeByName("document.newMaintainableObject.dataObject.customAttributesMap[Campus]", "BL");
1744 waitAndClickByXpath("//div[2]/button");
1745 waitForPageToLoad();
1746 waitAndClickByXpath("//div[2]/button[3]");
1747 waitForPageToLoad();
1748 selectTopFrame();
1749 waitAndClickByXpath("(//input[@name='imageField'])[2]");
1750 passed();
1751 }
1752
1753 protected void testCreateDocType() throws Exception {
1754 selectFrameIframePortlet();
1755 waitAndCreateNew();
1756 assertElementPresentByXpath("//*[@name='methodToCall.route' and @alt='submit']","save button does not exist on the page");
1757
1758
1759
1760 String docId = waitForDocId();
1761 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Creating new Document Type");
1762 String parentDocType = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.kew.doctype.bo.DocumentType!!).(((name:document.newMaintainableObject.parentDocType.name,documentTypeId:document.newMaintainableObject.docTypeParentId,))).((`document.newMaintainableObject.parentDocType.name:name,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
1763 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
1764 waitAndClickByXpath(parentDocType);
1765 waitForPageToLoad();
1766 Thread.sleep(2000);
1767 waitAndClickSearch();
1768 waitForPageToLoad();
1769 waitAndClickReturnValue();
1770 String docTypeName = "TestDocType" + ITUtil.createUniqueDtsPlusTwoRandomChars();
1771 waitForElementPresentByXpath("//input[@id='document.newMaintainableObject.name']");
1772 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", docTypeName);
1773 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedDocHandlerUrl']","${kr.url}/maintenance.do?methodToCall=docHandler");
1774
1775
1776 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.label']", "Label for " + docTypeName);
1777 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedHelpDefinitionUrl']","default.htm?turl=WordDocuments%2Fdocumenttype.htm");
1778 waitAndClickByXpath("//*[@name='methodToCall.route' and @alt='submit']");
1779 checkForIncidentReport();
1780 waitForPageToLoad();
1781 driver.switchTo().defaultContent();
1782 waitAndClickDocSearchTitle();
1783 waitForPageToLoad();
1784 selectFrameIframePortlet();
1785 waitAndClickSearch();
1786 Thread.sleep(2000);
1787 SeleneseTestBase.assertEquals(docId, findElement(By.xpath(DOC_ID_XPATH_2)).getText());
1788 }
1789
1790 protected void testCreateNewCancel() throws Exception {
1791 selectFrameIframePortlet();
1792 waitAndCreateNew();
1793 testCancelConfirmation();
1794 }
1795
1796 protected List<String> testCreateNewParameter(String docId, String parameterName) throws Exception {
1797 waitForPageToLoad();
1798 docId = waitForDocId();
1799
1800 waitAndTypeByName("document.documentHeader.documentDescription", "Adding Test Parameter");
1801 selectOptionByName("document.newMaintainableObject.namespaceCode", "KR-WKFLW");
1802 waitAndTypeByName("document.newMaintainableObject.componentCode", "ActionList");
1803 waitAndTypeByName("document.newMaintainableObject.applicationId", "KUALI");
1804 parameterName = "TestIndicator" + ITUtil.createUniqueDtsPlusTwoRandomChars();
1805 waitAndTypeByName("document.newMaintainableObject.name", parameterName);
1806 waitAndTypeByName("document.newMaintainableObject.value", "Y");
1807 waitAndTypeByName("document.newMaintainableObject.description", "for testing");
1808 selectOptionByName("document.newMaintainableObject.parameterTypeCode", "HELP");
1809 waitAndClickByXpath("//input[@name='document.newMaintainableObject.evaluationOperatorCode' and @value='A']");
1810 waitAndClickSave();
1811 waitAndClickSubmit();
1812 waitForPageToLoad();
1813 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH,"Document is not submitted successfully");
1814 selectTopFrame();
1815 waitAndClickDocSearchTitle();
1816 waitForPageToLoad();
1817 selectFrameIframePortlet();
1818 waitAndClickSearch();
1819 Thread.sleep(2000);
1820 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
1821 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
1822 selectTopFrame();
1823 List<String> params = new ArrayList<String>();
1824 params.add(docId);
1825 params.add(parameterName);
1826
1827 return params;
1828 }
1829
1830 protected List<String> testCreateNewParameterType(String docId, String parameterType, String parameterCode)throws Exception {
1831 waitForPageToLoad();
1832 docId = waitForDocId();
1833
1834
1835 waitAndTypeByName("document.documentHeader.documentDescription", "Adding Test Parameter Type");
1836 parameterCode = RandomStringUtils.randomAlphabetic(4).toLowerCase();
1837 waitAndTypeByName("document.newMaintainableObject.code", parameterCode);
1838 parameterType = "testing " + ITUtil.createUniqueDtsPlusTwoRandomChars();
1839 waitAndTypeByName("document.newMaintainableObject.name", parameterType);
1840 waitAndClickSave();
1841 waitAndClickSubmit();
1842 waitForPageToLoad();
1843 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, "Document is not submitted successfully");
1844 selectTopFrame();
1845 waitAndClickDocSearchTitle();
1846 waitForPageToLoad();
1847 selectFrameIframePortlet();
1848 waitAndClickSearch();
1849 Thread.sleep(2000);
1850 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
1851 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
1852 selectTopFrame();
1853 List<String> params = new ArrayList<String>();
1854 params.add(docId);
1855 params.add(parameterType);
1856 params.add(parameterCode);
1857
1858 return params;
1859 }
1860
1861 protected void testCreateNewSearchReturnValueCancelConfirmation() throws InterruptedException, Exception {
1862 selectFrameIframePortlet();
1863 waitAndCreateNew();
1864 waitAndClickSearch2();
1865 waitAndClickReturnValue();
1866 waitAndCancelConfirmation();
1867 passed();
1868 }
1869
1870 protected List<String> testCopyParameter(String docId, String parameterName) throws Exception {
1871 selectFrameIframePortlet();
1872 waitAndClickCopy();
1873 waitForPageToLoad();
1874 docId = waitForDocId();
1875 waitAndTypeByName("document.documentHeader.documentDescription", "Copying Test Parameter");
1876 selectOptionByName("document.newMaintainableObject.namespaceCode", "KR-WKFLW");
1877 waitAndTypeByName("document.newMaintainableObject.componentCode", "ActionList");
1878 waitAndTypeByName("document.newMaintainableObject.applicationId", "KUALI");
1879 parameterName = "TestIndicator" + ITUtil.createUniqueDtsPlusTwoRandomChars();
1880 waitAndTypeByName("document.newMaintainableObject.name", parameterName);
1881 waitAndClickSave();
1882 waitAndClickSubmit();
1883 waitForPageToLoad();
1884 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH,"Document is not submitted successfully");
1885 selectTopFrame();
1886 waitAndClickDocSearchTitle();
1887 waitForPageToLoad();
1888 selectFrameIframePortlet();
1889 waitAndClickSearch();
1890 Thread.sleep(2000);
1891 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
1892 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
1893 selectTopFrame();
1894 List<String> params = new ArrayList<String>();
1895 params.add(docId);
1896 params.add(parameterName);
1897
1898 return params;
1899 }
1900
1901 protected List<String> testCopyParameterType(String docId, String parameterType, String parameterCode) throws Exception {
1902 selectFrameIframePortlet();
1903 waitAndClickCopy();
1904 waitForPageToLoad();
1905 docId = waitForDocId();
1906 waitAndTypeByName("document.documentHeader.documentDescription", "Copying Test Parameter");
1907 parameterCode = RandomStringUtils.randomAlphabetic(4).toLowerCase();
1908 waitAndTypeByName("document.newMaintainableObject.code", parameterCode);
1909 clearTextByName("document.newMaintainableObject.name");
1910 parameterType = "testing " + ITUtil.createUniqueDtsPlusTwoRandomChars();
1911 waitAndTypeByName("document.newMaintainableObject.name", parameterType);
1912 waitAndClickSave();
1913 waitAndClickSubmit();
1914 waitForPageToLoad();
1915 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, "Document is not submitted successfully");
1916 selectTopFrame();
1917 waitAndClickDocSearchTitle();
1918 waitForPageToLoad();
1919 selectFrameIframePortlet();
1920 waitAndClickSearch();
1921 Thread.sleep(2000);
1922 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
1923 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
1924 selectTopFrame();
1925 List<String> params = new ArrayList<String>();
1926 params.add(docId);
1927 params.add(parameterType);
1928 params.add(parameterCode);
1929
1930 return params;
1931 }
1932
1933
1934 protected void testDocTypeLookup() throws Exception {
1935 selectFrameIframePortlet();
1936 waitAndClickByXpath("//input[@title='Search Parent Name']");
1937 waitForPageToLoad();
1938 waitAndClickByXpath(SAVE_XPATH_3);
1939 waitAndClickByXpath("//table[@id='row']/tbody/tr[contains(td[3],'RiceDocument')]/td[1]/a");
1940 waitForPageToLoad();
1941 waitAndClickByXpath(SAVE_XPATH_3);
1942 SeleneseTestBase.assertEquals("RiceDocument", getTextByXpath("//table[@id='row']/tbody/tr/td[4]/a"));
1943 waitAndClickByName("methodToCall.clearValues");
1944 waitAndTypeByName("name", "Kuali*D");
1945 waitAndClickByXpath(SAVE_XPATH_3);
1946 assertElementPresentByXpath("//table[@id='row']/tbody/tr[contains(td[3], 'KualiDocument')]");
1947 String docIdOld = getTextByXpath("//table[@id='row']/tbody/tr[contains(td[3], 'KualiDocument')]/td[2]/a");
1948 waitAndClickByName("methodToCall.clearValues");
1949 waitAndTypeByName("label", "KualiDocument");
1950 waitAndClickByXpath(SAVE_XPATH_3);
1951 assertElementPresentByXpath("//table[@id='row']/tbody/tr[contains(td[5], 'KualiDocument')]");
1952 waitAndClickByName("methodToCall.clearValues");
1953 waitAndTypeByName("documentTypeId", docIdOld);
1954 waitAndClickByXpath(SAVE_XPATH_3);
1955 assertElementPresentByXpath("//table[@id='row']/tbody/tr[contains(td[2], '" + docIdOld + "')]");
1956 }
1957
1958
1959 protected List<String> testEditParameterType(String docId, String parameterType, String parameterCode) throws Exception {
1960 selectFrameIframePortlet();
1961 waitAndClickEdit();
1962 waitForPageToLoad();
1963 docId = waitForDocId();
1964 waitAndTypeByName("document.documentHeader.documentDescription", "Editing Test Parameter");
1965 clearTextByName("document.newMaintainableObject.name");
1966 parameterType = "testing " + ITUtil.createUniqueDtsPlusTwoRandomChars();
1967 waitAndTypeByName("document.newMaintainableObject.name", parameterType);
1968 waitAndClickSave();
1969 waitAndClickSubmit();
1970 waitForPageToLoad();
1971 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, "Document is not submitted successfully");
1972 selectTopFrame();
1973 waitAndClickDocSearchTitle();
1974 waitForPageToLoad();
1975 selectFrameIframePortlet();
1976 waitAndClickSearch();
1977 Thread.sleep(2000);
1978 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
1979 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
1980 selectTopFrame();
1981 List<String> params = new ArrayList<String>();
1982 params.add(docId);
1983 params.add(parameterType);
1984 params.add(parameterCode);
1985
1986 return params;
1987 }
1988
1989 protected List<String> testEditParameter(String docId, String parameterName) throws Exception
1990 {
1991 selectFrameIframePortlet();
1992 waitAndClickEdit();
1993 waitForPageToLoad();
1994 docId = waitForDocId();
1995 waitAndTypeByName("document.documentHeader.documentDescription", "Editing Test Parameter");
1996 clearTextByName("document.newMaintainableObject.value");
1997 waitAndTypeByName("document.newMaintainableObject.value", "N");
1998 waitAndClickSave();
1999 waitAndClickSubmit();
2000 waitForPageToLoad();
2001 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, "Document is not submitted successfully");
2002 selectTopFrame();
2003 waitAndClickDocSearchTitle();
2004 waitForPageToLoad();
2005 selectFrameIframePortlet();
2006 waitAndClickSearch();
2007 Thread.sleep(2000);
2008 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
2009 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
2010 selectTopFrame();
2011 List<String> params = new ArrayList<String>();
2012 params.add(docId);
2013 params.add(parameterName);
2014 return params;
2015 }
2016
2017 protected void testEditRouteRulesDelegation() throws Exception {
2018 waitForPageToLoad();
2019 Thread.sleep(3000);
2020 SeleneseTestBase.assertEquals("Kuali Portal Index", getTitle());
2021 selectFrameIframePortlet();
2022 waitAndClickSearch();
2023 waitForPageToLoad();
2024 Thread.sleep(3000);
2025 waitAndClickEdit();
2026 waitForPageToLoad();
2027 Thread.sleep(3000);
2028 SeleneseTestBase.assertTrue(isElementPresentByName(CANCEL_NAME));
2029 waitAndClickCancel();
2030 waitForPageToLoad();
2031 Thread.sleep(3000);
2032 waitAndClickByName("methodToCall.processAnswer.button0");
2033 waitForPageToLoad();
2034 passed();
2035 }
2036
2037 protected void testFiscalOfficerInfoMaintenanceNew() throws Exception {
2038 selectFrameIframePortlet();
2039 checkForIncidentReport("", "https://jira.kuali.org/browse/KULRICE-7723 FiscalOfficerInfoMaintenanceNewIT.testUntitled need a better name and user permission error");
2040 String docId = getTextByXpath("//*[@id='u13_control']");
2041 waitAndTypeByXpath("//input[@name='document.documentHeader.documentDescription']", "New FO Doc");
2042 waitAndTypeByXpath("//input[@name='document.newMaintainableObject.dataObject.id']", "5");
2043 waitAndTypeByXpath("//input[@name='document.newMaintainableObject.dataObject.userName']", "Jigar");
2044 waitAndClickByXpath("//button[@id='usave']");
2045 Integer docIdInt = Integer.valueOf(docId).intValue();
2046 selectTopFrame();
2047 waitAndClickByXpath("//img[@alt='action list']");
2048 selectFrameIframePortlet();
2049
2050 if(isElementPresentByLinkText("Last")){
2051 waitAndClickByLinkText("Last");
2052 waitAndClickByLinkText(docIdInt.toString());
2053 } else {
2054 waitAndClickByLinkText(docIdInt.toString());
2055 }
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090 }
2091
2092 protected void testIdentityGroupBlanketApprove() throws Exception {
2093 selectFrameIframePortlet();
2094 waitAndCreateNew();
2095 String docId = waitForDocId();
2096 String dtsTwo = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
2097 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Group " + dtsTwo);
2098 assertBlanketApproveButtonsPresent();
2099 selectByXpath("//select[@id='document.groupNamespace']", AdminTmplMthdSTNavBase.LABEL_KUALI_KUALI_SYSTEMS);
2100 waitAndTypeByXpath("//input[@id='document.groupName']", "Validation Test Group1 " + dtsTwo);
2101 waitAndClickByName(
2102 "methodToCall.performLookup.(!!org.kuali.rice.kim.impl.identity.PersonImpl!!).(((principalId:member.memberId,principalName:member.memberName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorAssignees");
2103 waitAndClickSearch();
2104 waitAndClickReturnValue();
2105 waitAndClickByName("methodToCall.addMember.anchorAssignees");
2106 waitForPageToLoad();
2107 blanketApproveTest();
2108 assertDocFinal(docId);
2109 }
2110
2111 protected void testIdentityPermissionBlanketApprove() throws Exception {
2112 selectFrameIframePortlet();
2113 waitAndCreateNew();
2114 String docId = waitForDocId();
2115 String dtsTwo = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
2116 waitAndTypeByXpath("//input[@name='document.documentHeader.documentDescription']",
2117 "Validation Test Permission " + dtsTwo);
2118 assertBlanketApproveButtonsPresent();
2119 waitAndTypeByXpath("//input[@name='document.documentHeader.organizationDocumentNumber']", "10012");
2120 selectByXpath("//select[@name='document.newMaintainableObject.namespaceCode']",
2121 AdminTmplMthdSTNavBase.LABEL_KUALI_KUALI_SYSTEMS);
2122 selectByXpath("//select[@name='document.newMaintainableObject.templateId']",
2123 AdminTmplMthdSTNavBase.LABEL_KUALI_DEFAULT);
2124 waitAndTypeByXpath("//input[@name='document.newMaintainableObject.name']",
2125 "ValidationTestPermission" + dtsTwo);
2126 blanketApproveTest();
2127 assertDocFinal(docId);
2128 }
2129
2130 protected void testIdentityPersonBlanketApprove() throws Exception {
2131 selectFrameIframePortlet();
2132 waitAndCreateNew();
2133 String docId = waitForDocId();
2134 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Person");
2135 assertBlanketApproveButtonsPresent();
2136 waitAndTypeByXpath("//input[@id='document.principalName']", "principal" + RandomStringUtils.randomAlphabetic(3).toLowerCase());
2137 selectByName("newAffln.affiliationTypeCode", "Affiliate");
2138 selectByName("newAffln.campusCode", "BX - BLGTN OFF CAMPUS");
2139 selectByName("newAffln.campusCode", "BL - BLOOMINGTON");
2140 assertElementPresentByName("newAffln.dflt");
2141 waitAndClickByName("newAffln.dflt");
2142 waitAndClickByName("methodToCall.addAffln.anchor");
2143 waitAndClickByName("methodToCall.toggleTab.tabContact");
2144 selectByName("newName.namePrefix", "Mr");
2145 waitAndTypeByName("newName.firstName", "First");
2146 waitAndTypeByName("newName.lastName", "Last");
2147 selectByName("newName.nameSuffix", "Mr");
2148 waitAndClickByName("newName.dflt");
2149 waitAndClickByName("methodToCall.addName.anchor");
2150 waitForPageToLoad();
2151 blanketApproveTest();
2152 assertDocFinal(docId);
2153 }
2154
2155 protected void testIdentityResponsibilityBlanketApprove() throws Exception {
2156 selectFrameIframePortlet();
2157 waitAndCreateNew();
2158 String docId = waitForDocId();
2159 String dtsTwo = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
2160 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Responsibility " + dtsTwo);
2161 assertBlanketApproveButtonsPresent();
2162 selectByXpath("//select[@id='document.newMaintainableObject.namespaceCode']",
2163 AdminTmplMthdSTNavBase.LABEL_KUALI_KUALI_SYSTEMS);
2164 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']",
2165 "Validation Test Responsibility " + dtsTwo);
2166 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.documentTypeName']", "Test " + dtsTwo);
2167 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.routeNodeName']", "Test " + dtsTwo);
2168 waitAndClickByXpath("//input[@id='document.newMaintainableObject.actionDetailsAtRoleMemberLevel']");
2169 waitAndClickByXpath("//input[@id='document.newMaintainableObject.required']");
2170 blanketApproveTest();
2171 assertDocFinal(docId);
2172 }
2173
2174 protected void testIdentityRoleBlanketApprove() throws Exception {
2175 selectFrameIframePortlet();
2176 waitAndCreateNew();
2177 waitAndClickByXpath(SEARCH_XPATH, "No search button to click.");
2178 waitAndClickByLinkText(RETURN_VALUE_LINK_TEXT, "No return value link");
2179 String docId = waitForDocId();
2180 String dtsTwo = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
2181 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Role " + dtsTwo);
2182 assertBlanketApproveButtonsPresent();
2183 selectByXpath("//select[@id='document.roleNamespace']", AdminTmplMthdSTNavBase.LABEL_KUALI_KUALI_SYSTEMS);
2184 waitAndTypeByXpath("//input[@id='document.roleName']", "Validation Test Role " + dtsTwo,
2185 "No Role Name input to type in.");
2186 waitAndClickByName(
2187 "methodToCall.performLookup.(!!org.kuali.rice.kim.impl.identity.PersonImpl!!).(((principalId:member.memberId,principalName:member.memberName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorAssignees");
2188 waitAndClickByXpath(SEARCH_XPATH, "No search button to click.");
2189 waitAndClickByLinkText(RETURN_VALUE_LINK_TEXT, "No return value link");
2190 waitAndClickByName("methodToCall.addMember.anchorAssignees");
2191 waitForPageToLoad();
2192 blanketApproveTest();
2193 assertDocFinal(docId);
2194 }
2195
2196 protected void testLocationCampusBlanketApprove() throws Exception {
2197 selectFrameIframePortlet();
2198 waitAndCreateNew();
2199 String docId = waitForDocId();
2200 String twoLetters = RandomStringUtils.randomAlphabetic(2);
2201 waitAndTypeByName("document.documentHeader.documentDescription", "Validation Test Campus " + twoLetters);
2202 assertBlanketApproveButtonsPresent();
2203 waitAndTypeByName("document.newMaintainableObject.code", RandomStringUtils.randomAlphabetic(2));
2204 waitAndTypeByName("document.newMaintainableObject.name", "Validation Test Campus" + ITUtil.createUniqueDtsPlusTwoRandomChars());
2205 waitAndTypeByName("document.newMaintainableObject.shortName", "VTC " + twoLetters);
2206 selectByName("document.newMaintainableObject.campusTypeCode", "B - BOTH");
2207 blanketApproveTest();
2208 assertDocFinal(docId);
2209 }
2210
2211 protected void testLocationCountryBlanketApprove() throws InterruptedException {
2212 selectFrameIframePortlet();
2213 waitAndCreateNew();
2214 String docId = waitForDocId();
2215 assertBlanketApproveButtonsPresent();
2216 String twoUpperCaseLetters = RandomStringUtils.randomAlphabetic(2).toUpperCase();
2217 String countryName = "Validation Test Country " + ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
2218 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, countryName);
2219 waitAndTypeByXpath(DOC_CODE_XPATH, twoUpperCaseLetters);
2220 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", countryName);
2221 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.alternateCode']", "V" + twoUpperCaseLetters);
2222 int attemptCount = 0;
2223 blanketApproveCheck();
2224 while (hasDocError("same primary key already exists") && attemptCount < 25) {
2225 clearTextByXpath(DOC_CODE_XPATH);
2226 waitAndTypeByXpath(DOC_CODE_XPATH, twoUpperCaseLetters.substring(0, 1) + Character.toString((char) ('A' + attemptCount++)));
2227 blanketApproveCheck();
2228 }
2229 blanketApproveAssert();
2230 assertDocFinal(docId);
2231 }
2232
2233 protected void testLocationCountyBlanketApprove() throws Exception {
2234 selectFrameIframePortlet();
2235 waitAndCreateNew();
2236 String docId = waitForDocId();
2237 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test County");
2238 assertBlanketApproveButtonsPresent();
2239 String countryLookUp = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.location.impl.country.CountryBo!!).(((code:document.newMaintainableObject.countryCode,))).((`document.newMaintainableObject.countryCode:code,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
2240 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
2241 waitAndClickByXpath(countryLookUp);
2242 waitAndTypeByName("code", "US");
2243 waitAndClickSearch();
2244 waitAndClickReturnValue();
2245 waitAndTypeByXpath(DOC_CODE_XPATH, RandomStringUtils.randomAlphabetic(2).toUpperCase());
2246 String stateLookUp = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.location.impl.state.StateBo!!).(((countryCode:document.newMaintainableObject.countryCode,code:document.newMaintainableObject.stateCode,))).((`document.newMaintainableObject.countryCode:countryCode,document.newMaintainableObject.stateCode:code,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
2247 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
2248 waitAndClickByXpath(stateLookUp);
2249 waitAndTypeByName("code", "IN");
2250 waitAndClickSearch();
2251 waitAndClickReturnValue();
2252 String countyName = "Validation Test County" + ITUtil.createUniqueDtsPlusTwoRandomChars();
2253 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", countyName);
2254 waitAndClickByXpath("//input[@id='document.newMaintainableObject.active']");
2255 blanketApproveTest();
2256 assertDocFinal(docId);
2257 }
2258
2259 protected void testLocationPostBlanketApprove() throws Exception {
2260 selectFrameIframePortlet();
2261 waitAndCreateNew();
2262 String docId = waitForDocId();
2263 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Postal Code");
2264 assertBlanketApproveButtonsPresent();
2265 String countryLookUp = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.location.impl.country.CountryBo!!).(((code:document.newMaintainableObject.countryCode,))).((`document.newMaintainableObject.countryCode:code,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
2266 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
2267 waitAndClickByXpath(countryLookUp);
2268 waitAndTypeByName("code", "US");
2269 waitAndClickSearch();
2270 waitAndClickReturnValue();
2271 String code = RandomStringUtils.randomNumeric(5);
2272 waitAndTypeByXpath(DOC_CODE_XPATH, code);
2273 String stateLookUp = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.location.impl.state.StateBo!!).(((countryCode:document.newMaintainableObject.countryCode,code:document.newMaintainableObject.stateCode,))).((`document.newMaintainableObject.countryCode:countryCode,document.newMaintainableObject.stateCode:code,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
2274 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
2275 waitAndClickByXpath(stateLookUp);
2276 waitAndClickSearch();
2277 waitAndClickByXpath("//table[@id='row']/tbody/tr[4]/td[1]/a");
2278 String cityName = "Validation Test Postal Code " + code;
2279 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.cityName']", cityName);
2280 blanketApproveTest();
2281 assertDocFinal(docId);
2282 }
2283
2284 protected void testLocationStateBlanketApprove() throws Exception {
2285 selectFrameIframePortlet();
2286 waitAndCreateNew();
2287 String docId = waitForDocId();
2288 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test State");
2289 assertBlanketApproveButtonsPresent();
2290
2291
2292 String countryLookUp = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.location.impl.country.CountryBo!!).(((code:document.newMaintainableObject.countryCode,))).((`document.newMaintainableObject.countryCode:code,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
2293 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
2294 waitAndClickByXpath(countryLookUp);
2295 waitAndClickSearch();
2296 waitAndClickReturnValue();
2297 String code = RandomStringUtils.randomAlphabetic(2).toUpperCase();
2298 waitAndTypeByXpath(DOC_CODE_XPATH, code);
2299 String state = "Validation Test State " + code;
2300 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", state);
2301 waitAndClickByXpath("//input[@id='document.newMaintainableObject.active']");
2302 blanketApproveTest();
2303 assertDocFinal(docId);
2304 }
2305
2306 protected void testLookUp() throws Exception {
2307 waitForPageToLoad();
2308 selectFrameIframePortlet();
2309
2310
2311 waitAndClick(By.xpath(SEARCH_XPATH_3));
2312 waitAndClickByLinkText(EDIT_LINK_TEXT, "edit button not present does user " + user + " have permission?");
2313 Thread.sleep(3000);
2314 checkForIncidentReport("submit");
2315 assertTextPresent("ubmit");
2316 assertTextPresent("ave");
2317 assertTextPresent("pprove");
2318 assertTextPresent("lose");
2319 assertTextPresent("ancel");
2320 }
2321
2322 protected void performParameterInquiry(String parameterField) throws Exception {
2323 waitAndTypeByName("name", parameterField);
2324 waitAndClickSearch();
2325 isElementPresentByLinkText(parameterField);
2326 waitAndClickByLinkText(parameterField);
2327 waitForPageToLoad();
2328 Thread.sleep(2000);
2329 switchToWindow("Kuali :: Inquiry");
2330 Thread.sleep(2000);
2331 }
2332
2333 protected List<String> testLookUpParameterType(String docId, String parameterType, String parameterCode) throws Exception {
2334 performParameterInquiry(parameterType);
2335 SeleneseTestBase.assertEquals(parameterCode, getTextByXpath("//div[@class='tab-container']/table//span[@id='code.div']").trim().toLowerCase());
2336 SeleneseTestBase.assertEquals(parameterType, getTextByXpath("//div[@class='tab-container']/table//span[@id='name.div']").trim().toLowerCase());
2337 waitAndClickCloseWindow();
2338 switchToWindow("null");
2339 List<String> params = new ArrayList<String>();
2340 params.add(docId);
2341 params.add(parameterType);
2342 params.add(parameterCode);
2343
2344 return params;
2345 }
2346
2347 protected List<String> testLookUpParameter(String docId, String parameterName) throws Exception {
2348 performParameterInquiry(parameterName);
2349 checkForIncidentReport();
2350 SeleneseTestBase.assertEquals(parameterName, getTextByXpath(
2351 "//div[@class='tab-container']/table//span[@id='name.div']").trim());
2352 SeleneseTestBase.assertEquals("Y", getTextByXpath("//div[@class='tab-container']/table//span[@id='value.div']")
2353 .trim());
2354 waitAndClickCloseWindow();
2355 switchToWindow("null");
2356 List<String> params = new ArrayList<String>();
2357 params.add(docId);
2358 params.add(parameterName);
2359
2360 return params;
2361 }
2362
2363 protected void testPeopleFlow() throws Exception {
2364 selectFrameIframePortlet();
2365
2366
2367
2368
2369 jGrowl("Create New");
2370 waitAndClickByLinkText("Create New");
2371
2372
2373
2374 waitForElementPresent("div[data-header_for='PeopleFlow-MaintenanceView'] div[data-label='Document Number'] > span");
2375 String docId = getText("div[data-header_for='PeopleFlow-MaintenanceView'] div[data-label='Document Number'] > span");
2376 jGrowlSticky("Doc Id is " + docId);
2377 findElement(By.name("document.documentHeader.documentDescription")).clear();
2378 findElement(By.name("document.documentHeader.documentDescription")).sendKeys("Description for Document");
2379 new Select(findElement(By.name("document.newMaintainableObject.dataObject.namespaceCode"))).selectByVisibleText("KUALI - Kuali Systems");
2380 findElement(By.name("document.newMaintainableObject.dataObject.name")).clear();
2381 findElement(By.name("document.newMaintainableObject.dataObject.name")).sendKeys("Document Name" + ITUtil.DTS);
2382
2383 jGrowl("Add Member kr");
2384 findElement(By.name("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName")).clear();
2385 findElement(By.name("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName")).sendKeys("kr");
2386 findElement(By.cssSelector("button[data-loadingmessage='Adding Line...']")).click();
2387 Thread.sleep(3000);
2388
2389 jGrowl("Add Member admin");
2390 findElement(By.name("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName")).clear();
2391 findElement(By.name("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName")).sendKeys("admin");
2392 findElement(By.cssSelector("button[data-loadingmessage='Adding Line...']")).click();
2393 Thread.sleep(3000);
2394
2395 findElement(By.cssSelector("div[data-parent='PeopleFlow-MaintenanceView'] > div.uif-footer button~button~button")).click();
2396 Thread.sleep(3000);
2397 checkForIncidentReport();
2398 jGrowl("Blanket Approve");
2399 Thread.sleep(5000);
2400
2401
2402
2403
2404 driver.switchTo().window(driver.getWindowHandles().toArray()[0].toString());
2405 findElement(By.cssSelector("img[alt=\"doc search\"]")).click();
2406 Thread.sleep(5000);
2407 jGrowl("Document Search is " + docId + " present?");
2408 selectFrameIframePortlet();
2409 findElement(By.cssSelector("td.infoline > input[name=\"methodToCall.search\"]")).click();
2410 Thread.sleep(5000);
2411 jGrowl("Is doc status final?");
2412 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, findElement(By.xpath("//table[@id='row']/tbody/tr/td[4]")).getText());
2413 driver.switchTo().defaultContent();
2414 findElement(By.name("imageField")).click();
2415 Thread.sleep(5000);
2416
2417 }
2418
2419 protected void testTermLookupAssertions() throws Exception {
2420 testLookUp();
2421 assertTextPresent("Term Parameters");
2422 waitAndClick(By.xpath(CANCEL2_XPATH));
2423 passed();
2424 }
2425
2426 protected void testTermSpecificationLookupAssertions() throws Exception {
2427 testLookUp();
2428 assertTextPresent("Context");
2429 waitAndClick(By.xpath(CANCEL2_XPATH));
2430 passed();
2431 }
2432
2433 protected List<String> testVerifyModifiedParameter(String docId, String parameterName) throws Exception {
2434 performParameterInquiry(parameterName);
2435 SeleneseTestBase.assertEquals(parameterName, getTextByXpath("//div[@class='tab-container']/table//span[@id='name.div']").trim());
2436 SeleneseTestBase.assertEquals("N", getTextByXpath("//div[@class='tab-container']/table//span[@id='value.div']").trim());
2437 waitAndClickCloseWindow();
2438 switchToWindow("null");
2439 List<String> params = new ArrayList<String>();
2440 params.add(docId);
2441 params.add(parameterName);
2442
2443 return params;
2444 }
2445
2446 protected List<String> testVerifyCopyParameterType(String docId, String parameterType, String parameterCode) throws Exception
2447 {
2448 performParameterInquiry(parameterType);
2449 SeleneseTestBase.assertEquals(parameterType, getTextByXpath("//div[@class='tab-container']/table//span[@id='name.div']").trim().toLowerCase());
2450 waitAndClickCloseWindow();
2451 switchToWindow("null");
2452 List<String> params = new ArrayList<String>();
2453 params.add(docId);
2454 params.add(parameterType);
2455 params.add(parameterCode);
2456
2457 return params;
2458 }
2459
2460 protected List<String> testCreateNewPermission(String docId, String permissionName) throws Exception
2461 {
2462 waitForPageToLoad();
2463 Thread.sleep(2000);
2464 docId = waitForDocId();
2465 waitAndClickSave();
2466 waitForPageToLoad();
2467 assertElementPresentByXpath("//div[contains(.,'Document Description (Description) is a required field.')]/img[@alt='error']");
2468 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Adding Permission removeme");
2469 waitAndClickSubmit();
2470 waitForPageToLoad();
2471 assertElementPresentByXpath("//div[@class='error']");
2472 assertElementPresentByXpath("//div[contains(.,'Template (Template) is a required field.')]/img[@alt='error']");
2473 assertElementPresentByXpath("//div[contains(.,'Permission Namespace (Permission Namespace) is a required field.')]/img[@alt='error']");
2474 assertElementPresentByXpath("//div[contains(.,'Permission Name (Permission Name) is a required field.')]/img[@alt='error']");
2475 selectOptionByName("document.newMaintainableObject.templateId", "36");
2476 selectOptionByName("document.newMaintainableObject.namespaceCode", "KR-SYS");
2477 permissionName = "removeme" + ITUtil.createUniqueDtsPlusTwoRandomChars();
2478 waitAndTypeByName("document.newMaintainableObject.name", permissionName);
2479 waitAndTypeByName("document.newMaintainableObject.description", "namespaceCode=KR*");
2480 checkByName("document.newMaintainableObject.active");
2481 waitAndClickSave();
2482 waitForPageToLoad();
2483 assertElementPresentByXpath(SAVE_SUCCESSFUL_XPATH);
2484 SeleneseTestBase.assertEquals(DOC_STATUS_SAVED, getTextByXpath(DOC_STATUS_XPATH));
2485 waitAndClickSubmit();
2486 waitForPageToLoad();
2487 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH,"Document is not submitted successfully");
2488 SeleneseTestBase.assertEquals(DOC_STATUS_ENROUTE, getTextByXpath(DOC_STATUS_XPATH));
2489 List<String> params = new ArrayList<String>();
2490 params.add(docId);
2491 params.add(permissionName);
2492
2493 return params;
2494 }
2495
2496 protected List<String> testLookUpPermission(String docId, String permissionName) throws Exception
2497 {
2498 waitForPageToLoad();
2499 waitAndTypeByName("name", permissionName);
2500 waitAndClickSearch();
2501 isElementPresentByLinkText(permissionName);
2502 List<String> params = new ArrayList<String>();
2503 params.add(docId);
2504 params.add(permissionName);
2505
2506 return params;
2507 }
2508
2509 protected List<String> testEditPermission(String docId, String permissionName) throws Exception
2510 {
2511 waitAndClickEdit();
2512 waitForPageToLoad();
2513 Thread.sleep(2000);
2514 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Editing Permission removeme");
2515 uncheckByName("document.newMaintainableObject.active");
2516 waitAndClickSubmit();
2517 waitForPageToLoad();
2518 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, "Document is not submitted successfully");
2519 List<String> params = new ArrayList<String>();
2520 params.add(docId);
2521 params.add(permissionName);
2522
2523 return params;
2524 }
2525
2526 protected List<String> testVerifyPermission(String docId, String permissionName) throws Exception
2527 {
2528 waitForPageToLoad();
2529 waitAndTypeByName("name", permissionName);
2530 waitAndClickByXpath("//input[@title='Active Indicator - No']");
2531 waitAndClickSearch();
2532 isElementPresentByLinkText(permissionName);
2533 List<String> params = new ArrayList<String>();
2534 params.add(docId);
2535 params.add(permissionName);
2536
2537 return params;
2538 }
2539
2540 protected List<String> testCreateNewPerson(String docId, String personName) throws Exception
2541 {
2542 waitForPageToLoad();
2543 docId = waitForDocId();
2544 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Adding Charlie Brown");
2545 waitAndTypeByName("document.documentHeader.explanation", "I want to add Charlie Brown to test KIM");
2546
2547
2548 personName = "cbrown" + ITUtil.createUniqueDtsPlusTwoRandomChars();
2549 waitAndTypeByName("document.principalName", personName);
2550 waitAndClickSave();
2551 waitForPageToLoad();
2552 assertElementPresentByXpath(SAVE_SUCCESSFUL_XPATH);
2553 SeleneseTestBase.assertEquals(DOC_STATUS_SAVED, getTextByXpath(DOC_STATUS_XPATH));
2554 waitAndClickSubmit();
2555 waitForPageToLoad();
2556 assertElementPresentByXpath("//div[contains(.,'At least one affiliation must be entered.')]/img[@alt='error']");
2557 assertElementPresentByXpath("//div[contains(.,'At least one name must be entered.')]/img[@alt='error']");
2558 selectOptionByName("newAffln.affiliationTypeCode", "STDNT");
2559 selectOptionByName("newAffln.campusCode", "BL");
2560 checkByName("newAffln.dflt");
2561 waitAndClickByName("methodToCall.addAffln.anchor");
2562 waitForPageToLoad();
2563 Thread.sleep(3000);
2564 selectOptionByName("newName.nameCode", "PRM");
2565 selectOptionByName("newName.namePrefix", "Mr");
2566 waitAndTypeByName("newName.firstName", "Charlie");
2567 waitAndTypeByName("newName.lastName", "Brown");
2568 checkByName("newName.dflt");
2569 waitAndClickByName("methodToCall.addName.anchor");
2570 waitForPageToLoad();
2571 waitAndClickSubmit();
2572 waitForPageToLoad();
2573 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, "Document is not submitted successfully");
2574 SeleneseTestBase.assertEquals(DOC_STATUS_ENROUTE, getTextByXpath(DOC_STATUS_XPATH));
2575 List<String> params = new ArrayList<String>();
2576 params.add(docId);
2577 params.add(personName);
2578
2579 return params;
2580 }
2581
2582 protected List<String> testLookUpPerson(String docId, String personName) throws Exception
2583 {
2584 waitForPageToLoad();
2585 waitAndTypeByName("principalName", personName);
2586 waitAndClickSearch();
2587 isElementPresentByLinkText(personName);
2588 waitAndClickByName("methodToCall.clearValues");
2589 waitAndTypeByName("firstName", "Charlie");
2590 waitAndClickSearch();
2591 isElementPresentByLinkText(personName);
2592 waitAndClickByName("methodToCall.clearValues");
2593 waitAndTypeByName("lastName", "Brown");
2594 waitAndClickSearch();
2595 isElementPresentByLinkText(personName);
2596 waitAndClickByName("methodToCall.clearValues");
2597 waitAndTypeByName("campusCode", "BL");
2598 waitAndClickSearch();
2599 isElementPresentByLinkText(personName);
2600 List<String> params = new ArrayList<String>();
2601 params.add(docId);
2602 params.add(personName);
2603
2604 return params;
2605 }
2606
2607 protected List<String> testVerifyPerson(String docId, String personName) throws Exception
2608 {
2609 waitAndClickByLinkText(personName);
2610 waitForPageToLoad();
2611 Thread.sleep(5000);
2612 switchToWindow("Kuali :: Person");
2613 Thread.sleep(2000);
2614 SeleneseTestBase.assertEquals(personName, getTextByXpath("//div[@class='tab-container']/table//tr[2]/td[1]/div").trim());
2615 SeleneseTestBase.assertEquals("BL - BLOOMINGTON", getTextByXpath("//div[@class='tab-container']/table[3]//tr[2]/td[2]/div").trim());
2616 SeleneseTestBase.assertEquals("Student", getTextByXpath("//select/option[@selected]").trim());
2617 assertElementPresentByXpath("//table[@class='tab']//input[@title='close Overview']");
2618 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Contact']");
2619 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Privacy Preferences']");
2620 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Membership']");
2621 waitAndClickByName("methodToCall.showAllTabs");
2622 Thread.sleep(3000);
2623 assertElementPresentByXpath("//table[@class='tab']//input[@title='close Overview']");
2624 assertElementPresentByXpath("//table[@class='tab']//input[@title='close Contact']");
2625 assertElementPresentByXpath("//table[@class='tab']//input[@title='close Privacy Preferences']");
2626 assertElementPresentByXpath("//table[@class='tab']//input[@title='close Membership']");
2627 waitAndClickByName("methodToCall.hideAllTabs");
2628 Thread.sleep(3000);
2629 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Overview']");
2630 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Contact']");
2631 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Privacy Preferences']");
2632 assertElementPresentByXpath("//table[@class='tab']//input[@title='open Membership']");
2633 waitAndClickCloseWindow();
2634 switchToWindow("null");
2635 List<String> params = new ArrayList<String>();
2636 params.add(docId);
2637 params.add(personName);
2638
2639 return params;
2640 }
2641
2642 protected void testUifTooltip(String NAME_FIELD_1, String NAME_FIELD_2) throws Exception {
2643
2644 fireEvent(NAME_FIELD_1, "focus");
2645 fireMouseOverEventByName(NAME_FIELD_1);
2646
2647
2648 SeleneseTestBase.assertEquals("This tooltip is triggered by focus or and mouse over.", getText(
2649 "td.jquerybubblepopup-innerHtml"));
2650
2651
2652 fireEvent(NAME_FIELD_1, "blur");
2653 SeleneseTestBase.assertFalse(isVisible("div.jquerybubblepopup.jquerybubblepopup-black") && isVisible(
2654 "td.jquerybubblepopup-innerHtml"));
2655 Thread.sleep(5000);
2656 fireEvent("field119", "focus");
2657
2658
2659 fireMouseOverEventByName(NAME_FIELD_2);
2660 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(.,\"This is a tool-tip with different position and tail options\")]"));
2661
2662
2663 waitAndTypeByName(NAME_FIELD_2, "a");
2664 Thread.sleep(5000);
2665 SeleneseTestBase.assertFalse(isVisibleByXpath(
2666 "//td[contains(.,\"This is a tool-tip with different position and tail options\")]"));
2667
2668
2669 waitAndTypeByName(NAME_FIELD_1, "1");
2670 fireEvent(NAME_FIELD_1, "blur");
2671 fireMouseOverEventByName(NAME_FIELD_1);
2672 Thread.sleep(10000);
2673 SeleneseTestBase.assertTrue("https://jira.kuali.org/browse/KULRICE-8141 Investigate why UifTooltipIT.testTooltip fails around jquerybubblepopup",
2674 isVisibleByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-kr-error-cs']") &&
2675 !(isVisibleByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black']")));
2676
2677
2678 passed();
2679 }
2680
2681 protected void testValidCharsConstraintIT() throws Exception {
2682 assertFocusTypeBlurValidation("field50", new String[]{"12.333", "-123.33"}, new String[]{"123.33"});
2683 assertFocusTypeBlurValidation("field51", new String[]{"A"}, new String[]{"-123.33"});
2684
2685
2686 assertFocusTypeBlurValidation("field77", new String[]{"1.1"},new String[]{"12"});
2687 assertFocusTypeBlurValidation("field52", new String[]{"5551112222"},new String[]{"555-111-1111"});
2688 assertFocusTypeBlurValidation("field53", new String[]{"1ClassName.java"},new String[]{"ClassName.java"});
2689 assertFocusTypeBlurValidation("field54", new String[]{"aaaaa"},new String[]{"aaaaa@kuali.org"});
2690 assertFocusTypeBlurValidation("field84", new String[]{"aaaaa"},new String[]{"http://www.kuali.org"});
2691 assertFocusTypeBlurValidation("field55", new String[]{"023512"},new String[]{"022812"});
2692 assertFocusTypeBlurValidation("field75", new String[]{"02/35/12"},new String[]{"02/28/12"});
2693 assertFocusTypeBlurValidation("field82", new String[]{"13:22"},new String[]{"02:33"});
2694 assertFocusTypeBlurValidation("field83", new String[]{"25:22"},new String[]{"14:33"});
2695 assertFocusTypeBlurValidation("field57", new String[]{"0"},new String[]{"2020"});
2696 assertFocusTypeBlurValidation("field58", new String[]{"13"},new String[]{"12"});
2697 assertFocusTypeBlurValidation("field61", new String[]{"5555-444"},new String[]{"55555-4444"});
2698 assertFocusTypeBlurValidation("field62", new String[]{"aa5bb6_a"},new String[]{"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"});
2699 assertFocusTypeBlurValidation("field63", new String[]{"fff555"},new String[]{"aa22 _/"});
2700 assertFocusTypeBlurValidation("field64", new String[]{"AABB55"},new String[]{"ABCDEFGHIJKLMNOPQRSTUVWXY,Z abcdefghijklmnopqrstuvwxy,z"});
2701 assertFocusTypeBlurValidation("field76", new String[]{"AA~BB%"},new String[]{"abcABC %$#@&<>\\{}[]*-+!=.()/\"\"',:;?"});
2702 assertFocusTypeBlurValidation("field65", new String[]{"sdfs$#$# dsffs"},new String[]{"sdfs$#$#sffs"});
2703 assertFocusTypeBlurValidation("field66", new String[]{"abcABCD"},new String[]{"ABCabc"});
2704 assertFocusTypeBlurValidation("field67", new String[]{"(111)B-(222)A"},new String[]{"(12345)-(67890)"});
2705 assertFocusTypeBlurValidation("field68", new String[]{"A.66"},new String[]{"a.4"});
2706 assertFocusTypeBlurValidation("field56", new String[]{"2020-06-02"},new String[]{"2020-06-02 03:30:30.22"});
2707 }
2708
2709 protected void assertFocusTypeBlurValidation(String field, String[] errorInputs, String[] validInputs) throws InterruptedException {
2710 assertFocusTypeBlurError(field, errorInputs);
2711 clearTextByName(field);
2712 assertFocusTypeBlurValid(field, validInputs);
2713 }
2714
2715 protected void testSubCollectionSize() throws Exception {
2716 checkForIncidentReport(COLLECTIONS_LINK_TEXT);
2717
2718
2719 waitAndClickByLinkText(COLLECTIONS_LINK_TEXT);
2720
2721
2722 for (int second = 0;; second++) {
2723 if (second >= waitSeconds)
2724 failableFail(TIMEOUT_MESSAGE + " looking for " + SUB_COLLECTION_UIF_DISCLOSURE_SPAN_UIF_HEADER_TEXT_SPAN_XPATH);
2725 try {
2726 if (getText(SUB_COLLECTION_UIF_DISCLOSURE_SPAN_UIF_HEADER_TEXT_SPAN_XPATH).equals("SubCollection - (3 lines)"))
2727 {
2728 break;
2729 }
2730 } catch (Exception e) {}
2731 Thread.sleep(1000);
2732 }
2733
2734
2735 SeleneseTestBase.assertEquals("SubCollection - (3 lines)", getText(SUB_COLLECTION_UIF_DISCLOSURE_SPAN_UIF_HEADER_TEXT_SPAN_XPATH));
2736 SeleneseTestBase.assertEquals("SubCollection - (2 lines)", getTextByXpath(
2737 "//a[@id='subCollection1_line1_toggle']/span"));
2738 }
2739
2740 protected void testConfigurationTestView(String idPrefix) throws Exception {
2741 waitForElementPresentByXpath("//span[@id='" + idPrefix + "TextInputField_label_span']");
2742
2743
2744 String styleValue = waitAndGetAttributeByXpath("//span[@id='" + idPrefix + "TextInputField_label_span']",
2745 "style");
2746
2747
2748 SeleneseTestBase.assertTrue(idPrefix + "textInputField label does not contain expected style", styleValue.replace(" ", "").contains("color:red"));
2749
2750
2751 String refreshTextSelectLocator = "//select[@id='" + idPrefix + "RefreshTextField_control']";
2752 String[] options1 = getSelectOptionsByXpath(refreshTextSelectLocator);
2753 String dropDownSelectLocator = "//select[@id='" + idPrefix + "DropDown_control']";
2754 selectByXpath(dropDownSelectLocator, "Vegetables");
2755 Thread.sleep(3000);
2756
2757
2758 String[] options2 = getSelectOptionsByXpath(refreshTextSelectLocator);
2759
2760
2761 SeleneseTestBase.assertFalse(
2762 "Field 1 selection did not change Field 2 options https://jira.kuali.org/browse/KULRICE-8163 Configuration Test View Conditional Options doesn't change Field 2 options based on Field 1 selection",
2763 options1[options1.length - 1].equalsIgnoreCase(options2[options2.length - 1]));
2764
2765
2766 selectByXpath(dropDownSelectLocator, "None");
2767 Thread.sleep(3000);
2768 SeleneseTestBase.assertEquals("true", waitAndGetAttributeByXpath(refreshTextSelectLocator, "disabled"));
2769 }
2770
2771
2772
2773
2774 protected void confirmAddLineControlsPresent(String idPrefix, String addLineIdSuffix) {
2775 String[] addLineIds = {"StartTime", "StartTimeAmPm", "AllDay"};
2776
2777 for (String id : addLineIds) {
2778 String tagId = "//*[@id='" + idPrefix + id + addLineIdSuffix + "']";
2779 SeleneseTestBase.assertTrue("Did not find id " + tagId, isElementPresentByXpath(tagId));
2780 }
2781 }
2782
2783 protected void testAddLineWithSpecificTime(String idPrefix, String addLineIdSuffix) throws Exception {
2784 waitForElementPresentByXpath("//span[@id='" + idPrefix + "TextInputField_label_span']");
2785 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix);
2786 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']";
2787 String inputTime = "7:06";
2788 waitAndTypeByXpath(startTimeId, inputTime);
2789 String amPmSelectLocator = "//*[@id='" + idPrefix + "StartTimeAmPm" + addLineIdSuffix + "']";
2790 selectByXpath(amPmSelectLocator, "PM");
2791 SeleneseTestBase.assertEquals("PM", waitAndGetAttributeByXpath(amPmSelectLocator, "value"));
2792 Thread.sleep(5000);
2793 waitAndClickByXpath("//button");
2794 Thread.sleep(5000);
2795
2796
2797 SeleneseTestBase.assertTrue("line (//input[@value='7:06'])is not present https://jira.kuali.org/browse/KULRICE-8162 Configuration Test View Time Info add line button doesn't addline",
2798 isElementPresentByXpath("//input[@value='7:06']"));
2799 }
2800
2801 protected void testAddLineWithAllDay(String idPrefix, String addLineIdSuffix) throws Exception {
2802 waitForElementPresentByXpath("//span[@id='" + idPrefix + "TextInputField_label_span']");
2803 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix);
2804 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']";
2805 String inputTime = "5:20";
2806 waitAndTypeByXpath(startTimeId, inputTime);
2807 String allDaySelector = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']";
2808 Thread.sleep(5000);
2809 waitAndClickByXpath(allDaySelector);
2810 Thread.sleep(5000);
2811 waitAndClick("div#ConfigurationTestView-ProgressiveRender-TimeInfoSection button");
2812 Thread.sleep(5000);
2813 }
2814
2815 protected void testAddLineAllDay(String idPrefix, String addLineIdSuffix) throws Exception {
2816 waitForElementPresentByXpath("//span[@id='" + idPrefix + "TextInputField_label_span']");
2817 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix);
2818
2819
2820 String cssCountRows = "div#ConfigurationTestView-ProgressiveRender-TimeInfoSection.uif-group div#ConfigurationTestView-ProgressiveRender-TimeInfoSection_disclosureContent.uif-disclosureContent table tbody tr";
2821 int rowCount = (getCssCount(cssCountRows));
2822 String allDayId = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']";
2823 Thread.sleep(5000);
2824 waitAndClickByXpath(allDayId);
2825 waitAndClick("div#ConfigurationTestView-ProgressiveRender-TimeInfoSection button");
2826 Thread.sleep(5000);
2827
2828
2829 assertEquals("line was not added", rowCount + 1, (getCssCount(cssCountRows)));
2830 }
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857 protected void testCategoryLookUp() throws Exception {
2858 waitForPageToLoad();
2859 selectFrameIframePortlet();
2860 waitAndClickByXpath("//button[contains(.,'earch')]");
2861 Thread.sleep(3000);
2862 waitForPageToLoad();
2863 findElement(By.tagName("body")).getText().contains("Actions");
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874 }
2875
2876 protected void testCreateSampleEDocLite() throws Exception {
2877 waitForPageToLoad();
2878 Thread.sleep(3000);
2879 SeleneseTestBase.assertEquals("Kuali Portal Index", getTitle());
2880 selectFrameIframePortlet();
2881 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']");
2882 waitForPageToLoad();
2883
2884
2885 waitAndClickByLinkText("Create Document");
2886 waitForPageToLoad();
2887 Thread.sleep(3000);
2888 String docId = getTextByXpath("//table/tbody/tr[4]/td[@class='datacell1']");
2889 waitAndTypeByName("userName", "Viral Chauhan");
2890 waitAndTypeByName("rqstDate", "12/03/2020");
2891 checkByName("fundedBy");
2892 waitAndTypeByName("addText", "Note Added.");
2893 waitAndClickByXpath("//td[@class='datacell']/div/img");
2894 waitForPageToLoad();
2895 waitAndClickByXpath("//input[@value='submit']");
2896 SeleneseTestBase.assertEquals(Boolean.FALSE,(Boolean) isElementPresentByXpath("//input[@value='submit']"));
2897 SeleneseTestBase.assertEquals(Boolean.FALSE, (Boolean) isElementPresentByXpath("//input[@value='save']"));
2898 SeleneseTestBase.assertEquals(Boolean.FALSE,(Boolean) isElementPresentByXpath("//input[@value='cancel']"));
2899 waitForPageToLoad();
2900 selectTopFrame();
2901 waitAndClickDocSearch();
2902 waitForPageToLoad();
2903 selectFrameIframePortlet();
2904 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']");
2905 waitForPageToLoad();
2906 isElementPresent(By.linkText(docId));
2907 }
2908
2909 protected void testTermLookUp() throws Exception {
2910 testLookUp();
2911 assertTextPresent("Term Parameters");
2912 waitAndClick(By.xpath(CANCEL2_XPATH));
2913 passed();
2914 }
2915
2916 protected void testWorkFlowRouteRulesBlanketApp() throws Exception {
2917 String random = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
2918 waitForPageToLoad();
2919 Thread.sleep(3000);
2920 SeleneseTestBase.assertEquals("Kuali Portal Index", getTitle());
2921 selectFrameIframePortlet();
2922
2923
2924 waitAndClickCreateNew();
2925 waitForPageToLoad();
2926
2927
2928 waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kew.doctype.bo.DocumentType!!).(((name:documentTypeName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor");
2929 waitForPageToLoad();
2930
2931
2932 waitAndTypeByName("name", "RoutingRuleDocument");
2933
2934
2935 waitAndClickSearch();
2936 waitForPageToLoad();
2937
2938
2939 waitAndClickReturnValue();
2940 waitForPageToLoad();
2941
2942
2943 waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kew.rule.bo.RuleTemplateBo!!).(((name:ruleTemplateName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor");
2944 waitForPageToLoad();
2945
2946
2947 waitAndTypeByName("name", "RuleRoutingTemplate");
2948
2949
2950 waitAndClickSearch();
2951 waitForPageToLoad();
2952
2953
2954 waitAndClickReturnValue();
2955 waitForPageToLoad();
2956
2957
2958 waitAndClickByName("methodToCall.createRule");
2959 waitForPageToLoad();
2960 String docId = waitForDocId();
2961 SeleneseTestBase.assertTrue(isElementPresentByName(CANCEL_NAME));
2962
2963
2964 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Test Routing Rule " + random);
2965
2966
2967 waitAndClickByXpath("//input[@id='document.newMaintainableObject.forceAction']");
2968
2969
2970 waitAndTypeByXpath("//textarea[@id='document.newMaintainableObject.description']", "Test Routing Rule1 "
2971 + random);
2972
2973
2974 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.fieldValues(1321~docTypeFullName)']",
2975 "DocumentTypeDocument");
2976
2977
2978 waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kim.impl.identity.PersonImpl!!).(((principalName:document.newMaintainableObject.add.personResponsibilities.principalName,))).((`document.newMaintainableObject.add.personResponsibilities.principalName:principalName,`)).((<>)).(([])).((**)).((^^)).((&&)).((/personImpl/)).((~~)).(::::;"
2979 + getBaseUrlString() + "/kr/lookup.do;::::).anchor15");
2980 waitForPageToLoad();
2981
2982
2983 waitAndClickSearch();
2984 waitForPageToLoad();
2985
2986
2987 waitAndClickReturnValue();
2988 waitForPageToLoad();
2989
2990
2991 selectByXpath("//select[@id='document.newMaintainableObject.add.personResponsibilities.actionRequestedCd']",
2992 "ACKNOWLEDGE");
2993
2994
2995 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.add.personResponsibilities.priority']", "1");
2996
2997
2998 waitAndClickByName("methodToCall.addLine.personResponsibilities.(!!org.kuali.rice.kew.rule.PersonRuleResponsibility!!).(:::;15;:::).anchor15");
2999 waitForPageToLoad();
3000 checkForIncidentReport(BLANKET_APPROVE_NAME);
3001 waitAndClickByName(BLANKET_APPROVE_NAME);
3002 waitForPageToLoad();
3003 driver.switchTo().defaultContent();
3004 waitAndClickDocSearch();
3005 waitForPageToLoad();
3006 SeleneseTestBase.assertEquals("Kuali Portal Index", getTitle());
3007 selectFrameIframePortlet();
3008 waitAndTypeByName("documentId", docId);
3009 waitAndClickSearch();
3010 waitForElementPresent(By.linkText(docId));
3011
3012 if (isElementPresent(By.linkText(docId))) {
3013 if (!DOC_STATUS_FINAL.equalsIgnoreCase(getTextByXpath(DOC_STATUS_XPATH_2))) {
3014 jiraAwareFail("WorkFlowRouteRulesBlanketApp expected:<[FINAL]> but was " + getTextByXpath(DOC_STATUS_XPATH_2));
3015 }
3016 } else {
3017 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_2));
3018 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
3019 }
3020 }
3021
3022 protected void testCreateNewRRDTravelRequestDestRouting() throws Exception {
3023 selectFrameIframePortlet();
3024 waitAndClick("img[alt=\"create new\"]");
3025 waitForPageToLoad();
3026 waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kew.rule.RuleBaseValues!!).(((id:parentRuleId))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor");
3027 waitForPageToLoad();
3028 waitAndClickByXpath("//td[@class='infoline']/input[@name='methodToCall.search']");
3029 waitForPageToLoad();
3030 waitAndClick("a[title=\"return valueRule Id=1046 \"]");
3031 waitForPageToLoad();
3032 waitAndClickByName("parentResponsibilityId");
3033 waitAndClickByName("methodToCall.createDelegateRule");
3034 waitForPageToLoad();
3035 Thread.sleep(3000);
3036 waitAndClickCancel();
3037 waitForPageToLoad();
3038 waitAndClickByName("methodToCall.processAnswer.button0");
3039 waitForPageToLoad();
3040 driver.switchTo().defaultContent();
3041 waitAndClickByXpath("(//input[@name='imageField'])[2]");
3042 waitForPageToLoad();
3043 passed();
3044 }
3045
3046 protected void testWorkFlowRouteRulesCreateNew() throws Exception {
3047 waitForPageToLoad();
3048 Thread.sleep(5000);
3049 SeleneseTestBase.assertEquals("Kuali Portal Index", getTitle());
3050 selectFrameIframePortlet();
3051 waitAndClickCreateNew();
3052 waitForPageToLoad();
3053 Thread.sleep(3000);
3054 waitAndClickByName(CANCEL_NAME,"https://jira.kuali.org/browse/KULRICE-8161 Work Flow Route Rules cancel new yields 404 not found");
3055
3056
3057 waitForPageToLoad();
3058 Thread.sleep(3000);
3059 waitAndClickByName("methodToCall.processAnswer.button0",
3060 "https://jira.kuali.org/browse/KULRICE-7753 : WorkFlowRouteRulesIT cancel confirmation missing from create new Route Rules.");
3061 passed();
3062 }
3063
3064
3065
3066
3067
3068 protected void testWorkFlowRouteRulesEditRouteRules() throws Exception {
3069 waitForPageToLoad();
3070 SeleneseTestBase.assertEquals("Kuali Portal Index", getTitle());
3071 selectFrameIframePortlet();
3072 waitAndClickSearch();
3073 waitAndClickEdit();
3074 waitForPageToLoad();
3075 selectFrameIframePortlet();
3076 Thread.sleep(3000);
3077 waitAndClickCancel();
3078 waitForPageToLoad();
3079 Thread.sleep(3000);
3080 waitAndClickByName("methodToCall.processAnswer.button0");
3081 passed();
3082 }
3083
3084 protected String testCreateNewComponent(String componentName, String componentCode) throws Exception {
3085 return testCreateNewComponent(componentName, componentCode, "");
3086 }
3087
3088 protected String testCreateNewComponent(String componentName, String componentCode, String message) throws Exception {
3089 waitForPageToLoad();
3090 String docId = waitForDocId();
3091
3092
3093 waitAndTypeByName("document.documentHeader.documentDescription", "Adding Test Component");
3094 selectOptionByName("document.newMaintainableObject.namespaceCode", "KR-IDM");
3095 waitAndTypeByName("document.newMaintainableObject.code", componentCode);
3096 waitAndTypeByName("document.newMaintainableObject.name", componentName);
3097 checkByName("document.newMaintainableObject.active");
3098 waitAndClickSave();
3099 waitAndClickSubmit();
3100 waitForPageToLoad();
3101 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH, CREATE_NEW_DOCUMENT_NOT_SUBMITTED_SUCCESSFULLY_MESSAGE_TEXT + message);
3102 selectTopFrame();
3103 waitAndClickDocSearchTitle();
3104 waitForPageToLoad();
3105 selectFrameIframePortlet();
3106 waitAndClickSearch();
3107 Thread.sleep(2000);
3108 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
3109 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
3110 selectTopFrame();
3111 return docId;
3112 }
3113
3114
3115 protected void testLookUpComponent(String docId, String componentName, String componentCode) throws Exception {
3116 selectFrameIframePortlet();
3117
3118 waitAndTypeByName("name", componentName);
3119 waitAndClickSearch();
3120 isElementPresentByLinkText(componentName);
3121 waitAndClickByLinkText(componentName);
3122 waitForPageToLoad();
3123 Thread.sleep(2000);
3124 switchToWindow("Kuali :: Inquiry");
3125 Thread.sleep(2000);
3126 SeleneseTestBase.assertEquals(componentName, getTextByXpath("//div[@class='tab-container']/table//span[@id='name.div']").trim());
3127 SeleneseTestBase.assertEquals(componentCode, getTextByXpath("//div[@class='tab-container']/table//span[@id='code.div']").trim());
3128 waitAndClickCloseWindow();
3129 switchToWindow("null");
3130 }
3131
3132 protected void testEditComponent(String docId, String componentName, String componentCode) throws Exception {
3133 selectFrameIframePortlet();
3134 waitAndClickEdit();
3135 waitForPageToLoad();
3136 docId = waitForDocId();
3137 waitAndTypeByName("document.documentHeader.documentDescription", "Editing Test Component");
3138 clearTextByName("document.newMaintainableObject.name");
3139 waitAndTypeByName("document.newMaintainableObject.name", componentName);
3140 waitAndClickSave();
3141 waitAndClickSubmit();
3142 waitForPageToLoad();
3143 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH,"Document is not submitted successfully");
3144 selectTopFrame();
3145 waitAndClickDocSearchTitle();
3146 waitForPageToLoad();
3147 selectFrameIframePortlet();
3148 waitAndClickSearch();
3149 Thread.sleep(2000);
3150 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
3151 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
3152 selectTopFrame();
3153 }
3154
3155 protected void testCopyComponent(String docId, String componentName, String componentCode) throws Exception {
3156 selectFrameIframePortlet();
3157 waitAndClickCopy();
3158 waitForPageToLoad();
3159 docId = waitForDocId();
3160 waitAndTypeByName("document.documentHeader.documentDescription", "Copying Test Component");
3161 selectOptionByName("document.newMaintainableObject.namespaceCode", "KR-IDM");
3162 waitAndTypeByName("document.newMaintainableObject.code", componentCode);
3163 clearTextByName("document.newMaintainableObject.name");
3164 waitAndTypeByName("document.newMaintainableObject.name", componentName);
3165 waitAndClickSave();
3166 waitAndClickSubmit();
3167 waitForPageToLoad();
3168 checkForDocError();
3169 assertElementPresentByXpath(DOC_SUBMIT_SUCCESS_MSG_XPATH,"Document is not submitted successfully");
3170 selectTopFrame();
3171 waitAndClickDocSearchTitle();
3172 waitForPageToLoad();
3173 selectFrameIframePortlet();
3174 waitAndClickSearch();
3175 Thread.sleep(2000);
3176 SeleneseTestBase.assertEquals(docId, getTextByXpath(DOC_ID_XPATH_3));
3177 SeleneseTestBase.assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
3178 selectTopFrame();
3179 }
3180
3181 protected void testVerifyCopyComponent(String docId, String componentName, String componentCode) throws Exception {
3182 selectFrameIframePortlet();
3183 waitAndTypeByName("name", componentName);
3184 waitAndClickSearch();
3185 isElementPresentByLinkText(componentName);
3186 waitAndClickByLinkText(componentName);
3187 waitForPageToLoad();
3188 Thread.sleep(2000);
3189 switchToWindow("Kuali :: Inquiry");
3190 Thread.sleep(2000);
3191 SeleneseTestBase.assertEquals(componentName, getTextByXpath("//div[@class='tab-container']/table//span[@id='name.div']").trim());
3192 SeleneseTestBase.assertEquals(componentCode, getTextByXpath("//div[@class='tab-container']/table//span[@id='code.div']").trim());
3193 waitAndClickCloseWindow();
3194 switchToWindow("null");
3195 }
3196
3197
3198
3199
3200 protected void testPageHelp() throws Exception {
3201
3202 fireMouseOverEventByXpath("//h2/span[@class='uif-headerText-span']");
3203 SeleneseTestBase.assertEquals("Sample text for page help", getText("td.jquerybubblepopup-innerHtml"));
3204
3205
3206 waitAndClickByXpath("//input[@alt='Help for Help Page']");
3207 Thread.sleep(5000);
3208 switchToWindow("Kuali Foundation");
3209 Thread.sleep(5000);
3210 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
3211 }
3212
3213
3214
3215
3216 protected void testTooltipHelp() throws Exception {
3217
3218 if (isElementPresentByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]")) {
3219 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"));
3220 }
3221
3222 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label left')]")) {
3223 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"));
3224 }
3225
3226 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label right')]")) {
3227 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label right')]"));
3228 }
3229
3230 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label top')]")) {
3231 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]"));
3232 }
3233
3234 if (isElementPresentByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]")) {
3235 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]"));
3236 }
3237
3238 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')]")) {
3239 SeleneseTestBase.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')]"));
3240 }
3241
3242 if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) {
3243 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]"));
3244 }
3245
3246 if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]")) {
3247 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]"));
3248 }
3249
3250 if (isElementPresentByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]")) {
3251 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]"));
3252 }
3253
3254 if (isElementPresentByXpath("//td[contains(text(),'Sample text for check box help')]")) {
3255 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]"));
3256 }
3257
3258
3259 fireMouseOverEventByXpath("//div[@id='ConfigurationTestView-Help-Section1']/div/h3[@class='uif-headerText']");
3260 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"));
3261 String javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" + "element[0].style.display='none'";
3262 ((JavascriptExecutor) driver).executeScript(javascript);
3263 Thread.sleep(3000);
3264 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"));
3265
3266
3267 SeleneseTestBase.assertFalse(isElementPresent("#ConfigurationTestView-Help-Section1 input.uif-helpImage"));
3268
3269
3270 fireMouseOverEventByXpath("//label[@id='field-label-left_label']");
3271 Thread.sleep(3000);
3272 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"));
3273 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" +
3274 "element[1].style.display='none'";
3275 Thread.sleep(3000);
3276 ((JavascriptExecutor) driver).executeScript(javascript);
3277 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"));
3278
3279
3280 fireMouseOverEventByXpath("//label[@id='field-label-right_label']");
3281 Thread.sleep(3000);
3282 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label righ')]"));
3283 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" +"element[2].style.display='none'";
3284 ((JavascriptExecutor) driver).executeScript(javascript);
3285 Thread.sleep(3000);
3286 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label righ')]"));
3287
3288
3289 fireMouseOverEventByXpath("//label[@id='field-label-top_label']");
3290 Thread.sleep(3000);
3291 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]"));
3292 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" + "element[3].style.display='none'";
3293 ((JavascriptExecutor) driver).executeScript(javascript);
3294 Thread.sleep(3000);
3295 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]"));
3296
3297
3298 SeleneseTestBase.assertFalse(isElementPresentByXpath("//*[@id='standalone-help-not-rendered']"));
3299
3300
3301 fireMouseOverEventByXpath("//label[@id='override-tooltip_label']");
3302 Thread.sleep(3000);
3303 SeleneseTestBase.assertTrue(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')]"));
3304 if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) {
3305 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]"));
3306 }
3307 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" + "element[4].style.display='none'";
3308 ((JavascriptExecutor) driver).executeScript(javascript);
3309 Thread.sleep(3000);
3310 SeleneseTestBase.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')]"));
3311
3312
3313 fireMouseOverEventByXpath("//input[@id='on-focus-tooltip_control']");
3314 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]"));
3315 fireMouseOverEventByXpath("//label[@id='on-focus-tooltip_label']");
3316 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]"));
3317 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" +"element[5].style.display='none'";
3318 ((JavascriptExecutor) driver).executeScript(javascript);
3319 Thread.sleep(3000);
3320 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" + "element[6].style.display='none'";
3321 ((JavascriptExecutor) driver).executeScript(javascript);
3322 Thread.sleep(3000);
3323 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]"));
3324 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]"));
3325
3326
3327 fireMouseOverEventByXpath("//label[@id='checkbox_label']");
3328 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]"));
3329 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" + "element[7].style.display='none'";
3330 ((JavascriptExecutor) driver).executeScript(javascript);
3331 Thread.sleep(3000);
3332 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]"));
3333 }
3334
3335
3336
3337
3338 protected void testDisplayOnlyTooltipHelp() throws Exception {
3339
3340 if (isElementPresentByXpath("//td[contains(text(),'Sample text for sub-section help')]")) {
3341 SeleneseTestBase.assertFalse(isVisible("//td[contains(text(),'Sample text for sub-section help')]"));
3342 }
3343
3344 if (isElementPresentByXpath("//td[contains(text(),'Sample text for read only field help')]")) {
3345 SeleneseTestBase.assertFalse(isVisible("//td[contains(text(),'Sample text for read only field help')]"));
3346 }
3347
3348
3349 fireMouseOverEventByXpath("//span[contains(text(),'Display only fields')]");
3350 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for sub-section help')]"));
3351 String javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" +
3352 "element[0].style.display='none'";
3353 ((JavascriptExecutor) driver).executeScript(javascript);
3354 SeleneseTestBase.assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for sub-section help')]"));
3355
3356
3357 fireMouseOverEventByXpath("//label[@for='display-field_control']");
3358 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for read only field help')]"));
3359 javascript="var element = document.getElementsByClassName('jquerybubblepopup jquerybubblepopup-black');" +
3360 "element[0].style.display='none'";
3361 ((JavascriptExecutor) driver).executeScript(javascript);
3362 }
3363
3364
3365
3366
3367 protected void testMissingTooltipHelp() throws Exception {
3368
3369 SeleneseTestBase.assertFalse(isElementPresentByXpath("//*[@class='jquerybubblepopup jquerybubblepopup-black']"));
3370
3371
3372 SeleneseTestBase.assertFalse(isElementPresent("#ConfigurationTestView-Help-Section2 input.uif-helpImage"));
3373
3374
3375 fireMouseOverEventByXpath("//div[@id='ConfigurationTestView-Help-Section2']/div");
3376 SeleneseTestBase.assertFalse(isElementPresentByXpath("//*[@class='jquerybubblepopup jquerybubblepopup-black']"));
3377 SeleneseTestBase.assertFalse(isElementPresentByXpath("//*[@class='jquerybubblepopup jquerybubblepopup-black']"));
3378
3379
3380 fireMouseOverEventByXpath("//label[@id='missing-tooltip-help_label']");
3381 SeleneseTestBase.assertFalse(isElementPresentByXpath("//*[@class='jquerybubblepopup jquerybubblepopup-black']"));
3382 SeleneseTestBase.assertFalse(isElementPresentByXpath("//*[@class='jquerybubblepopup jquerybubblepopup-black']"));
3383 }
3384
3385
3386
3387
3388
3389 protected void testExternalHelp2() throws Exception {
3390
3391 assertPopUpWindowUrl(By.cssSelector("input[title=\"Help for External Help\"]"), "HelpWindow", "http://www.kuali.org/?section");
3392
3393
3394 assertPopUpWindowUrl(By.xpath("//div[@id='field-label-left-external-help']/fieldset/input[@title='Help for Field Label']"), "HelpWindow",
3395 "http://www.kuali.org/?label_left");
3396
3397
3398 assertPopUpWindowUrl(By.xpath("//div[@id='field-label-right-external-help']/fieldset/input[@title='Help for Field Label']"), "HelpWindow",
3399 "http://www.kuali.org/?label_right");
3400
3401
3402 assertPopUpWindowUrl(By.xpath("//div[@id='field-label-top-external-help']/fieldset/input[@title='Help for Field Label']"), "HelpWindow",
3403 "http://www.kuali.org/?system_parm");
3404
3405
3406 assertPopUpWindowUrl(By.id("standalone-external-help"), "HelpWindow", "http://www.kuali.org/?widget_only");
3407 }
3408
3409
3410
3411
3412
3413 protected void testDisplayOnlyExternalHelp2() throws Exception {
3414
3415 assertPopUpWindowUrl(By.cssSelector("input[title=\"Help for Display only fields\"]"), "HelpWindow", "http://www.kuali.org/?sub_section");
3416
3417
3418 assertPopUpWindowUrl(By.xpath("//div[@id='display-field-external-help']/fieldset/input[@title='Help for Field Label']"), "HelpWindow",
3419 "http://www.kuali.org/?display_field");
3420 }
3421
3422
3423
3424
3425
3426 protected void testMissingExternalHelp2() throws Exception {
3427
3428 SeleneseTestBase.assertFalse(isElementPresent(By.cssSelector("input[title=\"Help for Missing External Help\"]")));
3429
3430
3431 SeleneseTestBase.assertFalse(isElementPresentByXpath("//div[@id='external-help-externalHelpUrl-empty']/*[@class='uif-helpImage']"));
3432
3433
3434 SeleneseTestBase.assertFalse(isElementPresentByXpath("//div[@id='external-help-helpdefinition-empty']/*[@class='uif-helpImage']"));
3435
3436
3437 SeleneseTestBase.assertFalse(isElementPresentByXpath("//div[@id='external-help-system-parm-missing']/*[@class='uif-helpImage']"));
3438
3439
3440 SeleneseTestBase.assertFalse(isElementPresentByXpath("//div[@id='standalone-external-help-missing']"));
3441 }
3442
3443 protected void testReferenceCampusTypeBlanketApprove() throws Exception {
3444 selectFrameIframePortlet();
3445 waitAndCreateNew();
3446 String docId = waitForDocId();
3447 assertBlanketApproveButtonsPresent();
3448 String dtsTwo = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
3449 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Campus Type " + dtsTwo);
3450 waitAndTypeByXpath(DOC_CODE_XPATH, RandomStringUtils.randomAlphabetic(1));
3451 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", "Indianapolis" + dtsTwo);
3452 int attemptCount = 1;
3453 blanketApproveCheck();
3454 while (hasDocError("same primary key already exists") && attemptCount < 25) {
3455 clearTextByXpath(DOC_CODE_XPATH);
3456 waitAndTypeByXpath(DOC_CODE_XPATH, Character.toString((char) ('A' + attemptCount++)));
3457 blanketApproveCheck();
3458 }
3459 blanketApproveAssert();
3460 assertDocFinal(docId);
3461 }
3462
3463 protected void testSearchEditCancel() throws InterruptedException {
3464 selectFrameIframePortlet();
3465 waitAndClickSearch2();
3466 waitAndClickEdit();
3467 testCancelConfirmation();
3468 }
3469
3470 protected void testServerErrorsIT() throws Exception {
3471 waitAndClickByXpath("//button[contains(.,'Get Error Messages')]");
3472 waitForPageToLoad();
3473 Thread.sleep(5000);
3474 assertElementPresent("div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] .uif-errorMessageItem-field");
3475 waitIsVisibleByXpath("//div[@data-header_for='Demo-ValidationLayout-Section1']");
3476 assertElementPresentByXpath("//*[@data-messageitemfor='Demo-ValidationLayout-Section1' and @class='uif-errorMessageItem']");
3477 assertElementPresent("div[data-role=\"InputField\"] img[alt=\"Error\"]");
3478 assertElementPresentByXpath("//a[contains(.,'Section 1 Title')]");
3479 fireMouseOverEventByXpath("//a[contains(.,'Field 1')]");
3480 assertElementPresent(".uif-errorMessageItem-field");
3481 waitAndClickByXpath("//a[contains(.,'Field 1')]");
3482 Thread.sleep(2000);
3483 waitIsVisible(".jquerybubblepopup-innerHtml");
3484 waitIsVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems");
3485 waitIsVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-errorMessageItem-field");
3486 waitAndTypeByName("field1", "");
3487 fireEvent("field1", "blur");
3488 fireEvent("field1", "focus");
3489 waitIsVisible(".jquerybubblepopup-innerHtml");
3490 waitIsVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-errorMessageItem-field");
3491 waitIsVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems");
3492 waitIsVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems .uif-errorMessageItem-field");
3493 waitAndTypeByName("field1", "t");
3494
3495 for (int second = 0;; second++) {
3496 if (second >= waitSeconds) {
3497 failableFail(TIMEOUT_MESSAGE);
3498 }
3499 try {
3500 if (!isElementPresent(".jquerybubblepopup-innerHtml > .uif-clientMessageItems")) {
3501 break;
3502 }
3503 } catch (Exception e) {}
3504 Thread.sleep(1000);
3505 }
3506
3507 waitIsVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-errorMessageItem-field");
3508 SeleneseTestBase.assertFalse(isElementPresent(".jquerybubblepopup-innerHtml > .uif-clientMessageItems"));
3509 }
3510
3511 protected void testServerInfoIT() throws Exception {
3512 waitAndClickByXpath("//button[contains(.,'Get Info Messages')]");
3513 waitIsVisibleByXpath("//div[@data-messagesfor='Demo-ValidationLayout-SectionsPage']");
3514 SeleneseTestBase.assertTrue(isVisibleByXpath("//div[@data-messagesfor='Demo-ValidationLayout-SectionsPage']"));
3515 SeleneseTestBase.assertTrue(isElementPresent("div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] .uif-infoMessageItem"));
3516 SeleneseTestBase.assertTrue(isVisible("div[data-messagesfor=\"Demo-ValidationLayout-Section1\"]"));
3517 SeleneseTestBase.assertTrue(isElementPresent("div[data-messagesfor=\"Demo-ValidationLayout-Section1\"] .uif-infoMessageItem"));
3518 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@data-role='InputField']//img[@alt='Information']"));
3519 fireMouseOverEventByXpath("//a[contains(.,'Field 1')]");
3520 SeleneseTestBase.assertTrue(isElementPresent(".uif-infoHighlight"));
3521 waitAndClickByXpath("//a[contains(.,'Field 1')]");
3522
3523 for (int second = 0;; second++) {
3524 if (second >= waitSeconds)
3525 failableFail(TIMEOUT_MESSAGE);
3526 try {
3527 if (isVisible(".jquerybubblepopup-innerHtml"))
3528 break;
3529 } catch (Exception e) {}
3530 Thread.sleep(1000);
3531 }
3532
3533 SeleneseTestBase.assertTrue(isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems"));
3534 SeleneseTestBase.assertTrue(isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-infoMessageItem-field"));
3535 waitAndTypeByName("field1", "");
3536 fireEvent("field1", "blur");
3537 fireEvent("field1", "focus");
3538
3539 for (int second = 0;; second++) {
3540 if (second >= waitSeconds)
3541 failableFail(TIMEOUT_MESSAGE);
3542 try {
3543 if (isVisible(".jquerybubblepopup-innerHtml"))
3544 break;
3545 } catch (Exception e) {}
3546 Thread.sleep(1000);
3547 }
3548
3549 SeleneseTestBase.assertTrue(isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-infoMessageItem-field"));
3550 for (int second = 0;; second++) {
3551 if (second >= waitSeconds)
3552 failableFail(TIMEOUT_MESSAGE);
3553 try {
3554 if (isVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems"))
3555 break;
3556 } catch (Exception e) {}
3557 Thread.sleep(1000);
3558 }
3559
3560 SeleneseTestBase.assertTrue(isVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems .uif-errorMessageItem-field"));
3561 waitAndTypeByName("field1", "b");
3562 fireEvent("field1", "blur");
3563 fireEvent("field1", "focus");
3564
3565 for (int second = 0;; second++) {
3566 if (second >= waitSeconds)
3567 failableFail(TIMEOUT_MESSAGE);
3568 try {
3569 if (!isElementPresent(".jquerybubblepopup-innerHtml > .uif-clientMessageItems"))
3570 break;
3571 } catch (Exception e) {}
3572 Thread.sleep(1000);
3573 }
3574
3575 fireEvent("field1", "blur");
3576 Thread.sleep(3000);
3577 SeleneseTestBase.assertTrue(!isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-infoMessageItem-field"));
3578 SeleneseTestBase.assertFalse(isElementPresent(".jquerybubblepopup-innerHtml > .uif-clientMessageItems"));
3579 fireEvent("field1", "focus");
3580 clearTextByName("field1");
3581 fireEvent("field1", "blur");
3582 SeleneseTestBase.assertTrue(isElementPresent("div.uif-hasError"));
3583 SeleneseTestBase.assertTrue(isElementPresent("img[src*=\"error.png\"]"));
3584 }
3585
3586 protected void testServerWarningsIT() throws Exception {
3587 waitAndClickByXpath("//button[contains(.,'Get Warning Messages')]");
3588 waitForPageToLoad();
3589 Thread.sleep(3000);
3590 com.thoughtworks.selenium.SeleneseTestBase.assertTrue("div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] not visible",
3591 isVisible("div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"]"));
3592 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3593 "div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] .uif-warningMessageItem not present",
3594 isElementPresent("div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] .uif-warningMessageItem"));
3595 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3596 "div[data-messagesfor=\"Demo-ValidationLayout-Section1\"] not visible", isVisible(
3597 "div[data-messagesfor=\"Demo-ValidationLayout-Section1\"]"));
3598 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3599 "div[data-messagesfor=\"Demo-ValidationLayout-Section1\"] .uif-warningMessageItem not present",
3600 isElementPresent("div[data-messagesfor=\"Demo-ValidationLayout-Section1\"] .uif-warningMessageItem"));
3601 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3602 "div[data-role=\"InputField\"] img[alt=\"Warning\"] not present", isElementPresent(
3603 "div[data-role=\"InputField\"] img[alt=\"Warning\"]"));
3604 fireMouseOverEvent(By.xpath("//a[contains(.,'Field 1')]"));
3605 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3606 ".uif-warningHighlight no present when //a[contains(.,'Field 1')] is moused over",
3607 isElementPresent(".uif-warningHighlight"));
3608 waitAndClickByXpath("//a[contains(.,'Field 1')]");
3609 waitForElementVisible(".jquerybubblepopup-innerHtml", " after click on //a[contains(.,'Field 1')]");
3610 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3611 ".jquerybubblepopup-innerHtml > .uif-serverMessageItems not visible", isVisible(
3612 ".jquerybubblepopup-innerHtml > .uif-serverMessageItems"));
3613 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3614 ".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-warningMessageItem-field not visible",
3615 isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-warningMessageItem-field"));
3616 waitAndTypeByName("field1", "");
3617 fireEvent("field1", "blur");
3618 fireMouseOverEventByName("field1");
3619 waitForElementVisible(".jquerybubblepopup-innerHtml",
3620 " not visible after typing nothing in name=field1 then firing blur and focus events");
3621 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3622 ".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-warningMessageItem-field not visible after typing nothing in name=field1 then firing blur and focus events",
3623 isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-warningMessageItem-field"));
3624 waitForElementVisible(".jquerybubblepopup-innerHtml> .uif-clientMessageItems",
3625 " not visible after typing nothing in name=field1 then firing blur and focus events");
3626 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3627 ".jquerybubblepopup-innerHtml > .uif-clientMessageItems .uif-errorMessageItem-field not visible after typing nothing in name=field1 then firing blur and focus events",
3628 isVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems .uif-errorMessageItem-field"));
3629 waitAndTypeByName("field1", "b");
3630 fireEvent("field1", "blur");
3631 fireMouseOverEventByName("field1");
3632 waitForElementVisible(".jquerybubblepopup-innerHtml> .uif-serverMessageItems", "");
3633 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3634 ".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-warningMessageItem-field not visible after typing b in name=field1 then firing blur and focus events",
3635 isVisible(".jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-warningMessageItem-field"));
3636 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(".jquerybubblepopup-innerHtml > .uif-clientMessageItems",
3637 !isElementPresent(
3638 ".jquerybubblepopup-innerHtml > .uif-clientMessageItems"));
3639 clearTextByName("field1");
3640 fireEvent("field1", "blur");
3641 fireMouseOverEventByName("field1");
3642 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3643 ".uif-hasError is not present after typing nothing in name=field1 and then firing focus and blur events",
3644 isElementPresent(".uif-hasError"));
3645 com.thoughtworks.selenium.SeleneseTestBase.assertTrue(
3646 "img[src*=\"error.png\"] is not present after typing nothing in name=field1 and then firing focus and blur events",
3647 isElementPresent("img[src*=\"error.png\"]"));
3648 passed();
3649 }
3650
3651
3652
3653
3654 protected void testViewHelp() throws Exception {
3655
3656 fireMouseOverEventByXpath("//h1/span[@class='uif-headerText-span']");
3657 SeleneseTestBase.assertEquals("Sample text for view help", getText("td.jquerybubblepopup-innerHtml"));
3658
3659
3660 waitAndClickByXpath("//input[@alt='Help for Configuration Test View - Help']");
3661 Thread.sleep(5000);
3662 switchToWindow("Kuali Foundation");
3663 Thread.sleep(5000);
3664 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
3665 }
3666
3667
3668
3669
3670 protected void testViewHelp2() throws Exception {
3671
3672 if (isElementPresentByXpath("//td[@class='jquerybubblepopup-innerHtml']")) {
3673 SeleneseTestBase.assertFalse(findElement(By.cssSelector("td.jquerybubblepopup-innerHtml")).isDisplayed());
3674 }
3675
3676
3677 fireMouseOverEventByXpath("//h1/span[@class='uif-headerText-span']");
3678 Thread.sleep(2000);
3679 SeleneseTestBase.assertTrue(isVisibleByXpath("//td[contains(text(),'View help')]"));
3680 assertPopUpWindowUrl(By.cssSelector("input[title=\"Help for Configuration Test View\"]"), "HelpWindow", "http://www.kuali.org/");
3681 }
3682
3683 protected void testVerifyAddDeleteFiscalOfficerLegacy() throws Exception {
3684 selectFrameIframePortlet();
3685 checkForIncidentReport("testVerifyAddDeleteFiscalOfficerLegacy");
3686 waitAndTypeByName("document.documentHeader.documentDescription", ITUtil.createUniqueDtsPlusTwoRandomChars());
3687 waitAndTypeByName("newCollectionLines['document.newMaintainableObject.dataObject.fiscalOfficer.accounts'].number","1234567890");
3688 waitAndTypeByName("newCollectionLines['document.newMaintainableObject.dataObject.fiscalOfficer.accounts'].foId", "2");
3689 waitAndClickByXpath("//button[@data-loadingmessage='Adding Line...']");
3690 waitForElementPresentByName("document.newMaintainableObject.dataObject.fiscalOfficer.accounts[0].number");
3691 SeleneseTestBase.assertEquals("1234567890", waitAndGetAttributeByName(
3692 "document.newMaintainableObject.dataObject.fiscalOfficer.accounts[0].number", "value"));
3693 SeleneseTestBase.assertEquals("2", waitAndGetAttributeByName(
3694 "document.newMaintainableObject.dataObject.fiscalOfficer.accounts[0].foId", "value"));
3695 waitAndClickByXpath("//button[@data-loadingmessage='Deleting Line...']");
3696 Thread.sleep(3000);
3697 SeleneseTestBase.assertEquals(Boolean.FALSE, (Boolean) isElementPresentByName(
3698 "document.newMaintainableObject.dataObject.fiscalOfficer.accounts[0].number"));
3699 passed();
3700 }
3701
3702 protected void testVerifyAddDeleteNoteLegacy() throws Exception {
3703 selectFrameIframePortlet();
3704 waitAndClick("div.tableborders.wrap.uif-boxLayoutVerticalItem.clearfix span.uif-headerText-span > img.uif-disclosure-image");
3705 waitForElementPresent("button[title='Add a Note'].uif-action.uif-primaryActionButton.uif-smallActionButton");
3706 waitAndClickByName("newCollectionLines['document.notes'].noteText");
3707 waitAndTypeByName("newCollectionLines['document.notes'].noteText", "Test note");
3708 waitAndClick("button[title='Add a Note'].uif-action.uif-primaryActionButton.uif-smallActionButton");
3709
3710 SeleneseTestBase.assertEquals("Test note", getTextByXpath("//pre"));
3711 waitAndClick("button[title='Delete a Note'].uif-action.uif-primaryActionButton.uif-smallActionButton");
3712 SeleneseTestBase.assertEquals(Boolean.FALSE, (Boolean) isElementPresentByName("document.notes[0].noteText"));
3713 passed();
3714 }
3715
3716 protected void testVerifyAdHocRecipientsLegacy() throws Exception {
3717 selectFrameIframePortlet();
3718 waitAndClickByLinkText("Fiscal Officer Accounts");
3719 assertElementPresentByXpath(
3720 "//select[@name=\"newCollectionLines['document.adHocRoutePersons'].actionRequested\"]");
3721 assertElementPresentByXpath(
3722 "//input[@name=\"newCollectionLines['document.adHocRoutePersons'].name\" and @type=\"text\"]");
3723 assertElementPresentByXpath(
3724 "//select[@name=\"newCollectionLines['document.adHocRouteWorkgroups'].actionRequested\"]");
3725 assertElementPresentByXpath(
3726 "//input[@name=\"newCollectionLines['document.adHocRouteWorkgroups'].recipientNamespaceCode\" and @type='text']");
3727 assertElementPresentByXpath(
3728 "//input[@name=\"newCollectionLines['document.adHocRouteWorkgroups'].recipientName\" and @type='text']");
3729 passed();
3730 }
3731
3732 protected void testVerifyButtonsLegacy() throws Exception {
3733 selectFrameIframePortlet();
3734 assertElementPresentByXpath("//button[contains(.,'ubmit')]");
3735 assertElementPresentByXpath("//button[contains(.,'ave')]");
3736 assertElementPresentByXpath("//button[contains(.,'lanket approve')]");
3737 assertElementPresentByXpath("//button[contains(.,'lose')]");
3738 assertElementPresentByXpath("//a[contains(.,'ancel')]");
3739 passed();
3740 }
3741
3742 protected void testVerifyConstraintText() throws Exception {
3743 selectFrameIframePortlet();
3744 SeleneseTestBase.assertEquals("* indicates required field", getText(
3745 "div.uif-boxLayout.uif-horizontalBoxLayout.clearfix > span.uif-message.uif-requiredInstructionsMessage.uif-boxLayoutHorizontalItem"));
3746 SeleneseTestBase.assertEquals("Must not be more than 10 characters", getText(
3747 "div.uif-group.uif-gridGroup.uif-gridSection.uif-disclosure.uif-boxLayoutVerticalItem.clearfix div[data-label='Travel Account Number'].uif-field.uif-inputField span.uif-message.uif-constraintMessage"));
3748 SeleneseTestBase.assertEquals("Must not be more than 10 characters", getText(
3749 "div.uif-group.uif-gridGroup.uif-gridSection.uif-disclosure.uif-boxLayoutVerticalItem.clearfix div[data-label='Travel Sub Account Number'].uif-field.uif-inputField span.uif-message.uif-constraintMessage"));
3750 SeleneseTestBase.assertEquals("Must not be more than 10 characters", getText(
3751 "div.uif-group.uif-gridGroup.uif-collectionItem.uif-gridCollectionItem.uif-collectionAddItem div[data-label='Travel Account Number'].uif-field.uif-inputField span.uif-message.uif-constraintMessage"));
3752 passed();
3753 }
3754
3755 protected void testVerifyEditedComponent(String docId, String componentName, String componentCode) throws Exception {
3756 selectFrameIframePortlet();
3757 waitAndTypeByName("name", componentName);
3758 waitAndClickSearch();
3759 isElementPresentByLinkText(componentName);
3760 waitAndClickByLinkText(componentName);
3761 waitForPageToLoad();
3762 Thread.sleep(2000);
3763 switchToWindow("Kuali :: Inquiry");
3764 Thread.sleep(2000);
3765 SeleneseTestBase.assertEquals(componentName, getTextByXpath("//div[@class='tab-container']/table//span[@id='name.div']").trim());
3766 SeleneseTestBase.assertEquals(componentCode, getTextByXpath("//div[@class='tab-container']/table//span[@id='code.div']").trim());
3767 waitAndClickCloseWindow();
3768 switchToWindow("null");
3769 List<String> parameterList=new ArrayList<String>();
3770 }
3771
3772 protected void testVerifyDisclosures() throws Exception {
3773 selectFrameIframePortlet();
3774 assertElementPresentByXpath("//span[contains(text(),'Document Overview')]");
3775 assertElementPresentByXpath("//span[contains(text(),'Document Overview')]");
3776 assertElementPresentByXpath("//span[contains(text(),'Account Information')]");
3777 assertElementPresentByXpath("//span[contains(text(),'Fiscal Officer Accounts')]");
3778 assertElementPresentByXpath("//span[contains(text(),'Notes and Attachments')]");
3779 assertElementPresentByXpath("//span[contains(text(),'Ad Hoc Recipients')]");
3780 assertElementPresentByXpath("//span[contains(text(),'Route Log')]");
3781 colapseExpandByXpath("//span[contains(text(),'Document Overview')]//img", "//label[contains(text(),'Organization Document Number')]");
3782 colapseExpandByXpath("//span[contains(text(),'Account Information')]//img","//label[contains(text(),'Travel Account Type Code')]");
3783 colapseExpandByXpath("//span[contains(text(),'Fiscal Officer Accounts')]//img","//a[contains(text(),'Lookup/Add Multiple Lines')]");
3784 expandColapseByXpath("//span[contains(text(),'Notes and Attachments')]//img","//label[contains(text(),'Note Text')]");
3785 expandColapseByXpath("//span[contains(text(),'Ad Hoc Recipients')]","//span[contains(text(),'Ad Hoc Group Requests')]");
3786
3787
3788 waitAndClickByXpath("//span[contains(text(),'Route Log')]//img");
3789 selectFrame("routeLogIFrame");
3790 waitIsVisibleByXpath("//img[@alt='refresh']");
3791
3792
3793 selectTopFrame();
3794 selectFrameIframePortlet();
3795 waitAndClickByXpath("//span[contains(text(),'Route Log')]//img");
3796 selectFrame("routeLogIFrame");
3797 waitNotVisibleByXpath("//img[@alt='refresh']");
3798 passed();
3799 }
3800
3801 protected void testVerifyDocumentOverviewLegacy() throws Exception {
3802 selectFrameIframePortlet();
3803 assertTextPresent("Document Overview");
3804 assertElementPresentByXpath("//input[@name='document.documentHeader.documentDescription']");
3805 assertElementPresentByXpath("//input[@name='document.documentHeader.organizationDocumentNumber']");
3806 assertElementPresentByXpath("//textarea[@name='document.documentHeader.explanation']");
3807 passed();
3808 }
3809
3810 protected void testVerifyExpandCollapse() throws Exception {
3811 selectFrameIframePortlet();
3812 assertElementPresentByXpath("//button[contains(@class, 'uif-expandDisclosuresButton')]");
3813 assertElementPresentByXpath("//button[contains(@class, 'uif-collapseDisclosuresButton')]");
3814 passed();
3815 }
3816
3817 protected void testVerifyFieldsLegacy() throws Exception {
3818 selectFrameIframePortlet();
3819 assertElementPresentByXpath("//input[@name='document.newMaintainableObject.dataObject.number' and @type='text' and @size=10 and @maxlength=10]");
3820 assertElementPresentByXpath("//input[@name='document.newMaintainableObject.dataObject.extension.accountTypeCode' and @type='text' and @size=2 and @maxlength=3]");
3821 assertElementPresentByXpath(
3822 "//input[@name='document.newMaintainableObject.dataObject.subAccount' and @type='text' and @size=10 and @maxlength=10]");
3823 assertElementPresentByXpath("//input[@name='document.newMaintainableObject.dataObject.subsidizedPercent' and @type='text' and @size=6 and @maxlength=20]");
3824 assertElementPresentByXpath(
3825 "//input[@name='document.newMaintainableObject.dataObject.foId' and @type='text' and @size=5 and @maxlength=10]");
3826 assertElementPresentByXpath(
3827 "//input[@name=\"newCollectionLines['document.newMaintainableObject.dataObject.fiscalOfficer.accounts'].number\" and @type='text' and @size=10 and @maxlength=10]");
3828 assertElementPresentByXpath(
3829 "//input[@name=\"newCollectionLines['document.newMaintainableObject.dataObject.fiscalOfficer.accounts'].foId\" and @type='text' and @size=5 and @maxlength=10]");
3830 passed();
3831 }
3832
3833 protected void testVerifyHeaderFieldsLegacy() throws Exception {
3834 selectFrameIframePortlet();
3835 assertElementPresentByXpath("//div[contains(@class, 'uif-documentNumber')]");
3836 assertElementPresentByXpath("//div[contains(@class, 'uif-documentInitiatorNetworkId')]");
3837 assertElementPresentByXpath("//div[contains(@class, 'uif-documentStatus')]");
3838 assertElementPresentByXpath("//div[contains(@class, 'uif-documentCreateDate')]");
3839 passed();
3840 }
3841
3842 protected void testVerifyLookupAddMultipleLinesLegacy() throws Exception {
3843 selectFrameIframePortlet();
3844 assertElementPresentByXpath("//a[contains(text(),'Lookup/Add Multiple Lines')]");
3845 passed();
3846 }
3847
3848 protected void testVerifyNotesAndAttachments() throws Exception {
3849 selectFrameIframePortlet();
3850 waitAndClickByXpath("//span[contains(text(),'Notes and Attachments')]");
3851 waitForElementPresentByXpath("//button[@title='Add a Note']");
3852 assertElementPresentByXpath("//span[contains(text(),'Notes and Attachments')]");
3853 assertElementPresentByXpath("//textarea[@name=\"newCollectionLines['document.notes'].noteText\"]");
3854 assertElementPresentByXpath("//input[@name='attachmentFile']");
3855
3856
3857 passed();
3858 }
3859
3860 protected void testVerifyQuickfinderIconsLegacy() throws Exception {
3861 selectFrameIframePortlet();
3862 assertTextPresent("Document Overview");
3863 assertElementPresentByXpath("//*[@id='quickfinder1']");
3864 assertElementPresentByXpath("//*[@id='quickfinder2']");
3865 assertElementPresentByXpath("//*[@id='quickfinder3']");
3866 assertElementPresentByXpath("//*[@id='quickfinder4_add']");
3867
3868
3869 passed();
3870 }
3871
3872 protected void testVerifyRouteLog() throws Exception {
3873 selectFrameIframePortlet();
3874 waitAndClickByLinkText("Route Log");
3875 waitForElementPresent("//iframe[contains(@src,'RouteLog.do')]");
3876 passed();
3877 }
3878
3879 protected void testVerifySave() throws Exception {
3880 selectFrameIframePortlet();
3881 waitAndTypeByName("document.documentHeader.documentDescription", "Test Document " + ITUtil.DTS);
3882 waitAndClickByName("document.newMaintainableObject.dataObject.number");
3883 waitAndTypeByName("document.newMaintainableObject.dataObject.number", "1234567890");
3884 waitAndTypeByName("document.newMaintainableObject.dataObject.extension.accountTypeCode", "EAT");
3885 waitAndTypeByName("document.newMaintainableObject.dataObject.subAccount", "a1");
3886 waitAndClick(
3887 "button[data-loadingmessage='Saving...'].uif-action.uif-primaryActionButton.uif-boxLayoutHorizontalItem");
3888 Thread.sleep(2000);
3889
3890
3891 passed();
3892 }
3893
3894 protected void testVerifySubsidizedPercentWatermarkLegacy() throws Exception {
3895 selectFrameIframePortlet();
3896
3897
3898
3899 assertElementPresentByXpath("//input[@name='document.newMaintainableObject.dataObject.subsidizedPercent']");
3900 passed();
3901 }
3902
3903 protected void testWorkFlowDocTypeBlanketApprove() throws Exception {
3904 selectFrameIframePortlet();
3905 waitAndCreateNew();
3906 String docId = waitForDocId();
3907 assertBlanketApproveButtonsPresent();
3908 String dts = ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits();
3909 waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Validation Test Document Type " + dts);
3910 String parentDocType = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.kew.doctype.bo.DocumentType!!).(((name:document.newMaintainableObject.parentDocType.name,documentTypeId:document.newMaintainableObject.docTypeParentId,))).((`document.newMaintainableObject.parentDocType.name:name,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;"
3911 + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
3912 waitAndClickByXpath(parentDocType);
3913 waitAndClickSearch();
3914 waitAndClickReturnValue();
3915 String docTypeName = "DocType" + dts;
3916 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", docTypeName);
3917 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedDocHandlerUrl']",
3918 "${kr.url}/maintenance.do?methodToCall=docHandler");
3919 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.label']",
3920 "Workflow Maintenance Document Type Document " + dts);
3921 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedHelpDefinitionUrl']",
3922 "default.htm?turl=WordDocuments%2Fdocumenttype.htm");
3923 blanketApproveTest();
3924 assertDocFinal(docId);
3925 }
3926
3927 protected void uncheck(By by) throws InterruptedException {
3928 WebElement element = findElement(by);
3929 if (element.isSelected()) {
3930 element.click();
3931 }
3932 }
3933
3934 protected void uncheckByName(String name) throws InterruptedException {
3935 uncheck(By.name(name));
3936 }
3937
3938 protected void uncheckByXpath(String locator) throws InterruptedException {
3939 uncheck(By.xpath(locator));
3940 }
3941
3942 protected boolean validateErrorImage(boolean validateVisible) throws Exception {
3943 Thread.sleep(500);
3944 boolean valid = false;
3945
3946 for (int second = 0; second < 5; second++) {
3947 if ((valid = validateErrorImage(validateVisible, second, ARIA_INVALID_XPATH)) == true) {
3948 break;
3949 }
3950 }
3951
3952 if (validateVisible) {
3953 SeleneseTestBase.assertTrue("valid = " + valid + " when validateVisible is " + validateVisible, valid);
3954 } else {
3955 SeleneseTestBase.assertFalse("valid = " + valid + " when validateVisible is " + validateVisible, valid);
3956 }
3957
3958 return valid;
3959 }
3960
3961 private boolean validateErrorImage(boolean validateVisible, int second, String xpath) throws InterruptedException {
3962 try {
3963 if (validateVisible) {
3964 if (isElementPresentByXpath(xpath) && isVisibleByXpath(xpath)) {
3965 return true;
3966 }
3967 } else {
3968 if (!isElementPresentByXpath(xpath) || !isVisibleByXpath(xpath)) {
3969 return true;
3970 }
3971 }
3972 } catch (Exception e) {
3973
3974 }
3975 Thread.sleep(1000);
3976 return false;
3977 }
3978
3979 protected void verifyRichMessagesValidationBasicFunctionality() throws Exception
3980 {
3981 SeleneseTestBase.assertTrue(isElementPresentByXpath("//input[@type='text' and @name='field1']"));
3982 SeleneseTestBase.assertTrue(isElementPresentByXpath("//a[contains(text(), 'Kuali')]"));
3983 SeleneseTestBase.assertTrue(isElementPresentByXpath("//input[@type='checkbox' and @name='field2']"));
3984 Thread.sleep(3000);
3985 }
3986
3987 protected void verifyRichMessagesValidationAdvancedFunctionality() throws Exception
3988 {
3989
3990 SeleneseTestBase.assertTrue(isElementPresentByXpath("//span[@style='color: green;']"));
3991 SeleneseTestBase.assertTrue(isElementPresentByXpath("//span[@style='color: blue;']"));
3992
3993
3994 SeleneseTestBase.assertTrue(isElementPresentByXpath("//span[@class='fl-text-underline fl-text-larger']"));
3995
3996
3997 SeleneseTestBase.assertTrue(isElementPresentByXpath("//input[@type='text' and @name='field3']"));
3998 SeleneseTestBase.assertTrue(isElementPresentByXpath("//select[@name='field4']"));
3999 SeleneseTestBase.assertTrue(isElementPresentByXpath("//button[contains(text(), 'Action Button')]"));
4000
4001
4002 SeleneseTestBase.assertTrue(isElementPresentByXpath("//label[contains(., 'Label With')]/span[contains(., 'Color')]"));
4003 SeleneseTestBase.assertTrue(isElementPresentByXpath("//label[contains(., 'Label With')]/i/b[contains(., 'Html')]"));
4004 SeleneseTestBase.assertTrue(isElementPresentByXpath("//label[contains(., 'Label With')]/img[@class='uif-image inlineBlock']"));
4005 Thread.sleep(3000);
4006 }
4007
4008 protected void verifyRichMessagesValidationLettersNumbersValidation() throws Exception
4009 {
4010
4011 SeleneseTestBase.assertTrue(isElementPresentByXpath("//input[@type='text' and @name='field5']"));
4012 waitAndTypeByXpath(
4013 "//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock']/input[@name= 'field5']",
4014 "abc");
4015 SeleneseTestBase.assertFalse(isElementPresentByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock uif-hasError']"));
4016 clearTextByXpath(
4017 "//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock']/input[@name= 'field5']");
4018 waitAndTypeByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock']/input[@name= 'field5']","abc12");
4019 waitAndTypeByXpath("//input[@name= 'field6']", "");
4020 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock uif-hasError']"));
4021 Thread.sleep(3000);
4022 clearTextByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock uif-hasError']/input[@name= 'field5']");
4023 waitAndTypeByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock uif-hasError']/input[@name= 'field5']","abc");
4024 waitAndTypeByXpath("//input[@name= 'field6']", "");
4025
4026
4027 waitAndTypeByXpath("//input[@name= 'field6']", "123");
4028 SeleneseTestBase.assertFalse(isElementPresentByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock uif-hasError']"));
4029 clearTextByXpath("//input[@name= 'field6']");
4030 waitAndTypeByXpath("//input[@name= 'field6']", "123ab");
4031 fireEvent("field6", "blur");
4032 Thread.sleep(5000);
4033 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@class='uif-field uif-inputField uif-inputField-labelTop inlineBlock uif-hasError']"));
4034 Thread.sleep(3000);
4035 }
4036
4037 protected void verifyRichMessagesValidationRadioAndCheckBoxGroupFunctionality() throws Exception
4038 {
4039
4040 SeleneseTestBase.assertTrue(isElementPresentByXpath("//fieldset[@class='uif-verticalRadioFieldset']/span/input[@type='radio' and @name='field24' and @value='1']"));
4041 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4042 "//fieldset[@class='uif-verticalRadioFieldset']/span/input[@type='radio' and @name='field24' and @value='2']"));
4043 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4044 "//fieldset[@class='uif-verticalRadioFieldset']/span/input[@type='radio' and @name='field24' and @value='3']"));
4045 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4046 "//fieldset[@class='uif-verticalRadioFieldset']/span/input[@type='radio' and @name='field24' and @value='4']"));
4047
4048
4049 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4050 "//fieldset[@class='uif-verticalCheckboxesFieldset']/span/input[@type='checkbox' and @name='field115' and @value='1']"));
4051 SeleneseTestBase.assertTrue(isElementPresentByXpath("//fieldset[@class='uif-verticalCheckboxesFieldset']/span/input[@type='checkbox' and @name='field115' and @value='2']"));
4052 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4053 "//fieldset[@class='uif-verticalCheckboxesFieldset']/span/input[@type='checkbox' and @name='field115' and @value='3']"));
4054 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4055 "//fieldset[@class='uif-verticalCheckboxesFieldset']/span/label/div/select[@name='field4']"));
4056
4057
4058 SeleneseTestBase.assertTrue(isElementPresentByXpath("//input[@type='checkbox' and @name='bField1']"));
4059 SeleneseTestBase.assertTrue(isElementPresentByXpath("//input[@type='text' and @name='field103']"));
4060 }
4061
4062 protected void verifyRichMessagesValidationLinkDeclarationsFunctionality() throws Exception
4063 {
4064
4065 waitAndClickByXpath("//div[contains(., 'Testing link tag')]/a");
4066 Thread.sleep(9000);
4067 switchToWindow("Open Source Software | www.kuali.org");
4068 switchToWindow(RICH_MESSAGES_WINDOW_TITLE);
4069
4070
4071 waitAndClickByXpath("//div[contains(., 'Testing methodToCall action')]/a");
4072 Thread.sleep(3000);
4073 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4074 "//div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages uif-pageValidationMessages-error']"));
4075 SeleneseTestBase.assertTrue(isElementPresentByXpath(
4076 "//div[@id='Demo-AdvancedMessagesSection']/div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages-error']"));
4077 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@id='Demo-RadioCheckboxMessageSection']/div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages-error']"));
4078
4079
4080 waitAndClickByXpath("//div[contains(., 'Testing methodToCall action (no client validation check)')]/a");
4081 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages uif-pageValidationMessages-error']"));
4082 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@class='uif-validationMessages uif-groupValidationMessages']"));
4083 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages uif-pageValidationMessages-error']"));
4084 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@id='Demo-AdvancedMessagesSection']/div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages-error']"));
4085 SeleneseTestBase.assertTrue(isElementPresentByXpath("//div[@id='Demo-RadioCheckboxMessageSection']/div[@class='uif-validationMessages uif-groupValidationMessages uif-pageValidationMessages-error']"));
4086 Thread.sleep(3000);
4087 }
4088
4089
4090
4091
4092
4093
4094 protected void waitAndClickAdministration(Failable failable) throws InterruptedException {
4095 waitAndClickByLinkText(ADMINISTRATION_LINK_TEXT, failable);
4096 }
4097
4098 protected void waitAndCancelConfirmation() throws InterruptedException {
4099 waitAndClickCancel();
4100 checkForIncidentReport("methodToCall.processAnswer.button0");
4101 waitAndClickByName("methodToCall.processAnswer.button0");
4102 }
4103
4104 protected void waitAndClick(By by) throws InterruptedException {
4105 jiraAwareWaitAndClick(by, "");
4106 }
4107
4108 protected void waitAndClick(By by, Failable failable) throws InterruptedException {
4109 jiraAwareWaitAndClick(by, "", failable);
4110 }
4111
4112 protected void waitAndClick(String locator, String message) throws InterruptedException {
4113 jiraAwareWaitAndClick(By.cssSelector(locator), message);
4114 }
4115
4116 protected void waitAndClickById(String id) throws InterruptedException {
4117 jiraAwareWaitAndClick(By.id(id), "");
4118 }
4119 protected void waitAndClickById(String id, String message) throws InterruptedException {
4120 jiraAwareWaitAndClick(By.id(id), message);
4121 }
4122
4123 protected void waitAndClickByLinkText(String text) throws InterruptedException {
4124 jiraAwareWaitAndClick(By.linkText(text), "");
4125 }
4126
4127 protected void waitAndClickByLinkText(String text, String message) throws InterruptedException {
4128 jiraAwareWaitAndClick(By.linkText(text), message);
4129 }
4130
4131 protected void waitAndClickByLinkText(String text, Failable failable) throws InterruptedException {
4132 jiraAwareWaitAndClick(By.linkText(text), "", failable);
4133 }
4134
4135 protected void waitAndClickByLinkText(String text, String message, Failable failable) throws InterruptedException {
4136 jiraAwareWaitAndClick(By.linkText(text), message, failable);
4137 }
4138
4139 protected void waitAndClickByName(String name) throws InterruptedException {
4140 jiraAwareWaitAndClick(By.name(name), "");
4141 }
4142
4143 protected void waitAndClickByXpath(String xpath) throws InterruptedException {
4144 waitAndClick(By.xpath(xpath));
4145 }
4146
4147 protected void waitAndClickByXpath(String xpath, Failable failable) throws InterruptedException {
4148 waitAndClick(By.xpath(xpath), failable);
4149 }
4150
4151 protected void waitAndClickByName(String name, String message) throws InterruptedException {
4152 jiraAwareWaitAndClick(By.name(name), message);
4153 }
4154
4155 protected void waitAndClickByXpath(String xpath, String message) throws InterruptedException {
4156 jiraAwareWaitAndClick(By.xpath(xpath), message);
4157 }
4158
4159 protected void waitAndClickButtonByText(String buttonText) throws InterruptedException {
4160 waitAndClickButtonByText(buttonText, "");
4161 }
4162
4163 protected void waitAndClickButtonByText(String buttonText, String message) throws InterruptedException {
4164 waitAndClickByXpath("//button[contains(text(), '" + buttonText + "')]", message);
4165 }
4166
4167
4168
4169
4170
4171 protected void waitAndClickCancel() throws InterruptedException {
4172 waitAndClickByName(CANCEL_NAME);
4173 }
4174
4175
4176
4177
4178
4179 protected void waitAndClickCloseWindow() throws InterruptedException {
4180 waitAndClickByXpath(CLOSE_WINDOW_XPATH_TITLE);
4181 }
4182
4183
4184
4185
4186
4187 protected void waitAndClickCopy() throws InterruptedException {
4188 waitAndClickByLinkText(COPY_LINK_TEXT);
4189 }
4190
4191
4192
4193
4194
4195 protected void waitAndClickDocSearch() throws InterruptedException {
4196 waitAndClickByXpath(DOC_SEARCH_XPATH);
4197 }
4198
4199
4200
4201
4202
4203 protected void waitAndClickDocSearchTitle() throws InterruptedException {
4204 waitAndClickByXpath(DOC_SEARCH_XPATH_TITLE);
4205 }
4206
4207
4208
4209
4210
4211 protected void waitAndClickLogout() throws InterruptedException {
4212 waitAndClickLogout(this);
4213 }
4214
4215
4216
4217
4218
4219
4220 protected void waitAndClickLogout(Failable failable) throws InterruptedException {
4221 selectTopFrame();
4222 waitAndClickByXpath(LOGOUT_XPATH, failable);
4223 }
4224
4225
4226
4227
4228
4229
4230 protected void waitAndClickMainMenu(Failable failable) throws InterruptedException {
4231 waitAndClickByLinkText(MAIN_MENU_LINK_TEXT, failable);
4232 }
4233
4234
4235
4236
4237
4238 protected void waitAndClickSave() throws InterruptedException {
4239 waitAndClickByXpath(SAVE_XPATH);
4240 }
4241
4242
4243
4244
4245
4246 private void waitAndClickSearch() throws InterruptedException {
4247 waitAndClickByXpath(SEARCH_XPATH);
4248 }
4249
4250
4251
4252
4253
4254 protected void waitAndClickSubmit() throws InterruptedException {
4255 waitAndClickByXpath(SUBMIT_XPATH);
4256 }
4257
4258
4259
4260
4261
4262
4263
4264 protected void waitAndClickXMLIngester(Failable failable) throws InterruptedException {
4265 waitAndClickByLinkText(XML_INGESTER_LINK_TEXT, failable);
4266 }
4267
4268
4269 protected void waitAndSelectByName(String name, String selectText) throws InterruptedException {
4270 waitFor(By.name(name), selectText + " not found.");
4271 select(By.name(name), selectText);
4272 }
4273
4274 protected void waitAndType(By by, String text) throws InterruptedException {
4275 waitAndType(by, text, "");
4276 }
4277
4278 protected void waitAndType(By by, String text, String message) throws InterruptedException {
4279 try {
4280 jiraAwareWaitFor(by, "");
4281 WebElement element = findElement(by);
4282 WebDriverUtil.highlightElement(driver, element);
4283 element.sendKeys(text);
4284 } catch (Exception e) {
4285 JiraAwareFailureUtil.failOnMatchedJira(by.toString(), this);
4286 failableFail(e.getMessage() + " " + by.toString() + " unable to type text '" + text + "' " + message
4287 + " current url " + driver.getCurrentUrl()
4288 + "\n" + ITUtil.deLinespace(driver.getPageSource()));
4289 }
4290 }
4291
4292 protected void waitAndType(String selector, String text) throws InterruptedException {
4293 waitAndType(By.cssSelector(selector), text);
4294 }
4295
4296 protected void waitAndTypeById(String id, String text) throws InterruptedException {
4297 waitAndType(By.id(id), text);
4298 }
4299
4300 protected void waitAndTypeByXpath(String locator, String text) throws InterruptedException {
4301 waitAndType(By.xpath(locator), text);
4302 }
4303
4304 protected void waitAndTypeByXpath(String locator, String text, String message) throws InterruptedException {
4305 waitAndType(By.xpath(locator), text, message);
4306 }
4307
4308 protected void waitAndTypeByName(String name, String text) throws InterruptedException {
4309 waitAndType(By.name(name), text);
4310 }
4311
4312 protected void waitAndCreateNew() throws InterruptedException {
4313 checkForIncidentReport();
4314 selectFrameIframePortlet();
4315 try {
4316 jGrowl("Create New");
4317 waitAndClickCreateNew();
4318 } catch (Exception e) {
4319 System.out.println("waitAndClickByXpath(\"//img[@alt='create new']\") failed trying title method with " + e.getMessage());
4320 waitAndClickByXpath("//a[@title='Create a new record']");
4321 }
4322 }
4323
4324
4325
4326
4327
4328 protected void waitAndClickCreateNew() throws InterruptedException {
4329 waitAndClickByXpath(CREATE_NEW_XPATH);
4330 }
4331
4332 protected void waitAndClickEdit() throws InterruptedException {
4333 waitAndClickByLinkText(EDIT_LINK_TEXT);
4334 }
4335
4336 protected void waitAndClickReturnValue() throws InterruptedException {
4337 waitAndClickByLinkText(RETURN_VALUE_LINK_TEXT);
4338 }
4339
4340 protected void waitAndClickSearch2() throws InterruptedException {
4341 waitAndClickByXpath(SEARCH_XPATH_2);
4342 }
4343
4344 protected void waitAndClickSearch3() throws InterruptedException {
4345 waitAndClickByXpath(SEARCH_XPATH_3);
4346 }
4347
4348 protected String waitForDocId() throws InterruptedException {
4349 checkForDocError();
4350 waitForElementPresentByXpath(DOC_ID_XPATH);
4351
4352 return findElement(By.xpath(DOC_ID_XPATH)).getText();
4353 }
4354
4355 protected WebElement waitForElementPresent(By by) throws InterruptedException {
4356 return jiraAwareWaitFor(by, "");
4357 }
4358
4359 protected WebElement waitForElementPresent(By by, String message) throws InterruptedException {
4360 return jiraAwareWaitFor(by, message);
4361 }
4362
4363 protected WebElement waitForElementPresent(String locator) throws InterruptedException {
4364 return jiraAwareWaitFor(By.cssSelector(locator), "");
4365 }
4366
4367 protected WebElement waitForElementPresentByClassName(String name) throws InterruptedException {
4368 return jiraAwareWaitFor(By.className(name), "");
4369 }
4370
4371 protected WebElement waitForElementPresentByClassName(String name, String message) throws InterruptedException {
4372 return jiraAwareWaitFor(By.className(name), message);
4373 }
4374
4375 protected void waitForElementsPresentByClassName(String name, String message) throws InterruptedException {
4376 jiraAwareWaitFors(By.className(name), message);
4377 }
4378
4379 protected WebElement waitForElementPresentById(String id) throws InterruptedException {
4380 return jiraAwareWaitFor(By.id(id), "");
4381 }
4382
4383 protected void waitForElementPresentById(String id, String message) throws InterruptedException {
4384 jiraAwareWaitFor(By.id(id), message);
4385 }
4386
4387 protected void waitForElementsPresentById(String id, String message) throws InterruptedException {
4388 jiraAwareWaitFors(By.id(id), message);
4389 }
4390
4391 protected WebElement waitForElementPresentByName(String name) throws InterruptedException {
4392 return jiraAwareWaitFor(By.name(name), "");
4393 }
4394
4395 protected WebElement waitForElementPresentByXpath(String xpath) throws InterruptedException {
4396 return jiraAwareWaitFor(By.xpath(xpath), "");
4397 }
4398
4399 protected WebElement waitForElementPresentByXpath(String xpath, String message) throws InterruptedException {
4400 return jiraAwareWaitFor(By.xpath(xpath), message);
4401 }
4402
4403 protected void waitForElementsPresentByXpath(String xpathLocator) throws InterruptedException {
4404 jiraAwareWaitFors(By.xpath(xpathLocator), "");
4405 }
4406
4407 protected void waitForTitleToEqualKualiPortalIndex() throws InterruptedException {
4408 waitForTitleToEqualKualiPortalIndex("");
4409 }
4410
4411 protected void waitIsVisible(By by) throws InterruptedException {
4412 driver.manage().timeouts().implicitlyWait(waitSeconds, TimeUnit.SECONDS);
4413 isVisible(by);
4414 driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425 }
4426
4427 protected void waitIsVisible(By by, String message) throws InterruptedException {
4428 for (int second = 0;; second++) {
4429 if (second >= waitSeconds) {
4430 failableFail(TIMEOUT_MESSAGE + " " + by.toString() + " " + message);
4431 }
4432 if (isVisible(by)) {
4433 break;
4434 }
4435 Thread.sleep(1000);
4436 }
4437 }
4438
4439 protected boolean waitAreAnyVisible(By[] bys) throws InterruptedException {
4440 if (bys == null || bys.length == 0 ) {
4441 return false;
4442 }
4443
4444 for (int second = 0; second < waitSeconds; second++) {
4445
4446 if (isVisible(bys)) {
4447 return true;
4448 }
4449
4450 Thread.sleep(1000);
4451 }
4452
4453 return false;
4454 }
4455
4456 protected boolean isVisible(By[] bys) {
4457 if (bys == null || bys.length == 0 ) {
4458 return false;
4459 }
4460
4461 for (int i = 0, s = bys.length; i < s; i++) {
4462
4463 try {
4464
4465 if (isVisible(bys[i])) {
4466 return true;
4467 }
4468
4469 } catch (NoSuchElementException nsee) {
4470
4471 }
4472
4473 }
4474
4475 return false;
4476 }
4477
4478
4479
4480
4481
4482
4483
4484 protected void waitForElementVisible(String elementLocator, String message) throws InterruptedException {
4485 waitForElementVisibleBy(By.cssSelector(elementLocator), message);
4486 }
4487
4488 protected void waitForElementVisibleBy(By by, String message) throws InterruptedException {
4489 driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
4490
4491 boolean failed = false;
4492
4493 for (int second = 0;; second++) {
4494 if (second >= waitSeconds)
4495 failed = true;
4496 try {
4497 if (failed || (driver.findElements(by)).size() > 0)
4498 break;
4499 } catch (Exception e) {}
4500 Thread.sleep(1000);
4501 }
4502
4503 checkForIncidentReport(by.toString());
4504
4505 driver.manage().timeouts().implicitlyWait(DEFAULT_WAIT_SEC, TimeUnit.SECONDS);
4506
4507 if (failed) {
4508 failableFail("timeout of " + waitSeconds + " seconds waiting for " + by + " " + message + " " + driver.getCurrentUrl());
4509 }
4510 }
4511
4512 protected void waitForElementVisibleById(String id, String message) throws InterruptedException {
4513 waitForElementVisibleBy(By.id(id), message);
4514 }
4515
4516 protected void waitIsVisible(String locator) throws InterruptedException {
4517 waitIsVisible(By.cssSelector(locator));
4518 }
4519
4520 protected void waitIsVisibleByXpath(String locator) throws InterruptedException {
4521 waitIsVisible(By.xpath(locator));
4522 }
4523
4524 protected void waitIsVisibleByXpath(String locator, String message) throws InterruptedException {
4525 waitIsVisible(By.xpath(locator), message);
4526 }
4527
4528 protected void waitForTitleToEqualKualiPortalIndex(String message) throws InterruptedException {
4529 Thread.sleep(2000);
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541 }
4542
4543 protected void waitAndClick(String locator) throws InterruptedException {
4544 waitAndClick(locator, "");
4545 }
4546
4547 protected void waitForPageToLoad() throws InterruptedException {
4548 Thread.sleep(5000);
4549 }
4550
4551 protected WebElement waitFor(By by) throws InterruptedException {
4552 return jiraAwareWaitFor(by, "");
4553 }
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564 protected void waitFor(By by, String message) throws InterruptedException {
4565 WebDriverUtil.waitFor(this.driver, this.waitSeconds, by, message);
4566 }
4567
4568
4569
4570
4571
4572 protected void waitAndClickKRAD() throws InterruptedException {
4573 waitAndClickByLinkText(KRAD_XPATH);
4574 }
4575
4576 protected void waitNotVisible(By by) throws InterruptedException {
4577 for (int second = 0;; second++) {
4578 if (second >= waitSeconds) {
4579 failableFail(TIMEOUT_MESSAGE);
4580 }
4581 if (!isVisible(by)) {
4582 break;
4583 }
4584 Thread.sleep(1000);
4585 }
4586 }
4587
4588 protected void waitNotVisibleByXpath(String locator) throws InterruptedException {
4589 waitNotVisible(By.xpath(locator));
4590 }
4591
4592
4593
4594
4595
4596
4597 protected boolean isKrad(){
4598 return (ITUtil.REMOTE_UIF_KRAD.equalsIgnoreCase(getUiFramework()));
4599 }
4600
4601 protected WebElement getElementByDataAttributeValue(String dataAttributeName, String value){
4602 return findElement(By.cssSelector("[data-" + dataAttributeName + "='" + value +"']"));
4603 }
4604
4605 protected WebElement getElementByDataAttribute(String dataAttributeName){
4606 return findElement(By.cssSelector("[data-" + dataAttributeName + "]"));
4607 }
4608
4609 protected WebElement getElementByAttributeValue(String attributeName, String value){
4610 return findElement(By.cssSelector("[" + attributeName + "='" + value +"']"));
4611 }
4612
4613 protected WebElement getElementByAttribute(String attributeName){
4614 return findElement(By.cssSelector("[" + attributeName + "]"));
4615 }
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626 protected String getForLabelText(String forElementId) {
4627 return findElement(By.cssSelector("label[for=" + forElementId + "]")).getText();
4628 }
4629
4630
4631
4632
4633
4634
4635 public String getUiFramework() {
4636 return uiFramework;
4637 }
4638
4639
4640
4641
4642 public void setUiFramework(String uiFramework) {
4643 this.uiFramework = uiFramework;
4644 }
4645 }