Skip to content

Commit 5c960a4

Browse files
The refactoring of widget tests: the test with fully combined widget app was added
...also some improvements
1 parent 96ab7fd commit 5c960a4

File tree

11 files changed

+169
-61
lines changed

11 files changed

+169
-61
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,4 +250,21 @@ public String getAutomationName() {
250250
return EMPTY;
251251
}
252252
}
253+
254+
public static class StubAndroidBrowserOrWebViewDriver extends AbstractStubWebDriver {
255+
256+
@Override
257+
public String getPlatformName() {
258+
return ANDROID;
259+
}
260+
261+
@Override
262+
public String getAutomationName() {
263+
return APPIUM;
264+
}
265+
266+
public boolean isBrowser() {
267+
return true;
268+
}
269+
}
253270
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
public interface ExtendedApp extends AbstractApp {
66

7-
public abstract <T extends AbstractWidget> T getAnnotatedWidget();
7+
<T extends AbstractWidget> T getAnnotatedWidget();
88

9-
public abstract <T extends AbstractWidget> List<T> getAnnotatedWidgets();
9+
<T extends AbstractWidget> List<T> getAnnotatedWidgets();
1010

11-
public abstract <T extends AbstractWidget> T getExtendedWidget();
11+
<T extends AbstractWidget> T getExtendedWidget();
1212

13-
public abstract <T extends AbstractWidget> List<T> getExtendedWidgets();
13+
<T extends AbstractWidget> List<T> getExtendedWidgets();
1414

15-
public abstract <T extends AbstractWidget> T getExtendedWidgetWithOverriddenLocators();
15+
<T extends AbstractWidget> T getExtendedWidgetWithOverriddenLocators();
1616

17-
public abstract <T extends AbstractWidget> List<T> getExtendedWidgetsWithOverriddenLocators();
17+
<T extends AbstractWidget> List<T> getExtendedWidgetsWithOverriddenLocators();
1818
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests;
2+
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;
7+
8+
import java.util.List;
9+
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;
15+
16+
public abstract class ExtendedWidgetTest extends WidgetTest {
17+
18+
19+
protected ExtendedWidgetTest(ExtendedApp app, WebDriver driver) {
20+
super(app, driver);
21+
}
22+
23+
@Test
24+
public abstract void checkAnAnnotatedWidget();
25+
26+
@Test
27+
public abstract void checkAnExtendedWidget();
28+
29+
@Test
30+
public abstract void checkTheLocatorOverridingOnAWidget();
31+
32+
protected static void defaultTest(AbstractWidget single, List<AbstractWidget> multiple, By rootLocator, By subLocator) {
33+
34+
assertThat(single.toString(), containsString(rootLocator.toString()));
35+
assertThat(multiple.stream().map(AbstractWidget::toString).collect(toList()),
36+
contains(containsString(rootLocator.toString()),
37+
containsString(rootLocator.toString())));
38+
39+
assertThat(single.getSubWidget().toString(), containsString(subLocator.toString()));
40+
assertThat(single.getSubWidgets().stream().map(Object::toString).collect(toList()),
41+
contains(containsString(subLocator.toString()),
42+
containsString(subLocator.toString())));
43+
44+
assertThat(multiple.stream().map(abstractWidget -> abstractWidget.getSubWidget().toString()).collect(toList()),
45+
contains(containsString(subLocator.toString()),
46+
containsString(subLocator.toString())));
47+
}
48+
}

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

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,4 @@ protected WidgetTest(AbstractApp app, WebDriver driver) {
2424

2525
@Test
2626
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-
}
5327
}

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/android/AndroidWidgetTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import static io.appium.java_client.pagefactory_tests.widget.tests.android.DefaultAndroidWidget.ANDROID_SUB_WIDGET_LOCATOR;
88

99
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
10-
import io.appium.java_client.pagefactory_tests.widget.tests.WidgetTest;
10+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
11+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedWidgetTest;
1112

