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.Ignore;
12 import org.junit.Test;
13 import org.openqa.selenium.By;
14 import org.openqa.selenium.WebDriverException;
15
16 import static com.atlassian.pageobjects.elements.DataAttributeFinder.query;
17 import static com.atlassian.pageobjects.elements.query.Poller.waitUntilTrue;
18 import static org.junit.Assert.fail;
19
20
21
22
23
24
25 @IgnoreBrowser(Browser.HTMLUNIT_NOJS)
26 public class TestPageElementJavaScriptEvents extends AbstractPageElementBrowserTest
27 {
28
29 private PageElementFinder elementFinder;
30
31 @Before
32 public void init()
33 {
34 product.visit(EventsPage.class);
35 elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
36 }
37
38
39 @Test
40 public void testMouseEvents()
41 {
42 final PageElement mouseEventListener = elementFinder.find(By.id("mouse-event-listener"));
43 mouseEventListener.javascript().mouse().click();
44 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "click"));
45 mouseEventListener.javascript().mouse().doubleClick();
46 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "dblclick"));
47 mouseEventListener.javascript().mouse().mousedown();
48 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mousedown"));
49 mouseEventListener.javascript().mouse().mouseup();
50 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseup"));
51 mouseEventListener.javascript().mouse().mouseover();
52 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseover"));
53 mouseEventListener.javascript().mouse().mousemove();
54 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mousemove"));
55 mouseEventListener.javascript().mouse().mouseout();
56 waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseout"));
57 }
58
59 @Test
60 @IgnoreBrowser(value = {Browser.HTMLUNIT}, reason = "SELENIUM-167 :focus selector not supported in HTML Unit")
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 @Ignore("This seems to be working in IE")
78 @RequireBrowser(Browser.IE)
79 public void testFormEventsNotWorkingInIe()
80 {
81 testFormEvents();
82 fail("JS select form event now works in IE");
83 }
84
85 }