Skip to content

Commit 96ab7fd

Browse files
The refactoring of widget tests: Test API was re-designed
1 parent 30d0163 commit 96ab7fd

File tree

9 files changed

+157
-21
lines changed

9 files changed

+157
-21
lines changed

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

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,10 @@
22

33
import java.util.List;
44

5-
public abstract class AbstractApp {
5+
public interface AbstractApp {
66

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

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

11-
public abstract <T extends AbstractWidget> T getAnnotatedWidget();
12-
13-
public abstract <T extends AbstractWidget> List<T> getAnnotatedWidgets();
14-
15-
public abstract <T extends AbstractWidget> T getExtendedWidget();
16-
17-
public abstract <T extends AbstractWidget> List<T> getExtendedWidgets();
18-
19-
public abstract <T extends AbstractWidget> T getExtendedWidgetWithOverriddenLocators();
20-
21-
public abstract <T extends AbstractWidget> List<T> getExtendedWidgetsWithOverriddenLocators();
2211
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests;
2+
3+
import java.util.List;
4+
5+
public interface ExtendedApp extends AbstractApp {
6+
7+
public abstract <T extends AbstractWidget> T getAnnotatedWidget();
8+
9+
public abstract <T extends AbstractWidget> List<T> getAnnotatedWidgets();
10+
11+
public abstract <T extends AbstractWidget> T getExtendedWidget();
12+
13+
public abstract <T extends AbstractWidget> List<T> getExtendedWidgets();
14+
15+
public abstract <T extends AbstractWidget> T getExtendedWidgetWithOverriddenLocators();
16+
17+
public abstract <T extends AbstractWidget> List<T> getExtendedWidgetsWithOverriddenLocators();
18+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import io.appium.java_client.pagefactory.AndroidFindBy;
44
import io.appium.java_client.pagefactory.SelendroidFindBy;
5-
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
5+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
66

77
import java.util.List;
88

9-
public class AndroidApp extends AbstractApp{
9+
public class AndroidApp implements ExtendedApp {
1010

1111
public static String ANDROID_DEFAULT_WIDGET_LOCATOR = "SOME_ANDROID_DEFAULT_LOCATOR";
1212
public static String ANDROID_SELENDROID_WIDGET_LOCATOR = "SOME_SELENDROID_DEFAULT_LOCATOR";
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.combined;
2+
3+
import io.appium.java_client.pagefactory.OverrideWidget;
4+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
5+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractWidget;
6+
import io.appium.java_client.pagefactory_tests.widget.tests.android.DefaultAndroidWidget;
7+
import io.appium.java_client.pagefactory_tests.widget.tests.ios.DefaultIosWidget;
8+
import io.appium.java_client.pagefactory_tests.widget.tests.windows.DefaultWindowsWidget;
9+
10+
import java.util.List;
11+
12+
public class CombinedApp implements AbstractApp {
13+
14+
@OverrideWidget(html = DefaultFindByWidget.class,
15+
androidUIAutomator = DefaultAndroidWidget.class,
16+
iOSUIAutomation = DefaultIosWidget.class,
17+
iOSXCUITAutomation = DefaultIosXCUITWidget.class,
18+
windowsAutomation = DefaultWindowsWidget.class
19+
)
20+
private AbstractWidget singleWidget;
21+
22+
@OverrideWidget(html = DefaultFindByWidget.class,
23+
androidUIAutomator = DefaultAndroidWidget.class,
24+
iOSUIAutomation = DefaultIosWidget.class,
25+
iOSXCUITAutomation = DefaultIosXCUITWidget.class,
26+
windowsAutomation = DefaultWindowsWidget.class
27+
)
28+
private List<AbstractWidget> multipleWidget;
29+
30+
@Override
31+
public <T extends AbstractWidget> T getWidget() {
32+
return null;
33+
}
34+
35+
@Override
36+
public <T extends AbstractWidget> List<T> getWidgets() {
37+
return null;
38+
}
39+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.combined;
2+
3+
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractWidget;
4+
import org.openqa.selenium.WebElement;
5+
import org.openqa.selenium.support.FindBy;
6+
7+
import java.util.List;
8+
9+
public class DefaultFindByWidget extends AbstractWidget {
10+
11+
@FindBy(id = "SOME_SUB_LOCATOR")
12+
private DefaultFindByWidget singleWidget;
13+
14+
@FindBy(id = "SOME_SUB_LOCATOR")
15+
private List<DefaultFindByWidget> multipleWidgets;
16+
17+
18+
protected DefaultFindByWidget(WebElement element) {
19+
super(element);
20+
}
21+
22+
@Override
23+
public DefaultFindByWidget getSubWidget() {
24+
return singleWidget;
25+
}
26+
27+
@Override
28+
public List<DefaultFindByWidget> getSubWidgets() {
29+
return multipleWidgets;
30+
}
31+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.combined;
2+
3+
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
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 DefaultIosXCUITWidget extends AbstractWidget {
10+
11+
@iOSXCUITFindBy(iOSNsPredicate = "XCUIT_SOME_SUB_LOCATOR")
12+
private DefaultIosXCUITWidget singleWidget;
13+
14+
@iOSXCUITFindBy(iOSNsPredicate = "XCUIT_SOME_SUB_LOCATOR")
15+
private List<DefaultIosXCUITWidget> multipleWidgets;
16+
17+
protected DefaultIosXCUITWidget(WebElement element) {
18+
super(element);
19+
}
20+
21+
@Override
22+
public DefaultIosXCUITWidget getSubWidget() {
23+
return singleWidget;
24+
}
25+
26+
@Override
27+
public List<DefaultIosXCUITWidget> getSubWidgets() {
28+
return multipleWidgets;
29+
}
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.appium.java_client.pagefactory_tests.widget.tests.combined;
2+
3+
import io.appium.java_client.pagefactory.SelendroidFindBy;
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 DefaultSelendroidWidget extends AbstractWidget {
10+
11+
@SelendroidFindBy(linkText = "SELENDROID_SOME_SUB_LOCATOR")
12+
private DefaultSelendroidWidget singleWidget;
13+
14+
@SelendroidFindBy(linkText = "SELENDROID_SOME_SUB_LOCATOR")
15+
private List<DefaultSelendroidWidget> multipleWidgets;
16+
17+
protected DefaultSelendroidWidget(WebElement element) {
18+
super(element);
19+
}
20+
21+
@Override
22+
public DefaultSelendroidWidget getSubWidget() {
23+
return singleWidget;
24+
}
25+
26+
@Override
27+
public List<DefaultSelendroidWidget> getSubWidgets() {
28+
return multipleWidgets;
29+
}
30+
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests.ios;
22

3-
import io.appium.java_client.pagefactory.AndroidFindBy;
4-
import io.appium.java_client.pagefactory.SelendroidFindBy;
53
import io.appium.java_client.pagefactory.iOSFindBy;
64
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
7-
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
5+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
86

97
import java.util.List;
108

11-
public class IosApp extends AbstractApp{
9+
public class IosApp implements ExtendedApp {
1210

1311
public static String IOS_DEFAULT_WIDGET_LOCATOR = "SOME_IOS_DEFAULT_LOCATOR";
1412
public static String IOS_XCUIT_WIDGET_LOCATOR = "SOME_XCUIT_DEFAULT_LOCATOR";

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/windows/WindowsApp.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
import io.appium.java_client.pagefactory.WindowsFindBy;
44
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
55
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
6+
import io.appium.java_client.pagefactory_tests.widget.tests.ExtendedApp;
67

78
import java.util.List;
89

9-
public class WindowsApp extends AbstractApp{
10+
public class WindowsApp implements ExtendedApp {
1011

1112
public static String WINDOWS_DEFAULT_WIDGET_LOCATOR = "SOME_WINDOWS_DEFAULT_LOCATOR";
1213

0 commit comments

Comments
 (0)