├── .gitignore ├── pom.xml ├── readme.md ├── src ├── main │ └── java │ │ └── io │ │ └── github │ │ └── mfaisalkhatri │ │ ├── drivers │ │ ├── AndroidDriverManager.java │ │ └── IOSDriverManager.java │ │ └── server │ │ └── AppiumServerManager.java └── test │ ├── java │ └── io │ │ └── github │ │ └── mfaisalkhatri │ │ ├── android │ │ ├── pages │ │ │ ├── browser │ │ │ │ └── TheInternetPage.java │ │ │ ├── proverbial │ │ │ │ └── Notifications.java │ │ │ └── wdio │ │ │ │ ├── DragPage.java │ │ │ │ ├── FormPage.java │ │ │ │ ├── HomePage.java │ │ │ │ ├── SignUpPage.java │ │ │ │ ├── SwipePage.java │ │ │ │ └── WebViewPage.java │ │ └── tests │ │ │ ├── AndroidTests.java │ │ │ └── BaseTest.java │ │ └── ios │ │ ├── pages │ │ ├── DragPage.java │ │ ├── FormPage.java │ │ ├── HomePage.java │ │ ├── SwipePage.java │ │ └── WebViewPage.java │ │ ├── paralleltests │ │ ├── demo │ │ │ ├── BaseTest.java │ │ │ └── IOSParallelTests.java │ │ ├── pages │ │ │ ├── FormPage.java │ │ │ └── HomePage.java │ │ └── tests │ │ │ ├── BaseTest.java │ │ │ ├── IOSTestOnIPhoneFifteen.java │ │ │ └── IOSTestOnIPhoneFifteenPro.java │ │ └── tests │ │ ├── BaseTest.java │ │ └── IOSTests.java │ └── resources │ ├── app │ ├── iOS-Real-Device-MyRNDemoApp.1.3.0-162.ipa │ ├── iOS-Simulator-NativeDemoApp-0.4.0.app.zip │ ├── wdioNativeDemoApp.app │ │ ├── AccessibilityResources.bundle │ │ │ ├── Info.plist │ │ │ ├── _CodeSignature │ │ │ │ ├── CodeDirectory │ │ │ │ ├── CodeRequirements │ │ │ │ ├── CodeRequirements-1 │ │ │ │ ├── CodeResources │ │ │ │ └── CodeSignature │ │ │ └── en.lproj │ │ │ │ └── Localizable.strings │ │ ├── AntDesign.ttf │ │ ├── AppIcon20x20@2x.png │ │ ├── AppIcon20x20@3x.png │ │ ├── AppIcon29x29.png │ │ ├── AppIcon29x29@2x.png │ │ ├── AppIcon29x29@3x.png │ │ ├── AppIcon40x40@2x.png │ │ ├── AppIcon40x40@3x.png │ │ ├── AppIcon57x57.png │ │ ├── AppIcon57x57@2x.png │ │ ├── AppIcon60x60@2x.png │ │ ├── AppIcon60x60@3x.png │ │ ├── Assets.car │ │ ├── Entypo.ttf │ │ ├── EvilIcons.ttf │ │ ├── Feather.ttf │ │ ├── FontAwesome.ttf │ │ ├── FontAwesome5_Brands.ttf │ │ ├── FontAwesome5_Regular.ttf │ │ ├── FontAwesome5_Solid.ttf │ │ ├── Fontisto.ttf │ │ ├── Foundation.ttf │ │ ├── Frameworks │ │ │ └── OpenSSL.framework │ │ │ │ ├── Info.plist │ │ │ │ ├── OpenSSL │ │ │ │ └── _CodeSignature │ │ │ │ └── CodeResources │ │ ├── Info.plist │ │ ├── Ionicons.ttf │ │ ├── LaunchScreen.storyboardc │ │ │ ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib │ │ │ ├── Info.plist │ │ │ └── UIViewController-01J-lp-oVM.nib │ │ ├── MaterialCommunityIcons.ttf │ │ ├── MaterialIcons.ttf │ │ ├── Octicons.ttf │ │ ├── PkgInfo │ │ ├── SimpleLineIcons.ttf │ │ ├── Zocial.ttf │ │ ├── _CodeSignature │ │ │ └── CodeResources │ │ ├── assets │ │ │ ├── node_modules │ │ │ │ ├── react-native-ratings │ │ │ │ │ └── src │ │ │ │ │ │ └── images │ │ │ │ │ │ ├── airbnb-star-selected.png │ │ │ │ │ │ ├── airbnb-star.png │ │ │ │ │ │ ├── bell.png │ │ │ │ │ │ ├── heart.png │ │ │ │ │ │ ├── rocket.png │ │ │ │ │ │ └── star.png │ │ │ │ └── react-native-vector-icons │ │ │ │ │ └── glyphmaps │ │ │ │ │ ├── AntDesign.json │ │ │ │ │ ├── Entypo.json │ │ │ │ │ ├── EvilIcons.json │ │ │ │ │ ├── Feather.json │ │ │ │ │ ├── FontAwesome.json │ │ │ │ │ ├── FontAwesome5Free.json │ │ │ │ │ ├── FontAwesome5Free_meta.json │ │ │ │ │ ├── Fontisto.json │ │ │ │ │ ├── Foundation.json │ │ │ │ │ ├── Ionicons.json │ │ │ │ │ ├── MaterialCommunityIcons.json │ │ │ │ │ ├── MaterialIcons.json │ │ │ │ │ ├── Octicons.json │ │ │ │ │ ├── SimpleLineIcons.json │ │ │ │ │ └── Zocial.json │ │ │ └── src │ │ │ │ ├── app.json │ │ │ │ └── assets │ │ │ │ ├── images │ │ │ │ ├── wdio-c1.png │ │ │ │ ├── wdio-c2.png │ │ │ │ ├── wdio-c3.png │ │ │ │ ├── wdio-l1.png │ │ │ │ ├── wdio-l2.png │ │ │ │ ├── wdio-l3.png │ │ │ │ ├── wdio-r1.png │ │ │ │ ├── wdio-r2.png │ │ │ │ └── wdio-r3.png │ │ │ │ ├── io.png │ │ │ │ └── webdriverio.png │ │ ├── main.jsbundle │ │ └── wdioNativeDemoApp │ └── webdriverio-app.apk │ └── firefox-driver │ ├── geckodriver │ └── geckodriver-v0.33.0-macos-aarch64.tar.gz └── test-suite ├── testng-android.xml ├── testng-ios-parallel.xml ├── testng-ios.xml └── testng.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # IntelliJ IDEA 2 | /.idea/ 3 | *.iml 4 | 5 | # Eclipse IDE 6 | /.settings/ 7 | /.classpath 8 | /.project 9 | 10 | # Other output folders 11 | /target/ 12 | /bin/ 13 | /test-output/ 14 | /logs/ 15 | /reports/ 16 | 17 | # Mac OSX 18 | .DS_Store 19 | 20 | #VS code 21 | /.vscode -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | io.github.mfaisalkhatri 6 | appium-example 7 | 1.0-SNAPSHOT 8 | jar 9 | 10 | appium-example 11 | http://maven.apache.org 12 | 13 | 14 | UTF-8 15 | 9.3.0 16 | 2.23.0 17 | 2.23.0 18 | 7.10.0 19 | 3.13.0 20 | 17 21 | 3.5.2 22 | UTF-8 23 | test-suite/testng.xml 24 | 25 | 26 | 27 | 28 | 29 | 30 | io.appium 31 | java-client 32 | ${appium-java-client-version} 33 | 34 | 35 | 36 | org.testng 37 | testng 38 | ${testng.version} 39 | test 40 | 41 | 42 | 43 | org.apache.logging.log4j 44 | log4j-core 45 | ${log4jcore.version} 46 | 47 | 48 | 49 | org.apache.logging.log4j 50 | log4j-api 51 | ${log4japi.version} 52 | 53 | 54 | 55 | 56 | 57 | 58 | org.apache.maven.plugins 59 | maven-compiler-plugin 60 | ${maven.compiler.version} 61 | 62 | ${java.release.version} 63 | ${maven.source.encoding} 64 | true 65 | 66 | 67 | 68 | org.apache.maven.plugins 69 | maven-surefire-plugin 70 | ${maven.surefire.version} 71 | 72 | 73 | 74 | test 75 | 76 | 77 | 78 | 79 | false 80 | 81 | 82 | usedefaultlisteners 83 | false 84 | 85 | 86 | 87 | ${suite-xml} 88 | 89 | ${argLine} 90 | 91 | 92 | 93 | org.apache.maven.plugins 94 | maven-enforcer-plugin 95 | 3.5.0 96 | 97 | 98 | enforce-maven 99 | 100 | enforce 101 | 102 | 103 | 104 | 105 | 3.6.3 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=103) 2 | 3 | ## Don't forget to give a :star: to make the project popular. 4 | 5 | ## :question: What is this Repository about? 6 | 7 | - This repository contains the example code for running Android Mobile Automation tests 8 | using [Appium 2.0](https://appium.io/docs/en/2.0/intro/) 9 | - [WebdriverIO demo app](https://github.com/webdriverio/native-demo-app/releases) is used as a demo mobile application 10 | run tests 11 | - This repo uses `Maven` as build tool and `TestNG` testing framework to run the tests. 12 | 13 | ## Talking more about the Scenarios Covered in this project: 14 | 15 | - I have tried to answer the below questions by providing working code example in this repo: 16 | 17 | 1. How to start Appium Server Programmatically? 18 | 1. How to stop Appium Server Programmatically? 19 | 1. How to run mobile automation tests on Android Emulator? 20 | 1. How to locate elements using Appium? 21 | 1. How to click on an element using Appium? 22 | 1. How to check attribute of an element using Appium? 23 | 1. How to type values in a text field? 24 | 1. How to perform assertions? 25 | 26 | ## How to run the Tests? 27 | 28 | ### Pre-Requisite: 29 | 30 | - JAVA JDK 11 should be installed 31 | - Android Emulator should be created in local machine and should be in running state 32 | - For running iOS tests, iOS Simulator needs to be started and should be in running state 33 | 34 | ### :movie_camera: Tutorial for Installing Android Studio on Windows 10 35 | [![Watch the video](https://img.youtube.com/vi/CMrfuCR6W94/hqdefault.jpg)](https://youtu.be/CMrfuCR6W94) 36 | 37 | - Run the tests using `TestNG`: 38 | 39 | Right click on `test-suite\testng.xml` and select `Run test-suite\testng.xml` 40 | 41 | - Run the tests using `Maven`: 42 | 43 | `mvn clean install` 44 | 45 | ## :writing_hand: Blog Links 46 | 47 | - [Beginner’s Guide to Appium 2.0](https://medium.com/@iamfaisalkhatri/beginners-guide-to-appium-2-0-d8118b31837c) 48 | - [Appium 2 Migration Guide: Migrating From Appium 1.x To Appium 2.x](https://medium.com/@iamfaisalkhatri/appium-2-migration-guide-migrating-from-appium-1-x-to-appium-2-x-f1721b31197) 49 | - [How To Automate ServiceNow With Appium](https://medium.com/@iamfaisalkhatri/how-to-automate-servicenow-with-appium-8cc4aee3ed44) 50 | - [Complete Tutorial On Appium Parallel Testing- [With Examples]](https://www.lambdatest.com/blog/appium-parallel-testing/) 51 | - [React Native Testing For Apps On iOS And Android Using Appium](https://www.lambdatest.com/blog/test-react-native-apps-on-ios-and-android/) 52 | - [How to Choose Mobile Devices for Testing](https://medium.com/@iamfaisalkhatri/how-to-choose-mobile-devices-for-testing-pcloudy-blog-96179529d0f3) 53 | - [What is an Android Emulator? How to Start and use it?](https://medium.com/@iamfaisalkhatri/what-is-an-android-emulator-how-to-start-and-use-it-66fdcf52be7e) 54 | - [How to start Appium Server Programmatically?](https://medium.com/@iamfaisalkhatri/how-to-start-appium-server-programmatically-ec07292ab59) 55 | - [Guide to Mobile Testing](https://medium.com/@iamfaisalkhatri/guide-to-mobile-testing-d0dd2d9b59f1) 56 | - [Inspecting elements of an app using Appium Inspector and BrowserStack!](https://medium.com/@iamfaisalkhatri/inspecting-elements-of-an-app-using-appium-inspector-and-browserstack-32c095a5333c) 57 | 58 | ## :question: Need Assistance? 59 | 60 | - Discuss your queries by writing to me @ `mohammadfaisalkhatri@gmail.com` 61 | OR ping me on any of the social media sites using the below link: 62 | - [Linktree](https://linktr.ee/faisalkhatri) 63 | 64 | ## :computer: Paid Trainings 65 | 66 | Contact me for Paid trainings related to Test Automation and Software Testing, 67 | mail me @ `mohammadfaisalkhatri@gmail.com` or ping me on [LinkedIn](https://www.linkedin.com/in/faisalkhatri/) 68 | 69 | ## :thought_balloon: Checkout the blogs related to Testing written by me on the following links: 70 | 71 | - [Medium Blogs](https://medium.com/@iamfaisalkhatri) 72 | - [LambdaTest Blogs](https://www.lambdatest.com/blog/author/mfaisalkhatri/) 73 | - [My Website](https://mfaisalkhatri.github.io) 74 | 75 | -------------------------------------------------------------------------------- /src/main/java/io/github/mfaisalkhatri/drivers/AndroidDriverManager.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.drivers; 2 | 3 | import static io.github.mfaisalkhatri.server.AppiumServerManager.startServer; 4 | import static io.github.mfaisalkhatri.server.AppiumServerManager.stopServer; 5 | 6 | import java.net.MalformedURLException; 7 | import java.net.URL; 8 | import java.nio.file.Path; 9 | import java.time.Duration; 10 | import java.util.HashMap; 11 | 12 | import io.appium.java_client.android.AndroidDriver; 13 | import io.appium.java_client.android.options.UiAutomator2Options; 14 | import io.appium.java_client.gecko.options.GeckoOptions; 15 | import io.appium.java_client.remote.AutomationName; 16 | import org.apache.logging.log4j.LogManager; 17 | import org.apache.logging.log4j.Logger; 18 | 19 | /** 20 | * @author Faisal Khatri 21 | * @since 10/13/2022 22 | **/ 23 | public class AndroidDriverManager { 24 | private static final String APP_PATH = String.valueOf ( 25 | Path.of (System.getProperty ("user.dir"), "/src/test/resources/app", "webdriverio-app.apk")); 26 | private static final ThreadLocal DRIVER = new ThreadLocal<> (); 27 | private static final Logger LOG = LogManager.getLogger ("DriverManager.class"); 28 | 29 | public static void createAndroidDriver () { 30 | startServer ("android"); 31 | // setDriver (new AndroidDriver (getService ().getUrl (), geckoOptionsFirefox ())); 32 | try { 33 | setDriver (new AndroidDriver (new URL ("http://127.0.0.1:4723/wd/hub"),uiAutomator2OptionsWdio())); 34 | } catch (final MalformedURLException e) { 35 | throw new RuntimeException (e); 36 | } 37 | setupDriverTimeouts (); 38 | } 39 | 40 | public static AndroidDriver getDriver () { 41 | return AndroidDriverManager.DRIVER.get (); 42 | } 43 | 44 | public static void quitSession () { 45 | if (null != DRIVER.get ()) { 46 | LOG.info ("Closing the driver..."); 47 | getDriver ().quit (); 48 | DRIVER.remove (); 49 | stopServer (); 50 | } 51 | } 52 | 53 | private static GeckoOptions geckoOptionsFirefox () { 54 | final HashMap firefoxOptions = new HashMap<> (); 55 | firefoxOptions.put ("androidPackage", "org.mozilla.firefox"); 56 | //firefoxOptions.put ("androidDeviceSerial", "EMULATOR32X1X12X0"); 57 | final GeckoOptions geckoOptions; 58 | geckoOptions = new GeckoOptions ().setPlatformName ("mac") 59 | .setAutomationName (AutomationName.GECKO) 60 | .setMozFirefoxOptions (firefoxOptions) 61 | .setAndroidStorage ("app") 62 | .setAcceptInsecureCerts (true) 63 | .setNoReset (false); 64 | return geckoOptions; 65 | } 66 | 67 | private static void setDriver (final AndroidDriver driver) { 68 | AndroidDriverManager.DRIVER.set (driver); 69 | } 70 | 71 | private static void setupDriverTimeouts () { 72 | getDriver ().manage () 73 | .timeouts () 74 | .implicitlyWait (Duration.ofSeconds (5)); 75 | } 76 | 77 | // private static DesiredCapabilities setCapabilities() { 78 | // DesiredCapabilities capabilities = new DesiredCapabilities(); 79 | // capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, Platform.ANDROID); 80 | // capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Pixel_5_API_30"); 81 | // capabilities.setCapability(MobileCapabilityType.APP, APP_PATH); 82 | // capabilities.setCapability("appPackage", "com.wdiodemoapp"); 83 | // capabilities.setCapability("appActivity", "com.wdiodemoapp.MainActivity"); 84 | // capabilities.setCapability("noReset", false); 85 | // capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.ANDROID_UIAUTOMATOR2); 86 | // return capabilities; 87 | // } 88 | 89 | private static UiAutomator2Options uiAutomator2OptionsChrome () { 90 | 91 | final UiAutomator2Options uiAutomator2Options; 92 | uiAutomator2Options = new UiAutomator2Options ().setAvd ("Pixel_6_API_34") 93 | .setAvdLaunchTimeout (Duration.ofSeconds (300)) 94 | .setAvdReadyTimeout (Duration.ofSeconds (100)) 95 | .setDeviceName ("Pixel_6_API_34") 96 | .setAutomationName (AutomationName.ANDROID_UIAUTOMATOR2) 97 | .withBrowserName ("chrome") 98 | .setAutoGrantPermissions (true) 99 | .setNoReset (false); 100 | 101 | return uiAutomator2Options; 102 | } 103 | 104 | private static UiAutomator2Options uiAutomator2OptionsProverbial () { 105 | 106 | final UiAutomator2Options uiAutomator2Options; 107 | uiAutomator2Options = new UiAutomator2Options ().setAvd ("Pixel_XL_API_33") 108 | .setAvdLaunchTimeout (Duration.ofSeconds (300)) 109 | .setAvdReadyTimeout (Duration.ofSeconds (100)) 110 | .setDeviceName ("Pixel_XL_API_33") 111 | .setAutomationName (AutomationName.ANDROID_UIAUTOMATOR2) 112 | .setApp (APP_PATH) 113 | .setAutoGrantPermissions (true) 114 | .setAppPackage ("com.lambdatest.proverbial") 115 | .setAppActivity ("com.lambdatest.proverbial.MainActivity") 116 | .setNoReset (false); 117 | return uiAutomator2Options; 118 | } 119 | 120 | private static UiAutomator2Options uiAutomator2OptionsWdio () { 121 | final UiAutomator2Options uiAutomator2Options; 122 | uiAutomator2Options = new UiAutomator2Options ().setAvd ("Pixel_6_Pro_API_34") 123 | .setAvdLaunchTimeout (Duration.ofSeconds (300)) 124 | .setAvdReadyTimeout (Duration.ofSeconds (100)) 125 | .setDeviceName ("Pixel_6_Pro_API_34") 126 | .setAutomationName (AutomationName.ANDROID_UIAUTOMATOR2) 127 | .setApp (APP_PATH) 128 | .setAppPackage ("com.wdiodemoapp") 129 | .setAppActivity ("com.wdiodemoapp.MainActivity") 130 | .setNoReset (false); 131 | return uiAutomator2Options; 132 | } 133 | 134 | } 135 | -------------------------------------------------------------------------------- /src/main/java/io/github/mfaisalkhatri/drivers/IOSDriverManager.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.drivers; 2 | 3 | import io.appium.java_client.ios.IOSDriver; 4 | import io.appium.java_client.ios.options.XCUITestOptions; 5 | import io.appium.java_client.remote.AutomationName; 6 | import org.apache.logging.log4j.LogManager; 7 | import org.apache.logging.log4j.Logger; 8 | 9 | import java.nio.file.Path; 10 | import java.time.Duration; 11 | 12 | import static io.github.mfaisalkhatri.server.AppiumServerManager.*; 13 | 14 | public class IOSDriverManager { 15 | 16 | private static final ThreadLocal DRIVER = new ThreadLocal<>(); 17 | private static final Logger LOG = LogManager.getLogger("DriverManager.class"); 18 | 19 | private static final String APP_PATH = String.valueOf(Path.of(System.getProperty("user.dir"), "/src/test/resources/app", "wdioNativeDemoApp.app")); 20 | 21 | public static IOSDriver getDriver() { 22 | return IOSDriverManager.DRIVER.get(); 23 | } 24 | 25 | private static void setDriver(IOSDriver driver) { 26 | IOSDriverManager.DRIVER.set(driver); 27 | } 28 | 29 | 30 | private static XCUITestOptions xcuiTestOptions() { 31 | return new XCUITestOptions() 32 | .setDeviceName("iPhone 14 Pro Max") 33 | .setAutomationName(AutomationName.IOS_XCUI_TEST) 34 | .setNewCommandTimeout(Duration.ofSeconds(60)) 35 | .setPlatformVersion("16.2") 36 | .setApp(APP_PATH) 37 | .setNoReset(false); 38 | } 39 | 40 | public static void quitSession() { 41 | if (null != DRIVER.get()) { 42 | LOG.info("Closing the driver..."); 43 | getDriver().quit(); 44 | DRIVER.remove(); 45 | stopServer(); 46 | } 47 | } 48 | 49 | public static void createIOSDriver() { 50 | startServer("ios"); 51 | setDriver(new IOSDriver(getService().getUrl(), xcuiTestOptions())); 52 | setupDriverTimeouts(); 53 | } 54 | 55 | private static void setupDriverTimeouts() { 56 | getDriver().manage() 57 | .timeouts() 58 | .implicitlyWait(Duration.ofSeconds(5)); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/io/github/mfaisalkhatri/server/AppiumServerManager.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.server; 2 | 3 | import io.appium.java_client.android.AndroidDriver; 4 | import io.appium.java_client.service.local.AppiumDriverLocalService; 5 | import io.appium.java_client.service.local.AppiumServiceBuilder; 6 | 7 | import static io.appium.java_client.service.local.flags.GeneralServerFlag.*; 8 | 9 | public class AppiumServerManager { 10 | 11 | public static AppiumDriverLocalService service; 12 | 13 | public static AppiumDriverLocalService getService () { 14 | return service; 15 | } 16 | 17 | public static void startServer (final String platformName) { 18 | final AppiumServiceBuilder builder = new AppiumServiceBuilder (); 19 | if (platformName.equalsIgnoreCase ("android")) { 20 | builder.withIPAddress ("127.0.0.1") 21 | .usingPort (4723) 22 | //.usingDriverExecutable (new File ("E:\\Program Files\\nodejs\\node.exe")) 23 | .withArgument (BASEPATH, "/wd/hub") 24 | .withArgument (SESSION_OVERRIDE) 25 | .withArgument (LOG_LEVEL, "debug") 26 | .withArgument (USE_DRIVERS, "uiautomator2"); 27 | //.withArgument (ALLOW_INSECURE, "chromedriver_autodownload"); 28 | } else if (platformName.equalsIgnoreCase ("ios")) { 29 | builder.withIPAddress ("127.0.0.1") 30 | .usingPort (4723) 31 | //.usingDriverExecutable (new File ("E:\\Program Files\\nodejs\\node.exe")) 32 | .withArgument (BASEPATH, "/wd/hub") 33 | .withArgument (SESSION_OVERRIDE) 34 | .withArgument (LOG_LEVEL, "debug") 35 | .withArgument (USE_DRIVERS, "xcuitest") 36 | .withArgument (ALLOW_INSECURE, "chromedriver_autodownload"); 37 | } 38 | // .withArgument(USE_PLUGINS, "element-wait"); 39 | 40 | service = AppiumDriverLocalService.buildService (builder); 41 | service.start (); 42 | } 43 | 44 | public static void stopServer () { 45 | service.stop (); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/browser/TheInternetPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.browser; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 6 | 7 | public class TheInternetPage { 8 | 9 | public void navigateToInternetWebsite() { 10 | getDriver().navigate().to("https://the-internet.herokuapp.com/"); 11 | } 12 | 13 | public String getPageHeader() { 14 | return getDriver().findElement(By.tagName("h1")).getText(); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/proverbial/Notifications.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.proverbial; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.WebElement; 5 | 6 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 7 | 8 | public class Notifications { 9 | 10 | 11 | private WebElement expandNotificationBtn() { 12 | return getDriver().findElements(AppiumBy.id("android:id/expand_button_touch_container")).get(0); 13 | } 14 | 15 | private WebElement notificationBtn() { 16 | return getDriver().findElement(AppiumBy.id("com.lambdatest.proverbial:id/notification")); 17 | } 18 | 19 | private WebElement notificationBar() { 20 | return getDriver().findElement(AppiumBy.id("com.lambdatest.proverbial:id/action_bar")); 21 | 22 | } 23 | 24 | public void openNotificationPanel() { 25 | getDriver().openNotifications(); 26 | } 27 | 28 | public boolean checkNotificationIsDisplayed() { 29 | notificationBtn().click(); 30 | return notificationBar().isDisplayed(); 31 | } 32 | 33 | public String getAppNotificationTitle() { 34 | expandNotificationBtn().click(); 35 | return getDriver().findElements(AppiumBy.id("android:id/app_name_text")).get(0).getText(); 36 | } 37 | 38 | public String getNotificationTitle() { 39 | return getDriver().findElement(AppiumBy.id("android:id/title")).getText(); 40 | } 41 | 42 | public String getNotificationText() { 43 | return getDriver().findElement(AppiumBy.id("android:id/text")).getText(); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/wdio/DragPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.wdio; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.Point; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.interactions.Pause; 7 | import org.openqa.selenium.interactions.PointerInput; 8 | import org.openqa.selenium.interactions.Sequence; 9 | 10 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 11 | import static java.time.Duration.ofMillis; 12 | import static java.util.Collections.singletonList; 13 | 14 | public class DragPage { 15 | 16 | private WebElement dragLeft1() { 17 | return getDriver().findElement(AppiumBy.accessibilityId("drag-l1")); 18 | } 19 | 20 | private WebElement dropLeft1() { 21 | return getDriver().findElement(AppiumBy.accessibilityId("drop-l1")); 22 | } 23 | 24 | private WebElement dragLeft2() { 25 | return getDriver().findElement(AppiumBy.accessibilityId("drag-l2")); 26 | } 27 | 28 | private WebElement dropLeft2() { 29 | return getDriver().findElement(AppiumBy.accessibilityId("drop-l2")); 30 | } 31 | 32 | private WebElement dragLeft3() { 33 | return getDriver().findElement(AppiumBy.accessibilityId("drag-l3")); 34 | } 35 | 36 | private WebElement dropLeft3() { 37 | return getDriver().findElement(AppiumBy.accessibilityId("drop-l3")); 38 | } 39 | 40 | private WebElement dragRight1() { 41 | return getDriver().findElement(AppiumBy.accessibilityId("drag-r1")); 42 | } 43 | 44 | private WebElement dropRight1() { 45 | return getDriver().findElement(AppiumBy.accessibilityId("drop-r1")); 46 | } 47 | 48 | private WebElement dragRight2() { 49 | return getDriver().findElement(AppiumBy.accessibilityId("drag-r2")); 50 | } 51 | 52 | private WebElement dropRight2() { 53 | return getDriver().findElement(AppiumBy.accessibilityId("drop-r2")); 54 | } 55 | 56 | private WebElement dragRight3() { 57 | return getDriver().findElement(AppiumBy.accessibilityId("drag-r3")); 58 | } 59 | 60 | private WebElement dropRight3() { 61 | return getDriver().findElement(AppiumBy.accessibilityId("drop-r3")); 62 | } 63 | 64 | private WebElement dragCenter1() { 65 | return getDriver().findElement(AppiumBy.accessibilityId("drag-c1")); 66 | } 67 | 68 | private WebElement dropCenter1() { 69 | return getDriver().findElement(AppiumBy.accessibilityId("drop-c1")); 70 | } 71 | 72 | private WebElement dragCenter2() { 73 | return getDriver().findElement(AppiumBy.accessibilityId("drag-c2")); 74 | } 75 | 76 | private WebElement dropCenter2() { 77 | return getDriver().findElement(AppiumBy.accessibilityId("drop-c2")); 78 | } 79 | 80 | private WebElement dragCenter3() { 81 | return getDriver().findElement(AppiumBy.accessibilityId("drag-c3")); 82 | } 83 | 84 | private WebElement dropCenter3() { 85 | return getDriver().findElement(AppiumBy.accessibilityId("drop-c3")); 86 | } 87 | 88 | 89 | private Point getElementCenter(WebElement element) { 90 | var location = element.getLocation(); 91 | var size = element.getSize(); 92 | 93 | return new Point(location.getX() + (size.getWidth() / 2), location.getY() + (size.getHeight() / 2)); 94 | 95 | } 96 | 97 | private void dragAndDrop(WebElement dragMe, WebElement dropTo) { 98 | Point source = getElementCenter(dragMe); 99 | Point target = getElementCenter(dropTo); 100 | 101 | PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); 102 | Sequence dragAndDrop = new Sequence(finger, 1); 103 | dragAndDrop.addAction(finger.createPointerMove(ofMillis(0), PointerInput.Origin.viewport(), source.x, source.y)); 104 | dragAndDrop.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); 105 | dragAndDrop.addAction(new Pause(finger, ofMillis(600))); 106 | dragAndDrop.addAction(finger.createPointerMove(ofMillis(600), 107 | PointerInput.Origin.viewport(), 108 | target.x, target.y)); 109 | dragAndDrop.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); 110 | getDriver().perform(singletonList(dragAndDrop)); 111 | } 112 | 113 | public void dragAndDropPrices() { 114 | HomePage homePage = new HomePage(); 115 | homePage.openMenu("Drag"); 116 | dragAndDrop(dragLeft1(), dropLeft1()); 117 | dragAndDrop(dragLeft2(), dropLeft2()); 118 | dragAndDrop(dragLeft3(), dropLeft3()); 119 | dragAndDrop(dragRight1(), dropRight1()); 120 | dragAndDrop(dragRight2(), dropRight2()); 121 | dragAndDrop(dragRight3(), dropRight3()); 122 | dragAndDrop(dragCenter1(), dropCenter1()); 123 | dragAndDrop(dragCenter2(), dropCenter2()); 124 | dragAndDrop(dragCenter3(), dropCenter3()); 125 | } 126 | 127 | public String congratulationsText() { 128 | return getDriver().findElement(AppiumBy.androidUIAutomator("new UiSelector().text(\"Congratulations\")")).getText(); 129 | } 130 | 131 | } 132 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/wdio/FormPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.wdio; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.WebElement; 5 | 6 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 7 | 8 | public class FormPage { 9 | 10 | private WebElement switchBtn() { 11 | return getDriver().findElement(AppiumBy.accessibilityId("switch")); 12 | } 13 | 14 | public String getSwitchText() { 15 | return getDriver().findElement(AppiumBy.accessibilityId("switch-text")).getText(); 16 | } 17 | 18 | private WebElement dropdownField() { 19 | return getDriver().findElement(AppiumBy.accessibilityId("Dropdown")); 20 | } 21 | 22 | private void selectDropdownValue(int option) { 23 | getDriver().findElements(AppiumBy.id("android:id/text1")).get(option).click(); 24 | } 25 | 26 | public String getSelectedDropdownValue() { 27 | return getDriver().findElements(AppiumBy.className("android.widget.EditText")).get(1).getText(); 28 | } 29 | 30 | private WebElement activeBtn() { 31 | return getDriver().findElement(AppiumBy.accessibilityId("button-Active")); 32 | } 33 | 34 | public String getActiveMessageTitle() { 35 | return getDriver().findElement(AppiumBy.id("android:id/alertTitle")).getText(); 36 | } 37 | 38 | public String getActiveMessage() { 39 | return getDriver().findElement(AppiumBy.id("android:id/message")).getText(); 40 | } 41 | 42 | private WebElement okBtn() { 43 | return getDriver().findElement(AppiumBy.id("android:id/button1")); 44 | } 45 | 46 | private WebElement inActiveBtn() { 47 | return getDriver().findElement(AppiumBy.accessibilityId("button-Inactive")); 48 | } 49 | 50 | public void fillForm(String input, int option) { 51 | HomePage homePage = new HomePage(); 52 | homePage.openMenu("Forms"); 53 | inputField().sendKeys(input); 54 | switchBtn().click(); 55 | dropdownField().click(); 56 | selectDropdownValue(option); 57 | } 58 | 59 | public void submitForm() { 60 | activeBtn().click(); 61 | } 62 | 63 | public String checkInActiveBtn() { 64 | return inActiveBtn().getAttribute("long-clickable"); 65 | } 66 | 67 | public void closeMessage() { 68 | okBtn().click(); 69 | } 70 | 71 | public String getInputText() { 72 | return getDriver().findElement(AppiumBy.accessibilityId("input-text-result")).getText(); 73 | } 74 | 75 | private WebElement inputField() { 76 | return getDriver().findElement(AppiumBy.accessibilityId("text-input")); 77 | } 78 | 79 | 80 | } 81 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/wdio/HomePage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.wdio; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.support.ui.ExpectedConditions; 5 | import org.openqa.selenium.support.ui.WebDriverWait; 6 | 7 | import java.time.Duration; 8 | 9 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 10 | 11 | /** 12 | * @author Faisal Khatri 13 | * @since 2/23/2023 14 | **/ 15 | public class HomePage { 16 | 17 | private final WebDriverWait wait; 18 | 19 | public HomePage() { 20 | wait = new WebDriverWait(getDriver(), Duration.ofSeconds(10)); 21 | } 22 | 23 | public String getTitle() { 24 | return wait.until(ExpectedConditions.visibilityOfElementLocated 25 | (AppiumBy.androidUIAutomator("new UiSelector().text(\"WEBDRIVER\")"))).getText(); 26 | } 27 | 28 | void openMenu(String menuName) { 29 | getDriver().findElement(AppiumBy.accessibilityId(menuName)).click(); 30 | 31 | } 32 | 33 | public String tagLine() { 34 | return wait.until(ExpectedConditions.visibilityOfElementLocated( 35 | AppiumBy.androidUIAutomator("new UiSelector().text(\"Demo app for the appium-boilerplate\")")) 36 | ).getText(); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/wdio/SignUpPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.wdio; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.WebElement; 5 | 6 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 7 | 8 | /** 9 | * @author Faisal Khatri 10 | * @since 2/25/2023 11 | **/ 12 | public class SignUpPage { 13 | 14 | 15 | private WebElement signUpLink() { 16 | return getDriver().findElement(AppiumBy.accessibilityId("button-sign-up-container")); 17 | } 18 | 19 | private WebElement emailField() { 20 | return getDriver().findElement(AppiumBy.accessibilityId("input-email")); 21 | } 22 | 23 | private WebElement passwordField() { 24 | return getDriver().findElement(AppiumBy.accessibilityId("input-password")); 25 | } 26 | 27 | private WebElement confirmPasswordField() { 28 | return getDriver().findElement(AppiumBy.accessibilityId("input-repeat-password")); 29 | } 30 | 31 | private WebElement signUpBtn() { 32 | return getDriver().findElement(AppiumBy.accessibilityId("button-SIGN UP")); 33 | } 34 | 35 | public String getSuccessMessageTitle() { 36 | return getDriver().findElement(AppiumBy.id("android:id/alertTitle")).getText(); 37 | } 38 | 39 | public String getSuccessMessage() { 40 | return getDriver().findElement(AppiumBy.id("android:id/message")).getText(); 41 | } 42 | 43 | private WebElement okBtn() { 44 | return getDriver().findElement(AppiumBy.id("android:id/button1")); 45 | } 46 | 47 | private void openSignUpForm() { 48 | signUpLink().click(); 49 | } 50 | 51 | public void signUp(String email, String password) { 52 | HomePage homePage = new HomePage(); 53 | homePage.openMenu("Login"); 54 | openSignUpForm(); 55 | emailField().sendKeys(email); 56 | passwordField().sendKeys(password); 57 | confirmPasswordField().sendKeys(password); 58 | signUpBtn().click(); 59 | } 60 | 61 | public void closeSuccessMessage() { 62 | okBtn().click(); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/wdio/SwipePage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.wdio; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.Point; 5 | import org.openqa.selenium.TimeoutException; 6 | import org.openqa.selenium.WebElement; 7 | import org.openqa.selenium.interactions.Pause; 8 | import org.openqa.selenium.interactions.PointerInput; 9 | import org.openqa.selenium.interactions.Sequence; 10 | import org.openqa.selenium.support.ui.ExpectedConditions; 11 | import org.openqa.selenium.support.ui.WebDriverWait; 12 | 13 | import java.time.Duration; 14 | import java.util.List; 15 | 16 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 17 | 18 | public class SwipePage { 19 | 20 | 21 | public SwipePage() { 22 | HomePage homePage = new HomePage(); 23 | homePage.openMenu("Swipe"); 24 | } 25 | 26 | public void performHorizontalSwipe() { 27 | 28 | WebElement sourceElement = getDriver().findElement(AppiumBy.xpath("(//android.view.ViewGroup[@content-desc=\"card\"])[1]")); 29 | 30 | Point source = sourceElement.getLocation(); 31 | PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); 32 | Sequence swipe = new Sequence(finger, 1); 33 | swipe.addAction( 34 | finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), source.x, source.y)); 35 | swipe.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); 36 | swipe.addAction( 37 | finger.createPointerMove(Duration.ofMillis(1000), PointerInput.Origin.viewport(), source.x - (source.x * 5), source.y)); 38 | swipe.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); 39 | swipe.addAction(new Pause(finger, Duration.ofMillis(600))); 40 | getDriver() 41 | .perform(List.of(swipe)); 42 | 43 | } 44 | 45 | public void performVerticalSwipe() { 46 | var screenSize = getDriver() 47 | .manage() 48 | .window() 49 | .getSize(); 50 | var xCenter = screenSize.width / 2; 51 | var yCenter = screenSize.height / 2; 52 | var center = new Point(xCenter, yCenter); 53 | 54 | PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); 55 | Sequence swipe = new Sequence(finger, 1); 56 | swipe.addAction( 57 | finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), center.x, center.y)); 58 | swipe.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); 59 | swipe.addAction( 60 | finger.createPointerMove(Duration.ofMillis(1000), PointerInput.Origin.viewport(), center.x, center.y - (center.y * 80 / 100))); 61 | swipe.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); 62 | swipe.addAction(new Pause(finger, Duration.ofMillis(1000))); 63 | getDriver() 64 | .perform(List.of(swipe)); 65 | 66 | } 67 | 68 | public String swipeAndFindElement() { 69 | WebElement targetElement = getDriver().findElement(AppiumBy.androidUIAutomator 70 | ("new UiScrollable(new UiSelector()" + 71 | ".scrollable(true)).scrollIntoView(new UiSelector().text(\"You found me!!!\"))")); 72 | return targetElement.getText(); 73 | } 74 | 75 | public String swipeTillElement() { 76 | WebDriverWait wait = new WebDriverWait(getDriver(), Duration.ofSeconds(1)); 77 | 78 | WebElement targetElement = null; 79 | boolean found = false; 80 | while (!found) { 81 | try { 82 | targetElement = wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy. 83 | androidUIAutomator("new UiSelector().text(\"You found me!!!\")"))); 84 | found = true; 85 | } catch (TimeoutException e) { 86 | performVerticalSwipe(); 87 | } 88 | } 89 | return targetElement.getText(); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/pages/wdio/WebViewPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.pages.wdio; 2 | 3 | import io.github.mfaisalkhatri.drivers.AndroidDriverManager; 4 | import org.openqa.selenium.By; 5 | import org.openqa.selenium.support.ui.WebDriverWait; 6 | 7 | import java.time.Duration; 8 | import java.util.Set; 9 | 10 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.getDriver; 11 | 12 | /** 13 | * @author Faisal Khatri 14 | * @since 3/22/2023 15 | **/ 16 | public class WebViewPage { 17 | 18 | 19 | public void switchToWebView() {// 20 | Set contextNames = getDriver().getContextHandles(); 21 | WebDriverWait wait = new WebDriverWait(AndroidDriverManager.getDriver(), Duration.ofSeconds(20)); 22 | 23 | wait.until(d -> contextNames.size() > 1); 24 | //getDriver().context("WEBVIEW"); 25 | getDriver().context(contextNames.toArray()[1].toString()); 26 | } 27 | 28 | public void switchToNativeApp() { 29 | getDriver().context("NATIVE_APP"); 30 | } 31 | 32 | public String getMainPageText() { 33 | HomePage homePage = new HomePage(); 34 | homePage.openMenu("Webview"); 35 | switchToWebView(); 36 | return getDriver().findElement(By.cssSelector("header > div > p")) 37 | .getText(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/tests/AndroidTests.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.tests; 2 | 3 | import static org.testng.Assert.assertEquals; 4 | import static org.testng.Assert.assertTrue; 5 | 6 | import io.github.mfaisalkhatri.android.pages.browser.TheInternetPage; 7 | import io.github.mfaisalkhatri.android.pages.proverbial.Notifications; 8 | import io.github.mfaisalkhatri.android.pages.wdio.DragPage; 9 | import io.github.mfaisalkhatri.android.pages.wdio.FormPage; 10 | import io.github.mfaisalkhatri.android.pages.wdio.HomePage; 11 | import io.github.mfaisalkhatri.android.pages.wdio.SignUpPage; 12 | import io.github.mfaisalkhatri.android.pages.wdio.SwipePage; 13 | import io.github.mfaisalkhatri.android.pages.wdio.WebViewPage; 14 | import org.testng.annotations.Test; 15 | 16 | /** 17 | * @author Faisal Khatri 18 | * @since 10/13/2022 19 | **/ 20 | public class AndroidTests extends BaseTest { 21 | 22 | @Test 23 | public void testChrome () { 24 | final TheInternetPage theInternetPage = new TheInternetPage (); 25 | theInternetPage.navigateToInternetWebsite (); 26 | assertEquals (theInternetPage.getPageHeader (), "Welcome to the-internet"); 27 | } 28 | 29 | @Test 30 | public void testDragAndDrop () { 31 | final DragPage dragPage = new DragPage (); 32 | dragPage.dragAndDropPrices (); 33 | assertEquals (dragPage.congratulationsText (), "Congratulations"); 34 | } 35 | 36 | @Test 37 | public void testFirefoxBrowser () { 38 | final TheInternetPage theInternetPage = new TheInternetPage (); 39 | theInternetPage.navigateToInternetWebsite (); 40 | assertEquals (theInternetPage.getPageHeader (), "Welcome to the-internet"); 41 | } 42 | 43 | @Test 44 | public void testForm () { 45 | final String inputText = "This is Appium Test"; 46 | final FormPage formPage = new FormPage (); 47 | formPage.fillForm (inputText, 2); 48 | assertEquals (formPage.getInputText (), inputText); 49 | assertEquals (formPage.getSwitchText (), "Click to turn the switch OFF"); 50 | assertEquals (formPage.getSelectedDropdownValue (), "Appium is awesome"); 51 | formPage.submitForm (); 52 | 53 | assertEquals (formPage.getActiveMessageTitle (), "This button is"); 54 | assertEquals (formPage.getActiveMessage (), "This button is active"); 55 | formPage.closeMessage (); 56 | 57 | assertEquals (formPage.checkInActiveBtn (), "false"); 58 | 59 | } 60 | 61 | @Test 62 | public void testHomePageTitle () { 63 | final HomePage homePage = new HomePage (); 64 | assertEquals (homePage.getTitle (), "WEBDRIVER"); 65 | assertEquals (homePage.tagLine (), "Demo app for the appium-boilerplate"); 66 | } 67 | 68 | @Test 69 | public void testNotification () { 70 | final Notifications notifications = new Notifications (); 71 | assertTrue (notifications.checkNotificationIsDisplayed ()); 72 | notifications.openNotificationPanel (); 73 | 74 | assertEquals (notifications.getAppNotificationTitle (), "Proverbial"); 75 | assertEquals (notifications.getNotificationTitle (), "Test Notification"); 76 | assertEquals (notifications.getNotificationText (), "Please enjoy this notification"); 77 | } 78 | 79 | @Test 80 | public void testSignUp () { 81 | final SignUpPage signUpPage = new SignUpPage (); 82 | signUpPage.signUp ("test@email.com", "Pass@12345"); 83 | assertEquals (signUpPage.getSuccessMessageTitle (), "Signed Up!"); 84 | assertEquals (signUpPage.getSuccessMessage (), "You successfully signed up!"); 85 | signUpPage.closeSuccessMessage (); 86 | } 87 | 88 | @Test 89 | public void testSwipeOnElement () { 90 | final SwipePage swipePage = new SwipePage (); 91 | swipePage.performHorizontalSwipe (); 92 | swipePage.performVerticalSwipe (); 93 | 94 | } 95 | 96 | @Test 97 | public void testSwipeTillElement () { 98 | 99 | final SwipePage swipePage = new SwipePage (); 100 | assertEquals (swipePage.swipeTillElement (), "You found me!!!"); 101 | } 102 | 103 | @Test 104 | public void testSwipeUsingScrollIntoView () { 105 | final SwipePage swipePage = new SwipePage (); 106 | assertEquals (swipePage.swipeAndFindElement (), "You found me!!!"); 107 | } 108 | 109 | @Test 110 | public void testWebView () { 111 | final WebViewPage webViewPage = new WebViewPage (); 112 | 113 | assertEquals (webViewPage.getMainPageText (), 114 | "Next-gen browser and mobile automation test framework for Node.js"); 115 | webViewPage.switchToNativeApp (); 116 | } 117 | 118 | } -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/android/tests/BaseTest.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.android.tests; 2 | 3 | import org.testng.annotations.AfterClass; 4 | import org.testng.annotations.BeforeClass; 5 | 6 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.createAndroidDriver; 7 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.quitSession; 8 | 9 | /** 10 | * @author Faisal Khatri 11 | * @since 10/14/2022 12 | **/ 13 | public class BaseTest { 14 | 15 | @BeforeClass(alwaysRun = true) 16 | public void testSetup() { 17 | createAndroidDriver(); 18 | } 19 | 20 | @AfterClass(alwaysRun = true) 21 | public void tearDown() { 22 | quitSession(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/pages/DragPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.pages; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.Point; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.interactions.Pause; 7 | import org.openqa.selenium.interactions.PointerInput; 8 | import org.openqa.selenium.interactions.Sequence; 9 | 10 | import static io.github.mfaisalkhatri.drivers.IOSDriverManager.getDriver; 11 | import static java.time.Duration.ofMillis; 12 | import static java.util.Collections.singletonList; 13 | 14 | public class DragPage { 15 | 16 | private WebElement dragLeft1() { 17 | return getDriver().findElement(AppiumBy.accessibilityId("drag-l1")); 18 | } 19 | 20 | private WebElement dropLeft1() { 21 | return getDriver().findElement(AppiumBy.accessibilityId("drop-l1")); 22 | } 23 | 24 | private WebElement dragLeft2() { 25 | return getDriver().findElement(AppiumBy.accessibilityId("drag-l2")); 26 | } 27 | 28 | private WebElement dropLeft2() { 29 | return getDriver().findElement(AppiumBy.accessibilityId("drop-l2")); 30 | } 31 | 32 | private WebElement dragLeft3() { 33 | return getDriver().findElement(AppiumBy.accessibilityId("drag-l3")); 34 | } 35 | 36 | private WebElement dropLeft3() { 37 | return getDriver().findElement(AppiumBy.accessibilityId("drop-l3")); 38 | } 39 | 40 | private WebElement dragRight1() { 41 | return getDriver().findElement(AppiumBy.accessibilityId("drag-r1")); 42 | } 43 | 44 | private WebElement dropRight1() { 45 | return getDriver().findElement(AppiumBy.accessibilityId("drop-r1")); 46 | } 47 | 48 | private WebElement dragRight2() { 49 | return getDriver().findElement(AppiumBy.accessibilityId("drag-r2")); 50 | } 51 | 52 | private WebElement dropRight2() { 53 | return getDriver().findElement(AppiumBy.accessibilityId("drop-r2")); 54 | } 55 | 56 | private WebElement dragRight3() { 57 | return getDriver().findElement(AppiumBy.accessibilityId("drag-r3")); 58 | } 59 | 60 | private WebElement dropRight3() { 61 | return getDriver().findElement(AppiumBy.accessibilityId("drop-r3")); 62 | } 63 | 64 | private WebElement dragCenter1() { 65 | return getDriver().findElement(AppiumBy.accessibilityId("drag-c1")); 66 | } 67 | 68 | private WebElement dropCenter1() { 69 | return getDriver().findElement(AppiumBy.accessibilityId("drop-c1")); 70 | } 71 | 72 | private WebElement dragCenter2() { 73 | return getDriver().findElement(AppiumBy.accessibilityId("drag-c2")); 74 | } 75 | 76 | private WebElement dropCenter2() { 77 | return getDriver().findElement(AppiumBy.accessibilityId("drop-c2")); 78 | } 79 | 80 | private WebElement dragCenter3() { 81 | return getDriver().findElement(AppiumBy.accessibilityId("drag-c3")); 82 | } 83 | 84 | private WebElement dropCenter3() { 85 | return getDriver().findElement(AppiumBy.accessibilityId("drop-c3")); 86 | } 87 | 88 | 89 | private Point getElementCenter(WebElement element) { 90 | var location = element.getLocation(); 91 | var size = element.getSize(); 92 | 93 | return new Point(location.getX() + (size.getWidth() / 2), location.getY() + (size.getHeight() / 2)); 94 | 95 | } 96 | 97 | private void dragAndDrop(WebElement dragMe, WebElement dropTo) { 98 | Point source = getElementCenter(dragMe); 99 | Point target = getElementCenter(dropTo); 100 | 101 | PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); 102 | Sequence dragAndDrop = new Sequence(finger, 1); 103 | dragAndDrop.addAction(finger.createPointerMove(ofMillis(0), PointerInput.Origin.viewport(), source.x, source.y)); 104 | dragAndDrop.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); 105 | dragAndDrop.addAction(new Pause(finger, ofMillis(600))); 106 | dragAndDrop.addAction(finger.createPointerMove(ofMillis(600), 107 | PointerInput.Origin.viewport(), 108 | target.x, target.y)); 109 | dragAndDrop.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); 110 | getDriver().perform(singletonList(dragAndDrop)); 111 | } 112 | 113 | public void dragAndDropPrices() { 114 | HomePage homePage = new HomePage(); 115 | homePage.openMenu("Drag"); 116 | dragAndDrop(dragLeft1(), dropLeft1()); 117 | dragAndDrop(dragLeft2(), dropLeft2()); 118 | dragAndDrop(dragLeft3(), dropLeft3()); 119 | dragAndDrop(dragRight1(), dropRight1()); 120 | dragAndDrop(dragRight2(), dropRight2()); 121 | dragAndDrop(dragRight3(), dropRight3()); 122 | dragAndDrop(dragCenter1(), dropCenter1()); 123 | dragAndDrop(dragCenter2(), dropCenter2()); 124 | dragAndDrop(dragCenter3(), dropCenter3()); 125 | } 126 | 127 | public String congratulationsText() { 128 | return getDriver().findElement(AppiumBy.accessibilityId("Congratulations You made it, click retry if you want to try it again. Retry")).getText(); 129 | } 130 | 131 | } 132 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/pages/FormPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.pages; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.WebElement; 5 | 6 | import static io.github.mfaisalkhatri.drivers.IOSDriverManager.getDriver; 7 | 8 | 9 | public class FormPage { 10 | 11 | private WebElement switchBtn() { 12 | return getDriver().findElement(AppiumBy.accessibilityId("switch")); 13 | } 14 | 15 | public String getSwitchText() { 16 | return getDriver().findElement(AppiumBy.accessibilityId("switch-text")).getText(); 17 | } 18 | 19 | private WebElement dropdownField() { 20 | return getDriver().findElement(AppiumBy.accessibilityId("text_input")); 21 | } 22 | 23 | private void selectDropdownValue(String option) { 24 | getDriver().findElement(AppiumBy.iOSClassChain("**/XCUIElementTypePickerWheel[`value == \"Select an item...\"`]")).sendKeys(option); 25 | } 26 | 27 | public String getDropdownValue() { 28 | return dropdownField().getAttribute("value"); 29 | } 30 | 31 | private WebElement doneBtn() { 32 | return getDriver().findElement(AppiumBy.accessibilityId("done_button")); 33 | } 34 | 35 | private WebElement activeBtn() { 36 | return getDriver().findElement(AppiumBy.accessibilityId("button-Active")); 37 | } 38 | 39 | public String getActiveMessageTitle() { 40 | return getDriver().findElement(AppiumBy.iOSClassChain("**/XCUIElementTypeStaticText[`label == \"This button is\"`]")).getText(); 41 | } 42 | 43 | public String getActiveMessage() { 44 | return getDriver().findElement(AppiumBy.accessibilityId("This button is active")).getText(); 45 | } 46 | 47 | private WebElement okBtn() { 48 | return getDriver().findElement(AppiumBy.accessibilityId("OK")); 49 | } 50 | 51 | private WebElement inActiveBtn() { 52 | return getDriver().findElement(AppiumBy.accessibilityId("button-Inactive")); 53 | } 54 | 55 | public void fillForm(String input, String option) { 56 | HomePage homePage = new HomePage(); 57 | homePage.openMenu("Forms"); 58 | inputField().sendKeys(input); 59 | switchBtn().click(); 60 | dropdownField().click(); 61 | selectDropdownValue(option); 62 | doneBtn().click(); 63 | } 64 | 65 | public void submitForm() { 66 | activeBtn().click(); 67 | } 68 | 69 | public String checkInActiveBtn() { 70 | return inActiveBtn().getAttribute("accessible"); 71 | } 72 | 73 | public void closeMessage() { 74 | okBtn().click(); 75 | } 76 | 77 | public String getInputText() { 78 | return getDriver().findElement(AppiumBy.accessibilityId("input-text-result")).getText(); 79 | } 80 | 81 | private WebElement inputField() { 82 | return getDriver().findElement(AppiumBy.accessibilityId("text-input")); 83 | } 84 | 85 | 86 | } 87 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/pages/HomePage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.pages; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.support.ui.ExpectedConditions; 5 | import org.openqa.selenium.support.ui.WebDriverWait; 6 | 7 | import java.time.Duration; 8 | 9 | import static io.github.mfaisalkhatri.drivers.IOSDriverManager.getDriver; 10 | 11 | public class HomePage { 12 | 13 | private final WebDriverWait wait; 14 | 15 | public HomePage() { 16 | this.wait = new WebDriverWait(getDriver(), Duration.ofSeconds(10)); 17 | } 18 | 19 | public String getTitle() { 20 | return this.wait.until(ExpectedConditions.visibilityOfElementLocated 21 | (AppiumBy.iOSClassChain("**/XCUIElementTypeStaticText[`label == \"WEBDRIVER\"`]"))).getText(); 22 | } 23 | 24 | public void openMenu(final String menuName) { 25 | getDriver().findElement(AppiumBy.accessibilityId(menuName)).click(); 26 | 27 | } 28 | 29 | public String tagLine() { 30 | return this.wait.until(ExpectedConditions.visibilityOfElementLocated( 31 | AppiumBy.accessibilityId("Demo app for the appium-boilerplate"))).getText(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/pages/SwipePage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.pages; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import org.openqa.selenium.JavascriptExecutor; 5 | import org.openqa.selenium.Point; 6 | import org.openqa.selenium.TimeoutException; 7 | import org.openqa.selenium.WebElement; 8 | import org.openqa.selenium.interactions.Pause; 9 | import org.openqa.selenium.interactions.PointerInput; 10 | import org.openqa.selenium.interactions.Sequence; 11 | import org.openqa.selenium.remote.RemoteWebElement; 12 | import org.openqa.selenium.support.ui.ExpectedConditions; 13 | import org.openqa.selenium.support.ui.WebDriverWait; 14 | 15 | import java.time.Duration; 16 | import java.util.HashMap; 17 | import java.util.List; 18 | import java.util.Map; 19 | 20 | import static io.github.mfaisalkhatri.drivers.IOSDriverManager.getDriver; 21 | 22 | public class SwipePage { 23 | 24 | 25 | public SwipePage() { 26 | HomePage homePage = new HomePage(); 27 | homePage.openMenu("Swipe"); 28 | } 29 | 30 | public void performHorizontalSwipe() { 31 | 32 | WebElement sourceElement = getDriver().findElement(AppiumBy.xpath("(//XCUIElementTypeOther[@name=\"card\"])[1]")); 33 | 34 | Point source = sourceElement.getLocation(); 35 | PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); 36 | Sequence swipe = new Sequence(finger, 1); 37 | swipe.addAction( 38 | finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), source.x, source.y)); 39 | swipe.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); 40 | swipe.addAction( 41 | finger.createPointerMove(Duration.ofMillis(1000), PointerInput.Origin.viewport(), source.x - (source.x * 5), source.y)); 42 | swipe.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); 43 | swipe.addAction(new Pause(finger, Duration.ofMillis(600))); 44 | getDriver() 45 | .perform(List.of(swipe)); 46 | 47 | } 48 | 49 | public void performVerticalSwipe() { 50 | var screenSize = getDriver() 51 | .manage() 52 | .window() 53 | .getSize(); 54 | var xCenter = screenSize.width / 2; 55 | var yCenter = screenSize.height / 2; 56 | var center = new Point(xCenter, yCenter); 57 | 58 | PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); 59 | Sequence swipe = new Sequence(finger, 1); 60 | swipe.addAction( 61 | finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), center.x, center.y)); 62 | swipe.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); 63 | swipe.addAction( 64 | finger.createPointerMove(Duration.ofMillis(1000), PointerInput.Origin.viewport(), center.x, center.y - (center.y * 80 / 100))); 65 | swipe.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); 66 | swipe.addAction(new Pause(finger, Duration.ofMillis(1000))); 67 | getDriver() 68 | .perform(List.of(swipe)); 69 | 70 | } 71 | 72 | public String swipeAndFindElement() { 73 | JavascriptExecutor js = getDriver(); 74 | Map params = new HashMap<>(); 75 | params.put("direction", "up"); 76 | WebElement element = getDriver().findElement(AppiumBy. 77 | iOSClassChain("**/XCUIElementTypeStaticText[`label == \"You found me!!!\"`]")); 78 | params.put("element", ((RemoteWebElement) element).getId()); 79 | js.executeScript("mobile: scrollToElement", params); 80 | 81 | return element.getText(); 82 | } 83 | 84 | public String swipeTillElement() { 85 | WebDriverWait wait = new WebDriverWait(getDriver(), Duration.ofSeconds(1)); 86 | 87 | WebElement targetElement = null; 88 | boolean found = false; 89 | while (!found) { 90 | try { 91 | targetElement = wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy. 92 | iOSClassChain("**/XCUIElementTypeStaticText[`label == \"You found me!!!\"`]"))); 93 | found = true; 94 | } catch (TimeoutException e) { 95 | performVerticalSwipe(); 96 | } 97 | } 98 | return targetElement.getText(); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/pages/WebViewPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.pages; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.support.ui.WebDriverWait; 5 | 6 | import java.time.Duration; 7 | import java.util.Set; 8 | 9 | import static io.github.mfaisalkhatri.drivers.IOSDriverManager.getDriver; 10 | 11 | /** 12 | * @author Faisal Khatri 13 | * @since 4/16/2023 14 | **/ 15 | public class WebViewPage { 16 | 17 | 18 | public void switchToWebView() { 19 | Set contextNames = getDriver().getContextHandles(); 20 | WebDriverWait wait = new WebDriverWait(getDriver(), Duration.ofSeconds(10)); 21 | wait.until(d -> contextNames.size() > 1); 22 | getDriver().context(contextNames.toArray()[1].toString()); 23 | //getDriver().context("WEBVIEW_com.wdiodemoapp"); 24 | } 25 | 26 | public void switchToNativeApp() { 27 | getDriver().context("NATIVE_APP"); 28 | } 29 | 30 | public String getMainPageText() { 31 | HomePage homePage = new HomePage(); 32 | homePage.openMenu("Webview"); 33 | switchToWebView(); 34 | return getDriver().findElement(By.cssSelector("header > div > p")) 35 | .getText(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/demo/BaseTest.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.demo; 2 | 3 | import io.appium.java_client.ios.IOSDriver; 4 | import io.appium.java_client.ios.options.XCUITestOptions; 5 | import io.appium.java_client.remote.AutomationName; 6 | import org.testng.annotations.AfterSuite; 7 | import org.testng.annotations.BeforeClass; 8 | import org.testng.annotations.Parameters; 9 | 10 | import java.net.MalformedURLException; 11 | import java.net.URL; 12 | import java.nio.file.Path; 13 | import java.time.Duration; 14 | 15 | public class BaseTest { 16 | 17 | private static final ThreadLocal IOSDRIVER = new ThreadLocal<>(); 18 | private static final String APP_PATH = String.valueOf(Path.of(System.getProperty("user.dir"), "/src/test/resources/app", "wdioNativeDemoApp.app")); 19 | 20 | @BeforeClass(alwaysRun = true) 21 | @Parameters({"devicename", "udid", "platformversion", "wdaLocalPort"}) 22 | public void testFormOnIPhone(final String deviceName, final String udid, final String platformVersion, final int wdaLocalPort) { 23 | final XCUITestOptions xcuiTestOptions = new XCUITestOptions().setPlatformName("iOS") 24 | .setDeviceName(deviceName) 25 | .setPlatformVersion(platformVersion) 26 | .setUdid(udid) 27 | .setWdaLocalPort(wdaLocalPort) 28 | .setApp(APP_PATH) 29 | .setAutomationName(AutomationName.IOS_XCUI_TEST) 30 | .setNewCommandTimeout(Duration.ofSeconds(60)) 31 | .setNoReset(false); 32 | 33 | try { 34 | IOSDRIVER.set(new IOSDriver(new URL("http://localhost:4723"), xcuiTestOptions)); 35 | } catch (final MalformedURLException e) { 36 | throw new Error("Remote URL is not set correctly!"); 37 | } 38 | } 39 | 40 | public IOSDriver getIOSDriver() { 41 | return IOSDRIVER.get(); 42 | } 43 | 44 | @AfterSuite(alwaysRun = true) 45 | public void tearDown() { 46 | getIOSDriver().quit(); 47 | } 48 | } -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/demo/IOSParallelTests.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.demo; 2 | 3 | import io.github.mfaisalkhatri.ios.paralleltests.pages.FormPage; 4 | import org.testng.annotations.Test; 5 | 6 | import static org.testng.Assert.assertEquals; 7 | 8 | public class IOSParallelTests extends BaseTest { 9 | 10 | @Test 11 | public void testForm() { 12 | 13 | final String inputText = "This is Appium Test"; 14 | final String dropdownValue = "This app is awesome"; 15 | 16 | final FormPage formPage = new FormPage(getIOSDriver()); 17 | formPage.fillForm(inputText, dropdownValue); 18 | assertEquals(formPage.getInputText(), inputText); 19 | assertEquals(formPage.getSwitchText(), "Click to turn the switch OFF"); 20 | assertEquals(formPage.getDropdownValue(), dropdownValue); 21 | formPage.submitForm(); 22 | 23 | assertEquals(formPage.getActiveMessageTitle(), "This button is"); 24 | assertEquals(formPage.getActiveMessage(), "This button is active"); 25 | formPage.closeMessage(); 26 | 27 | assertEquals(formPage.checkInActiveBtn(), "false"); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/pages/FormPage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.pages; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import io.appium.java_client.ios.IOSDriver; 5 | import org.openqa.selenium.WebElement; 6 | 7 | 8 | public class FormPage { 9 | 10 | private final IOSDriver iosDriver; 11 | 12 | public FormPage(final IOSDriver iosDriver) { 13 | this.iosDriver = iosDriver; 14 | } 15 | 16 | private WebElement switchBtn() { 17 | return this.iosDriver.findElement(AppiumBy.accessibilityId("switch")); 18 | } 19 | 20 | public String getSwitchText() { 21 | return this.iosDriver.findElement(AppiumBy.accessibilityId("switch-text")).getText(); 22 | } 23 | 24 | private WebElement dropdownField() { 25 | return this.iosDriver.findElement(AppiumBy.accessibilityId("text_input")); 26 | } 27 | 28 | private void selectDropdownValue(final String option) { 29 | this.iosDriver.findElement(AppiumBy.iOSClassChain("**/XCUIElementTypePickerWheel[`value == \"Select an item...\"`]")).sendKeys(option); 30 | } 31 | 32 | public String getDropdownValue() { 33 | return dropdownField().getAttribute("value"); 34 | } 35 | 36 | private WebElement doneBtn() { 37 | return this.iosDriver.findElement(AppiumBy.accessibilityId("done_button")); 38 | } 39 | 40 | private WebElement activeBtn() { 41 | return this.iosDriver.findElement(AppiumBy.accessibilityId("button-Active")); 42 | } 43 | 44 | public String getActiveMessageTitle() { 45 | return this.iosDriver.findElement(AppiumBy.iOSClassChain("**/XCUIElementTypeStaticText[`label == \"This button is\"`]")).getText(); 46 | } 47 | 48 | public String getActiveMessage() { 49 | return this.iosDriver.findElement(AppiumBy.accessibilityId("This button is active")).getText(); 50 | } 51 | 52 | private WebElement okBtn() { 53 | return this.iosDriver.findElement(AppiumBy.accessibilityId("OK")); 54 | } 55 | 56 | private WebElement inActiveBtn() { 57 | return this.iosDriver.findElement(AppiumBy.accessibilityId("button-Inactive")); 58 | } 59 | 60 | public void fillForm(final String input, final String option) { 61 | final HomePage homePage = new HomePage(this.iosDriver); 62 | homePage.openMenu("Forms"); 63 | inputField().sendKeys(input); 64 | switchBtn().click(); 65 | dropdownField().click(); 66 | selectDropdownValue(option); 67 | doneBtn().click(); 68 | } 69 | 70 | public String getInputText() { 71 | return this.iosDriver.findElement(AppiumBy.accessibilityId("input-text-result")).getText(); 72 | } 73 | 74 | private WebElement inputField() { 75 | return this.iosDriver.findElement(AppiumBy.accessibilityId("text-input")); 76 | } 77 | 78 | public void submitForm() { 79 | activeBtn().click(); 80 | } 81 | 82 | public String checkInActiveBtn() { 83 | return inActiveBtn().getAttribute("accessible"); 84 | } 85 | 86 | public void closeMessage() { 87 | okBtn().click(); 88 | } 89 | 90 | 91 | } 92 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/pages/HomePage.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.pages; 2 | 3 | import io.appium.java_client.AppiumBy; 4 | import io.appium.java_client.ios.IOSDriver; 5 | import org.openqa.selenium.support.ui.ExpectedConditions; 6 | import org.openqa.selenium.support.ui.WebDriverWait; 7 | 8 | import java.time.Duration; 9 | 10 | public class HomePage { 11 | 12 | private final WebDriverWait wait; 13 | private final IOSDriver iosDriver; 14 | 15 | public HomePage(final IOSDriver iosDriver) { 16 | this.iosDriver = iosDriver; 17 | this.wait = new WebDriverWait(this.iosDriver, Duration.ofSeconds(10)); 18 | } 19 | 20 | public String getTitle() { 21 | return this.wait.until(ExpectedConditions.visibilityOfElementLocated 22 | (AppiumBy.iOSClassChain("**/XCUIElementTypeStaticText[`label == \"WEBDRIVER\"`]"))).getText(); 23 | } 24 | 25 | public void openMenu(final String menuName) { 26 | this.wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy.accessibilityId(menuName))).click(); 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/tests/BaseTest.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.tests; 2 | 3 | import io.appium.java_client.ios.IOSDriver; 4 | import io.github.mfaisalkhatri.ios.paralleltests.pages.FormPage; 5 | 6 | import static org.testng.Assert.assertEquals; 7 | 8 | public class BaseTest { 9 | 10 | 11 | public void testForm(final IOSDriver iosDriver) { 12 | 13 | final String inputText = "This is Appium Test"; 14 | final String dropdownValue = "This app is awesome"; 15 | 16 | final FormPage formPage = new FormPage(iosDriver); 17 | formPage.fillForm(inputText, dropdownValue); 18 | assertEquals(formPage.getInputText(), inputText); 19 | assertEquals(formPage.getSwitchText(), "Click to turn the switch OFF"); 20 | assertEquals(formPage.getDropdownValue(), dropdownValue); 21 | formPage.submitForm(); 22 | 23 | assertEquals(formPage.getActiveMessageTitle(), "This button is"); 24 | assertEquals(formPage.getActiveMessage(), "This button is active"); 25 | formPage.closeMessage(); 26 | 27 | assertEquals(formPage.checkInActiveBtn(), "false"); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/tests/IOSTestOnIPhoneFifteen.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.tests; 2 | 3 | import io.appium.java_client.ios.IOSDriver; 4 | import io.appium.java_client.ios.options.XCUITestOptions; 5 | import io.appium.java_client.remote.AutomationName; 6 | import org.testng.annotations.Test; 7 | 8 | import java.net.MalformedURLException; 9 | import java.net.URL; 10 | import java.nio.file.Path; 11 | import java.time.Duration; 12 | 13 | public class IOSTestOnIPhoneFifteen extends BaseTest { 14 | 15 | private static final String APP_PATH = String.valueOf(Path.of(System.getProperty("user.dir"), "/src/test/resources/app", "wdioNativeDemoApp.app")); 16 | private static final ThreadLocal IOSDRIVER = new ThreadLocal<>(); 17 | 18 | @Test 19 | public void testFormOnIPhone() { 20 | final XCUITestOptions xcuiTestOptions = new XCUITestOptions().setPlatformName("iOS") 21 | .setDeviceName("iPhone 15") 22 | .setPlatformVersion("17.2") 23 | .setUdid("BB7125C2-174B-43D7-9B88-A982C40C006A") 24 | .setWdaLocalPort(8100) 25 | .setApp(APP_PATH) 26 | .setAutomationName(AutomationName.IOS_XCUI_TEST) 27 | .setNewCommandTimeout(Duration.ofSeconds(60)) 28 | .setPlatformVersion("16.2") 29 | .setNoReset(false); 30 | 31 | try { 32 | IOSDRIVER.set(new IOSDriver(new URL("http://localhost:4723"), xcuiTestOptions)); 33 | } catch (final MalformedURLException e) { 34 | throw new Error("Remote URL is not set correctly!"); 35 | } 36 | 37 | testForm(IOSDRIVER.get()); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/paralleltests/tests/IOSTestOnIPhoneFifteenPro.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.paralleltests.tests; 2 | 3 | import io.appium.java_client.ios.IOSDriver; 4 | import io.appium.java_client.ios.options.XCUITestOptions; 5 | import io.appium.java_client.remote.AutomationName; 6 | import org.testng.annotations.Test; 7 | 8 | import java.net.MalformedURLException; 9 | import java.net.URL; 10 | import java.nio.file.Path; 11 | import java.time.Duration; 12 | 13 | public class IOSTestOnIPhoneFifteenPro extends BaseTest { 14 | 15 | private static final String APP_PATH = String.valueOf(Path.of(System.getProperty("user.dir"), "/src/test/resources/app", "wdioNativeDemoApp.app")); 16 | private static final ThreadLocal IOSDRIVER = new ThreadLocal<>(); 17 | 18 | @Test 19 | public void testFormOnIPhone() { 20 | final XCUITestOptions xcuiTestOptions = new XCUITestOptions().setPlatformName("iOS") 21 | .setDeviceName("iPhone 15 Pro") 22 | .setPlatformVersion("17.2") 23 | .setUdid("E16563D0-CD8D-473E-BB3F-82A27BC4AEC7") 24 | .setWdaLocalPort(8101) 25 | .setApp(APP_PATH) 26 | .setAutomationName(AutomationName.IOS_XCUI_TEST) 27 | .setNewCommandTimeout(Duration.ofSeconds(60)) 28 | .setNoReset(false); 29 | 30 | try { 31 | IOSDRIVER.set(new IOSDriver(new URL("http://localhost:4723"), xcuiTestOptions)); 32 | } catch (final MalformedURLException e) { 33 | throw new Error("Remote URL is not set correctly!"); 34 | } 35 | 36 | IOSDRIVER.get().manage().timeouts().implicitlyWait(Duration.ofSeconds(20)); 37 | testForm(IOSDRIVER.get()); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/tests/BaseTest.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.tests; 2 | 3 | import org.testng.annotations.AfterClass; 4 | import org.testng.annotations.BeforeClass; 5 | 6 | import static io.github.mfaisalkhatri.drivers.AndroidDriverManager.quitSession; 7 | import static io.github.mfaisalkhatri.drivers.IOSDriverManager.createIOSDriver; 8 | 9 | /** 10 | * @author Faisal Khatri 11 | * @since 04/14/2023 12 | **/ 13 | public class BaseTest { 14 | 15 | @BeforeClass(alwaysRun = true) 16 | public void testSetup() { 17 | createIOSDriver(); 18 | } 19 | 20 | @AfterClass(alwaysRun = true) 21 | public void tearDown() { 22 | quitSession(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/test/java/io/github/mfaisalkhatri/ios/tests/IOSTests.java: -------------------------------------------------------------------------------- 1 | package io.github.mfaisalkhatri.ios.tests; 2 | 3 | 4 | import io.github.mfaisalkhatri.ios.pages.*; 5 | import org.testng.annotations.Test; 6 | 7 | import static org.testng.Assert.assertEquals; 8 | 9 | 10 | public class IOSTests extends BaseTest { 11 | 12 | @Test 13 | public void testHomePageTitle() { 14 | HomePage homePage = new HomePage(); 15 | assertEquals(homePage.getTitle(), "WEBDRIVER"); 16 | assertEquals(homePage.tagLine(), "Demo app for the appium-boilerplate"); 17 | } 18 | 19 | @Test 20 | public void testForm() { 21 | final String inputText = "This is Appium Test"; 22 | String dropdownValue = "This app is awesome"; 23 | FormPage formPage = new FormPage(); 24 | formPage.fillForm(inputText, dropdownValue); 25 | assertEquals(formPage.getInputText(), inputText); 26 | assertEquals(formPage.getSwitchText(), "Click to turn the switch OFF"); 27 | assertEquals(formPage.getDropdownValue(), dropdownValue); 28 | formPage.submitForm(); 29 | 30 | assertEquals(formPage.getActiveMessageTitle(), "This button is"); 31 | assertEquals(formPage.getActiveMessage(), "This button is active"); 32 | formPage.closeMessage(); 33 | 34 | assertEquals(formPage.checkInActiveBtn(), "false"); 35 | 36 | } 37 | 38 | @Test 39 | public void testSwipeOnElement() { 40 | SwipePage swipePage = new SwipePage(); 41 | swipePage.performHorizontalSwipe(); 42 | swipePage.performVerticalSwipe(); 43 | 44 | } 45 | 46 | @Test 47 | public void testSwipeTillElement() { 48 | SwipePage swipePage = new SwipePage(); 49 | assertEquals(swipePage.swipeTillElement(), "You found me!!!"); 50 | } 51 | 52 | @Test 53 | public void testSwipeAndFindElement() { 54 | SwipePage swipePage = new SwipePage(); 55 | assertEquals(swipePage.swipeAndFindElement(), "You found me!!!"); 56 | 57 | } 58 | 59 | @Test 60 | public void testWebView() { 61 | WebViewPage webViewPage = new WebViewPage(); 62 | 63 | assertEquals(webViewPage.getMainPageText(), "Next-gen browser and mobile automation test framework for Node.js"); 64 | webViewPage.switchToNativeApp(); 65 | } 66 | 67 | @Test 68 | public void testDragAndDrop() { 69 | DragPage dragPage = new DragPage(); 70 | dragPage.dragAndDropPrices(); 71 | assertEquals(dragPage.congratulationsText(), "Congratulations You made it, click retry if you want to try it again. Retry"); 72 | } 73 | 74 | 75 | } 76 | -------------------------------------------------------------------------------- /src/test/resources/app/iOS-Real-Device-MyRNDemoApp.1.3.0-162.ipa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/iOS-Real-Device-MyRNDemoApp.1.3.0-162.ipa -------------------------------------------------------------------------------- /src/test/resources/app/iOS-Simulator-NativeDemoApp-0.4.0.app.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/iOS-Simulator-NativeDemoApp-0.4.0.app.zip -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/Info.plist -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeDirectory: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeDirectory -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeRequirements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeRequirements -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeRequirements-1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeRequirements-1 -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | en.lproj/Localizable.strings 8 | 9 | hash 10 | 11 | X9E0vQNrSNVBkgqtimYht4o7EEg= 12 | 13 | optional 14 | 15 | 16 | 17 | files2 18 | 19 | en.lproj/Localizable.strings 20 | 21 | hash 22 | 23 | X9E0vQNrSNVBkgqtimYht4o7EEg= 24 | 25 | hash2 26 | 27 | w1hfj69Kbb8WcP7mQdPFb//Z6XisMBZJwk6rwYndD5Y= 28 | 29 | optional 30 | 31 | 32 | 33 | rules 34 | 35 | ^.* 36 | 37 | ^.*\.lproj/ 38 | 39 | optional 40 | 41 | weight 42 | 1000 43 | 44 | ^.*\.lproj/locversion.plist$ 45 | 46 | omit 47 | 48 | weight 49 | 1100 50 | 51 | ^Base\.lproj/ 52 | 53 | weight 54 | 1010 55 | 56 | ^version.plist$ 57 | 58 | 59 | rules2 60 | 61 | .*\.dSYM($|/) 62 | 63 | weight 64 | 11 65 | 66 | ^(.*/)?\.DS_Store$ 67 | 68 | omit 69 | 70 | weight 71 | 2000 72 | 73 | ^.* 74 | 75 | ^.*\.lproj/ 76 | 77 | optional 78 | 79 | weight 80 | 1000 81 | 82 | ^.*\.lproj/locversion.plist$ 83 | 84 | omit 85 | 86 | weight 87 | 1100 88 | 89 | ^Base\.lproj/ 90 | 91 | weight 92 | 1010 93 | 94 | ^Info\.plist$ 95 | 96 | omit 97 | 98 | weight 99 | 20 100 | 101 | ^PkgInfo$ 102 | 103 | omit 104 | 105 | weight 106 | 20 107 | 108 | ^embedded\.provisionprofile$ 109 | 110 | weight 111 | 20 112 | 113 | ^version\.plist$ 114 | 115 | weight 116 | 20 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeSignature: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/_CodeSignature/CodeSignature -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AccessibilityResources.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Localizable.strings 3 | React 4 | */ 5 | "alert"="alert"; 6 | "checkbox"="checkbox"; 7 | "combobox"="combo box"; 8 | "menu"="menu"; 9 | "menubar"="menu bar"; 10 | "menuitem"="menu item"; 11 | "progressbar"="progress bar"; 12 | "radio"="radio button"; 13 | "radiogroup"="radio group"; 14 | "scrollbar"="scroll bar"; 15 | "spinbutton"="spin button"; 16 | "switch"="switch"; 17 | "tab"="tab description"; 18 | "tablist"="tab list"; 19 | "timer"="timer"; 20 | "toolbar"="tool bar"; 21 | "checked"="checked"; 22 | "unchecked"="not checked"; 23 | "busy"="busy"; 24 | "expanded"="expanded"; 25 | "collapsed"="collapsed"; 26 | "mixed"="mixed"; 27 | -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AntDesign.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon20x20@2x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon20x20@3x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon29x29.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon57x57.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon57x57@2x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Assets.car: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Assets.car -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Entypo.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/EvilIcons.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Feather.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/FontAwesome.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Fontisto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Fontisto.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Foundation.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Frameworks/OpenSSL.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Frameworks/OpenSSL.framework/Info.plist -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Frameworks/OpenSSL.framework/OpenSSL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Frameworks/OpenSSL.framework/OpenSSL -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Frameworks/OpenSSL.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | Jw3BhKlKMWVczndBFxVgNzN/9m8= 10 | 11 | 12 | files2 13 | 14 | rules 15 | 16 | ^.* 17 | 18 | ^.*\.lproj/ 19 | 20 | optional 21 | 22 | weight 23 | 1000 24 | 25 | ^.*\.lproj/locversion.plist$ 26 | 27 | omit 28 | 29 | weight 30 | 1100 31 | 32 | ^Base\.lproj/ 33 | 34 | weight 35 | 1010 36 | 37 | ^version.plist$ 38 | 39 | 40 | rules2 41 | 42 | .*\.dSYM($|/) 43 | 44 | weight 45 | 11 46 | 47 | ^(.*/)?\.DS_Store$ 48 | 49 | omit 50 | 51 | weight 52 | 2000 53 | 54 | ^.* 55 | 56 | ^.*\.lproj/ 57 | 58 | optional 59 | 60 | weight 61 | 1000 62 | 63 | ^.*\.lproj/locversion.plist$ 64 | 65 | omit 66 | 67 | weight 68 | 1100 69 | 70 | ^Base\.lproj/ 71 | 72 | weight 73 | 1010 74 | 75 | ^Info\.plist$ 76 | 77 | omit 78 | 79 | weight 80 | 20 81 | 82 | ^PkgInfo$ 83 | 84 | omit 85 | 86 | weight 87 | 20 88 | 89 | ^embedded\.provisionprofile$ 90 | 91 | weight 92 | 20 93 | 94 | ^version\.plist$ 95 | 96 | weight 97 | 20 98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Info.plist -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Ionicons.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/LaunchScreen.storyboardc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/LaunchScreen.storyboardc/Info.plist -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/MaterialIcons.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Octicons.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/Zocial.ttf -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/airbnb-star-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/airbnb-star-selected.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/airbnb-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/airbnb-star.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/bell.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/heart.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/rocket.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-ratings/src/images/star.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/AntDesign.json: -------------------------------------------------------------------------------- 1 | { 2 | "stepforward": 58880, 3 | "stepbackward": 58881, 4 | "forward": 58882, 5 | "banckward": 58883, 6 | "caretright": 58884, 7 | "caretleft": 58885, 8 | "caretdown": 58886, 9 | "caretup": 58887, 10 | "rightcircle": 58888, 11 | "leftcircle": 58889, 12 | "upcircle": 58890, 13 | "downcircle": 58891, 14 | "rightcircleo": 58892, 15 | "leftcircleo": 58893, 16 | "upcircleo": 58894, 17 | "downcircleo": 58895, 18 | "verticleleft": 58896, 19 | "verticleright": 58897, 20 | "back": 58898, 21 | "retweet": 58899, 22 | "shrink": 58900, 23 | "arrowsalt": 58901, 24 | "doubleright": 58903, 25 | "doubleleft": 58904, 26 | "arrowdown": 58905, 27 | "arrowup": 58906, 28 | "arrowright": 58907, 29 | "arrowleft": 58908, 30 | "down": 58909, 31 | "up": 58910, 32 | "right": 58911, 33 | "left": 58912, 34 | "minussquareo": 58913, 35 | "minuscircle": 58914, 36 | "minuscircleo": 58915, 37 | "minus": 58916, 38 | "pluscircleo": 58917, 39 | "pluscircle": 58918, 40 | "plus": 58919, 41 | "infocirlce": 58920, 42 | "infocirlceo": 58921, 43 | "info": 58922, 44 | "exclamation": 58923, 45 | "exclamationcircle": 58924, 46 | "exclamationcircleo": 58925, 47 | "closecircle": 58926, 48 | "closecircleo": 58927, 49 | "checkcircle": 58928, 50 | "checkcircleo": 58929, 51 | "check": 58930, 52 | "close": 58931, 53 | "customerservice": 58932, 54 | "creditcard": 58933, 55 | "codesquareo": 58934, 56 | "book": 58935, 57 | "barschart": 58936, 58 | "bars": 58937, 59 | "question": 58938, 60 | "questioncircle": 58939, 61 | "questioncircleo": 58940, 62 | "pause": 58941, 63 | "pausecircle": 58942, 64 | "pausecircleo": 58943, 65 | "clockcircle": 58944, 66 | "clockcircleo": 58945, 67 | "swap": 58946, 68 | "swapleft": 58947, 69 | "swapright": 58948, 70 | "plussquareo": 58949, 71 | "frown": 58950, 72 | "menufold": 58968, 73 | "mail": 58969, 74 | "link": 58971, 75 | "areachart": 58972, 76 | "linechart": 58973, 77 | "home": 58974, 78 | "laptop": 58975, 79 | "star": 58976, 80 | "staro": 58977, 81 | "filter": 58979, 82 | "meho": 58982, 83 | "meh": 58983, 84 | "shoppingcart": 58984, 85 | "save": 58985, 86 | "user": 58986, 87 | "videocamera": 58987, 88 | "totop": 58988, 89 | "team": 58989, 90 | "sharealt": 58993, 91 | "setting": 58994, 92 | "picture": 58996, 93 | "phone": 58997, 94 | "paperclip": 58998, 95 | "notification": 58999, 96 | "menuunfold": 59001, 97 | "inbox": 59002, 98 | "lock": 59003, 99 | "qrcode": 59004, 100 | "tags": 59005, 101 | "tagso": 59006, 102 | "cloudo": 59007, 103 | "cloud": 59008, 104 | "cloudupload": 59009, 105 | "clouddownload": 59010, 106 | "clouddownloado": 59011, 107 | "clouduploado": 59012, 108 | "enviroment": 59013, 109 | "enviromento": 59014, 110 | "eye": 59015, 111 | "eyeo": 59016, 112 | "camera": 59017, 113 | "camerao": 59018, 114 | "windows": 59019, 115 | "export2": 59024, 116 | "export": 59025, 117 | "circledowno": 59027, 118 | "circledown": 59028, 119 | "hdd": 59034, 120 | "ie": 59035, 121 | "delete": 59039, 122 | "enter": 59040, 123 | "pushpino": 59041, 124 | "pushpin": 59042, 125 | "heart": 59043, 126 | "hearto": 59044, 127 | "smile-circle": 59047, 128 | "smileo": 59048, 129 | "frowno": 59049, 130 | "calculator": 59050, 131 | "chrome": 59052, 132 | "github": 59053, 133 | "iconfontdesktop": 59060, 134 | "caretcircleoup": 59061, 135 | "upload": 59062, 136 | "download": 59063, 137 | "piechart": 59064, 138 | "lock1": 59065, 139 | "unlock": 59066, 140 | "windowso": 59068, 141 | "dotchart": 59069, 142 | "barchart": 59070, 143 | "codesquare": 59071, 144 | "plussquare": 59072, 145 | "minussquare": 59073, 146 | "closesquare": 59074, 147 | "closesquareo": 59075, 148 | "checksquare": 59076, 149 | "checksquareo": 59077, 150 | "fastbackward": 59078, 151 | "fastforward": 59079, 152 | "upsquare": 59080, 153 | "downsquare": 59081, 154 | "leftsquare": 59082, 155 | "rightsquare": 59083, 156 | "rightsquareo": 59084, 157 | "leftsquareo": 59085, 158 | "down-square-o": 59086, 159 | "up-square-o": 59087, 160 | "play": 59088, 161 | "playcircleo": 59089, 162 | "tag": 59090, 163 | "tago": 59091, 164 | "addfile": 59664, 165 | "folder1": 58978, 166 | "file1": 58980, 167 | "switcher": 59667, 168 | "addfolder": 59668, 169 | "folderopen": 59033, 170 | "search1": 58992, 171 | "ellipsis1": 58951, 172 | "calendar": 59067, 173 | "filetext1": 59032, 174 | "copy1": 58952, 175 | "jpgfile1": 59036, 176 | "pdffile1": 59059, 177 | "exclefile1": 59056, 178 | "pptfile1": 59057, 179 | "unknowfile1": 59055, 180 | "wordfile1": 59058, 181 | "dingding": 59683, 182 | "dingding-o": 59685, 183 | "mobile1": 59000, 184 | "tablet1": 58990, 185 | "bells": 58958, 186 | "disconnect": 58959, 187 | "database": 58960, 188 | "barcode": 58962, 189 | "hourglass": 58963, 190 | "key": 58964, 191 | "flag": 58965, 192 | "layout": 58966, 193 | "printer": 58995, 194 | "USB": 59095, 195 | "skin": 59096, 196 | "tool": 59097, 197 | "car": 59100, 198 | "addusergroup": 59101, 199 | "carryout": 59103, 200 | "deleteuser": 59104, 201 | "deleteusergroup": 59105, 202 | "man": 59106, 203 | "isv": 59107, 204 | "gift": 59108, 205 | "idcard": 59109, 206 | "medicinebox": 59110, 207 | "redenvelopes": 59111, 208 | "rest": 59112, 209 | "Safety": 59114, 210 | "wallet": 59115, 211 | "woman": 59116, 212 | "adduser": 59117, 213 | "bank": 59118, 214 | "Trophy": 59119, 215 | "loading1": 59054, 216 | "loading2": 58957, 217 | "like2": 59037, 218 | "dislike2": 59038, 219 | "like1": 58956, 220 | "dislike1": 58955, 221 | "bulb1": 58953, 222 | "rocket1": 59663, 223 | "select1": 58954, 224 | "apple1": 59020, 225 | "apple-o": 59092, 226 | "android1": 59704, 227 | "android": 59021, 228 | "aliwangwang-o1": 59023, 229 | "aliwangwang": 59022, 230 | "pay-circle1": 59045, 231 | "pay-circle-o1": 59046, 232 | "poweroff": 59093, 233 | "trademark": 58961, 234 | "find": 59099, 235 | "copyright": 59102, 236 | "sound": 59113, 237 | "earth": 59121, 238 | "wifi": 59094, 239 | "sync": 59098, 240 | "login": 58967, 241 | "logout": 58970, 242 | "reload1": 58902, 243 | "message1": 59051, 244 | "shake": 59727, 245 | "API": 59729, 246 | "appstore-o": 59029, 247 | "appstore1": 59030, 248 | "scan1": 59031, 249 | "exception1": 58981, 250 | "contacts": 59120, 251 | "solution1": 58991, 252 | "fork": 59122, 253 | "edit": 59026, 254 | "form": 59798, 255 | "warning": 59799, 256 | "table": 59800, 257 | "profile": 59801, 258 | "dashboard": 59802, 259 | "indent-left": 59814, 260 | "indent-right": 59815, 261 | "menu-unfold": 59820, 262 | "menu-fold": 59821, 263 | "antdesign": 59826, 264 | "alipay-square": 59827, 265 | "codepen-circle": 59828, 266 | "google": 59829, 267 | "amazon": 59830, 268 | "codepen": 59831, 269 | "facebook-square": 59832, 270 | "dropbox": 59833, 271 | "googleplus": 59834, 272 | "linkedin-square": 59835, 273 | "medium-monogram": 59836, 274 | "gitlab": 59837, 275 | "medium-wordmark": 59838, 276 | "QQ": 59839, 277 | "skype": 59840, 278 | "taobao-square": 59841, 279 | "alipay-circle": 59842, 280 | "youtube": 59843, 281 | "wechat": 59844, 282 | "twitter": 59845, 283 | "weibo": 59846, 284 | "HTML": 59847, 285 | "taobao-circle": 59123, 286 | "weibo-circle": 59124, 287 | "weibo-square": 59125, 288 | "CodeSandbox": 59860, 289 | "aliyun": 59892, 290 | "zhihu": 59139, 291 | "behance": 59143, 292 | "dribbble": 59145, 293 | "dribbble-square": 59146, 294 | "behance-square": 59144, 295 | "file-markdown": 59140, 296 | "instagram": 59147, 297 | "yuque": 59148, 298 | "slack": 59141, 299 | "slack-square": 59142 300 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/Entypo.json: -------------------------------------------------------------------------------- 1 | { 2 | "500px": 61696, 3 | "500px-with-circle": 61697, 4 | "add-to-list": 61698, 5 | "add-user": 61699, 6 | "address": 61700, 7 | "adjust": 61701, 8 | "air": 61702, 9 | "aircraft": 61703, 10 | "aircraft-landing": 61704, 11 | "aircraft-take-off": 61705, 12 | "align-bottom": 61706, 13 | "align-horizontal-middle": 61707, 14 | "align-left": 61708, 15 | "align-right": 61709, 16 | "align-top": 61710, 17 | "align-vertical-middle": 61711, 18 | "app-store": 61712, 19 | "archive": 61713, 20 | "area-graph": 61714, 21 | "arrow-bold-down": 61715, 22 | "arrow-bold-left": 61716, 23 | "arrow-bold-right": 61717, 24 | "arrow-bold-up": 61718, 25 | "arrow-down": 61719, 26 | "arrow-left": 61720, 27 | "arrow-long-down": 61721, 28 | "arrow-long-left": 61722, 29 | "arrow-long-right": 61723, 30 | "arrow-long-up": 61724, 31 | "arrow-right": 61725, 32 | "arrow-up": 61726, 33 | "arrow-with-circle-down": 61727, 34 | "arrow-with-circle-left": 61728, 35 | "arrow-with-circle-right": 61729, 36 | "arrow-with-circle-up": 61730, 37 | "attachment": 61731, 38 | "awareness-ribbon": 61732, 39 | "back": 61733, 40 | "back-in-time": 61734, 41 | "baidu": 61735, 42 | "bar-graph": 61736, 43 | "basecamp": 61737, 44 | "battery": 61738, 45 | "beamed-note": 61739, 46 | "behance": 61740, 47 | "bell": 61741, 48 | "blackboard": 61742, 49 | "block": 61743, 50 | "book": 61744, 51 | "bookmark": 61745, 52 | "bookmarks": 61746, 53 | "bowl": 61747, 54 | "box": 61748, 55 | "briefcase": 61749, 56 | "browser": 61750, 57 | "brush": 61751, 58 | "bucket": 61752, 59 | "bug": 61753, 60 | "cake": 61754, 61 | "calculator": 61755, 62 | "calendar": 61756, 63 | "camera": 61757, 64 | "ccw": 61758, 65 | "chat": 61759, 66 | "check": 61760, 67 | "chevron-down": 61761, 68 | "chevron-left": 61762, 69 | "chevron-right": 61763, 70 | "chevron-small-down": 61764, 71 | "chevron-small-left": 61765, 72 | "chevron-small-right": 61766, 73 | "chevron-small-up": 61767, 74 | "chevron-thin-down": 61768, 75 | "chevron-thin-left": 61769, 76 | "chevron-thin-right": 61770, 77 | "chevron-thin-up": 61771, 78 | "chevron-up": 61772, 79 | "chevron-with-circle-down": 61773, 80 | "chevron-with-circle-left": 61774, 81 | "chevron-with-circle-right": 61775, 82 | "chevron-with-circle-up": 61776, 83 | "circle": 61777, 84 | "circle-with-cross": 61778, 85 | "circle-with-minus": 61779, 86 | "circle-with-plus": 61780, 87 | "circular-graph": 61781, 88 | "clapperboard": 61782, 89 | "classic-computer": 61783, 90 | "clipboard": 61784, 91 | "clock": 61785, 92 | "cloud": 61786, 93 | "code": 61787, 94 | "cog": 61788, 95 | "colours": 61789, 96 | "compass": 61790, 97 | "controller-fast-backward": 61791, 98 | "controller-fast-forward": 61792, 99 | "controller-jump-to-start": 61793, 100 | "controller-next": 61794, 101 | "controller-paus": 61795, 102 | "controller-play": 61796, 103 | "controller-record": 61797, 104 | "controller-stop": 61798, 105 | "controller-volume": 61799, 106 | "copy": 61800, 107 | "creative-cloud": 61801, 108 | "creative-commons": 61802, 109 | "creative-commons-attribution": 61803, 110 | "creative-commons-noderivs": 61804, 111 | "creative-commons-noncommercial-eu": 61805, 112 | "creative-commons-noncommercial-us": 61806, 113 | "creative-commons-public-domain": 61807, 114 | "creative-commons-remix": 61808, 115 | "creative-commons-share": 61809, 116 | "creative-commons-sharealike": 61810, 117 | "credit": 61811, 118 | "credit-card": 61812, 119 | "crop": 61813, 120 | "cross": 61814, 121 | "cup": 61815, 122 | "cw": 61816, 123 | "cycle": 61817, 124 | "database": 61818, 125 | "dial-pad": 61819, 126 | "direction": 61820, 127 | "document": 61821, 128 | "document-landscape": 61822, 129 | "documents": 61823, 130 | "dot-single": 61824, 131 | "dots-three-horizontal": 61825, 132 | "dots-three-vertical": 61826, 133 | "dots-two-horizontal": 61827, 134 | "dots-two-vertical": 61828, 135 | "download": 61829, 136 | "dribbble": 61830, 137 | "dribbble-with-circle": 61831, 138 | "drink": 61832, 139 | "drive": 61833, 140 | "drop": 61834, 141 | "dropbox": 61835, 142 | "edit": 61836, 143 | "email": 61837, 144 | "emoji-flirt": 61838, 145 | "emoji-happy": 61839, 146 | "emoji-neutral": 61840, 147 | "emoji-sad": 61841, 148 | "erase": 61842, 149 | "eraser": 61843, 150 | "evernote": 61844, 151 | "export": 61845, 152 | "eye": 61846, 153 | "eye-with-line": 61847, 154 | "facebook": 61848, 155 | "facebook-with-circle": 61849, 156 | "feather": 61850, 157 | "fingerprint": 61851, 158 | "flag": 61852, 159 | "flash": 61853, 160 | "flashlight": 61854, 161 | "flat-brush": 61855, 162 | "flattr": 61856, 163 | "flickr": 61857, 164 | "flickr-with-circle": 61858, 165 | "flow-branch": 61859, 166 | "flow-cascade": 61860, 167 | "flow-line": 61861, 168 | "flow-parallel": 61862, 169 | "flow-tree": 61863, 170 | "flower": 61864, 171 | "folder": 61865, 172 | "folder-images": 61866, 173 | "folder-music": 61867, 174 | "folder-video": 61868, 175 | "forward": 61869, 176 | "foursquare": 61870, 177 | "funnel": 61871, 178 | "game-controller": 61872, 179 | "gauge": 61873, 180 | "github": 61874, 181 | "github-with-circle": 61875, 182 | "globe": 61876, 183 | "google-": 61877, 184 | "google--with-circle": 61878, 185 | "google-drive": 61879, 186 | "google-hangouts": 61880, 187 | "google-play": 61881, 188 | "graduation-cap": 61882, 189 | "grid": 61883, 190 | "grooveshark": 61884, 191 | "hair-cross": 61885, 192 | "hand": 61886, 193 | "heart": 61887, 194 | "heart-outlined": 61888, 195 | "help": 61889, 196 | "help-with-circle": 61890, 197 | "home": 61891, 198 | "hour-glass": 61892, 199 | "houzz": 61893, 200 | "icloud": 61894, 201 | "image": 61895, 202 | "image-inverted": 61896, 203 | "images": 61897, 204 | "inbox": 61898, 205 | "infinity": 61899, 206 | "info": 61900, 207 | "info-with-circle": 61901, 208 | "instagram": 61902, 209 | "instagram-with-circle": 61903, 210 | "install": 61904, 211 | "key": 61905, 212 | "keyboard": 61906, 213 | "lab-flask": 61907, 214 | "landline": 61908, 215 | "language": 61909, 216 | "laptop": 61910, 217 | "lastfm": 61911, 218 | "lastfm-with-circle": 61912, 219 | "layers": 61913, 220 | "leaf": 61914, 221 | "level-down": 61915, 222 | "level-up": 61916, 223 | "lifebuoy": 61917, 224 | "light-bulb": 61918, 225 | "light-down": 61919, 226 | "light-up": 61920, 227 | "line-graph": 61921, 228 | "link": 61922, 229 | "linkedin": 61923, 230 | "linkedin-with-circle": 61924, 231 | "list": 61925, 232 | "location": 61926, 233 | "location-pin": 61927, 234 | "lock": 61928, 235 | "lock-open": 61929, 236 | "log-out": 61930, 237 | "login": 61931, 238 | "loop": 61932, 239 | "magnet": 61933, 240 | "magnifying-glass": 61934, 241 | "mail": 61935, 242 | "mail-with-circle": 61936, 243 | "man": 61937, 244 | "map": 61938, 245 | "mask": 61939, 246 | "medal": 61940, 247 | "medium": 61941, 248 | "medium-with-circle": 61942, 249 | "megaphone": 61943, 250 | "menu": 61944, 251 | "merge": 61945, 252 | "message": 61946, 253 | "mic": 61947, 254 | "minus": 61948, 255 | "mixi": 61949, 256 | "mobile": 61950, 257 | "modern-mic": 61951, 258 | "moon": 61952, 259 | "mouse": 61953, 260 | "mouse-pointer": 61954, 261 | "music": 61955, 262 | "network": 61956, 263 | "new": 61957, 264 | "new-message": 61958, 265 | "news": 61959, 266 | "newsletter": 61960, 267 | "note": 61961, 268 | "notification": 61962, 269 | "notifications-off": 61963, 270 | "old-mobile": 61964, 271 | "old-phone": 61965, 272 | "onedrive": 61966, 273 | "open-book": 61967, 274 | "palette": 61968, 275 | "paper-plane": 61969, 276 | "paypal": 61970, 277 | "pencil": 61971, 278 | "phone": 61972, 279 | "picasa": 61973, 280 | "pie-chart": 61974, 281 | "pin": 61975, 282 | "pinterest": 61976, 283 | "pinterest-with-circle": 61977, 284 | "plus": 61978, 285 | "popup": 61979, 286 | "power-plug": 61980, 287 | "price-ribbon": 61981, 288 | "price-tag": 61982, 289 | "print": 61983, 290 | "progress-empty": 61984, 291 | "progress-full": 61985, 292 | "progress-one": 61986, 293 | "progress-two": 61987, 294 | "publish": 61988, 295 | "qq": 61989, 296 | "qq-with-circle": 61990, 297 | "quote": 61991, 298 | "radio": 61992, 299 | "raft": 61993, 300 | "raft-with-circle": 61994, 301 | "rainbow": 61995, 302 | "rdio": 61996, 303 | "rdio-with-circle": 61997, 304 | "remove-user": 61998, 305 | "renren": 61999, 306 | "reply": 62000, 307 | "reply-all": 62001, 308 | "resize-100-": 62002, 309 | "resize-full-screen": 62003, 310 | "retweet": 62004, 311 | "rocket": 62005, 312 | "round-brush": 62006, 313 | "rss": 62007, 314 | "ruler": 62008, 315 | "save": 62009, 316 | "scissors": 62010, 317 | "scribd": 62011, 318 | "select-arrows": 62012, 319 | "share": 62013, 320 | "share-alternative": 62014, 321 | "shareable": 62015, 322 | "shield": 62016, 323 | "shop": 62017, 324 | "shopping-bag": 62018, 325 | "shopping-basket": 62019, 326 | "shopping-cart": 62020, 327 | "shuffle": 62021, 328 | "signal": 62022, 329 | "sina-weibo": 62023, 330 | "skype": 62024, 331 | "skype-with-circle": 62025, 332 | "slideshare": 62026, 333 | "smashing": 62027, 334 | "sound": 62028, 335 | "sound-mix": 62029, 336 | "sound-mute": 62030, 337 | "soundcloud": 62031, 338 | "sports-club": 62032, 339 | "spotify": 62033, 340 | "spotify-with-circle": 62034, 341 | "spreadsheet": 62035, 342 | "squared-cross": 62036, 343 | "squared-minus": 62037, 344 | "squared-plus": 62038, 345 | "star": 62039, 346 | "star-outlined": 62040, 347 | "stopwatch": 62041, 348 | "stumbleupon": 62042, 349 | "stumbleupon-with-circle": 62043, 350 | "suitcase": 62044, 351 | "swap": 62045, 352 | "swarm": 62046, 353 | "sweden": 62047, 354 | "switch": 62048, 355 | "tablet": 62049, 356 | "tablet-mobile-combo": 62050, 357 | "tag": 62051, 358 | "text": 62052, 359 | "text-document": 62053, 360 | "text-document-inverted": 62054, 361 | "thermometer": 62055, 362 | "thumbs-down": 62056, 363 | "thumbs-up": 62057, 364 | "thunder-cloud": 62058, 365 | "ticket": 62059, 366 | "time-slot": 62060, 367 | "tools": 62061, 368 | "traffic-cone": 62062, 369 | "trash": 62063, 370 | "tree": 62064, 371 | "triangle-down": 62065, 372 | "triangle-left": 62066, 373 | "triangle-right": 62067, 374 | "triangle-up": 62068, 375 | "tripadvisor": 62069, 376 | "trophy": 62070, 377 | "tumblr": 62071, 378 | "tumblr-with-circle": 62072, 379 | "tv": 62073, 380 | "twitter": 62074, 381 | "twitter-with-circle": 62075, 382 | "typing": 62076, 383 | "uninstall": 62077, 384 | "unread": 62078, 385 | "untag": 62079, 386 | "upload": 62080, 387 | "upload-to-cloud": 62081, 388 | "user": 62082, 389 | "users": 62083, 390 | "v-card": 62084, 391 | "video": 62085, 392 | "video-camera": 62086, 393 | "vimeo": 62087, 394 | "vimeo-with-circle": 62088, 395 | "vine": 62089, 396 | "vine-with-circle": 62090, 397 | "vinyl": 62091, 398 | "vk": 62092, 399 | "vk-alternitive": 62093, 400 | "vk-with-circle": 62094, 401 | "voicemail": 62095, 402 | "wallet": 62096, 403 | "warning": 62097, 404 | "water": 62098, 405 | "windows-store": 62099, 406 | "xing": 62100, 407 | "xing-with-circle": 62101, 408 | "yelp": 62102, 409 | "youko": 62103, 410 | "youko-with-circle": 62104, 411 | "youtube": 62105, 412 | "youtube-with-circle": 62106 413 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/EvilIcons.json: -------------------------------------------------------------------------------- 1 | { 2 | "archive": 61696, 3 | "arrow-down": 61697, 4 | "arrow-left": 61698, 5 | "arrow-right": 61699, 6 | "arrow-up": 61700, 7 | "bell": 61701, 8 | "calendar": 61702, 9 | "camera": 61703, 10 | "cart": 61704, 11 | "chart": 61705, 12 | "check": 61706, 13 | "chevron-down": 61707, 14 | "chevron-left": 61708, 15 | "chevron-right": 61709, 16 | "chevron-up": 61710, 17 | "clock": 61711, 18 | "close": 61712, 19 | "close-o": 61713, 20 | "comment": 61714, 21 | "credit-card": 61715, 22 | "envelope": 61716, 23 | "exclamation": 61717, 24 | "external-link": 61718, 25 | "eye": 61719, 26 | "gear": 61720, 27 | "heart": 61721, 28 | "image": 61722, 29 | "like": 61723, 30 | "link": 61724, 31 | "location": 61725, 32 | "lock": 61726, 33 | "minus": 61727, 34 | "navicon": 61728, 35 | "paperclip": 61729, 36 | "pencil": 61730, 37 | "play": 61731, 38 | "plus": 61732, 39 | "pointer": 61733, 40 | "question": 61734, 41 | "redo": 61735, 42 | "refresh": 61736, 43 | "retweet": 61737, 44 | "sc-facebook": 61738, 45 | "sc-github": 61739, 46 | "sc-google-plus": 61740, 47 | "sc-instagram": 61741, 48 | "sc-linkedin": 61742, 49 | "sc-odnoklassniki": 61743, 50 | "sc-pinterest": 61744, 51 | "sc-skype": 61745, 52 | "sc-soundcloud": 61746, 53 | "sc-telegram": 61747, 54 | "sc-tumblr": 61748, 55 | "sc-twitter": 61749, 56 | "sc-vimeo": 61750, 57 | "sc-vk": 61751, 58 | "sc-youtube": 61752, 59 | "search": 61753, 60 | "share-apple": 61754, 61 | "share-google": 61755, 62 | "spinner": 61756, 63 | "spinner-2": 61757, 64 | "spinner-3": 61758, 65 | "star": 61759, 66 | "tag": 61760, 67 | "trash": 61761, 68 | "trophy": 61762, 69 | "undo": 61763, 70 | "unlock": 61764, 71 | "user": 61765 72 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/Feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "activity": 61696, 3 | "airplay": 61697, 4 | "alert-circle": 61698, 5 | "alert-octagon": 61699, 6 | "alert-triangle": 61700, 7 | "align-center": 61701, 8 | "align-justify": 61702, 9 | "align-left": 61703, 10 | "align-right": 61704, 11 | "anchor": 61705, 12 | "aperture": 61706, 13 | "archive": 61707, 14 | "arrow-down": 61708, 15 | "arrow-down-circle": 61709, 16 | "arrow-down-left": 61710, 17 | "arrow-down-right": 61711, 18 | "arrow-left": 61712, 19 | "arrow-left-circle": 61713, 20 | "arrow-right": 61714, 21 | "arrow-right-circle": 61715, 22 | "arrow-up": 61716, 23 | "arrow-up-circle": 61717, 24 | "arrow-up-left": 61718, 25 | "arrow-up-right": 61719, 26 | "at-sign": 61720, 27 | "award": 61721, 28 | "bar-chart": 61722, 29 | "bar-chart-2": 61723, 30 | "battery": 61724, 31 | "battery-charging": 61725, 32 | "bell": 61726, 33 | "bell-off": 61727, 34 | "bluetooth": 61728, 35 | "bold": 61729, 36 | "book": 61730, 37 | "book-open": 61731, 38 | "bookmark": 61732, 39 | "box": 61733, 40 | "briefcase": 61734, 41 | "calendar": 61735, 42 | "camera": 61736, 43 | "camera-off": 61737, 44 | "cast": 61738, 45 | "check": 61739, 46 | "check-circle": 61740, 47 | "check-square": 61741, 48 | "chevron-down": 61742, 49 | "chevron-left": 61743, 50 | "chevron-right": 61744, 51 | "chevron-up": 61745, 52 | "chevrons-down": 61746, 53 | "chevrons-left": 61747, 54 | "chevrons-right": 61748, 55 | "chevrons-up": 61749, 56 | "chrome": 61750, 57 | "circle": 61751, 58 | "clipboard": 61752, 59 | "clock": 61753, 60 | "cloud": 61754, 61 | "cloud-drizzle": 61755, 62 | "cloud-lightning": 61756, 63 | "cloud-off": 61757, 64 | "cloud-rain": 61758, 65 | "cloud-snow": 61759, 66 | "code": 61760, 67 | "codepen": 61761, 68 | "codesandbox": 61762, 69 | "coffee": 61763, 70 | "columns": 61764, 71 | "command": 61765, 72 | "compass": 61766, 73 | "copy": 61767, 74 | "corner-down-left": 61768, 75 | "corner-down-right": 61769, 76 | "corner-left-down": 61770, 77 | "corner-left-up": 61771, 78 | "corner-right-down": 61772, 79 | "corner-right-up": 61773, 80 | "corner-up-left": 61774, 81 | "corner-up-right": 61775, 82 | "cpu": 61776, 83 | "credit-card": 61777, 84 | "crop": 61778, 85 | "crosshair": 61779, 86 | "database": 61780, 87 | "delete": 61781, 88 | "disc": 61782, 89 | "divide": 61783, 90 | "divide-circle": 61784, 91 | "divide-square": 61785, 92 | "dollar-sign": 61786, 93 | "download": 61787, 94 | "download-cloud": 61788, 95 | "dribbble": 61789, 96 | "droplet": 61790, 97 | "edit": 61791, 98 | "edit-2": 61792, 99 | "edit-3": 61793, 100 | "external-link": 61794, 101 | "eye": 61795, 102 | "eye-off": 61796, 103 | "facebook": 61797, 104 | "fast-forward": 61798, 105 | "feather": 61799, 106 | "figma": 61800, 107 | "file": 61801, 108 | "file-minus": 61802, 109 | "file-plus": 61803, 110 | "file-text": 61804, 111 | "film": 61805, 112 | "filter": 61806, 113 | "flag": 61807, 114 | "folder": 61808, 115 | "folder-minus": 61809, 116 | "folder-plus": 61810, 117 | "framer": 61811, 118 | "frown": 61812, 119 | "gift": 61813, 120 | "git-branch": 61814, 121 | "git-commit": 61815, 122 | "git-merge": 61816, 123 | "git-pull-request": 61817, 124 | "github": 61818, 125 | "gitlab": 61819, 126 | "globe": 61820, 127 | "grid": 61821, 128 | "hard-drive": 61822, 129 | "hash": 61823, 130 | "headphones": 61824, 131 | "heart": 61825, 132 | "help-circle": 61826, 133 | "hexagon": 61827, 134 | "home": 61828, 135 | "image": 61829, 136 | "inbox": 61830, 137 | "info": 61831, 138 | "instagram": 61832, 139 | "italic": 61833, 140 | "key": 61834, 141 | "layers": 61835, 142 | "layout": 61836, 143 | "life-buoy": 61837, 144 | "link": 61838, 145 | "link-2": 61839, 146 | "linkedin": 61840, 147 | "list": 61841, 148 | "loader": 61842, 149 | "lock": 61843, 150 | "log-in": 61844, 151 | "log-out": 61845, 152 | "mail": 61846, 153 | "map": 61847, 154 | "map-pin": 61848, 155 | "maximize": 61849, 156 | "maximize-2": 61850, 157 | "meh": 61851, 158 | "menu": 61852, 159 | "message-circle": 61853, 160 | "message-square": 61854, 161 | "mic": 61855, 162 | "mic-off": 61856, 163 | "minimize": 61857, 164 | "minimize-2": 61858, 165 | "minus": 61859, 166 | "minus-circle": 61860, 167 | "minus-square": 61861, 168 | "monitor": 61862, 169 | "moon": 61863, 170 | "more-horizontal": 61864, 171 | "more-vertical": 61865, 172 | "mouse-pointer": 61866, 173 | "move": 61867, 174 | "music": 61868, 175 | "navigation": 61869, 176 | "navigation-2": 61870, 177 | "octagon": 61871, 178 | "package": 61872, 179 | "paperclip": 61873, 180 | "pause": 61874, 181 | "pause-circle": 61875, 182 | "pen-tool": 61876, 183 | "percent": 61877, 184 | "phone": 61878, 185 | "phone-call": 61879, 186 | "phone-forwarded": 61880, 187 | "phone-incoming": 61881, 188 | "phone-missed": 61882, 189 | "phone-off": 61883, 190 | "phone-outgoing": 61884, 191 | "pie-chart": 61885, 192 | "play": 61886, 193 | "play-circle": 61887, 194 | "plus": 61888, 195 | "plus-circle": 61889, 196 | "plus-square": 61890, 197 | "pocket": 61891, 198 | "power": 61892, 199 | "printer": 61893, 200 | "radio": 61894, 201 | "refresh-ccw": 61895, 202 | "refresh-cw": 61896, 203 | "repeat": 61897, 204 | "rewind": 61898, 205 | "rotate-ccw": 61899, 206 | "rotate-cw": 61900, 207 | "rss": 61901, 208 | "save": 61902, 209 | "scissors": 61903, 210 | "search": 61904, 211 | "send": 61905, 212 | "server": 61906, 213 | "settings": 61907, 214 | "share": 61908, 215 | "share-2": 61909, 216 | "shield": 61910, 217 | "shield-off": 61911, 218 | "shopping-bag": 61912, 219 | "shopping-cart": 61913, 220 | "shuffle": 61914, 221 | "sidebar": 61915, 222 | "skip-back": 61916, 223 | "skip-forward": 61917, 224 | "slack": 61918, 225 | "slash": 61919, 226 | "sliders": 61920, 227 | "smartphone": 61921, 228 | "smile": 61922, 229 | "speaker": 61923, 230 | "square": 61924, 231 | "star": 61925, 232 | "stop-circle": 61926, 233 | "sun": 61927, 234 | "sunrise": 61928, 235 | "sunset": 61929, 236 | "tablet": 61930, 237 | "tag": 61931, 238 | "target": 61932, 239 | "terminal": 61933, 240 | "thermometer": 61934, 241 | "thumbs-down": 61935, 242 | "thumbs-up": 61936, 243 | "toggle-left": 61937, 244 | "toggle-right": 61938, 245 | "tool": 61939, 246 | "trash": 61940, 247 | "trash-2": 61941, 248 | "trello": 61942, 249 | "trending-down": 61943, 250 | "trending-up": 61944, 251 | "triangle": 61945, 252 | "truck": 61946, 253 | "tv": 61947, 254 | "twitch": 61948, 255 | "twitter": 61949, 256 | "type": 61950, 257 | "umbrella": 61951, 258 | "underline": 61952, 259 | "unlock": 61953, 260 | "upload": 61954, 261 | "upload-cloud": 61955, 262 | "user": 61956, 263 | "user-check": 61957, 264 | "user-minus": 61958, 265 | "user-plus": 61959, 266 | "user-x": 61960, 267 | "users": 61961, 268 | "video": 61962, 269 | "video-off": 61963, 270 | "voicemail": 61964, 271 | "volume": 61965, 272 | "volume-1": 61966, 273 | "volume-2": 61967, 274 | "volume-x": 61968, 275 | "watch": 61969, 276 | "wifi": 61970, 277 | "wifi-off": 61971, 278 | "wind": 61972, 279 | "x": 61973, 280 | "x-circle": 61974, 281 | "x-octagon": 61975, 282 | "x-square": 61976, 283 | "youtube": 61977, 284 | "zap": 61978, 285 | "zap-off": 61979, 286 | "zoom-in": 61980, 287 | "zoom-out": 61981 288 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/FontAwesome.json: -------------------------------------------------------------------------------- 1 | { 2 | "glass": 61440, 3 | "music": 61441, 4 | "search": 61442, 5 | "envelope-o": 61443, 6 | "heart": 61444, 7 | "star": 61445, 8 | "star-o": 61446, 9 | "user": 61447, 10 | "film": 61448, 11 | "th-large": 61449, 12 | "th": 61450, 13 | "th-list": 61451, 14 | "check": 61452, 15 | "remove": 61453, 16 | "close": 61453, 17 | "times": 61453, 18 | "search-plus": 61454, 19 | "search-minus": 61456, 20 | "power-off": 61457, 21 | "signal": 61458, 22 | "gear": 61459, 23 | "cog": 61459, 24 | "trash-o": 61460, 25 | "home": 61461, 26 | "file-o": 61462, 27 | "clock-o": 61463, 28 | "road": 61464, 29 | "download": 61465, 30 | "arrow-circle-o-down": 61466, 31 | "arrow-circle-o-up": 61467, 32 | "inbox": 61468, 33 | "play-circle-o": 61469, 34 | "rotate-right": 61470, 35 | "repeat": 61470, 36 | "refresh": 61473, 37 | "list-alt": 61474, 38 | "lock": 61475, 39 | "flag": 61476, 40 | "headphones": 61477, 41 | "volume-off": 61478, 42 | "volume-down": 61479, 43 | "volume-up": 61480, 44 | "qrcode": 61481, 45 | "barcode": 61482, 46 | "tag": 61483, 47 | "tags": 61484, 48 | "book": 61485, 49 | "bookmark": 61486, 50 | "print": 61487, 51 | "camera": 61488, 52 | "font": 61489, 53 | "bold": 61490, 54 | "italic": 61491, 55 | "text-height": 61492, 56 | "text-width": 61493, 57 | "align-left": 61494, 58 | "align-center": 61495, 59 | "align-right": 61496, 60 | "align-justify": 61497, 61 | "list": 61498, 62 | "dedent": 61499, 63 | "outdent": 61499, 64 | "indent": 61500, 65 | "video-camera": 61501, 66 | "photo": 61502, 67 | "image": 61502, 68 | "picture-o": 61502, 69 | "pencil": 61504, 70 | "map-marker": 61505, 71 | "adjust": 61506, 72 | "tint": 61507, 73 | "edit": 61508, 74 | "pencil-square-o": 61508, 75 | "share-square-o": 61509, 76 | "check-square-o": 61510, 77 | "arrows": 61511, 78 | "step-backward": 61512, 79 | "fast-backward": 61513, 80 | "backward": 61514, 81 | "play": 61515, 82 | "pause": 61516, 83 | "stop": 61517, 84 | "forward": 61518, 85 | "fast-forward": 61520, 86 | "step-forward": 61521, 87 | "eject": 61522, 88 | "chevron-left": 61523, 89 | "chevron-right": 61524, 90 | "plus-circle": 61525, 91 | "minus-circle": 61526, 92 | "times-circle": 61527, 93 | "check-circle": 61528, 94 | "question-circle": 61529, 95 | "info-circle": 61530, 96 | "crosshairs": 61531, 97 | "times-circle-o": 61532, 98 | "check-circle-o": 61533, 99 | "ban": 61534, 100 | "arrow-left": 61536, 101 | "arrow-right": 61537, 102 | "arrow-up": 61538, 103 | "arrow-down": 61539, 104 | "mail-forward": 61540, 105 | "share": 61540, 106 | "expand": 61541, 107 | "compress": 61542, 108 | "plus": 61543, 109 | "minus": 61544, 110 | "asterisk": 61545, 111 | "exclamation-circle": 61546, 112 | "gift": 61547, 113 | "leaf": 61548, 114 | "fire": 61549, 115 | "eye": 61550, 116 | "eye-slash": 61552, 117 | "warning": 61553, 118 | "exclamation-triangle": 61553, 119 | "plane": 61554, 120 | "calendar": 61555, 121 | "random": 61556, 122 | "comment": 61557, 123 | "magnet": 61558, 124 | "chevron-up": 61559, 125 | "chevron-down": 61560, 126 | "retweet": 61561, 127 | "shopping-cart": 61562, 128 | "folder": 61563, 129 | "folder-open": 61564, 130 | "arrows-v": 61565, 131 | "arrows-h": 61566, 132 | "bar-chart-o": 61568, 133 | "bar-chart": 61568, 134 | "twitter-square": 61569, 135 | "facebook-square": 61570, 136 | "camera-retro": 61571, 137 | "key": 61572, 138 | "gears": 61573, 139 | "cogs": 61573, 140 | "comments": 61574, 141 | "thumbs-o-up": 61575, 142 | "thumbs-o-down": 61576, 143 | "star-half": 61577, 144 | "heart-o": 61578, 145 | "sign-out": 61579, 146 | "linkedin-square": 61580, 147 | "thumb-tack": 61581, 148 | "external-link": 61582, 149 | "sign-in": 61584, 150 | "trophy": 61585, 151 | "github-square": 61586, 152 | "upload": 61587, 153 | "lemon-o": 61588, 154 | "phone": 61589, 155 | "square-o": 61590, 156 | "bookmark-o": 61591, 157 | "phone-square": 61592, 158 | "twitter": 61593, 159 | "facebook-f": 61594, 160 | "facebook": 61594, 161 | "github": 61595, 162 | "unlock": 61596, 163 | "credit-card": 61597, 164 | "feed": 61598, 165 | "rss": 61598, 166 | "hdd-o": 61600, 167 | "bullhorn": 61601, 168 | "bell": 61683, 169 | "certificate": 61603, 170 | "hand-o-right": 61604, 171 | "hand-o-left": 61605, 172 | "hand-o-up": 61606, 173 | "hand-o-down": 61607, 174 | "arrow-circle-left": 61608, 175 | "arrow-circle-right": 61609, 176 | "arrow-circle-up": 61610, 177 | "arrow-circle-down": 61611, 178 | "globe": 61612, 179 | "wrench": 61613, 180 | "tasks": 61614, 181 | "filter": 61616, 182 | "briefcase": 61617, 183 | "arrows-alt": 61618, 184 | "group": 61632, 185 | "users": 61632, 186 | "chain": 61633, 187 | "link": 61633, 188 | "cloud": 61634, 189 | "flask": 61635, 190 | "cut": 61636, 191 | "scissors": 61636, 192 | "copy": 61637, 193 | "files-o": 61637, 194 | "paperclip": 61638, 195 | "save": 61639, 196 | "floppy-o": 61639, 197 | "square": 61640, 198 | "navicon": 61641, 199 | "reorder": 61641, 200 | "bars": 61641, 201 | "list-ul": 61642, 202 | "list-ol": 61643, 203 | "strikethrough": 61644, 204 | "underline": 61645, 205 | "table": 61646, 206 | "magic": 61648, 207 | "truck": 61649, 208 | "pinterest": 61650, 209 | "pinterest-square": 61651, 210 | "google-plus-square": 61652, 211 | "google-plus": 61653, 212 | "money": 61654, 213 | "caret-down": 61655, 214 | "caret-up": 61656, 215 | "caret-left": 61657, 216 | "caret-right": 61658, 217 | "columns": 61659, 218 | "unsorted": 61660, 219 | "sort": 61660, 220 | "sort-down": 61661, 221 | "sort-desc": 61661, 222 | "sort-up": 61662, 223 | "sort-asc": 61662, 224 | "envelope": 61664, 225 | "linkedin": 61665, 226 | "rotate-left": 61666, 227 | "undo": 61666, 228 | "legal": 61667, 229 | "gavel": 61667, 230 | "dashboard": 61668, 231 | "tachometer": 61668, 232 | "comment-o": 61669, 233 | "comments-o": 61670, 234 | "flash": 61671, 235 | "bolt": 61671, 236 | "sitemap": 61672, 237 | "umbrella": 61673, 238 | "paste": 61674, 239 | "clipboard": 61674, 240 | "lightbulb-o": 61675, 241 | "exchange": 61676, 242 | "cloud-download": 61677, 243 | "cloud-upload": 61678, 244 | "user-md": 61680, 245 | "stethoscope": 61681, 246 | "suitcase": 61682, 247 | "bell-o": 61602, 248 | "coffee": 61684, 249 | "cutlery": 61685, 250 | "file-text-o": 61686, 251 | "building-o": 61687, 252 | "hospital-o": 61688, 253 | "ambulance": 61689, 254 | "medkit": 61690, 255 | "fighter-jet": 61691, 256 | "beer": 61692, 257 | "h-square": 61693, 258 | "plus-square": 61694, 259 | "angle-double-left": 61696, 260 | "angle-double-right": 61697, 261 | "angle-double-up": 61698, 262 | "angle-double-down": 61699, 263 | "angle-left": 61700, 264 | "angle-right": 61701, 265 | "angle-up": 61702, 266 | "angle-down": 61703, 267 | "desktop": 61704, 268 | "laptop": 61705, 269 | "tablet": 61706, 270 | "mobile-phone": 61707, 271 | "mobile": 61707, 272 | "circle-o": 61708, 273 | "quote-left": 61709, 274 | "quote-right": 61710, 275 | "spinner": 61712, 276 | "circle": 61713, 277 | "mail-reply": 61714, 278 | "reply": 61714, 279 | "github-alt": 61715, 280 | "folder-o": 61716, 281 | "folder-open-o": 61717, 282 | "smile-o": 61720, 283 | "frown-o": 61721, 284 | "meh-o": 61722, 285 | "gamepad": 61723, 286 | "keyboard-o": 61724, 287 | "flag-o": 61725, 288 | "flag-checkered": 61726, 289 | "terminal": 61728, 290 | "code": 61729, 291 | "mail-reply-all": 61730, 292 | "reply-all": 61730, 293 | "star-half-empty": 61731, 294 | "star-half-full": 61731, 295 | "star-half-o": 61731, 296 | "location-arrow": 61732, 297 | "crop": 61733, 298 | "code-fork": 61734, 299 | "unlink": 61735, 300 | "chain-broken": 61735, 301 | "question": 61736, 302 | "info": 61737, 303 | "exclamation": 61738, 304 | "superscript": 61739, 305 | "subscript": 61740, 306 | "eraser": 61741, 307 | "puzzle-piece": 61742, 308 | "microphone": 61744, 309 | "microphone-slash": 61745, 310 | "shield": 61746, 311 | "calendar-o": 61747, 312 | "fire-extinguisher": 61748, 313 | "rocket": 61749, 314 | "maxcdn": 61750, 315 | "chevron-circle-left": 61751, 316 | "chevron-circle-right": 61752, 317 | "chevron-circle-up": 61753, 318 | "chevron-circle-down": 61754, 319 | "html5": 61755, 320 | "css3": 61756, 321 | "anchor": 61757, 322 | "unlock-alt": 61758, 323 | "bullseye": 61760, 324 | "ellipsis-h": 61761, 325 | "ellipsis-v": 61762, 326 | "rss-square": 61763, 327 | "play-circle": 61764, 328 | "ticket": 61765, 329 | "minus-square": 61766, 330 | "minus-square-o": 61767, 331 | "level-up": 61768, 332 | "level-down": 61769, 333 | "check-square": 61770, 334 | "pencil-square": 61771, 335 | "external-link-square": 61772, 336 | "share-square": 61773, 337 | "compass": 61774, 338 | "toggle-down": 61776, 339 | "caret-square-o-down": 61776, 340 | "toggle-up": 61777, 341 | "caret-square-o-up": 61777, 342 | "toggle-right": 61778, 343 | "caret-square-o-right": 61778, 344 | "euro": 61779, 345 | "eur": 61779, 346 | "gbp": 61780, 347 | "dollar": 61781, 348 | "usd": 61781, 349 | "rupee": 61782, 350 | "inr": 61782, 351 | "cny": 61783, 352 | "rmb": 61783, 353 | "yen": 61783, 354 | "jpy": 61783, 355 | "ruble": 61784, 356 | "rouble": 61784, 357 | "rub": 61784, 358 | "won": 61785, 359 | "krw": 61785, 360 | "bitcoin": 61786, 361 | "btc": 61786, 362 | "file": 61787, 363 | "file-text": 61788, 364 | "sort-alpha-asc": 61789, 365 | "sort-alpha-desc": 61790, 366 | "sort-amount-asc": 61792, 367 | "sort-amount-desc": 61793, 368 | "sort-numeric-asc": 61794, 369 | "sort-numeric-desc": 61795, 370 | "thumbs-up": 61796, 371 | "thumbs-down": 61797, 372 | "youtube-square": 61798, 373 | "youtube": 61799, 374 | "xing": 61800, 375 | "xing-square": 61801, 376 | "youtube-play": 61802, 377 | "dropbox": 61803, 378 | "stack-overflow": 61804, 379 | "instagram": 61805, 380 | "flickr": 61806, 381 | "adn": 61808, 382 | "bitbucket": 61809, 383 | "bitbucket-square": 61810, 384 | "tumblr": 61811, 385 | "tumblr-square": 61812, 386 | "long-arrow-down": 61813, 387 | "long-arrow-up": 61814, 388 | "long-arrow-left": 61815, 389 | "long-arrow-right": 61816, 390 | "apple": 61817, 391 | "windows": 61818, 392 | "android": 61819, 393 | "linux": 61820, 394 | "dribbble": 61821, 395 | "skype": 61822, 396 | "foursquare": 61824, 397 | "trello": 61825, 398 | "female": 61826, 399 | "male": 61827, 400 | "gittip": 61828, 401 | "gratipay": 61828, 402 | "sun-o": 61829, 403 | "moon-o": 61830, 404 | "archive": 61831, 405 | "bug": 61832, 406 | "vk": 61833, 407 | "weibo": 61834, 408 | "renren": 61835, 409 | "pagelines": 61836, 410 | "stack-exchange": 61837, 411 | "arrow-circle-o-right": 61838, 412 | "arrow-circle-o-left": 61840, 413 | "toggle-left": 61841, 414 | "caret-square-o-left": 61841, 415 | "dot-circle-o": 61842, 416 | "wheelchair": 61843, 417 | "vimeo-square": 61844, 418 | "turkish-lira": 61845, 419 | "try": 61845, 420 | "plus-square-o": 61846, 421 | "space-shuttle": 61847, 422 | "slack": 61848, 423 | "envelope-square": 61849, 424 | "wordpress": 61850, 425 | "openid": 61851, 426 | "institution": 61852, 427 | "bank": 61852, 428 | "university": 61852, 429 | "mortar-board": 61853, 430 | "graduation-cap": 61853, 431 | "yahoo": 61854, 432 | "google": 61856, 433 | "reddit": 61857, 434 | "reddit-square": 61858, 435 | "stumbleupon-circle": 61859, 436 | "stumbleupon": 61860, 437 | "delicious": 61861, 438 | "digg": 61862, 439 | "pied-piper-pp": 61863, 440 | "pied-piper-alt": 61864, 441 | "drupal": 61865, 442 | "joomla": 61866, 443 | "language": 61867, 444 | "fax": 61868, 445 | "building": 61869, 446 | "child": 61870, 447 | "paw": 61872, 448 | "spoon": 61873, 449 | "cube": 61874, 450 | "cubes": 61875, 451 | "behance": 61876, 452 | "behance-square": 61877, 453 | "steam": 61878, 454 | "steam-square": 61879, 455 | "recycle": 61880, 456 | "automobile": 61881, 457 | "car": 61881, 458 | "cab": 61882, 459 | "taxi": 61882, 460 | "tree": 61883, 461 | "spotify": 61884, 462 | "deviantart": 61885, 463 | "soundcloud": 61886, 464 | "database": 61888, 465 | "file-pdf-o": 61889, 466 | "file-word-o": 61890, 467 | "file-excel-o": 61891, 468 | "file-powerpoint-o": 61892, 469 | "file-photo-o": 61893, 470 | "file-picture-o": 61893, 471 | "file-image-o": 61893, 472 | "file-zip-o": 61894, 473 | "file-archive-o": 61894, 474 | "file-sound-o": 61895, 475 | "file-audio-o": 61895, 476 | "file-movie-o": 61896, 477 | "file-video-o": 61896, 478 | "file-code-o": 61897, 479 | "vine": 61898, 480 | "codepen": 61899, 481 | "jsfiddle": 61900, 482 | "life-bouy": 61901, 483 | "life-buoy": 61901, 484 | "life-saver": 61901, 485 | "support": 61901, 486 | "life-ring": 61901, 487 | "circle-o-notch": 61902, 488 | "ra": 61904, 489 | "resistance": 61904, 490 | "rebel": 61904, 491 | "ge": 61905, 492 | "empire": 61905, 493 | "git-square": 61906, 494 | "git": 61907, 495 | "y-combinator-square": 61908, 496 | "yc-square": 61908, 497 | "hacker-news": 61908, 498 | "tencent-weibo": 61909, 499 | "qq": 61910, 500 | "wechat": 61911, 501 | "weixin": 61911, 502 | "send": 61912, 503 | "paper-plane": 61912, 504 | "send-o": 61913, 505 | "paper-plane-o": 61913, 506 | "history": 61914, 507 | "circle-thin": 61915, 508 | "header": 61916, 509 | "paragraph": 61917, 510 | "sliders": 61918, 511 | "share-alt": 61920, 512 | "share-alt-square": 61921, 513 | "bomb": 61922, 514 | "soccer-ball-o": 61923, 515 | "futbol-o": 61923, 516 | "tty": 61924, 517 | "binoculars": 61925, 518 | "plug": 61926, 519 | "slideshare": 61927, 520 | "twitch": 61928, 521 | "yelp": 61929, 522 | "newspaper-o": 61930, 523 | "wifi": 61931, 524 | "calculator": 61932, 525 | "paypal": 61933, 526 | "google-wallet": 61934, 527 | "cc-visa": 61936, 528 | "cc-mastercard": 61937, 529 | "cc-discover": 61938, 530 | "cc-amex": 61939, 531 | "cc-paypal": 61940, 532 | "cc-stripe": 61941, 533 | "bell-slash": 61942, 534 | "bell-slash-o": 61943, 535 | "trash": 61944, 536 | "copyright": 61945, 537 | "at": 61946, 538 | "eyedropper": 61947, 539 | "paint-brush": 61948, 540 | "birthday-cake": 61949, 541 | "area-chart": 61950, 542 | "pie-chart": 61952, 543 | "line-chart": 61953, 544 | "lastfm": 61954, 545 | "lastfm-square": 61955, 546 | "toggle-off": 61956, 547 | "toggle-on": 61957, 548 | "bicycle": 61958, 549 | "bus": 61959, 550 | "ioxhost": 61960, 551 | "angellist": 61961, 552 | "cc": 61962, 553 | "shekel": 61963, 554 | "sheqel": 61963, 555 | "ils": 61963, 556 | "meanpath": 61964, 557 | "buysellads": 61965, 558 | "connectdevelop": 61966, 559 | "dashcube": 61968, 560 | "forumbee": 61969, 561 | "leanpub": 61970, 562 | "sellsy": 61971, 563 | "shirtsinbulk": 61972, 564 | "simplybuilt": 61973, 565 | "skyatlas": 61974, 566 | "cart-plus": 61975, 567 | "cart-arrow-down": 61976, 568 | "diamond": 61977, 569 | "ship": 61978, 570 | "user-secret": 61979, 571 | "motorcycle": 61980, 572 | "street-view": 61981, 573 | "heartbeat": 61982, 574 | "venus": 61985, 575 | "mars": 61986, 576 | "mercury": 61987, 577 | "intersex": 61988, 578 | "transgender": 61988, 579 | "transgender-alt": 61989, 580 | "venus-double": 61990, 581 | "mars-double": 61991, 582 | "venus-mars": 61992, 583 | "mars-stroke": 61993, 584 | "mars-stroke-v": 61994, 585 | "mars-stroke-h": 61995, 586 | "neuter": 61996, 587 | "genderless": 61997, 588 | "facebook-official": 62000, 589 | "pinterest-p": 62001, 590 | "whatsapp": 62002, 591 | "server": 62003, 592 | "user-plus": 62004, 593 | "user-times": 62005, 594 | "hotel": 62006, 595 | "bed": 62006, 596 | "viacoin": 62007, 597 | "train": 62008, 598 | "subway": 62009, 599 | "medium": 62010, 600 | "yc": 62011, 601 | "y-combinator": 62011, 602 | "optin-monster": 62012, 603 | "opencart": 62013, 604 | "expeditedssl": 62014, 605 | "battery-4": 62016, 606 | "battery": 62016, 607 | "battery-full": 62016, 608 | "battery-3": 62017, 609 | "battery-three-quarters": 62017, 610 | "battery-2": 62018, 611 | "battery-half": 62018, 612 | "battery-1": 62019, 613 | "battery-quarter": 62019, 614 | "battery-0": 62020, 615 | "battery-empty": 62020, 616 | "mouse-pointer": 62021, 617 | "i-cursor": 62022, 618 | "object-group": 62023, 619 | "object-ungroup": 62024, 620 | "sticky-note": 62025, 621 | "sticky-note-o": 62026, 622 | "cc-jcb": 62027, 623 | "cc-diners-club": 62028, 624 | "clone": 62029, 625 | "balance-scale": 62030, 626 | "hourglass-o": 62032, 627 | "hourglass-1": 62033, 628 | "hourglass-start": 62033, 629 | "hourglass-2": 62034, 630 | "hourglass-half": 62034, 631 | "hourglass-3": 62035, 632 | "hourglass-end": 62035, 633 | "hourglass": 62036, 634 | "hand-grab-o": 62037, 635 | "hand-rock-o": 62037, 636 | "hand-stop-o": 62038, 637 | "hand-paper-o": 62038, 638 | "hand-scissors-o": 62039, 639 | "hand-lizard-o": 62040, 640 | "hand-spock-o": 62041, 641 | "hand-pointer-o": 62042, 642 | "hand-peace-o": 62043, 643 | "trademark": 62044, 644 | "registered": 62045, 645 | "creative-commons": 62046, 646 | "gg": 62048, 647 | "gg-circle": 62049, 648 | "tripadvisor": 62050, 649 | "odnoklassniki": 62051, 650 | "odnoklassniki-square": 62052, 651 | "get-pocket": 62053, 652 | "wikipedia-w": 62054, 653 | "safari": 62055, 654 | "chrome": 62056, 655 | "firefox": 62057, 656 | "opera": 62058, 657 | "internet-explorer": 62059, 658 | "tv": 62060, 659 | "television": 62060, 660 | "contao": 62061, 661 | "500px": 62062, 662 | "amazon": 62064, 663 | "calendar-plus-o": 62065, 664 | "calendar-minus-o": 62066, 665 | "calendar-times-o": 62067, 666 | "calendar-check-o": 62068, 667 | "industry": 62069, 668 | "map-pin": 62070, 669 | "map-signs": 62071, 670 | "map-o": 62072, 671 | "map": 62073, 672 | "commenting": 62074, 673 | "commenting-o": 62075, 674 | "houzz": 62076, 675 | "vimeo": 62077, 676 | "black-tie": 62078, 677 | "fonticons": 62080, 678 | "reddit-alien": 62081, 679 | "edge": 62082, 680 | "credit-card-alt": 62083, 681 | "codiepie": 62084, 682 | "modx": 62085, 683 | "fort-awesome": 62086, 684 | "usb": 62087, 685 | "product-hunt": 62088, 686 | "mixcloud": 62089, 687 | "scribd": 62090, 688 | "pause-circle": 62091, 689 | "pause-circle-o": 62092, 690 | "stop-circle": 62093, 691 | "stop-circle-o": 62094, 692 | "shopping-bag": 62096, 693 | "shopping-basket": 62097, 694 | "hashtag": 62098, 695 | "bluetooth": 62099, 696 | "bluetooth-b": 62100, 697 | "percent": 62101, 698 | "gitlab": 62102, 699 | "wpbeginner": 62103, 700 | "wpforms": 62104, 701 | "envira": 62105, 702 | "universal-access": 62106, 703 | "wheelchair-alt": 62107, 704 | "question-circle-o": 62108, 705 | "blind": 62109, 706 | "audio-description": 62110, 707 | "volume-control-phone": 62112, 708 | "braille": 62113, 709 | "assistive-listening-systems": 62114, 710 | "asl-interpreting": 62115, 711 | "american-sign-language-interpreting": 62115, 712 | "deafness": 62116, 713 | "hard-of-hearing": 62116, 714 | "deaf": 62116, 715 | "glide": 62117, 716 | "glide-g": 62118, 717 | "signing": 62119, 718 | "sign-language": 62119, 719 | "low-vision": 62120, 720 | "viadeo": 62121, 721 | "viadeo-square": 62122, 722 | "snapchat": 62123, 723 | "snapchat-ghost": 62124, 724 | "snapchat-square": 62125, 725 | "pied-piper": 62126, 726 | "first-order": 62128, 727 | "yoast": 62129, 728 | "themeisle": 62130, 729 | "google-plus-circle": 62131, 730 | "google-plus-official": 62131, 731 | "fa": 62132, 732 | "font-awesome": 62132, 733 | "handshake-o": 62133, 734 | "envelope-open": 62134, 735 | "envelope-open-o": 62135, 736 | "linode": 62136, 737 | "address-book": 62137, 738 | "address-book-o": 62138, 739 | "vcard": 62139, 740 | "address-card": 62139, 741 | "vcard-o": 62140, 742 | "address-card-o": 62140, 743 | "user-circle": 62141, 744 | "user-circle-o": 62142, 745 | "user-o": 62144, 746 | "id-badge": 62145, 747 | "drivers-license": 62146, 748 | "id-card": 62146, 749 | "drivers-license-o": 62147, 750 | "id-card-o": 62147, 751 | "quora": 62148, 752 | "free-code-camp": 62149, 753 | "telegram": 62150, 754 | "thermometer-4": 62151, 755 | "thermometer": 62151, 756 | "thermometer-full": 62151, 757 | "thermometer-3": 62152, 758 | "thermometer-three-quarters": 62152, 759 | "thermometer-2": 62153, 760 | "thermometer-half": 62153, 761 | "thermometer-1": 62154, 762 | "thermometer-quarter": 62154, 763 | "thermometer-0": 62155, 764 | "thermometer-empty": 62155, 765 | "shower": 62156, 766 | "bathtub": 62157, 767 | "s15": 62157, 768 | "bath": 62157, 769 | "podcast": 62158, 770 | "window-maximize": 62160, 771 | "window-minimize": 62161, 772 | "window-restore": 62162, 773 | "times-rectangle": 62163, 774 | "window-close": 62163, 775 | "times-rectangle-o": 62164, 776 | "window-close-o": 62164, 777 | "bandcamp": 62165, 778 | "grav": 62166, 779 | "etsy": 62167, 780 | "imdb": 62168, 781 | "ravelry": 62169, 782 | "eercast": 62170, 783 | "microchip": 62171, 784 | "snowflake-o": 62172, 785 | "superpowers": 62173, 786 | "wpexplorer": 62174, 787 | "meetup": 62176 788 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/Fontisto.json: -------------------------------------------------------------------------------- 1 | { 2 | "acrobat-reader": 60095, 3 | "applemusic": 60096, 4 | "atlassian": 60097, 5 | "aws": 60098, 6 | "baidu": 60099, 7 | "bing": 60100, 8 | "bower": 60101, 9 | "dailymotion": 60102, 10 | "delicious": 60103, 11 | "deviantart": 60104, 12 | "disqus": 60105, 13 | "flipboard": 60106, 14 | "graphql": 60107, 15 | "hexo": 60108, 16 | "hipchat": 60109, 17 | "icq": 60110, 18 | "invision": 60111, 19 | "jekyll": 60112, 20 | "jira": 60113, 21 | "json": 60114, 22 | "livestream": 60115, 23 | "messenger": 60116, 24 | "meteor": 60117, 25 | "onenote": 60118, 26 | "mongodb": 60119, 27 | "netflix": 60120, 28 | "nginx": 60121, 29 | "odnoklassniki": 60122, 30 | "onedrive": 60123, 31 | "origin": 60124, 32 | "pingdom": 60125, 33 | "rails": 60126, 34 | "raspberry-pi": 60127, 35 | "redis": 60128, 36 | "redux": 60129, 37 | "saucelabs": 60130, 38 | "scorp": 60131, 39 | "sentry": 60132, 40 | "shazam": 60133, 41 | "shopify": 60134, 42 | "sinaweibo": 60135, 43 | "slides": 60136, 44 | "sublimetext": 60137, 45 | "swift": 60138, 46 | "ted": 60139, 47 | "telegram": 60140, 48 | "tesla": 60141, 49 | "tinder": 60142, 50 | "treehouse": 60143, 51 | "twoo": 60144, 52 | "udacity": 60145, 53 | "webstorm": 60146, 54 | "wix": 60147, 55 | "yandex-international": 60148, 56 | "yandex": 60149, 57 | "ember": 60087, 58 | "cpanel": 60088, 59 | "viber": 60089, 60 | "deskpro": 60090, 61 | "discord": 60091, 62 | "discourse": 60092, 63 | "adobe": 60059, 64 | "algolia": 60060, 65 | "atom": 60061, 66 | "babel": 60062, 67 | "coffeescript": 60063, 68 | "electronjs": 60064, 69 | "mysql": 60065, 70 | "oracle": 60066, 71 | "php": 60067, 72 | "sourcetree": 60068, 73 | "ubuntu": 60069, 74 | "unity": 60070, 75 | "unreal-engine": 60071, 76 | "webpack": 60072, 77 | "angelist": 60026, 78 | "app-store": 60027, 79 | "digg": 60030, 80 | "dockers": 60031, 81 | "envato": 60032, 82 | "gitlab": 60033, 83 | "google-drive": 60034, 84 | "google-play": 60035, 85 | "grunt": 60036, 86 | "gulp": 60037, 87 | "hacker-news": 60038, 88 | "imdb": 60039, 89 | "jenkins": 60040, 90 | "joomla": 60041, 91 | "kickstarter": 60042, 92 | "laravel": 60043, 93 | "less": 60044, 94 | "line": 60045, 95 | "npm": 60046, 96 | "periscope": 60047, 97 | "product-hunt": 60048, 98 | "quora": 60049, 99 | "skyatlas": 60050, 100 | "stylus": 60051, 101 | "travis": 60052, 102 | "trello": 60053, 103 | "uber": 60054, 104 | "vine": 60055, 105 | "visual-studio": 60056, 106 | "vk": 60057, 107 | "vuejs": 60058, 108 | "microsoft": 60025, 109 | "blogger": 60028, 110 | "500px": 59658, 111 | "amazon": 59659, 112 | "ampproject": 59660, 113 | "android": 59661, 114 | "angularjs": 59662, 115 | "apple": 59663, 116 | "behance": 59664, 117 | "bitbucket": 59665, 118 | "bluetooth-b": 59666, 119 | "cloudflare": 59667, 120 | "codepen": 59668, 121 | "css3": 59669, 122 | "dribbble": 59670, 123 | "dropbox": 59671, 124 | "facebook": 59672, 125 | "flickr": 59673, 126 | "foursquare": 59674, 127 | "git": 59675, 128 | "github": 59676, 129 | "google-plus": 59677, 130 | "google": 59678, 131 | "hangout": 59679, 132 | "houzz": 59680, 133 | "html5": 59681, 134 | "instagram": 59682, 135 | "java": 59683, 136 | "jquery": 59684, 137 | "jsfiddle": 59685, 138 | "linkedin": 59686, 139 | "linux": 59687, 140 | "magento": 59688, 141 | "maxcdn": 59689, 142 | "medium": 59690, 143 | "meetup": 59691, 144 | "nodejs": 59692, 145 | "opencart": 59693, 146 | "pinterest": 59694, 147 | "playstation": 59695, 148 | "python": 59696, 149 | "react": 59697, 150 | "reddit": 59698, 151 | "ruby": 59699, 152 | "sass": 59700, 153 | "skype": 59701, 154 | "slack": 59702, 155 | "snapchat": 59703, 156 | "soundcloud": 59704, 157 | "spotify": 59705, 158 | "stack-overflow": 59706, 159 | "steam": 59707, 160 | "stumbleupon": 59708, 161 | "svn": 59709, 162 | "swarm": 59710, 163 | "tripadvisor": 59711, 164 | "tumblr": 59712, 165 | "twitch": 59713, 166 | "twitter": 59714, 167 | "vimeo": 59715, 168 | "wetransfer": 59716, 169 | "whatsapp": 59717, 170 | "wifi-logo": 59718, 171 | "wikipedia": 59719, 172 | "windows": 59720, 173 | "wordpress": 59721, 174 | "xbox": 59722, 175 | "yahoo": 59723, 176 | "yelp": 59724, 177 | "youtube-play": 59725, 178 | "cocoapods": 60200, 179 | "composer": 60201, 180 | "yarn": 60202, 181 | "language": 59943, 182 | "toggle-off": 59948, 183 | "toggle-on": 60029, 184 | "anchor": 60094, 185 | "archive": 60150, 186 | "at": 60151, 187 | "ban": 60152, 188 | "battery-half": 60153, 189 | "battery-full": 60154, 190 | "battery-empty": 60155, 191 | "battery-quarter": 60156, 192 | "battery-three-quarters": 60157, 193 | "bell-alt": 60158, 194 | "bell": 60159, 195 | "bookmark-alt": 60160, 196 | "bookmark": 60161, 197 | "bug": 60162, 198 | "calculator": 60163, 199 | "calendar": 60164, 200 | "crosshairs": 60165, 201 | "desktop": 60166, 202 | "download": 60167, 203 | "film": 60168, 204 | "history": 60169, 205 | "hourglass-end": 60170, 206 | "hourglass-half": 60171, 207 | "hourglass-start": 60172, 208 | "hourglass": 60173, 209 | "info": 60174, 210 | "key": 60175, 211 | "keyboard": 60176, 212 | "laptop": 60177, 213 | "lightbulb": 60178, 214 | "magnet": 60179, 215 | "map-marker-alt": 60180, 216 | "map-marker": 60181, 217 | "map": 60182, 218 | "mobile-alt": 60183, 219 | "mobile": 60184, 220 | "paw": 60185, 221 | "phone": 60186, 222 | "power": 60187, 223 | "qrcode": 60188, 224 | "question": 60189, 225 | "search": 60190, 226 | "sitemap": 60191, 227 | "star-half": 60192, 228 | "stopwatch": 60193, 229 | "tablet-alt": 60194, 230 | "tablet": 60195, 231 | "ticket": 60196, 232 | "tv": 60197, 233 | "upload": 60198, 234 | "user-secret": 60199, 235 | "camera": 59798, 236 | "clock": 59799, 237 | "close-a": 59800, 238 | "code": 59801, 239 | "comment": 59802, 240 | "commenting": 59803, 241 | "comments": 59804, 242 | "crop": 59805, 243 | "cursor": 59806, 244 | "database": 59807, 245 | "date": 59808, 246 | "earth": 59809, 247 | "email": 59810, 248 | "eye": 59811, 249 | "female": 59812, 250 | "favorite": 59813, 251 | "filter": 59814, 252 | "fire": 59815, 253 | "flag": 59816, 254 | "flash": 59817, 255 | "home": 59818, 256 | "link": 59819, 257 | "locked": 59820, 258 | "male": 59821, 259 | "minus-a": 59822, 260 | "more-v-a": 59823, 261 | "more-v": 59824, 262 | "move-h-a": 59825, 263 | "move-h": 59826, 264 | "nav-icon-a": 59827, 265 | "nav-icon-grid-a": 59828, 266 | "nav-icon-grid": 59829, 267 | "nav-icon-list-a": 59830, 268 | "nav-icon-list": 59831, 269 | "nav-icon": 59832, 270 | "navigate": 59833, 271 | "paper-plane": 59834, 272 | "person": 59835, 273 | "persons": 59836, 274 | "picture": 59837, 275 | "plus-a": 59838, 276 | "print": 59839, 277 | "quote-a-left": 59840, 278 | "quote-a-right": 59841, 279 | "quote-left": 59842, 280 | "quote-right": 59843, 281 | "reply": 59844, 282 | "rss": 59845, 283 | "scissors": 59846, 284 | "share-a": 59847, 285 | "share": 59848, 286 | "trash": 59849, 287 | "unlocked": 59850, 288 | "usb": 59851, 289 | "wifi": 59852, 290 | "world-o": 59853, 291 | "world": 59854, 292 | "zoom": 59855, 293 | "adjust": 60015, 294 | "recycle": 60016, 295 | "pinboard": 60093, 296 | "zoom-minus": 60082, 297 | "zoom-plus": 60083, 298 | "check": 60084, 299 | "asterisk": 60085, 300 | "hashtag": 60086, 301 | "checkbox-active": 59778, 302 | "checkbox-passive": 59779, 303 | "radio-btn-active": 59780, 304 | "radio-btn-passive": 59781, 305 | "shopping-bag-1": 60011, 306 | "shopping-bag": 60012, 307 | "shopping-barcode": 60017, 308 | "shopping-basket-add": 60018, 309 | "shopping-basket-remove": 60019, 310 | "shopping-basket": 60020, 311 | "shopping-package": 60021, 312 | "shopping-pos-machine": 60022, 313 | "shopping-sale": 60023, 314 | "shopping-store": 60024, 315 | "angle-dobule-down": 59748, 316 | "angle-dobule-left": 59749, 317 | "angle-dobule-right": 59750, 318 | "angle-dobule-up": 59751, 319 | "angle-down": 59752, 320 | "angle-left": 59753, 321 | "angle-right": 59754, 322 | "angle-up": 59755, 323 | "arrow-down-l": 59756, 324 | "arrow-down": 59757, 325 | "arrow-expand": 59758, 326 | "arrow-h": 59759, 327 | "arrow-left-l": 59760, 328 | "arrow-left": 59761, 329 | "arrow-move": 59762, 330 | "arrow-resize": 59763, 331 | "arrow-return-left": 59764, 332 | "arrow-return-right": 59765, 333 | "arrow-right-l": 59766, 334 | "arrow-right": 59767, 335 | "arrow-swap": 59768, 336 | "arrow-up-l": 59769, 337 | "arrow-up": 59770, 338 | "arrow-v": 59771, 339 | "caret-down": 59772, 340 | "caret-left": 59773, 341 | "caret-right": 59774, 342 | "caret-up": 59775, 343 | "fi": 59776, 344 | "fontisto": 59777, 345 | "backward": 59866, 346 | "eject": 59867, 347 | "equalizer": 59868, 348 | "forward": 59869, 349 | "headphone": 59870, 350 | "heart": 59871, 351 | "mic": 59872, 352 | "music-note": 59873, 353 | "pause": 59874, 354 | "play-list": 59875, 355 | "play": 59876, 356 | "player-settings": 59877, 357 | "podcast": 59878, 358 | "random": 59879, 359 | "record": 59880, 360 | "star": 59881, 361 | "step-backwrad": 59882, 362 | "step-forward": 59883, 363 | "stop": 59884, 364 | "volume-down": 59885, 365 | "volume-mute": 59886, 366 | "volume-off": 59887, 367 | "volume-up": 59888, 368 | "airplay": 60008, 369 | "bold": 59918, 370 | "broken-link": 59919, 371 | "center-align": 59920, 372 | "close": 59921, 373 | "columns": 59922, 374 | "copy": 59923, 375 | "eraser": 59924, 376 | "export": 59925, 377 | "file-1": 59926, 378 | "file-2": 59927, 379 | "folder": 59928, 380 | "font": 59929, 381 | "import": 59930, 382 | "indent": 59931, 383 | "italic": 59932, 384 | "justify": 59933, 385 | "left-align": 59934, 386 | "link2": 59935, 387 | "list-1": 59936, 388 | "list-2": 59937, 389 | "outdent": 59938, 390 | "paperclip": 59939, 391 | "paragraph": 59940, 392 | "paste": 59941, 393 | "preview": 59942, 394 | "print2": 59943, 395 | "redo": 59944, 396 | "right-align": 59945, 397 | "save-1": 59946, 398 | "save": 59947, 399 | "scissors2": 59948, 400 | "strikethrough": 59949, 401 | "subscript": 59950, 402 | "superscript": 59951, 403 | "table-1": 59952, 404 | "table-2": 59953, 405 | "text-height": 59954, 406 | "text-width": 59955, 407 | "underline": 59956, 408 | "undo": 59957, 409 | "cloud-down": 59958, 410 | "cloud-refresh": 59959, 411 | "cloud-up": 59960, 412 | "cloudy-gusts": 59961, 413 | "cloudy": 59962, 414 | "compass": 59963, 415 | "day-cloudy": 59964, 416 | "day-haze": 59965, 417 | "day-lightning": 59966, 418 | "day-rain": 59967, 419 | "day-snow": 59968, 420 | "day-sunny": 59969, 421 | "fog": 59970, 422 | "horizon-alt": 59971, 423 | "horizon": 59972, 424 | "lightning": 59973, 425 | "lightnings": 59974, 426 | "night-alt-cloudy": 59975, 427 | "night-alt-lightning": 59976, 428 | "night-alt-rain": 59977, 429 | "night-alt-snow": 59978, 430 | "night-clear": 59979, 431 | "rain": 59980, 432 | "rainbow": 59981, 433 | "rains": 59982, 434 | "snow": 59983, 435 | "snows": 59984, 436 | "thermometer": 59985, 437 | "umbrella": 59986, 438 | "wind": 59987, 439 | "confused": 59988, 440 | "dizzy": 59989, 441 | "expressionless": 59990, 442 | "frowning": 59991, 443 | "heart-eyes": 59992, 444 | "laughing": 59993, 445 | "mad": 59994, 446 | "nervous": 59995, 447 | "neutral": 59996, 448 | "open-mouth": 59997, 449 | "rage": 59998, 450 | "slightly-smile": 59999, 451 | "smiley": 60000, 452 | "smiling": 60001, 453 | "stuck-out-tongue": 60002, 454 | "sunglasses": 60003, 455 | "surprised": 60004, 456 | "tongue": 60005, 457 | "wink": 60006, 458 | "zipper-mouth": 60007, 459 | "aids": 60233, 460 | "ambulance": 60234, 461 | "bandage": 60235, 462 | "bed-patient": 60236, 463 | "blood-drop": 60237, 464 | "blood-test": 60238, 465 | "blood": 60239, 466 | "dna": 60240, 467 | "doctor": 60241, 468 | "drug-pack": 60242, 469 | "first-aid-alt": 60243, 470 | "heart-alt": 60244, 471 | "heartbeat-alt": 60245, 472 | "heartbeat": 60246, 473 | "helicopter-ambulance": 60247, 474 | "hospital": 60248, 475 | "injection-syringe": 60249, 476 | "laboratory": 60250, 477 | "nurse": 60251, 478 | "nursing-home": 60252, 479 | "paralysis-disability": 60253, 480 | "pills": 60254, 481 | "prescription": 60255, 482 | "pulse": 60256, 483 | "stethoscope": 60257, 484 | "surgical-knife": 60258, 485 | "tablets": 60259, 486 | "test-bottle": 60260, 487 | "test-tube-alt": 60261, 488 | "test-tube": 60262, 489 | "thermometer-alt": 60263, 490 | "american-express": 59856, 491 | "credit-card": 59857, 492 | "google-wallet": 59858, 493 | "iyzigo": 59859, 494 | "mastercard": 59860, 495 | "paypal-p": 59861, 496 | "paypal": 59862, 497 | "payu": 59863, 498 | "troy": 59864, 499 | "visa": 59865, 500 | "dinners-club": 60010, 501 | "apple-pay": 60009, 502 | "discover": 60013, 503 | "jcb": 60014, 504 | "dislike": 59796, 505 | "like": 59797, 506 | "audio-description": 59648, 507 | "blind": 59649, 508 | "braille": 59650, 509 | "deaf": 59651, 510 | "fa-american-sign-language-interpreting": 59652, 511 | "low-vision": 59654, 512 | "tty": 59655, 513 | "universal-acces": 59656, 514 | "wheelchair": 59657, 515 | "area-chart": 59732, 516 | "bar-chart": 59733, 517 | "line-chart": 59734, 518 | "pie-chart-1": 59735, 519 | "pie-chart-2": 59736, 520 | "chrome": 59726, 521 | "edge": 59727, 522 | "firefox": 59728, 523 | "internet-explorer": 59729, 524 | "opera": 59730, 525 | "safari": 59731, 526 | "bitcoin": 59737, 527 | "dollar": 59738, 528 | "euro": 59739, 529 | "gbp": 59740, 530 | "gg": 59741, 531 | "ils": 59742, 532 | "inr": 59743, 533 | "krw": 59744, 534 | "rouble": 59745, 535 | "tl": 59746, 536 | "yen": 59747, 537 | "genderless": 59782, 538 | "intersex": 59783, 539 | "mars-double": 59784, 540 | "mars-stroke-h": 59785, 541 | "mars-stroke-v": 59786, 542 | "mars-stroke": 59787, 543 | "mars": 59788, 544 | "mercury": 59789, 545 | "neuter": 59790, 546 | "transgender-alt": 59791, 547 | "transgender": 59792, 548 | "venus-double": 59793, 549 | "venus-mars": 59794, 550 | "venus": 59795, 551 | "automobile": 59899, 552 | "bicycle": 59900, 553 | "bus": 59901, 554 | "car": 59902, 555 | "helicopter": 59903, 556 | "metro": 59904, 557 | "motorcycle": 59905, 558 | "plane": 59906, 559 | "rocket": 59907, 560 | "ship": 59908, 561 | "subway": 59909, 562 | "taxi": 59910, 563 | "train": 59911, 564 | "truck": 59912, 565 | "yacht": 59913, 566 | "beach-slipper": 60203, 567 | "bus-ticket": 60204, 568 | "cocktail": 60205, 569 | "compass-alt": 60206, 570 | "direction-sign": 60207, 571 | "do-not-disturb": 60208, 572 | "flotation-ring": 60209, 573 | "holiday-village": 60210, 574 | "hot-air-balloon": 60211, 575 | "hotel-alt": 60212, 576 | "hotel": 60213, 577 | "island": 60214, 578 | "money-symbol": 60215, 579 | "parasol": 60216, 580 | "passport-alt": 60217, 581 | "passport": 60218, 582 | "photograph": 60219, 583 | "plane-ticket": 60220, 584 | "room": 60221, 585 | "sait-boat": 60222, 586 | "snorkel": 60223, 587 | "suitcase-alt": 60224, 588 | "suitcase": 60225, 589 | "sun": 60226, 590 | "sunglasses-alt": 60227, 591 | "swimsuit": 60228, 592 | "tent": 60229, 593 | "ticket-alt": 60230, 594 | "train-ticket": 60231, 595 | "wallet": 60232, 596 | "circle-o-notch": 59889, 597 | "propeller-1": 59890, 598 | "propeller-2": 59891, 599 | "propeller-3": 59892, 600 | "propeller-4": 59893, 601 | "spinner-cog": 59894, 602 | "spinner-fidget": 59895, 603 | "spinner-refresh": 59896, 604 | "spinner-rotate-forward": 59897, 605 | "spinner": 59898, 606 | "snowflake": 60081, 607 | "snowflake-1": 60073, 608 | "snowflake-2": 60074, 609 | "snowflake-3": 60075, 610 | "snowflake-4": 60076, 611 | "snowflake-5": 60077, 612 | "snowflake-6": 60078, 613 | "snowflake-7": 60079, 614 | "snowflake-8": 60080, 615 | "curve": 59915, 616 | "ellipse": 59916, 617 | "rectangle": 59917, 618 | "shield": 59914 619 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/Foundation.json: -------------------------------------------------------------------------------- 1 | { 2 | "address-book": 61696, 3 | "alert": 61697, 4 | "align-center": 61698, 5 | "align-justify": 61699, 6 | "align-left": 61700, 7 | "align-right": 61701, 8 | "anchor": 61702, 9 | "annotate": 61703, 10 | "archive": 61704, 11 | "arrow-down": 61705, 12 | "arrow-left": 61706, 13 | "arrow-right": 61707, 14 | "arrow-up": 61708, 15 | "arrows-compress": 61709, 16 | "arrows-expand": 61710, 17 | "arrows-in": 61711, 18 | "arrows-out": 61712, 19 | "asl": 61713, 20 | "asterisk": 61714, 21 | "at-sign": 61715, 22 | "background-color": 61716, 23 | "battery-empty": 61717, 24 | "battery-full": 61718, 25 | "battery-half": 61719, 26 | "bitcoin-circle": 61720, 27 | "bitcoin": 61721, 28 | "blind": 61722, 29 | "bluetooth": 61723, 30 | "bold": 61724, 31 | "book-bookmark": 61725, 32 | "book": 61726, 33 | "bookmark": 61727, 34 | "braille": 61728, 35 | "burst-new": 61729, 36 | "burst-sale": 61730, 37 | "burst": 61731, 38 | "calendar": 61732, 39 | "camera": 61733, 40 | "check": 61734, 41 | "checkbox": 61735, 42 | "clipboard-notes": 61736, 43 | "clipboard-pencil": 61737, 44 | "clipboard": 61738, 45 | "clock": 61739, 46 | "closed-caption": 61740, 47 | "cloud": 61741, 48 | "comment-minus": 61742, 49 | "comment-quotes": 61743, 50 | "comment-video": 61744, 51 | "comment": 61745, 52 | "comments": 61746, 53 | "compass": 61747, 54 | "contrast": 61748, 55 | "credit-card": 61749, 56 | "crop": 61750, 57 | "crown": 61751, 58 | "css3": 61752, 59 | "database": 61753, 60 | "die-five": 61754, 61 | "die-four": 61755, 62 | "die-one": 61756, 63 | "die-six": 61757, 64 | "die-three": 61758, 65 | "die-two": 61759, 66 | "dislike": 61760, 67 | "dollar-bill": 61761, 68 | "dollar": 61762, 69 | "download": 61763, 70 | "eject": 61764, 71 | "elevator": 61765, 72 | "euro": 61766, 73 | "eye": 61767, 74 | "fast-forward": 61768, 75 | "female-symbol": 61769, 76 | "female": 61770, 77 | "filter": 61771, 78 | "first-aid": 61772, 79 | "flag": 61773, 80 | "folder-add": 61774, 81 | "folder-lock": 61775, 82 | "folder": 61776, 83 | "foot": 61777, 84 | "foundation": 61778, 85 | "graph-bar": 61779, 86 | "graph-horizontal": 61780, 87 | "graph-pie": 61781, 88 | "graph-trend": 61782, 89 | "guide-dog": 61783, 90 | "hearing-aid": 61784, 91 | "heart": 61785, 92 | "home": 61786, 93 | "html5": 61787, 94 | "indent-less": 61788, 95 | "indent-more": 61789, 96 | "info": 61790, 97 | "italic": 61791, 98 | "key": 61792, 99 | "laptop": 61793, 100 | "layout": 61794, 101 | "lightbulb": 61795, 102 | "like": 61796, 103 | "link": 61797, 104 | "list-bullet": 61798, 105 | "list-number": 61799, 106 | "list-thumbnails": 61800, 107 | "list": 61801, 108 | "lock": 61802, 109 | "loop": 61803, 110 | "magnifying-glass": 61804, 111 | "mail": 61805, 112 | "male-female": 61806, 113 | "male-symbol": 61807, 114 | "male": 61808, 115 | "map": 61809, 116 | "marker": 61810, 117 | "megaphone": 61811, 118 | "microphone": 61812, 119 | "minus-circle": 61813, 120 | "minus": 61814, 121 | "mobile-signal": 61815, 122 | "mobile": 61816, 123 | "monitor": 61817, 124 | "mountains": 61818, 125 | "music": 61819, 126 | "next": 61820, 127 | "no-dogs": 61821, 128 | "no-smoking": 61822, 129 | "page-add": 61823, 130 | "page-copy": 61824, 131 | "page-csv": 61825, 132 | "page-delete": 61826, 133 | "page-doc": 61827, 134 | "page-edit": 61828, 135 | "page-export-csv": 61829, 136 | "page-export-doc": 61830, 137 | "page-export-pdf": 61831, 138 | "page-export": 61832, 139 | "page-filled": 61833, 140 | "page-multiple": 61834, 141 | "page-pdf": 61835, 142 | "page-remove": 61836, 143 | "page-search": 61837, 144 | "page": 61838, 145 | "paint-bucket": 61839, 146 | "paperclip": 61840, 147 | "pause": 61841, 148 | "paw": 61842, 149 | "paypal": 61843, 150 | "pencil": 61844, 151 | "photo": 61845, 152 | "play-circle": 61846, 153 | "play-video": 61847, 154 | "play": 61848, 155 | "plus": 61849, 156 | "pound": 61850, 157 | "power": 61851, 158 | "previous": 61852, 159 | "price-tag": 61853, 160 | "pricetag-multiple": 61854, 161 | "print": 61855, 162 | "prohibited": 61856, 163 | "projection-screen": 61857, 164 | "puzzle": 61858, 165 | "quote": 61859, 166 | "record": 61860, 167 | "refresh": 61861, 168 | "results-demographics": 61862, 169 | "results": 61863, 170 | "rewind-ten": 61864, 171 | "rewind": 61865, 172 | "rss": 61866, 173 | "safety-cone": 61867, 174 | "save": 61868, 175 | "share": 61869, 176 | "sheriff-badge": 61870, 177 | "shield": 61871, 178 | "shopping-bag": 61872, 179 | "shopping-cart": 61873, 180 | "shuffle": 61874, 181 | "skull": 61875, 182 | "social-500px": 61876, 183 | "social-adobe": 61877, 184 | "social-amazon": 61878, 185 | "social-android": 61879, 186 | "social-apple": 61880, 187 | "social-behance": 61881, 188 | "social-bing": 61882, 189 | "social-blogger": 61883, 190 | "social-delicious": 61884, 191 | "social-designer-news": 61885, 192 | "social-deviant-art": 61886, 193 | "social-digg": 61887, 194 | "social-dribbble": 61888, 195 | "social-drive": 61889, 196 | "social-dropbox": 61890, 197 | "social-evernote": 61891, 198 | "social-facebook": 61892, 199 | "social-flickr": 61893, 200 | "social-forrst": 61894, 201 | "social-foursquare": 61895, 202 | "social-game-center": 61896, 203 | "social-github": 61897, 204 | "social-google-plus": 61898, 205 | "social-hacker-news": 61899, 206 | "social-hi5": 61900, 207 | "social-instagram": 61901, 208 | "social-joomla": 61902, 209 | "social-lastfm": 61903, 210 | "social-linkedin": 61904, 211 | "social-medium": 61905, 212 | "social-myspace": 61906, 213 | "social-orkut": 61907, 214 | "social-path": 61908, 215 | "social-picasa": 61909, 216 | "social-pinterest": 61910, 217 | "social-rdio": 61911, 218 | "social-reddit": 61912, 219 | "social-skillshare": 61913, 220 | "social-skype": 61914, 221 | "social-smashing-mag": 61915, 222 | "social-snapchat": 61916, 223 | "social-spotify": 61917, 224 | "social-squidoo": 61918, 225 | "social-stack-overflow": 61919, 226 | "social-steam": 61920, 227 | "social-stumbleupon": 61921, 228 | "social-treehouse": 61922, 229 | "social-tumblr": 61923, 230 | "social-twitter": 61924, 231 | "social-vimeo": 61925, 232 | "social-windows": 61926, 233 | "social-xbox": 61927, 234 | "social-yahoo": 61928, 235 | "social-yelp": 61929, 236 | "social-youtube": 61930, 237 | "social-zerply": 61931, 238 | "social-zurb": 61932, 239 | "sound": 61933, 240 | "star": 61934, 241 | "stop": 61935, 242 | "strikethrough": 61936, 243 | "subscript": 61937, 244 | "superscript": 61938, 245 | "tablet-landscape": 61939, 246 | "tablet-portrait": 61940, 247 | "target-two": 61941, 248 | "target": 61942, 249 | "telephone-accessible": 61943, 250 | "telephone": 61944, 251 | "text-color": 61945, 252 | "thumbnails": 61946, 253 | "ticket": 61947, 254 | "torso-business": 61948, 255 | "torso-female": 61949, 256 | "torso": 61950, 257 | "torsos-all-female": 61951, 258 | "torsos-all": 61952, 259 | "torsos-female-male": 61953, 260 | "torsos-male-female": 61954, 261 | "torsos": 61955, 262 | "trash": 61956, 263 | "trees": 61957, 264 | "trophy": 61958, 265 | "underline": 61959, 266 | "universal-access": 61960, 267 | "unlink": 61961, 268 | "unlock": 61962, 269 | "upload-cloud": 61963, 270 | "upload": 61964, 271 | "usb": 61965, 272 | "video": 61966, 273 | "volume-none": 61967, 274 | "volume-strike": 61968, 275 | "volume": 61969, 276 | "web": 61970, 277 | "wheelchair": 61971, 278 | "widget": 61972, 279 | "wrench": 61973, 280 | "x-circle": 61974, 281 | "x": 61975, 282 | "yen": 61976, 283 | "zoom-in": 61977, 284 | "zoom-out": 61978 285 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/Octicons.json: -------------------------------------------------------------------------------- 1 | { 2 | "alert": 61696, 3 | "archive": 61697, 4 | "arrow-both": 61698, 5 | "arrow-down": 61699, 6 | "arrow-left": 61700, 7 | "arrow-right": 61701, 8 | "arrow-small-down": 61702, 9 | "arrow-small-left": 61703, 10 | "arrow-small-right": 61704, 11 | "arrow-small-up": 61705, 12 | "arrow-up": 61706, 13 | "beaker": 61707, 14 | "bell": 61708, 15 | "bold": 61709, 16 | "book": 61710, 17 | "bookmark": 61711, 18 | "briefcase": 61712, 19 | "broadcast": 61713, 20 | "browser": 61714, 21 | "bug": 61715, 22 | "calendar": 61716, 23 | "check": 61717, 24 | "checklist": 61718, 25 | "chevron-down": 61719, 26 | "chevron-left": 61720, 27 | "chevron-right": 61721, 28 | "chevron-up": 61722, 29 | "circle-slash": 61723, 30 | "circuit-board": 61724, 31 | "clippy": 61725, 32 | "clock": 61726, 33 | "cloud-download": 61727, 34 | "cloud-upload": 61728, 35 | "code": 61729, 36 | "comment": 61730, 37 | "comment-discussion": 61731, 38 | "credit-card": 61732, 39 | "dash": 61733, 40 | "dashboard": 61734, 41 | "database": 61735, 42 | "desktop-download": 61736, 43 | "device-camera": 61737, 44 | "device-camera-video": 61738, 45 | "device-desktop": 61739, 46 | "device-mobile": 61740, 47 | "diff": 61741, 48 | "diff-added": 61742, 49 | "diff-ignored": 61743, 50 | "diff-modified": 61744, 51 | "diff-removed": 61745, 52 | "diff-renamed": 61746, 53 | "ellipsis": 61747, 54 | "eye": 61748, 55 | "eye-closed": 61749, 56 | "file": 61750, 57 | "file-binary": 61751, 58 | "file-code": 61752, 59 | "file-directory": 61753, 60 | "file-media": 61754, 61 | "file-pdf": 61755, 62 | "file-submodule": 61756, 63 | "file-symlink-directory": 61757, 64 | "file-symlink-file": 61758, 65 | "file-zip": 61759, 66 | "flame": 61760, 67 | "fold": 61761, 68 | "fold-down": 61762, 69 | "fold-up": 61763, 70 | "gear": 61764, 71 | "gift": 61765, 72 | "gist": 61766, 73 | "gist-secret": 61767, 74 | "git-branch": 61768, 75 | "git-commit": 61769, 76 | "git-compare": 61770, 77 | "git-merge": 61771, 78 | "git-pull-request": 61772, 79 | "github-action": 61773, 80 | "globe": 61774, 81 | "grabber": 61775, 82 | "graph": 61776, 83 | "heart": 61777, 84 | "history": 61778, 85 | "home": 61779, 86 | "horizontal-rule": 61780, 87 | "hubot": 61781, 88 | "inbox": 61782, 89 | "info": 61783, 90 | "issue-closed": 61784, 91 | "issue-opened": 61785, 92 | "issue-reopened": 61786, 93 | "italic": 61787, 94 | "jersey": 61788, 95 | "kebab-horizontal": 61789, 96 | "kebab-vertical": 61790, 97 | "key": 61791, 98 | "keyboard": 61792, 99 | "law": 61793, 100 | "light-bulb": 61794, 101 | "link": 61795, 102 | "link-external": 61796, 103 | "list-ordered": 61797, 104 | "list-unordered": 61798, 105 | "location": 61799, 106 | "lock": 61800, 107 | "logo-gist": 61801, 108 | "logo-github": 61802, 109 | "mail": 61803, 110 | "mail-read": 61804, 111 | "mark-github": 61805, 112 | "markdown": 61806, 113 | "megaphone": 61807, 114 | "mention": 61808, 115 | "milestone": 61809, 116 | "mirror": 61810, 117 | "mortar-board": 61811, 118 | "mute": 61812, 119 | "no-newline": 61813, 120 | "note": 61814, 121 | "octoface": 61815, 122 | "organization": 61816, 123 | "package": 61817, 124 | "paintcan": 61818, 125 | "pencil": 61819, 126 | "person": 61820, 127 | "pin": 61821, 128 | "play": 61822, 129 | "plug": 61823, 130 | "plus": 61824, 131 | "plus-small": 61825, 132 | "primitive-dot": 61826, 133 | "primitive-square": 61827, 134 | "project": 61828, 135 | "pulse": 61829, 136 | "question": 61830, 137 | "quote": 61831, 138 | "radio-tower": 61832, 139 | "reply": 61833, 140 | "repo": 61834, 141 | "repo-clone": 61835, 142 | "repo-force-push": 61836, 143 | "repo-forked": 61837, 144 | "repo-pull": 61838, 145 | "repo-push": 61839, 146 | "report": 61840, 147 | "request-changes": 61841, 148 | "rocket": 61842, 149 | "rss": 61843, 150 | "ruby": 61844, 151 | "screen-full": 61845, 152 | "screen-normal": 61846, 153 | "search": 61847, 154 | "server": 61848, 155 | "settings": 61849, 156 | "shield": 61850, 157 | "sign-in": 61851, 158 | "sign-out": 61852, 159 | "smiley": 61853, 160 | "squirrel": 61854, 161 | "star": 61855, 162 | "stop": 61856, 163 | "sync": 61857, 164 | "tag": 61858, 165 | "tasklist": 61859, 166 | "telescope": 61860, 167 | "terminal": 61861, 168 | "text-size": 61862, 169 | "three-bars": 61863, 170 | "thumbsdown": 61864, 171 | "thumbsup": 61865, 172 | "tools": 61866, 173 | "trashcan": 61867, 174 | "triangle-down": 61868, 175 | "triangle-left": 61869, 176 | "triangle-right": 61870, 177 | "triangle-up": 61871, 178 | "unfold": 61872, 179 | "unmute": 61873, 180 | "unverified": 61874, 181 | "verified": 61875, 182 | "versions": 61876, 183 | "watch": 61877, 184 | "x": 61878, 185 | "zap": 61879 186 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/SimpleLineIcons.json: -------------------------------------------------------------------------------- 1 | { 2 | "user": 57349, 3 | "people": 57345, 4 | "user-female": 57344, 5 | "user-follow": 57346, 6 | "user-following": 57347, 7 | "user-unfollow": 57348, 8 | "login": 57446, 9 | "logout": 57445, 10 | "emotsmile": 57377, 11 | "phone": 58880, 12 | "call-end": 57416, 13 | "call-in": 57415, 14 | "call-out": 57414, 15 | "map": 57395, 16 | "location-pin": 57494, 17 | "direction": 57410, 18 | "directions": 57409, 19 | "compass": 57413, 20 | "layers": 57396, 21 | "menu": 58881, 22 | "list": 57447, 23 | "options-vertical": 58882, 24 | "options": 58883, 25 | "arrow-down": 58884, 26 | "arrow-left": 58885, 27 | "arrow-right": 58886, 28 | "arrow-up": 58887, 29 | "arrow-up-circle": 57464, 30 | "arrow-left-circle": 57466, 31 | "arrow-right-circle": 57465, 32 | "arrow-down-circle": 57467, 33 | "check": 57472, 34 | "clock": 57473, 35 | "plus": 57493, 36 | "minus": 58901, 37 | "close": 57474, 38 | "event": 58905, 39 | "exclamation": 58903, 40 | "organization": 58902, 41 | "trophy": 57350, 42 | "screen-smartphone": 57360, 43 | "screen-desktop": 57361, 44 | "plane": 57362, 45 | "notebook": 57363, 46 | "mustache": 57364, 47 | "mouse": 57365, 48 | "magnet": 57366, 49 | "energy": 57376, 50 | "disc": 57378, 51 | "cursor": 57454, 52 | "cursor-move": 57379, 53 | "crop": 57380, 54 | "chemistry": 57382, 55 | "speedometer": 57351, 56 | "shield": 57358, 57 | "screen-tablet": 57359, 58 | "magic-wand": 57367, 59 | "hourglass": 57368, 60 | "graduation": 57369, 61 | "ghost": 57370, 62 | "game-controller": 57371, 63 | "fire": 57372, 64 | "eyeglass": 57373, 65 | "envelope-open": 57374, 66 | "envelope-letter": 57375, 67 | "bell": 57383, 68 | "badge": 57384, 69 | "anchor": 57385, 70 | "wallet": 57386, 71 | "vector": 57387, 72 | "speech": 57388, 73 | "puzzle": 57389, 74 | "printer": 57390, 75 | "present": 57391, 76 | "playlist": 57392, 77 | "pin": 57393, 78 | "picture": 57394, 79 | "handbag": 57397, 80 | "globe-alt": 57398, 81 | "globe": 57399, 82 | "folder-alt": 57401, 83 | "folder": 57481, 84 | "film": 57402, 85 | "feed": 57403, 86 | "drop": 57406, 87 | "drawer": 57407, 88 | "docs": 57408, 89 | "doc": 57477, 90 | "diamond": 57411, 91 | "cup": 57412, 92 | "calculator": 57417, 93 | "bubbles": 57418, 94 | "briefcase": 57419, 95 | "book-open": 57420, 96 | "basket-loaded": 57421, 97 | "basket": 57422, 98 | "bag": 57423, 99 | "action-undo": 57424, 100 | "action-redo": 57425, 101 | "wrench": 57426, 102 | "umbrella": 57427, 103 | "trash": 57428, 104 | "tag": 57429, 105 | "support": 57430, 106 | "frame": 57400, 107 | "size-fullscreen": 57431, 108 | "size-actual": 57432, 109 | "shuffle": 57433, 110 | "share-alt": 57434, 111 | "share": 57435, 112 | "rocket": 57436, 113 | "question": 57437, 114 | "pie-chart": 57438, 115 | "pencil": 57439, 116 | "note": 57440, 117 | "loop": 57444, 118 | "home": 57449, 119 | "grid": 57450, 120 | "graph": 57451, 121 | "microphone": 57443, 122 | "music-tone-alt": 57441, 123 | "music-tone": 57442, 124 | "earphones-alt": 57404, 125 | "earphones": 57405, 126 | "equalizer": 57452, 127 | "like": 57448, 128 | "dislike": 57453, 129 | "control-start": 57455, 130 | "control-rewind": 57456, 131 | "control-play": 57457, 132 | "control-pause": 57458, 133 | "control-forward": 57459, 134 | "control-end": 57460, 135 | "volume-1": 57503, 136 | "volume-2": 57504, 137 | "volume-off": 57505, 138 | "calendar": 57461, 139 | "bulb": 57462, 140 | "chart": 57463, 141 | "ban": 57468, 142 | "bubble": 57469, 143 | "camrecorder": 57470, 144 | "camera": 57471, 145 | "cloud-download": 57475, 146 | "cloud-upload": 57476, 147 | "envelope": 57478, 148 | "eye": 57479, 149 | "flag": 57480, 150 | "heart": 57482, 151 | "info": 57483, 152 | "key": 57484, 153 | "link": 57485, 154 | "lock": 57486, 155 | "lock-open": 57487, 156 | "magnifier": 57488, 157 | "magnifier-add": 57489, 158 | "magnifier-remove": 57490, 159 | "paper-clip": 57491, 160 | "paper-plane": 57492, 161 | "power": 57495, 162 | "refresh": 57496, 163 | "reload": 57497, 164 | "settings": 57498, 165 | "star": 57499, 166 | "symbol-female": 57500, 167 | "symbol-male": 57501, 168 | "target": 57502, 169 | "credit-card": 57381, 170 | "paypal": 58888, 171 | "social-tumblr": 57354, 172 | "social-twitter": 57353, 173 | "social-facebook": 57355, 174 | "social-instagram": 58889, 175 | "social-linkedin": 58890, 176 | "social-pinterest": 58891, 177 | "social-github": 58892, 178 | "social-google": 58893, 179 | "social-reddit": 58894, 180 | "social-skype": 58895, 181 | "social-dribbble": 57357, 182 | "social-behance": 58896, 183 | "social-foursqare": 58897, 184 | "social-soundcloud": 58898, 185 | "social-spotify": 58899, 186 | "social-stumbleupon": 58900, 187 | "social-youtube": 57352, 188 | "social-dropbox": 57356, 189 | "social-vkontakte": 58904, 190 | "social-steam": 58912 191 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/node_modules/react-native-vector-icons/glyphmaps/Zocial.json: -------------------------------------------------------------------------------- 1 | { 2 | "acrobat": 61696, 3 | "amazon": 61697, 4 | "android": 61698, 5 | "angellist": 61699, 6 | "aol": 61700, 7 | "appnet": 61701, 8 | "appstore": 61702, 9 | "bitbucket": 61703, 10 | "bitcoin": 61704, 11 | "blogger": 61705, 12 | "buffer": 61706, 13 | "cal": 61707, 14 | "call": 61708, 15 | "cart": 61709, 16 | "chrome": 61710, 17 | "cloudapp": 61711, 18 | "creativecommons": 61712, 19 | "delicious": 61713, 20 | "digg": 61714, 21 | "disqus": 61715, 22 | "dribbble": 61716, 23 | "dropbox": 61717, 24 | "drupal": 61718, 25 | "dwolla": 61720, 26 | "email": 61721, 27 | "eventasaurus": 61722, 28 | "eventbrite": 61723, 29 | "eventful": 61724, 30 | "evernote": 61725, 31 | "facebook": 61726, 32 | "fivehundredpx": 61727, 33 | "flattr": 61728, 34 | "flickr": 61729, 35 | "forrst": 61730, 36 | "foursquare": 61731, 37 | "github": 61732, 38 | "gmail": 61733, 39 | "google": 61734, 40 | "googleplay": 61735, 41 | "googleplus": 61736, 42 | "gowalla": 61737, 43 | "grooveshark": 61738, 44 | "guest": 61739, 45 | "html5": 61740, 46 | "ie": 61741, 47 | "instagram": 61742, 48 | "instapaper": 61743, 49 | "intensedebate": 61744, 50 | "itunes": 61745, 51 | "klout": 61746, 52 | "lanyrd": 61747, 53 | "lastfm": 61748, 54 | "lego": 61749, 55 | "linkedin": 61750, 56 | "lkdto": 61751, 57 | "logmein": 61752, 58 | "macstore": 61753, 59 | "meetup": 61754, 60 | "myspace": 61755, 61 | "ninetyninedesigns": 61756, 62 | "openid": 61757, 63 | "opentable": 61758, 64 | "paypal": 61759, 65 | "persona": 61796, 66 | "pinboard": 61760, 67 | "pinterest": 61761, 68 | "plancast": 61762, 69 | "plurk": 61763, 70 | "pocket": 61764, 71 | "podcast": 61765, 72 | "posterous": 61766, 73 | "print": 61767, 74 | "quora": 61768, 75 | "reddit": 61769, 76 | "rss": 61770, 77 | "scribd": 61771, 78 | "skype": 61772, 79 | "smashing": 61773, 80 | "songkick": 61774, 81 | "soundcloud": 61775, 82 | "spotify": 61776, 83 | "stackoverflow": 61777, 84 | "statusnet": 61778, 85 | "steam": 61779, 86 | "stripe": 61780, 87 | "stumbleupon": 61781, 88 | "tumblr": 61782, 89 | "twitter": 61783, 90 | "viadeo": 61784, 91 | "vimeo": 61785, 92 | "vk": 61786, 93 | "weibo": 61787, 94 | "wikipedia": 61788, 95 | "windows": 61789, 96 | "wordpress": 61790, 97 | "xing": 61791, 98 | "yahoo": 61792, 99 | "ycombinator": 61793, 100 | "yelp": 61794, 101 | "youtube": 61795 102 | } -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wdioDemoApp", 3 | "displayName": "wdioDemoApp" 4 | } 5 | -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-c1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-c1.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-c2.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-c3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-c3.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-l1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-l1.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-l2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-l2.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-l3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-l3.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-r1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-r1.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-r2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-r2.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-r3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/images/wdio-r3.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/io.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/webdriverio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/assets/src/assets/webdriverio.png -------------------------------------------------------------------------------- /src/test/resources/app/wdioNativeDemoApp.app/wdioNativeDemoApp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/wdioNativeDemoApp.app/wdioNativeDemoApp -------------------------------------------------------------------------------- /src/test/resources/app/webdriverio-app.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/app/webdriverio-app.apk -------------------------------------------------------------------------------- /src/test/resources/firefox-driver/geckodriver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/firefox-driver/geckodriver -------------------------------------------------------------------------------- /src/test/resources/firefox-driver/geckodriver-v0.33.0-macos-aarch64.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mfaisalkhatri/appium-java-examples/78947c6c6bf8516137aa849714307f4fa7cc1ad7/src/test/resources/firefox-driver/geckodriver-v0.33.0-macos-aarch64.tar.gz -------------------------------------------------------------------------------- /test-suite/testng-android.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /test-suite/testng-ios-parallel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /test-suite/testng-ios.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /test-suite/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | --------------------------------------------------------------------------------