Skip to content

Commit 1e06afe

Browse files
The refactoring of widget tests: Android widget tests were added
1 parent 282fd34 commit 1e06afe

File tree

7 files changed

+283
-6
lines changed

7 files changed

+283
-6
lines changed

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/AbstractStubWebDriver.java

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import io.appium.java_client.HasSessionDetails;
44
import org.openqa.selenium.By;
5+
import org.openqa.selenium.Cookie;
56
import org.openqa.selenium.WebDriver;
7+
import org.openqa.selenium.logging.Logs;
68
import org.openqa.selenium.remote.Response;
79

10+
import java.util.HashSet;
811
import java.util.List;
912
import java.util.Map;
1013
import java.util.Set;
14+
import java.util.concurrent.TimeUnit;
1115

1216
import static com.google.common.collect.ImmutableList.of;
1317
import static io.appium.java_client.remote.AutomationName.APPIUM;
@@ -101,7 +105,72 @@ public Navigation navigate() {
101105

102106
@Override
103107
public Options manage() {
104-
return null;
108+
return new Options() {
109+
@Override
110+
public void addCookie(Cookie cookie) {
111+
//does nothing
112+
}
113+
114+
@Override
115+
public void deleteCookieNamed(String name) {
116+
//does nothing
117+
}
118+
119+
@Override
120+
public void deleteCookie(Cookie cookie) {
121+
//does nothing
122+
}
123+
124+
@Override
125+
public void deleteAllCookies() {
126+
//does nothing
127+
}
128+
129+
@Override
130+
public Set<Cookie> getCookies() {
131+
return new HashSet<>();
132+
}
133+
134+
@Override
135+
public Cookie getCookieNamed(String name) {
136+
return new Cookie(name, EMPTY);
137+
}
138+
139+
@Override
140+
public Timeouts timeouts() {
141+
return new Timeouts() {
142+
@Override
143+
public Timeouts implicitlyWait(long time, TimeUnit unit) {
144+
return this;
145+
}
146+
147+
@Override
148+
public Timeouts setScriptTimeout(long time, TimeUnit unit) {
149+
return this;
150+
}
151+
152+
@Override
153+
public Timeouts pageLoadTimeout(long time, TimeUnit unit) {
154+
return this;
155+
}
156+
};
157+
}
158+
159+
@Override
160+
public ImeHandler ime() {
161+
return null;
162+
}
163+
164+
@Override
165+
public Window window() {
166+
return null;
167+
}
168+
169+
@Override
170+
public Logs logs() {
171+
return null;
172+
}
173+
};
105174
}
106175

107176
public static class StubAndroidDriver extends AbstractStubWebDriver {
Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,53 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests;
22

3-
public interface WidgetTest {
3+
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
4+
import org.junit.Test;
5+
import org.openqa.selenium.By;
6+
import org.openqa.selenium.WebDriver;
47

5-
void checkACommonWidget();
8+
import java.util.List;
69

7-
void checkAnAnnotatedWidget();
10+
import static java.util.stream.Collectors.toList;
11+
import static org.hamcrest.Matchers.contains;
12+
import static org.hamcrest.Matchers.containsString;
13+
import static org.junit.Assert.assertThat;
14+
import static org.openqa.selenium.support.PageFactory.initElements;
815

9-
void checkAnExtendedWidget();
16+
public abstract class WidgetTest {
1017

11-
void checkTheLocatorOverridingOnAWidget();
18+
protected final AbstractApp app;
19+
20+
protected WidgetTest(AbstractApp app, WebDriver driver) {
21+
this.app = app;
22+
initElements(new AppiumFieldDecorator(driver), app);
23+
}
24+
25+
@Test
26+
public abstract void checkACommonWidget();
27+
28+
@Test
29+
public abstract void checkAnAnnotatedWidget();
30+
31+
@Test
32+
public abstract void checkAnExtendedWidget();
33+
34+
@Test
35+
public abstract void checkTheLocatorOverridingOnAWidget();
36+
37+
protected static void defaultTest(AbstractWidget single, List<AbstractWidget> multiple, By rootLocator, By subLocator) {
38+
39+
assertThat(single.toString(), containsString(rootLocator.toString()));
40+
assertThat(multiple.stream().map(AbstractWidget::toString).collect(toList()),
41+
contains(containsString(rootLocator.toString()),
42+
containsString(rootLocator.toString())));
43+
44+
assertThat(single.getSubWidget().toString(), containsString(subLocator.toString()));
45+
assertThat(single.getSubWidgets().stream().map(Object::toString).collect(toList()),
46+
contains(containsString(subLocator.toString()),
47+
containsString(subLocator.toString())));
48+
49+
assertThat(multiple.stream().map(abstractWidget -> abstractWidget.getSubWidget().toString()).collect(toList()),
50+
contains(containsString(subLocator.toString()),
51+
containsString(subLocator.toString())));
52+
}
1253
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.android;
2+
3+
import io.appium.java_client.pagefactory.AndroidFindBy;
4+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
5+
6+
import java.util.List;
7+
8+
public class AndroidApp extends AbstractApp{
9+
10+
public static String ANDROID_DEFAULT_WIDGET_LOCATOR = "SOME_ANDROID_DEFAULT_LOCATOR";
11+
public static String ANDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR = "SOME_ANDROID_EXTERNALLY_DEFINED_LOCATOR";
12+
13+
@AndroidFindBy(uiAutomator = "SOME_ANDROID_DEFAULT_LOCATOR")
14+
private DefaultAndroidWidget singleAndroidWidget;
15+
16+
@AndroidFindBy(uiAutomator = "SOME_ANDROID_DEFAULT_LOCATOR")
17+
private List<DefaultAndroidWidget> multipleAndroidWidgets;
18+
19+
private AnnotatedAndroidWidget singleAnnotatedAndroidWidget;
20+
21+
private List<AnnotatedAndroidWidget> multipleAnnotatedAndroidWidgets;
22+
23+
private ExtendedAndroidWidget singleExtendedAndroidWidget;
24+
25+
private List<ExtendedAndroidWidget> multipleExtendedAndroidWidgets;
26+
27+
@AndroidFindBy(uiAutomator = "SOME_ANDROID_EXTERNALLY_DEFINED_LOCATOR")
28+
private ExtendedAndroidWidget singleOverriddenAndroidWidget;
29+
30+
@AndroidFindBy(uiAutomator = "SOME_ANDROID_EXTERNALLY_DEFINED_LOCATOR")
31+
private List<ExtendedAndroidWidget> multipleOverriddenAndroidWidgets;
32+
33+
@Override
34+
public DefaultAndroidWidget getWidget() {
35+
return singleAndroidWidget;
36+
}
37+
38+
@Override
39+
public List<DefaultAndroidWidget> getWidgets() {
40+
return multipleAndroidWidgets;
41+
}
42+
43+
@Override
44+
public DefaultAndroidWidget getAnnotatedWidget() {
45+
return singleAnnotatedAndroidWidget;
46+
}
47+
48+
@Override
49+
public List<AnnotatedAndroidWidget> getAnnotatedWidgets() {
50+
return multipleAnnotatedAndroidWidgets;
51+
}
52+
53+
@Override
54+
public DefaultAndroidWidget getExtendedWidget() {
55+
return singleExtendedAndroidWidget;
56+
}
57+
58+
@Override
59+
public List<ExtendedAndroidWidget> getExtendedWidgets() {
60+
return multipleExtendedAndroidWidgets;
61+
}
62+
63+
@Override
64+
public DefaultAndroidWidget getExtendedWidgetWithOverriddenLocators() {
65+
return singleOverriddenAndroidWidget;
66+
}
67+
68+
@Override
69+
public List<ExtendedAndroidWidget> getExtendedWidgetsWithOverriddenLocators() {
70+
return multipleOverriddenAndroidWidgets;
71+
}
72+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.android;
2+
3+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
4+
import io.appium.java_client.pagefactory_tests.widget.tests.WidgetTest;
5+
6+
import static io.appium.java_client.MobileBy.AndroidUIAutomator;
7+
import static io.appium.java_client.pagefactory_tests.widget.tests.android.AndroidApp.ANDROID_DEFAULT_WIDGET_LOCATOR;
8+
import static io.appium.java_client.pagefactory_tests.widget.tests.android.AndroidApp.ANDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR;
9+
import static io.appium.java_client.pagefactory_tests.widget.tests.android.AnnotatedAndroidWidget.ANDROID_ROOT_WIDGET_LOCATOR;
10+
import static io.appium.java_client.pagefactory_tests.widget.tests.android.DefaultAndroidWidget.ANDROID_SUB_WIDGET_LOCATOR;
11+
12+
public class AndroidWidgetTest extends WidgetTest {
13+
14+
public AndroidWidgetTest() {
15+
super(new AndroidApp(), new AbstractStubWebDriver.StubAndroidDriver());
16+
}
17+
18+
@Override
19+
public void checkACommonWidget() {
20+
defaultTest(app.getWidget(), app.getWidgets(),
21+
AndroidUIAutomator(ANDROID_DEFAULT_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
22+
}
23+
24+
@Override
25+
public void checkAnAnnotatedWidget() {
26+
defaultTest(app.getAnnotatedWidget(), app.getAnnotatedWidgets(),
27+
AndroidUIAutomator(ANDROID_ROOT_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
28+
}
29+
30+
@Override
31+
public void checkAnExtendedWidget() {
32+
defaultTest(app.getExtendedWidget(), app.getExtendedWidgets(),
33+
AndroidUIAutomator(ANDROID_ROOT_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
34+
}
35+
36+
@Override
37+
public void checkTheLocatorOverridingOnAWidget() {
38+
defaultTest(app.getExtendedWidgetWithOverriddenLocators(), app.getExtendedWidgetsWithOverriddenLocators(),
39+
AndroidUIAutomator(ANDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
40+
}
41+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.android;
2+
3+
import io.appium.java_client.pagefactory.AndroidFindBy;
4+
import org.openqa.selenium.WebElement;
5+
6+
@AndroidFindBy(uiAutomator = "SOME_ROOT_LOCATOR")
7+
public class AnnotatedAndroidWidget extends DefaultAndroidWidget {
8+
public static String ANDROID_ROOT_WIDGET_LOCATOR = "SOME_ROOT_LOCATOR";
9+
10+
protected AnnotatedAndroidWidget(WebElement element) {
11+
super(element);
12+
}
13+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.android;
2+
3+
import io.appium.java_client.pagefactory.AndroidFindBy;
4+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractWidget;
5+
import org.openqa.selenium.WebElement;
6+
7+
import java.util.List;
8+
9+
public class DefaultAndroidWidget extends AbstractWidget {
10+
11+
public static String ANDROID_SUB_WIDGET_LOCATOR = "SOME_SUB_LOCATOR";
12+
13+
@AndroidFindBy(uiAutomator = "SOME_SUB_LOCATOR")
14+
private DefaultAndroidWidget singleWidget;
15+
16+
@AndroidFindBy(uiAutomator = "SOME_SUB_LOCATOR")
17+
private List<DefaultAndroidWidget> multipleWidgets;
18+
19+
protected DefaultAndroidWidget(WebElement element) {
20+
super(element);
21+
}
22+
23+
@Override
24+
public DefaultAndroidWidget getSubWidget() {
25+
return singleWidget;
26+
}
27+
28+
@Override
29+
public List<DefaultAndroidWidget> getSubWidgets() {
30+
return multipleWidgets;
31+
}
32+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.android;
2+
3+
import org.openqa.selenium.WebElement;
4+
5+
public class ExtendedAndroidWidget extends AnnotatedAndroidWidget {
6+
protected ExtendedAndroidWidget(WebElement element) {
7+
super(element);
8+
}
9+
}

0 commit comments

Comments
 (0)