You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MenuBarDownloadBrowserOpenerUITest.java 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.vaadin.tests.components;
  2. import java.util.List;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. import org.openqa.selenium.Alert;
  6. import org.openqa.selenium.By;
  7. import org.openqa.selenium.WebDriver;
  8. import org.openqa.selenium.WebDriverException;
  9. import org.openqa.selenium.WebElement;
  10. import org.openqa.selenium.remote.DesiredCapabilities;
  11. import org.openqa.selenium.support.ui.ExpectedCondition;
  12. import com.vaadin.testbench.elements.MenuBarElement;
  13. import com.vaadin.testbench.parallel.Browser;
  14. import com.vaadin.tests.tb3.MultiBrowserTest;
  15. public class MenuBarDownloadBrowserOpenerUITest extends MultiBrowserTest {
  16. @Override
  17. public List<DesiredCapabilities> getBrowsersToTest() {
  18. // alerts do not work properly on PhantomJS
  19. return getBrowserCapabilities(Browser.CHROME);
  20. }
  21. @Test
  22. public void testTriggerExtension() {
  23. openTestURL();
  24. MenuBarElement menu = $(MenuBarElement.class).first();
  25. clickItem(menu, "TestExtension", "RunMe");
  26. checkAndCloseAlert();
  27. clickItem(menu, "TestExtension", "AddTrigger");
  28. clickItem(menu, "TestExtension", "RunMe");
  29. checkAndCloseAlert();
  30. checkAndCloseAlert();
  31. sleep(500);
  32. clickItem(menu, "TestExtension", "RemoveTrigger");
  33. clickItem(menu, "TestExtension", "RunMe");
  34. checkAndCloseAlert();
  35. }
  36. private void clickItem(MenuBarElement menu, String... captions) {
  37. // click each given menu item in turn
  38. for (String caption : captions) {
  39. // wait for the menu item to become available
  40. waitUntil(new ExpectedCondition<Boolean>() {
  41. @Override
  42. public Boolean apply(WebDriver arg0) {
  43. List<WebElement> captionElements = findElements(
  44. By.className("v-menubar-menuitem-caption"));
  45. for (WebElement captionElement : captionElements) {
  46. try {
  47. if (captionElement.getText().equals(caption)) {
  48. return true;
  49. }
  50. } catch (WebDriverException e) {
  51. // stale, detached element is not visible
  52. }
  53. }
  54. return false;
  55. }
  56. @Override
  57. public String toString() {
  58. // Expected condition failed: waiting for ...
  59. return caption + " to be available";
  60. }
  61. });
  62. // menu item was found, click it
  63. menu.clickItem(caption);
  64. }
  65. }
  66. private void checkAndCloseAlert() {
  67. Alert alert = getDriver().switchTo().alert();
  68. Assert.assertEquals("Trigger", alert.getText());
  69. alert.dismiss();
  70. }
  71. }