PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/auiplugin-tests/src/test/java/it/com/atlassian/aui/javascript/integrationTests/AUIDropdown2Test.java

https://bitbucket.org/versionzero/aui
Java | 248 lines | 183 code | 54 blank | 11 comment | 5 complexity | 49b1186a68bc9da3a5d8dca338222520 MD5 | raw file
  1. package it.com.atlassian.aui.javascript.integrationTests;
  2. import com.atlassian.pageobjects.Browser;
  3. import com.atlassian.pageobjects.aui.component.ElementBounding;
  4. import com.atlassian.pageobjects.aui.component.dropdown2.AuiDropdown2;
  5. import com.atlassian.pageobjects.aui.component.dropdown2.AuiDropdown2Item;
  6. import com.atlassian.pageobjects.elements.PageElement;
  7. import com.atlassian.pageobjects.elements.PageElementFinder;
  8. import com.atlassian.pageobjects.elements.WebDriverElement;
  9. import com.atlassian.webdriver.testing.annotation.IgnoreBrowser;
  10. import it.com.atlassian.aui.javascript.AbstractAuiIntegrationTest;
  11. import it.com.atlassian.aui.javascript.pages.Dropdown2TestPage;
  12. import org.junit.Before;
  13. import org.junit.Ignore;
  14. import org.junit.Test;
  15. import org.openqa.selenium.By;
  16. import org.openqa.selenium.WebElement;
  17. import static org.junit.Assert.assertEquals;
  18. import static org.junit.Assert.assertFalse;
  19. import static org.junit.Assert.assertTrue;
  20. public class AUIDropdown2Test extends AbstractAuiIntegrationTest
  21. {
  22. private Dropdown2TestPage dropdown2TestPage;
  23. private PageElementFinder elementFinder;
  24. @Before
  25. public void setUp() {
  26. dropdown2TestPage = product.visit(Dropdown2TestPage.class);
  27. dropdown2TestPage.getCustomDropdownContainerElement().click();
  28. elementFinder = dropdown2TestPage.getElementFinder();
  29. }
  30. @Test
  31. public void testClickingTriggerOpensDropdown() {
  32. AuiDropdown2 dropdown = dropdown2TestPage.getStandardDropdown();
  33. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  34. dropdown.open();
  35. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  36. }
  37. @Test
  38. public void testDrodownCloses() {
  39. AuiDropdown2 dropdown = dropdown2TestPage.getStandardDropdown();
  40. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  41. dropdown.open();
  42. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  43. dropdown.close();
  44. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  45. }
  46. @Test
  47. public void testDrodownClosesWhenEscapeIsPressed() {
  48. AuiDropdown2 dropdown = dropdown2TestPage.getStandardDropdown();
  49. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  50. dropdown.open();
  51. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  52. dropdown.closeWithEscape();
  53. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  54. }
  55. @Test
  56. public void testDrodownMatchesWidth() {
  57. AuiDropdown2 dropdown = dropdown2TestPage.getStandardDropdown();
  58. dropdown.open();
  59. int triggerWidth = dropdown.getTriggerWidth();
  60. int dropdownWidth = dropdown.getDropdownWidth();
  61. assertEquals("Width of trigger and dropdown should match ", triggerWidth, dropdownWidth);
  62. }
  63. @Test
  64. public void testCustomDropdownClipsLongText()
  65. {
  66. AuiDropdown2 dropdown = dropdown2TestPage.getCustomDropdown();
  67. dropdown.open();
  68. AuiDropdown2Item dropdownItem = dropdown.getDropdownItems().get(1);
  69. assertTrue("The 2nd item of the custom dropdown should be clipped.", dropdownItem.isClipped());
  70. }
  71. @Test
  72. public void testDisabledDropdownToggles()
  73. {
  74. AuiDropdown2 dropdown = dropdown2TestPage.getDisabledToolbarDropdown();
  75. // should be disabled on load (as in, disabled via dom)
  76. assertTrue("The dropdown is expected to be disabled.", dropdown.isDisabled());
  77. dropdown.open(false);
  78. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  79. // check it can be enabled
  80. dropdown2TestPage.getDisableDropdownButton().click();
  81. assertFalse("The dropdown should not be disabled.", dropdown.isDisabled());
  82. dropdown.open();
  83. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  84. // check it can be disabled again
  85. dropdown2TestPage.getDisableDropdownButton().click();
  86. assertTrue("The dropdown is expected to be disabled.", dropdown.isDisabled());
  87. dropdown.open(false);
  88. assertFalse("The aui dropdown should not be open", dropdown.isOpen());
  89. }
  90. @Test
  91. @IgnoreBrowser(value= Browser.FIREFOX, reason="Firefox mysteriously failing on buildbox.")
  92. public void testIEAlignment()
  93. {
  94. AuiDropdown2 dropdown = dropdown2TestPage.getDropdownIEAlignmentTest();
  95. // open the dropdown
  96. dropdown.open();
  97. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  98. // test the dropdown alignment is 'right'
  99. assertTrue("The dropdown should be right-aligned.", dropdown.getAlignment().equals("right"));
  100. }
  101. @Test
  102. public void testCustomBoundaryElementControlsDropdownAlignment()
  103. {
  104. AuiDropdown2 dropdown = dropdown2TestPage.getCustomContainedDropdown();
  105. WebDriverElement dropdownContainer = (WebDriverElement) dropdown2TestPage.getCustomDropdownContainerElement();
  106. dropdown.open();
  107. ElementBounding dropdownBounding = dropdown.getDropdownBounding();
  108. ElementBounding containerBounding = new ElementBounding(dropdownContainer);
  109. assertTrue(containerBounding.contains(ElementBounding.BoundingPosition.RIGHT, dropdownBounding));
  110. }
  111. @Test
  112. public void testUnstyledDropdownIsUnstyled()
  113. {
  114. AuiDropdown2 dropdown = dropdown2TestPage.getUnstyledDropdown();
  115. dropdown.open();
  116. WebElement dropdownElement = product.getTester().getDriver().findElement(By.id("dropdown2-unstyled"));
  117. assertEquals("The dropdown should have a transparent/unset background.", "transparent", dropdownElement.getCssValue("background-color"));
  118. }
  119. @Test
  120. public void testDropdownFauxRadioButtons()
  121. {
  122. AuiDropdown2 dropdown = dropdown2TestPage.getFauxFormDropdown();
  123. dropdown.open();
  124. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  125. // AuiDropdown2Item dropdownCheck1 = dropdown.getDropdownItems().get(1);
  126. // AuiDropdown2Item dropdownCheck2 = dropdown.getDropdownItems().get(2);
  127. // AuiDropdown2Item dropdownCheck3 = dropdown.getDropdownItems().get(3);
  128. // assertTrue("Check 1 should be ticked.", dropdownCheck1.ariaChecked());
  129. // assertFalse("Check 2 should not be ticked.", dropdownCheck2.ariaChecked());
  130. // assertFalse("Check 3 should not be ticked.", dropdownCheck3.ariaChecked());
  131. WebElement dropdownRadio1 = product.getTester().getDriver().findElement(By.id("dropdown2-faux-forms-checkbox1"));
  132. WebElement dropdownRadio2 = product.getTester().getDriver().findElement(By.id("dropdown2-faux-forms-checkbox2"));
  133. WebElement dropdownRadio3 = product.getTester().getDriver().findElement(By.id("dropdown2-faux-forms-checkbox3"));
  134. assertEquals("Item 1 should be aria-checked=true.", "true", dropdownRadio1.getAttribute("aria-checked"));
  135. assertEquals("Item 2 should be aria-checked=false.", "false", dropdownRadio2.getAttribute("aria-checked"));
  136. assertEquals("Item 3 should be aria-checked=false.", "false", dropdownRadio3.getAttribute("aria-checked"));
  137. dropdownRadio2.click();
  138. assertTrue("The aui dropdown should still be open after radio button item has been clicked.", dropdown.isOpen());
  139. assertEquals("Item 1 should be aria-checked=false.", "false", dropdownRadio1.getAttribute("aria-checked"));
  140. assertEquals("Item 2 should be aria-checked=true.", "true", dropdownRadio2.getAttribute("aria-checked"));
  141. assertEquals("Item 3 should be aria-checked=false.", "false", dropdownRadio3.getAttribute("aria-checked"));
  142. }
  143. @Test
  144. public void testDropdownCustomHide()
  145. {
  146. PageElement dropdownTrigger = elementFinder.find(By.cssSelector("#dropdown2-custom-hide-trigger"));
  147. PageElement somethingToClick = elementFinder.find(By.id("dropdown2-hiding-test"));
  148. PageElement originalHidingPlace = elementFinder.find(By.cssSelector("#original-hiding-place"));
  149. PageElement hidemehere = elementFinder.find(By.cssSelector("#hidemehere"));
  150. assertTrue("There should be a custom hide dropdown in the original hiding place",
  151. originalHidingPlace.findAll(By.cssSelector("#dropdown2-custom-hide")).size() == 1);
  152. dropdownTrigger.click();
  153. somethingToClick.click();
  154. assertTrue("There should be a custom hide dropdown in hidemehere",
  155. hidemehere.findAll(By.cssSelector("#dropdown2-custom-hide")).size() == 1);
  156. assertTrue("There should be no custom hide dropdown in the original hiding place",
  157. originalHidingPlace.findAll(By.cssSelector("#dropdown2-custom-hide")).size() == 0);
  158. }
  159. @Test
  160. public void testDropdownDefaultHide()
  161. {
  162. PageElement dropdownTrigger = elementFinder.find(By.cssSelector("#dropdown2-default-hide-trigger"));
  163. PageElement somethingToClick = elementFinder.find(By.id("dropdown2-hiding-test"));
  164. PageElement originalHidingPlace = elementFinder.find(By.cssSelector("#original-hiding-place"));
  165. assertTrue("There should be a default hide dropdown in the original hiding place",
  166. originalHidingPlace.findAll(By.cssSelector("#dropdown2-default-hide")).size() == 1);
  167. dropdownTrigger.click();
  168. somethingToClick.click();
  169. assertTrue("There should be a default hide dropdown in the original hiding place",
  170. originalHidingPlace.findAll(By.cssSelector("#dropdown2-default-hide")).size() == 1);
  171. }
  172. @Test
  173. public void testDropdownFauxCheckboxes()
  174. {
  175. AuiDropdown2 dropdown = dropdown2TestPage.getFauxFormDropdown();
  176. dropdown.open();
  177. assertTrue("The aui dropdown should be open", dropdown.isOpen());
  178. WebElement dropdownCheck1 = product.getTester().getDriver().findElement(By.id("spellcheck"));
  179. assertEquals("Item 1 should be aria-checked=true.", "true", dropdownCheck1.getAttribute("aria-checked"));
  180. dropdownCheck1.click();
  181. assertTrue("The aui dropdown should still be open after checkbox has been clicked.", dropdown.isOpen());
  182. assertEquals("Item 1 should be aria-checked=false.", "false", dropdownCheck1.getAttribute("aria-checked"));
  183. }
  184. @Test
  185. @Ignore("ByJquery is currently not working for webelement context calls. Should be fixed in Webdriver 2.1.")
  186. public void testDropdownGroup()
  187. {
  188. AuiDropdown2 dropdown1 = dropdown2TestPage.getDropdownGroupTrigger1();
  189. assertTrue("The aui dropdown should be in a group", dropdown1.isInDropdownGroup());
  190. dropdown1.open();
  191. AuiDropdown2 dropdown2 = dropdown1.getNextDropdownInGroup();
  192. assertTrue("The second dropdown should be open after RIGHT ARROW keypress", dropdown2.isOpen());
  193. }
  194. }