View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   import com.atlassian.pageobjects.browser.Browser;
4   import com.atlassian.pageobjects.browser.IgnoreBrowser;
5   import com.atlassian.pageobjects.browser.RequireBrowser;
6   import com.atlassian.pageobjects.elements.GlobalElementFinder;
7   import com.atlassian.pageobjects.elements.PageElement;
8   import com.atlassian.pageobjects.elements.PageElementFinder;
9   import com.atlassian.pageobjects.elements.test.pageobjects.page.EventsPage;
10  import org.junit.Before;
11  import org.junit.Test;
12  import org.openqa.selenium.By;
13  import org.openqa.selenium.WebDriverException;
14  
15  import static com.atlassian.pageobjects.elements.DataAttributeFinder.query;
16  import static com.atlassian.pageobjects.elements.query.Poller.waitUntilTrue;
17  import static org.junit.Assert.fail;
18  
19  /**
20   * Test {@link com.atlassian.pageobjects.elements.PageElementJavascript} events API.
21   *
22   * @since 2.1
23   */
24  @IgnoreBrowser(Browser.HTMLUNIT_NOJS)
25  public class TestPageElementJavaScriptEvents extends AbstractPageElementBrowserTest
26  {
27  
28      private PageElementFinder elementFinder;
29  
30      @Before
31      public void init()
32      {
33          product.visit(EventsPage.class);
34          elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
35      }
36  
37  
38      @Test
39      public void testMouseEvents()
40      {
41          final PageElement mouseEventListener = elementFinder.find(By.id("mouse-event-listener"));
42          mouseEventListener.javascript().mouse().click();
43          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "click"));
44          mouseEventListener.javascript().mouse().doubleClick();
45          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "dblclick"));
46          mouseEventListener.javascript().mouse().mousedown();
47          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mousedown"));
48          mouseEventListener.javascript().mouse().mouseup();
49          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseup"));
50          mouseEventListener.javascript().mouse().mouseover();
51          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseover"));
52          mouseEventListener.javascript().mouse().mousemove();
53          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mousemove"));
54          mouseEventListener.javascript().mouse().mouseout();
55          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseout"));
56      }
57  
58      @Test
59      @IgnoreBrowser(value = {Browser.HTMLUNIT, Browser.IE},
60              reason = "SELENIUM-167 :focus selector not supported in HTML Unit, IE doesn't work on elastic agents (works locally)")
61      public void testFormEvents()
62      {
63          final PageElement formEventListener = elementFinder.find(By.id("form-event-listener"));
64          formEventListener.javascript().form().select();
65          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "select"));
66          formEventListener.javascript().form().focus();
67          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "focus"));
68          formEventListener.javascript().form().blur();
69          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "blur"));
70          formEventListener.javascript().form().change();
71          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "change"));
72          formEventListener.javascript().form().submit();
73          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "submit"));
74      }
75  
76      @Test(expected = WebDriverException.class)
77      @RequireBrowser(Browser.IE)
78      public void testFormEventsNotWorkingInIe()
79      {
80          final PageElement formEventListener = elementFinder.find(By.id("form-event-listener"));
81          formEventListener.javascript().form().select();
82          fail("JS select form event now works in IE");
83      }
84  
85  }