12-
public class AndroidWidgetTest extends WidgetTest {
13+
public class AndroidWidgetTest extends ExtendedWidgetTest {
1314

1415
public AndroidWidgetTest() {
1516
super(new AndroidApp(), new AbstractStubWebDriver.StubAndroidDriver());
@@ -23,19 +24,20 @@ public void checkACommonWidget() {
2324

2425
@Override
2526
public void checkAnAnnotatedWidget() {
26-
defaultTest(app.getAnnotatedWidget(), app.getAnnotatedWidgets(),
27+
defaultTest(((ExtendedApp) app).getAnnotatedWidget(), ((ExtendedApp) app).getAnnotatedWidgets(),
2728
AndroidUIAutomator(ANDROID_ROOT_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
2829
}
2930

3031
@Override
3132
public void checkAnExtendedWidget() {
32-
defaultTest(app.getExtendedWidget(), app.getExtendedWidgets(),
33+
defaultTest(((ExtendedApp) app).getExtendedWidget(), ((ExtendedApp) app).getExtendedWidgets(),
3334
AndroidUIAutomator(ANDROID_ROOT_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
3435
}
3536

3637
@Override
3738
public void checkTheLocatorOverridingOnAWidget() {
38-
defaultTest(app.getExtendedWidgetWithOverriddenLocators(), app.getExtendedWidgetsWithOverriddenLocators(),
39+
defaultTest(((ExtendedApp) app).getExtendedWidgetWithOverriddenLocators(),
40+
((ExtendedApp) app).getExtendedWidgetsWithOverriddenLocators(),
3941
AndroidUIAutomator(ANDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
4042
}
4143
}

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/android/SelendroidWidgetTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import static org.openqa.selenium.By.linkText;
88

99
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
10-
import io.appium.java_client.pagefactory_tests.widget.tests.WidgetTest;
10+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
11+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedWidgetTest;
1112

12-
public class SelendroidWidgetTest extends WidgetTest {
13+
public class SelendroidWidgetTest extends ExtendedWidgetTest {
1314
public SelendroidWidgetTest() {
1415
super(new AndroidApp(), new AbstractStubWebDriver.StubSelendroidDriver());
1516
}
@@ -22,19 +23,20 @@ public void checkACommonWidget() {
2223

2324
@Override
2425
public void checkAnAnnotatedWidget() {
25-
defaultTest(app.getAnnotatedWidget(), app.getAnnotatedWidgets(),
26+
defaultTest(((ExtendedApp) app).getAnnotatedWidget(), ((ExtendedApp) app).getAnnotatedWidgets(),
2627
linkText(SELENDROID_ROOT_WIDGET_LOCATOR), linkText(SELENDROID_SUB_WIDGET_LOCATOR));
2728
}
2829

2930
@Override
3031
public void checkAnExtendedWidget() {
31-
defaultTest(app.getExtendedWidget(), app.getExtendedWidgets(),
32+
defaultTest(((ExtendedApp) app).getExtendedWidget(), ((ExtendedApp) app).getExtendedWidgets(),
3233
linkText(SELENDROID_ROOT_WIDGET_LOCATOR), linkText(SELENDROID_SUB_WIDGET_LOCATOR));
3334
}
3435

3536
@Override
3637
public void checkTheLocatorOverridingOnAWidget() {
37-
defaultTest(app.getExtendedWidgetWithOverriddenLocators(), app.getExtendedWidgetsWithOverriddenLocators(),
38+
defaultTest(((ExtendedApp) app).getExtendedWidgetWithOverriddenLocators(),
39+
((ExtendedApp) app).getExtendedWidgetsWithOverriddenLocators(),
3840
linkText(SELENDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR), linkText(SELENDROID_SUB_WIDGET_LOCATOR));
3941
}
4042
}

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/combined/CombinedApp.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class CombinedApp implements AbstractApp {
1313

1414
@OverrideWidget(html = DefaultFindByWidget.class,
1515
androidUIAutomator = DefaultAndroidWidget.class,
16+
selendroid = DefaultSelendroidWidget.class,
1617
iOSUIAutomation = DefaultIosWidget.class,
1718
iOSXCUITAutomation = DefaultIosXCUITWidget.class,
1819
windowsAutomation = DefaultWindowsWidget.class
@@ -21,19 +22,20 @@ public class CombinedApp implements AbstractApp {
2122

2223
@OverrideWidget(html = DefaultFindByWidget.class,
2324
androidUIAutomator = DefaultAndroidWidget.class,
25+
selendroid = DefaultSelendroidWidget.class,
2426
iOSUIAutomation = DefaultIosWidget.class,
2527
iOSXCUITAutomation = DefaultIosXCUITWidget.class,
2628
windowsAutomation = DefaultWindowsWidget.class
2729
)
2830
private List<AbstractWidget> multipleWidget;
2931

3032
@Override
31-
public <T extends AbstractWidget> T getWidget() {
32-
return null;
33+
public AbstractWidget getWidget() {
34+
return singleWidget;
3335
}
3436

3537
@Override
36-
public <T extends AbstractWidget> List<T> getWidgets() {
37-
return null;
38+
public List<AbstractWidget> getWidgets() {
39+
return multipleWidget;
3840
}
3941
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.combined;
2+
3+
import static java.util.Arrays.asList;
4+
import static java.util.stream.Collectors.toList;
5+
import static org.hamcrest.Matchers.contains;
6+
import static org.hamcrest.Matchers.equalTo;
7+
import static org.junit.Assert.assertThat;
8+
9+
import io.appium.java_client.pagefactory.Widget;
10+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
11+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
12+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractWidget;
13+
import io.appium.java_client.pagefactory_tests.widget.tests.WidgetTest;
14+
import io.appium.java_client.pagefactory_tests.widget.tests.android.DefaultAndroidWidget;
15+
import io.appium.java_client.pagefactory_tests.widget.tests.ios.DefaultIosWidget;
16+
import io.appium.java_client.pagefactory_tests.widget.tests.windows.DefaultWindowsWidget;
17+
import org.junit.runner.RunWith;
18+
import org.junit.runners.Parameterized;
19+
import org.openqa.selenium.WebDriver;
20+
21+
import java.util.Collection;
22+
import java.util.List;
23+
24+
@RunWith(Parameterized.class)
25+
public class CombinedAppTest extends WidgetTest {
26+
27+
@Parameterized.Parameters
28+
public static Collection<Object[]> data() {
29+
return asList(new Object[][] {
30+
{ new CombinedApp(), new AbstractStubWebDriver.StubAndroidDriver(), DefaultAndroidWidget.class},
31+
{ new CombinedApp(), new AbstractStubWebDriver.StubSelendroidDriver(), DefaultSelendroidWidget.class},
32+
{ new CombinedApp(), new AbstractStubWebDriver.StubIOSDriver(), DefaultIosWidget.class},
33+
{ new CombinedApp(), new AbstractStubWebDriver.StubIOSXCUITDriver(), DefaultIosXCUITWidget.class},
34+
{ new CombinedApp(), new AbstractStubWebDriver.StubWindowsDriver(), DefaultWindowsWidget.class},
35+
{ new CombinedApp(), new AbstractStubWebDriver.StubBrowserDriver(), DefaultFindByWidget.class},
36+
{ new CombinedApp(), new AbstractStubWebDriver.StubAndroidBrowserOrWebViewDriver(), DefaultFindByWidget.class}
37+
});
38+
}
39+
40+
private final Class<?> widgetClass;
41+
42+
public CombinedAppTest(AbstractApp app, WebDriver driver, Class<? extends AbstractWidget> widgetClass) {
43+
super(app, driver);
44+
this.widgetClass = widgetClass;
45+
}
46+
47+
@Override
48+
public void checkACommonWidget() {
49+
assertThat("Excpected widget class was " + widgetClass.getName(),
50+
app.getWidget().getSelfReference().getClass(),
51+
equalTo(widgetClass));
52+
53+
List<Class<?>> classes = app.getWidgets().stream().map(abstractWidget -> abstractWidget.getSelfReference().getClass())
54+
.collect(toList());
55+
assertThat(classes,
56+
contains(widgetClass, widgetClass));
57+
}
58+
}

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/ios/IosWidgetTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import static io.appium.java_client.pagefactory_tests.widget.tests.ios.IosApp.IOS_EXTERNALLY_DEFINED_WIDGET_LOCATOR;
88

99
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
10-
import io.appium.java_client.pagefactory_tests.widget.tests.WidgetTest;
10+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
11+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedWidgetTest;
1112

12-
public class IosWidgetTest extends WidgetTest {
13+
public class IosWidgetTest extends ExtendedWidgetTest {
1314

1415
public IosWidgetTest() {
1516
super(new IosApp(), new AbstractStubWebDriver.StubIOSDriver());
@@ -23,19 +24,20 @@ public void checkACommonWidget() {
2324

2425
@Override
2526
public void checkAnAnnotatedWidget() {
26-
defaultTest(app.getAnnotatedWidget(), app.getAnnotatedWidgets(),
27+
defaultTest(((ExtendedApp) app).getAnnotatedWidget(), ((ExtendedApp) app).getAnnotatedWidgets(),
2728
IosUIAutomation(IOS_ROOT_WIDGET_LOCATOR), IosUIAutomation(IOS_SUB_WIDGET_LOCATOR));
2829
}
2930

3031
@Override
3132
public void checkAnExtendedWidget() {
32-
defaultTest(app.getExtendedWidget(), app.getExtendedWidgets(),
33+
defaultTest(((ExtendedApp) app).getExtendedWidget(), ((ExtendedApp) app).getExtendedWidgets(),
3334
IosUIAutomation(IOS_ROOT_WIDGET_LOCATOR), IosUIAutomation(IOS_SUB_WIDGET_LOCATOR));
3435
}
3536

3637
@Override
3738
public void checkTheLocatorOverridingOnAWidget() {
38-
defaultTest(app.getExtendedWidgetWithOverriddenLocators(), app.getExtendedWidgetsWithOverriddenLocators(),
39+
defaultTest(((ExtendedApp) app).getExtendedWidgetWithOverriddenLocators(),
40+
((ExtendedApp) app).getExtendedWidgetsWithOverriddenLocators(),
3941
IosUIAutomation(IOS_EXTERNALLY_DEFINED_WIDGET_LOCATOR), IosUIAutomation(IOS_SUB_WIDGET_LOCATOR));
4042
}
4143
}

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/ios/XCUITWidgetTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import static io.appium.java_client.pagefactory_tests.widget.tests.ios.IosApp.XCUIT_EXTERNALLY_DEFINED_WIDGET_LOCATOR;
88

99
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
10-
import io.appium.java_client.pagefactory_tests.widget.tests.WidgetTest;
10+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
11+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedWidgetTest;
1112

12-
public class XCUITWidgetTest extends WidgetTest {
13+
public class XCUITWidgetTest extends ExtendedWidgetTest {
1314

1415
public XCUITWidgetTest() {
1516
super(new IosApp(), new AbstractStubWebDriver.StubIOSXCUITDriver());
@@ -23,19 +24,20 @@ public void checkACommonWidget() {
2324

2425
@Override
2526
public void checkAnAnnotatedWidget() {
26-
defaultTest(app.getAnnotatedWidget(), app.getAnnotatedWidgets(),
27+
defaultTest(((ExtendedApp) app).getAnnotatedWidget(), ((ExtendedApp) app).getAnnotatedWidgets(),
2728
iOSNsPredicateString(XCUIT_ROOT_WIDGET_LOCATOR), iOSNsPredicateString(XCUIT_SUB_WIDGET_LOCATOR));
2829
}
2930

3031
@Override
3132
public void checkAnExtendedWidget() {
32-
defaultTest(app.getExtendedWidget(), app.getExtendedWidgets(),
33+
defaultTest(((ExtendedApp) app).getExtendedWidget(), ((ExtendedApp) app).getExtendedWidgets(),
3334
iOSNsPredicateString(XCUIT_ROOT_WIDGET_LOCATOR), iOSNsPredicateString(XCUIT_SUB_WIDGET_LOCATOR));
3435
}
3536

3637
@Override
3738
public void checkTheLocatorOverridingOnAWidget() {
38-
defaultTest(app.getExtendedWidgetWithOverriddenLocators(), app.getExtendedWidgetsWithOverriddenLocators(),
39+
defaultTest(((ExtendedApp) app).getExtendedWidgetWithOverriddenLocators(),
40+
((ExtendedApp) app).getExtendedWidgetsWithOverriddenLocators(),
3941
iOSNsPredicateString(XCUIT_EXTERNALLY_DEFINED_WIDGET_LOCATOR), iOSNsPredicateString(XCUIT_SUB_WIDGET_LOCATOR));
4042
}
4143
}

0 commit comments

Comments
 (0)