View Javadoc
1   /**
2    * Copyright 2005-2014 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.testtools.selenium.breadcrumb;
17  
18  import org.junit.Test;
19  import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
20  import org.openqa.selenium.By;
21  
22  import java.util.Arrays;
23  import java.util.Collections;
24  
25  /**
26   * @author Kuali Rice Team (rice.collab@kuali.org)
27   */
28  public abstract class BreadcrumbAftBase extends WebDriverLegacyITBase {
29  
30      /**
31       * //div[@class='uif-breadcrumbSiblingContent']//div[@class='uif-inputField']//ul[@class='uif-optionList']
32       */
33      public static final String SECOND_BREADCRUMB_NAV_XPATH = "//div[@class='uif-breadcrumbSiblingContent']//div[@class='uif-inputField']//ul[@class='uif-optionList']";
34  
35      /**
36       * (//a[@class='uif-breadcrumbSiblingLink'])[2]
37       * Not final as it needs to be overwritten for the Demo Breadcrumbs smoke test
38       */
39      public static final String SECOND_DOWN_TRIANGLE_XPATH = "(//a[@class='uif-breadcrumbSiblingLink'])[2]";
40  
41      String[][] selectAsserts = {{"UifCompView", "Uif Components"}};
42  
43      int[] breadcrumbOrderIndexes = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1};
44  
45      protected String getTriangleXpath() {
46          return SECOND_DOWN_TRIANGLE_XPATH;
47      }
48  
49      protected void testBreadcrumb(int pageNumber) throws Exception {
50          // <ul id="u13_control" class="uif-optionList" data-control_for="u13" tabindex="0"><li class="uif-optionList-item uif-optionList-selectedItem"><a href="http://env1.rice.kuali.org/kr-krad/uicomponents?methodToCall=start&pageId=UifCompView-Page1&viewId=UifCompView" data-key="UifCompView-Page1">
51          //         Input Fields and Controls
52          // </a></li>
53          // <li class="uif-optionList-item"><a href="http://env1.rice.kuali.org/kr-krad/uicomponents?methodToCall=start&pageId=UifCompView-Page2&viewId=UifCompView" data-key="UifCompView-Page2">
54          //         Other Fields
55          // </a></li>
56          // etc.
57          jiraAwareWaitFor(By.xpath(SECOND_BREADCRUMB_NAV_XPATH));
58          assertFalse(isVisibleByXpath(SECOND_BREADCRUMB_NAV_XPATH));
59          // The second ▼
60          waitAndClickByXpath(getTriangleXpath(), "failed on breadcrumb pageNumber " + pageNumber);
61          Thread.sleep(100);
62          assertTrue(isVisibleByXpath(SECOND_BREADCRUMB_NAV_XPATH));
63          waitAndClickByXpath(getTriangleXpath());
64          assertFalse(isVisibleByXpath(SECOND_BREADCRUMB_NAV_XPATH));
65          waitAndClickByXpath(getTriangleXpath());
66  
67          // The Second selection of the second ▼
68          // you can't just click by link text as the same clickable text is on the left navigation.
69          waitAndClickByXpath(SECOND_BREADCRUMB_NAV_XPATH +"/li[" + pageNumber + "]/a");
70          waitForElementPresentById("TopLink" + pageNumber, "Breadcrumb number " + pageNumber + " failure", 30); // bottom jump to top link
71          driver.getCurrentUrl().contains("pageId=UifCompView-Page" + pageNumber);
72      }
73  
74      protected void testBreadcrumbs() throws Exception {
75          for (int i = 0, s = breadcrumbOrderIndexes.length; i < s; i++) {
76              testBreadcrumb(breadcrumbOrderIndexes[i]);
77          }
78      }
79  
80      protected void testBreadcrumbsShuffled() throws Exception {
81          int[] copiedBreadcrumbOrderIndex = Arrays.copyOf(breadcrumbOrderIndexes, breadcrumbOrderIndexes.length);
82  
83          Collections.shuffle(Arrays.asList(copiedBreadcrumbOrderIndex));
84          for (int i = 0, s = copiedBreadcrumbOrderIndex.length; i < s; i++) {
85              jGrowl("Click on Bread crumb index number " + i);
86              testBreadcrumb(copiedBreadcrumbOrderIndex[i]);
87          }
88      }
89  
90      @Test
91      public void testBreadcrumbBookmark() throws Exception {
92          testBreadcrumbs();
93          passed();
94      }
95  
96      @Test
97      public void testBreadcrumbShuffledBookmark() throws Exception {
98          testBreadcrumbsShuffled();
99          passed();
100     }
101 
102     @Test
103     public void testBreadcrumbNav() throws Exception {
104         testBreadcrumbs();
105         passed();
106     }
107 
108     @Test
109     public void testBreadcrumbShuffledNav() throws Exception {
110         testBreadcrumbsShuffled();
111         passed();
112     }
113 }