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
21
22
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 }