├── .github
├── dependabot.yml
└── workflows
│ ├── buildInCI.yml
│ └── super-linter.yml
├── .gitignore
├── License.md
├── README.md
├── package-lock.json
├── package.json
├── pom.xml
├── setupAndroidSDK.sh
├── setup_linux.sh
└── src
└── test
├── java
└── com
│ └── eot
│ ├── sample
│ ├── Hooks.java
│ ├── android
│ │ ├── AppiumNativeAndroidMessagesTest.java
│ │ ├── AppiumNativeAndroidParallelCalcTest.java
│ │ ├── AppiumWebAndroidHelloWorldTest.java
│ │ └── FirstAppiumTest.java
│ └── ios
│ │ ├── AppiumNativeiOSHelloWorldTest.java
│ │ └── AppiumWebiOSHelloWorldTest.java
│ └── utils
│ ├── CommandPrompt.java
│ ├── DriverUtils.java
│ └── Wait.java
└── resources
├── sampleApps
├── AndroidCalculator.apk
├── HelloWorldiOS.app
│ ├── Assets.car
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboardc
│ │ │ ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib
│ │ │ │ ├── objects-13.0+.nib
│ │ │ │ └── runtime.nib
│ │ │ ├── Info.plist
│ │ │ └── UIViewController-01J-lp-oVM.nib
│ │ │ │ ├── objects-13.0+.nib
│ │ │ │ └── runtime.nib
│ │ └── Main.storyboardc
│ │ │ ├── BYZ-38-t0r-view-8bC-Xf-vdC.nib
│ │ │ ├── objects-13.0+.nib
│ │ │ └── runtime.nib
│ │ │ ├── Info.plist
│ │ │ └── UIViewController-BYZ-38-t0r.nib
│ │ │ ├── objects-13.0+.nib
│ │ │ └── runtime.nib
│ ├── Frameworks
│ │ ├── XCTAutomationSupport.framework
│ │ │ ├── Info.plist
│ │ │ ├── XCTAutomationSupport
│ │ │ ├── _CodeSignature
│ │ │ │ └── CodeResources
│ │ │ └── version.plist
│ │ ├── XCTest.framework
│ │ │ ├── Info.plist
│ │ │ ├── XCTest
│ │ │ ├── _CodeSignature
│ │ │ │ └── CodeResources
│ │ │ ├── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ │ └── version.plist
│ │ ├── libXCTestBundleInject.dylib
│ │ └── libXCTestSwiftSupport.dylib
│ ├── HelloWorldiOS
│ ├── Info.plist
│ ├── PkgInfo
│ ├── PlugIns
│ │ └── EyesImagesTests(UnitTests).xctest
│ │ │ ├── EyesImagesTests(UnitTests)
│ │ │ ├── Frameworks
│ │ │ ├── EyesImages.framework
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── EyesImages
│ │ │ │ ├── Gemfile
│ │ │ │ ├── Info.plist
│ │ │ │ ├── _CodeSignature
│ │ │ │ │ └── CodeResources
│ │ │ │ ├── build_sdk.sh
│ │ │ │ ├── carthage_dependencies_json.thor
│ │ │ │ ├── carthage_dependencies_json.tt
│ │ │ │ ├── podspec.thor
│ │ │ │ ├── podspec.tt
│ │ │ │ ├── set_tags.sh
│ │ │ │ ├── update_carthage_integration.sh
│ │ │ │ └── update_version_on_cocoapods.sh
│ │ │ ├── libswiftCore.dylib
│ │ │ ├── libswiftCoreFoundation.dylib
│ │ │ ├── libswiftCoreGraphics.dylib
│ │ │ ├── libswiftDarwin.dylib
│ │ │ ├── libswiftDispatch.dylib
│ │ │ ├── libswiftFoundation.dylib
│ │ │ └── libswiftObjectiveC.dylib
│ │ │ ├── Info.plist
│ │ │ └── _CodeSignature
│ │ │ └── CodeResources
│ ├── README.md
│ └── _CodeSignature
│ │ └── CodeResources
├── TheApp-VR-v1.apk
├── VodQAReactNative.zip
└── eyes-ios-hello-world.zip
└── testng.xml
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "maven" # See documentation for possible values
9 | directory: "/" # Location of package manifests
10 | schedule:
11 | interval: "daily"
12 |
--------------------------------------------------------------------------------
/.github/workflows/buildInCI.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Java CI with Maven
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Set up JDK 8
20 | uses: actions/setup-java@v2
21 | with:
22 | java-version: '8'
23 | distribution: 'temurin'
24 | cache: maven
25 | - name: Build with Maven
26 | run: mvn -B package --file pom.xml -DskipTests=true
27 |
--------------------------------------------------------------------------------
/.github/workflows/super-linter.yml:
--------------------------------------------------------------------------------
1 | # This workflow executes several linters on changed files based on languages used in your code base whenever
2 | # you push a code or open a pull request.
3 | #
4 | # You can adjust the behavior by modifying this file.
5 | # For more information, see:
6 | # https://github.com/github/super-linter
7 | name: Lint Code Base
8 |
9 | on:
10 | push:
11 | branches: [ master ]
12 | pull_request:
13 | branches: [ master ]
14 | jobs:
15 | run-lint:
16 | runs-on: ubuntu-latest
17 | steps:
18 | - name: Checkout code
19 | uses: actions/checkout@v2
20 | with:
21 | # Full git history is needed to get a proper list of changed files within `super-linter`
22 | fetch-depth: 0
23 |
24 | - name: Lint Code Base
25 | uses: github/super-linter@v4
26 | env:
27 | VALIDATE_ALL_CODEBASE: false
28 | DEFAULT_BRANCH: master
29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | *.iml
3 | target/
4 | *.apk
5 | temp
6 | node_modules
7 | **/*/.DS_STORE
--------------------------------------------------------------------------------
/License.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2021
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AppiumJavaSample
2 | Sample project for running tests using Java/TestNG/Appium
3 |
4 | ## Setting up your machine
5 | ### Prerequisites before running the script for Appium setup
6 | * Set `JAVA_HOME` as an environment variable
7 |
8 | * Set `ANDROID_HOME` as an environment variable - pointing to the directory where Android SDK should be setup
9 |
10 | * Execute the following scripts to setup your Mac [setupAndroidSDK.sh](setupAndroidSDK.sh) or Ubuntu [setup_linux.sh](setup_linux.sh) machine automatically
11 | > The above script will install all dependencies required for implementing / running tests on Android devices. To do the setup for iOS devices, run `appium-doctor` and see the list of dependencies that are missing, and install the same.
12 |
13 | > You may be prompted for password or confirmations along the way
14 |
15 | ## Running the tests
16 | ### Prerequisites:
17 | * Start appium server manually (and update the url/port if not using the default)
18 | * Have devices connected / emulators started. Accordingly, update the (.*Test.java) test file with the relevant information about the devices
19 | * The device should have the Calculator app
20 |
21 | ### Tests
22 | This project includes the following tests implemented for Android & iOS devices:
23 |
24 | #### Android
25 | * [AppiumNativeAndroidMessagesTest.java](src/test/java/com/eot/sample/android/AppiumNativeAndroidMessagesTest.java) - run an Appium test against the Messages app
26 | * [AppiumNativeAndroidParallelCalcTest.java](src/test/java/com/eot/sample/android/AppiumNativeAndroidParallelCalcTest.java) - run 2 Appium tests, in parallel, using testng
27 | * [AppiumWebAndroidHelloWorldTest.java](src/test/java/com/eot/sample/android/AppiumWebAndroidHelloWorldTest.java) - runs an appium test against a Chrome browser (mobile-web) in the connected device
28 |
29 | #### iOS
30 | * [AppiumNativeiOSHelloWorldTest.java](src/test/java/com/eot/sample/ios/AppiumNativeiOSHelloWorldTest.java) - run an Appium test against the Messages app
31 | * [AppiumWebiOSHelloWorldTest.java](src/test/java/com/eot/sample/ios/AppiumWebiOSHelloWorldTest.java) - run 2 Appium tests, in parallel, using testng
32 |
33 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MyJioTestAutomation",
3 | "version": "0.0.1",
4 | "main": "index.js",
5 | "dependencies": {
6 | "appium-idb": "1.8.9",
7 | "@appium/doctor": "2.0.28",
8 | "@appium/relaxed-caps-plugin": "1.0.5",
9 | "appium": "2.2.2",
10 | "appium-dashboard": "2.0.2",
11 | "appium-device-farm": "8.3.16",
12 | "appium-uiautomator2-driver": "2.34.1",
13 | "appium-xcuitest-driver": "5.9.1",
14 | "go-ios": "1.0.120",
15 | "appium-webdriveragent": "5.14.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | AppiumSample
8 | AppiumSample
9 | 1.0-SNAPSHOT
10 |
11 |
12 |
13 |
14 |
15 | org.apache.maven.plugins
16 | maven-compiler-plugin
17 | 3.10.1
18 |
19 | 1.8
20 | 1.8
21 |
22 |
23 |
24 |
25 | org.apache.maven.plugins
26 | maven-surefire-plugin
27 | 2.22.2
28 |
29 |
30 | *.java
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | io.appium
44 | java-client
45 | 8.3.0
46 |
47 |
48 | org.testng
49 | testng
50 | 7.7.1
51 |
52 |
53 | io.github.bonigarcia
54 | webdrivermanager
55 | 5.3.2
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/setupAndroidSDK.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 |
5 | arch_name="$(uname -m)"
6 | IMAGE_SUFFIX="arm64-v8a"
7 |
8 | if [ "${arch_name}" = "x86_64" ]; then
9 | IMAGE_SUFFIX="x86_64"
10 | if [ "$(sysctl -in sysctl.proc_translated)" = "1" ]; then
11 | echo "Running on Rosetta 2"
12 | else
13 | echo "Running on native Intel"
14 | fi
15 | elif [ "${arch_name}" = "arm64" ]; then
16 | echo "Running on ARM"
17 | else
18 | echo "Unknown architecture: ${arch_name}"
19 | fi
20 |
21 | function brewCaskInstall() {
22 | echo "Installing $1"
23 | echo "On platform: $arch_name"
24 | if "brew ls --versions $1" >/dev/null; then
25 | echo "- $1 already installed"
26 | else
27 | if [ "${arch_name}" = "arm64" ]; then
28 | "arch -arm64 brew install --cask $1"
29 | else
30 | "brew install --cask $1"
31 | fi
32 | fi
33 | }
34 |
35 | function brewInstall() {
36 | echo "Installing $1"
37 | echo "On platform: $arch_name"
38 | if brew ls --versions "$1" >/dev/null; then
39 | echo "- $1 already installed"
40 | else
41 | if [ "${arch_name}" = "arm64" ]; then
42 | arch -arm64 brew install "$1"
43 | else
44 | brew install "$1"
45 | fi
46 | fi
47 | }
48 |
49 | CURRENT_DIR=$("pwd")
50 | echo "============================================================"
51 | echo "Prerequisites: Install JDK and set JAVA_HOME environment variable. Also set ANDROID_HOME environment variable pointing to a directory where Android SDK should be installed"
52 | echo "============================================================"
53 |
54 | echo "CURRENT_DIR - $CURRENT_DIR"
55 | echo "JAVA_HOME - $JAVA_HOME"
56 | echo "ANDROID_HOME - $ANDROID_HOME"
57 | echo "On platform: $arch_name"
58 | echo "============================================================"
59 |
60 | [ -z "$JAVA_HOME" ] && echo "JAVA_HOME is NOT SET AS AN ENVIRONMENT VARIABLE. Set it first then rerun the script" && exit 1
61 | [ -z "$ANDROID_HOME" ] && echo "ANDROID_HOME is NOT SET AS AN ENVIRONMENT VARIABLE. Set it first then rerun the script" && exit 1
62 |
63 | brewInstall node
64 | brewInstall coreutils
65 | brewInstall wget
66 | brewInstall cmake
67 | brewInstall carthage
68 | brewInstall ruby
69 | brewInstall ffmpeg
70 | brewInstall mp4box
71 | brewInstall ideviceinstaller
72 | brewInstall libimobiledevice
73 | brew tap lyft/formulae
74 | brewInstall lyft/formulae/set-simulator-location
75 | brew tap wix/brew
76 | brewInstall applesimutils
77 | brewInstall gstreamer
78 | brewInstall gst-plugins-base
79 | brewInstall gst-plugins-good
80 | brewInstall gst-plugins-bad
81 | brewInstall gst-plugins-ugly
82 | brewInstall gst-libav
83 |
84 | if ! [ -d "$ANDROID_HOME" ]; then
85 | mkdir -pv ./temp
86 | DOWNLOADED_ZIP="./temp/tools.zip"
87 | echo "ANDROID_HOME ($ANDROID_HOME) directory NOT present. Setting it up now"
88 | mkdir -pv "$ANDROID_HOME"
89 | chmod 777 "$ANDROID_HOME"
90 | echo "Downloading android sdk"
91 | rm -f "$DOWNLOADED_ZIP" 2>/dev/null
92 | wget https://dl.google.com/android/repository/commandlinetools-mac-10406996_latest.zip -O $DOWNLOADED_ZIP
93 | unzip "$DOWNLOADED_ZIP" -d "$ANDROID_HOME"
94 | sleep 5
95 | else
96 | echo "ANDROID_HOME ($ANDROID_HOME) directory present. already set. IF YOU WANT TO REINSTALL, delete directory - $ANDROID_HOME and run the ./setup_mac.sh script again"
97 | fi
98 |
99 | echo "Setup android sdk"
100 | cd "$ANDROID_HOME/cmdline-tools/bin"
101 | pwd
102 |
103 | BUILD_TOOLS_VERSION=34.0.0
104 | BUILD_TOOLS_MINI_VERSION=34
105 | pwd
106 | ./sdkmanager --sdk_root="$ANDROID_HOME" "emulator" "build-tools;$BUILD_TOOLS_VERSION"
107 |
108 | echo "Install Android sdk packages and system images to allow creating emulators"
109 | ./sdkmanager --sdk_root="$ANDROID_HOME" "platform-tools" "platforms;android-$BUILD_TOOLS_MINI_VERSION" "sources;android-$BUILD_TOOLS_MINI_VERSION" "system-images;android-$BUILD_TOOLS_MINI_VERSION;google_apis_playstore;$IMAGE_SUFFIX"
110 | # if [ "${arch_name}" = "arm64" ]; then
111 | # ./sdkmanager --sdk_root="$ANDROID_HOME" "platform-tools" "platforms;android-$BUILD_TOOLS_MINI_VERSION" "sources;android-$BUILD_TOOLS_MINI_VERSION" "system-images;android-$BUILD_TOOLS_MINI_VERSION;google_apis_playstore;arm64-v8a"
112 | # else
113 | # ./sdkmanager --sdk_root="$ANDROID_HOME" "platform-tools" "platforms;android-$BUILD_TOOLS_MINI_VERSION" "sources;android-$BUILD_TOOLS_MINI_VERSION" "system-images;android-$BUILD_TOOLS_MINI_VERSION;google_apis_playstore;x86_64"
114 | # fi
115 |
116 | sleep 5
117 | echo "Done installing Android SDK in $ANDROID_HOME"
118 |
119 | if ! [ -d "$ANDROID_HOME/bundle-tool" ]; then
120 | echo "Setup bundletool"
121 | cd "$ANDROID_HOME"
122 | mkdir -pv bundle-tool
123 | cd bundle-tool
124 | wget https://github.com/google/bundletool/releases/download/1.15.6/bundletool-all-1.15.6.jar -O bundletool.jar
125 | chmod +x bundletool.jar
126 | else
127 | echo "$ANDROID_HOME/bundle-tool already setup"
128 | fi
129 |
130 | cd "$CURRENT_DIR"
131 | pwd
132 | echo "Installed node version"
133 | node -v
134 |
135 | ./cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --list_installed
136 |
137 | echo "PLEASE ENSURE"
138 | echo "-- ANDROID_HOME is set to $ANDROID_HOME"
139 | echo "-- Update PATH:"
140 | echo "---- 'export PATH=\$PATH:\$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION:\$ANDROID_HOME/bundle-tools:\$ANDROID_HOME/cmdline-tools\latest\bin:\$ANDROID_HOME/emulator:\$ANDROID_HOME/platform-tools:\$ANDROID_HOME/tools:\$ANDROID_HOME/tools/bin'"
141 | pwd
142 |
--------------------------------------------------------------------------------
/setup_linux.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -e
3 |
4 | function aptGet () {
5 | echo "Installing $1"
6 | sudo apt-get install $1
7 | }
8 |
9 | CURRENT_DIR=`pwd`
10 | echo "CURRENT_DIR - " $CURRENT_DIR
11 | echo "ANDROID_HOME - " $ANDROID_HOME
12 |
13 | [ -z "$JAVA_HOME" ] && echo "JAVA_HOME is NOT SET AS AN ENVIRONMENT VARIABLE. Set it first then rerun the script" && exit 1;
14 |
15 | aptGet node
16 | aptGet wget
17 | aptGet ruby
18 | aptGet ffmpeg
19 | aptGet cmake
20 | aptGet ideviceinstaller
21 |
22 | if ! [ -d "$ANDROID_HOME" ] ; then
23 | mkdir -pv ./temp
24 | DOWNLOADED_ZIP="./temp/tools.zip"
25 | echo "ANDROID_HOME ($ANDROID_HOME) directory NOT present. Setting it up now"
26 | sudo mkdir -pv $ANDROID_HOME
27 | sudo chmod 777 $ANDROID_HOME
28 | echo "Downloading android sdk"
29 | rm -f $DOWNLOADED_ZIP 2> /dev/null
30 | wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -O $DOWNLOADED_ZIP
31 | unzip $DOWNLOADED_ZIP -d $ANDROID_HOME
32 | sleep 5
33 | else
34 | echo "ANDROID_HOME ($ANDROID_HOME) directory present. already set. IF YOU WANT TO REINSTALL, delete directory - $ANDROID_HOME and run the ./setup_linux.sh script again"
35 | fi
36 |
37 | echo "Setup android sdk"
38 | cd $ANDROID_HOME/tools/bin
39 | pwd
40 |
41 | echo "Installing ./sdkmanager tools platform-tools platforms;android-31 build-tools;31.0.0"
42 | pwd
43 | touch ~/.android/repositories.cfg
44 | ./sdkmanager "tools" "platform-tools" "platforms;android-31" "build-tools;31.0.0"
45 |
46 | sleep 5
47 | echo "Done installing android sdk"
48 |
49 | if ! [ -d "$ANDROID_HOME/bundle-tool" ] ; then
50 | echo "Setup bundletool"
51 | cd $ANDROID_HOME
52 | mkdir -pv bundle-tool
53 | cd bundle-tool
54 | wget https://github.com/google/bundletool/releases/download/0.9.0/bundletool-all-0.9.0.jar -O bundletool.jar
55 | chmod +x bundletool.jar
56 | else
57 | echo "$ANDROID_HOME/bundle-tool already setup"
58 | fi
59 |
60 | cd $CURRENT_DIR
61 | pwd
62 | echo "Installed node version"
63 | node -v
64 | echo "Install opencv4nodejs"
65 | npm install -g --save opencv4nodejs
66 | echo "Install mjpeg-consumer"
67 | npm install -g mjpeg-consumer
68 | echo "Install node modules - appium"
69 | npm install -g appium
70 | sleep 5
71 | echo "Install node modules - appium-doctor"
72 | npm install -g appium-doctor
73 | sleep 5
74 | echo "Run appium-doctor"
75 | appium-doctor
76 |
77 | echo "PLEASE ENSURE"
78 | echo "-- ANDROID_HOME is set to $ANDROID_HOME"
79 | echo "-- Update PATH:"
80 | echo "---- 'export PATH=\$PATH:\$ANDROID_HOME/platform-tools:\$ANDROID_HOME/tools:\$ANDROID_HOME/tools/bin:\$ANDROID_HOME/bundle-tool'"
81 | pwd
82 |
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/Hooks.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample;
2 |
3 | import io.appium.java_client.service.local.AppiumDriverLocalService;
4 | import io.appium.java_client.service.local.AppiumServiceBuilder;
5 | import io.appium.java_client.service.local.flags.GeneralServerFlag;
6 |
7 | import java.io.File;
8 | import java.net.URL;
9 |
10 | public class Hooks {
11 | private static AppiumDriverLocalService localAppiumServer;
12 | private static String APPIUM_SERVER_URL = "http://localhost:4723/wd/hub/";
13 |
14 | public static void startAppiumServer() {
15 | System.out.println(String.format("Start local Appium server"));
16 | AppiumServiceBuilder serviceBuilder = new AppiumServiceBuilder();
17 | // Use any port, in case the default 4723 is already taken (maybe by another Appium server)
18 | serviceBuilder.usingAnyFreePort();
19 | serviceBuilder.withAppiumJS(new File("./node_modules/appium/build/lib/main.js"));
20 | serviceBuilder.withLogFile(new File("./target/appium_logs.txt"));
21 | serviceBuilder.withArgument(GeneralServerFlag.ALLOW_INSECURE, "adb_shell");
22 | serviceBuilder.withArgument(GeneralServerFlag.RELAXED_SECURITY);
23 |
24 | // Appium 1.x
25 | localAppiumServer = AppiumDriverLocalService.buildService(serviceBuilder)
26 | .withBasePath("/wd/hub/");
27 |
28 | // Appium 2.x
29 | // localAppiumServer = AppiumDriverLocalService.buildService(serviceBuilder);
30 |
31 | localAppiumServer.start();
32 | APPIUM_SERVER_URL = localAppiumServer.getUrl().toString();
33 | System.out.println(String.format("Appium server started on url: '%s'",
34 | localAppiumServer.getUrl().toString()));
35 | }
36 |
37 | public static void stopAppiumServer() {
38 | if (null != localAppiumServer) {
39 | System.out.println(String.format("Stopping the local Appium server running on: '%s'",
40 | localAppiumServer.getUrl()
41 | .toString()));
42 | localAppiumServer.stop();
43 | System.out.println("Is Appium server running? " + localAppiumServer.isRunning());
44 | }
45 | }
46 |
47 | public static URL getAppiumServerUrl() {
48 | System.out.println("Appium server url: " + localAppiumServer.getUrl());
49 | return localAppiumServer.getUrl();
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/android/AppiumNativeAndroidMessagesTest.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample.android;
2 |
3 | import com.eot.utils.Wait;
4 | import io.appium.java_client.AppiumDriver;
5 | import io.appium.java_client.android.options.UiAutomator2Options;
6 | import io.appium.java_client.remote.MobileCapabilityType;
7 | import org.openqa.selenium.By;
8 | import org.openqa.selenium.WebElement;
9 | import org.testng.ITestResult;
10 | import org.testng.annotations.*;
11 |
12 | import java.io.File;
13 | import java.lang.reflect.Method;
14 | import java.net.URL;
15 | import java.util.Date;
16 |
17 | import static com.eot.sample.Hooks.*;
18 |
19 | public class AppiumNativeAndroidMessagesTest {
20 |
21 | private AppiumDriver driver;
22 |
23 | @BeforeSuite
24 | public void beforeAll() {
25 | startAppiumServer();
26 | }
27 |
28 | @AfterSuite
29 | public void afterAll() {
30 | stopAppiumServer();
31 | }
32 |
33 | @BeforeMethod
34 | public void beforeMethod(Method method) {
35 | String methodName = method.getName();
36 | String udid = "emulator-5554";
37 | log(String.format("Running test '%s' on '%s'", methodName, udid));
38 | driver = createAppiumDriver(udid);
39 | handleUpgradePopup();
40 | }
41 |
42 | private void handleUpgradePopup() {
43 | Wait.waitFor(1);
44 | WebElement upgradeAppNotificationElement = driver.findElement(By.id("android:id/button1"));
45 | if (null != upgradeAppNotificationElement) {
46 | upgradeAppNotificationElement.click();
47 | Wait.waitFor(1);
48 | }
49 | WebElement gotItElement = driver.findElement(By.id("com.android2.calculator3:id/cling_dismiss"));
50 | if (null != gotItElement) {
51 | gotItElement.click();
52 | Wait.waitFor(1);
53 | }
54 | }
55 |
56 | @AfterMethod
57 | public void afterMethod(ITestResult result) {
58 | if (null != driver) {
59 | log("Close the driver");
60 | driver.quit();
61 | }
62 | }
63 |
64 | @Test
65 | public void runMessagesTest() {
66 | int p1 = 3;
67 | int p2 = 5;
68 | driver.findElement(By.id("digit" + p1))
69 | .click();
70 | driver.findElement(By.id("plus"))
71 | .click();
72 | driver.findElement(By.id("digit" + p2))
73 | .click();
74 | driver.findElement(By.id("equal"))
75 | .click();
76 | }
77 |
78 | private void log(String message) {
79 | System.out.println(" ### " + new Date() + " ### " + message);
80 | }
81 |
82 | private AppiumDriver createAppiumDriver(String udid) {
83 | log(String.format("Create AppiumDriver with appium server with device udid - '%s'", udid));
84 |
85 | // Appium 1.x
86 | // DesiredCapabilities capabilities = new DesiredCapabilities();
87 |
88 | // Appium 2.x
89 | UiAutomator2Options capabilities = new UiAutomator2Options();
90 |
91 | capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
92 | capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android");
93 | capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
94 | capabilities.setCapability("autoGrantPermissions",
95 | true);
96 | capabilities.setCapability("app",
97 | new File("./src/test/resources/sampleApps/AndroidCalculator.apk").getAbsolutePath());
98 | capabilities.setCapability(MobileCapabilityType.FULL_RESET, true);
99 | URL appiumServerUrl = getAppiumServerUrl();
100 | AppiumDriver appiumDriver = new AppiumDriver(appiumServerUrl, capabilities);
101 | log(String.format("Created AppiumDriver for - %s, appiumPort - %s", udid, appiumServerUrl));
102 | return appiumDriver;
103 | }
104 | }
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/android/AppiumNativeAndroidParallelCalcTest.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample.android;
2 |
3 | import io.appium.java_client.AppiumDriver;
4 | import io.appium.java_client.android.options.UiAutomator2Options;
5 | import io.appium.java_client.remote.MobileCapabilityType;
6 | import org.openqa.selenium.By;
7 | import org.testng.ITestResult;
8 | import org.testng.annotations.*;
9 |
10 | import java.lang.reflect.Method;
11 | import java.net.URL;
12 | import java.util.Date;
13 | import java.util.HashMap;
14 |
15 | import static com.eot.sample.Hooks.*;
16 |
17 | public class AppiumNativeAndroidParallelCalcTest {
18 |
19 | private final HashMap drivers = new HashMap<>();
20 |
21 | @DataProvider(name = "device-provider", parallel = true)
22 | public Object[][] provide() {
23 | return new Object[][]{{"emulator-5554", 2, 5}, {"emulator-5556", 3, 6}};
24 | }
25 |
26 | @BeforeSuite
27 | public void beforeAll() {
28 | startAppiumServer();
29 | }
30 |
31 | @AfterSuite
32 | public void afterAll() {
33 | stopAppiumServer();
34 | }
35 |
36 | @BeforeMethod
37 | public void beforeMethod(Object[] testArgs) {
38 | String methodName = ((Method) testArgs[0]).getName();
39 | String udid = (String) testArgs[2];
40 | log(String.format("Running test '%s' on '%s'", methodName, udid));
41 |
42 | log(String.format("Create AppiumDriver for - %s:%s", udid));
43 | AppiumDriver driver = createAppiumDriver(getAppiumServerUrl(), udid);
44 | drivers.put(udid, driver);
45 | log(String.format("Created AppiumDriver for - %s:%s", udid));
46 | }
47 |
48 | @AfterMethod
49 | public void afterMethod(Object[] testArgs) {
50 | log(testArgs.toString());
51 | String methodName = ((Method) testArgs[0]).getName();
52 | ITestResult result = ((ITestResult) testArgs[1]);
53 | log(String.format("Test '%s' result: '%s'", methodName, result.toString()));
54 | String udid = (String) testArgs[2];
55 | Integer systemPort = (Integer) testArgs[3];
56 |
57 | AppiumDriver driver = drivers.get(udid);
58 |
59 | try {
60 | if (null != driver) {
61 | driver.quit();
62 | }
63 |
64 | log(String.format("Visual Validation Results for - %s:%s", udid, systemPort));
65 | } catch (Exception e) {
66 | log("Exception - " + e.getMessage());
67 | e.printStackTrace();
68 | } finally {
69 | }
70 | }
71 |
72 | @Test(dataProvider = "device-provider", threadPoolSize = 2)
73 | public void runTest(Method method, ITestResult testResult, String udid, int num1, int num2) {
74 | log(String.format("Runnng test on %s:%s, appiumPort - ", udid));
75 | log(String.format("drivers.size()=%d", drivers.size()));
76 | AppiumDriver driver = drivers.get(udid);
77 | try {
78 | driver.findElement(By.id("digit_" + num1))
79 | .click();
80 | driver.findElement(By.id("op_add"))
81 | .click();
82 | driver.findElement(By.id("digit_" + num2))
83 | .click();
84 | } catch (Exception e) {
85 | log(e.toString());
86 | } finally {
87 | if (null != driver) {
88 | driver.quit();
89 | }
90 | }
91 | }
92 |
93 | private void log(String message) {
94 | System.out.println(" ### " + new Date() + " ### " + message);
95 | }
96 |
97 | private AppiumDriver createAppiumDriver(URL appiumServerUrl, String udid) {
98 | // Appium 1.x
99 | // DesiredCapabilities capabilities = new DesiredCapabilities();
100 |
101 | // Appium 2.x
102 | UiAutomator2Options capabilities = new UiAutomator2Options();
103 |
104 | capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
105 | capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
106 | capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
107 | capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11");
108 | capabilities.setCapability(MobileCapabilityType.UDID, udid);
109 | capabilities.setCapability("app", "src/test/resources/sampleApps/AndroidCalculator.apk");
110 | capabilities.setCapability(MobileCapabilityType.NO_RESET, false);
111 | capabilities.setCapability(MobileCapabilityType.FULL_RESET, false);
112 | return new AppiumDriver(appiumServerUrl, capabilities);
113 | }
114 | }
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/android/AppiumWebAndroidHelloWorldTest.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample.android;
2 |
3 | import com.eot.utils.DriverUtils;
4 | import io.appium.java_client.AppiumDriver;
5 | import io.appium.java_client.android.options.UiAutomator2Options;
6 | import io.appium.java_client.remote.MobileCapabilityType;
7 | import org.openqa.selenium.By;
8 | import org.testng.ITestResult;
9 | import org.testng.annotations.*;
10 |
11 | import java.lang.reflect.Method;
12 | import java.time.Duration;
13 | import java.util.Date;
14 |
15 | import static com.eot.sample.Hooks.*;
16 |
17 | public class AppiumWebAndroidHelloWorldTest {
18 | private AppiumDriver driver;
19 |
20 | @BeforeSuite
21 | public void beforeAll() {
22 | startAppiumServer();
23 | }
24 |
25 | @AfterSuite
26 | public void afterAll() {
27 | stopAppiumServer();
28 | }
29 |
30 | @BeforeMethod
31 | public void beforeMethod(Method method) {
32 | DriverUtils.setChromeDriverForConnectedDevice();
33 | driver = setupMobileWeb();
34 | }
35 |
36 | @AfterMethod
37 | public void afterMethod(ITestResult result) {
38 | if (null != driver) {
39 | System.out.println("Close the driver");
40 | driver.quit();
41 | }
42 | }
43 |
44 | @Test()
45 | public void appiumWebTest() throws
46 | InterruptedException {
47 | System.out.println("Start time: " + new Date());
48 | driver.get("https://applitools.com/helloworld");
49 | for (int stepNumber = 0; stepNumber < 5; stepNumber++) {
50 | driver.findElement(By.linkText("?diff1"))
51 | .click();
52 | Thread.sleep(1000);
53 | }
54 |
55 | driver.findElement(By.tagName("button"))
56 | .click();
57 | System.out.println("End time: " + new Date());
58 | }
59 |
60 | private AppiumDriver setupMobileWeb() {
61 | // Appium 1.x
62 | // DesiredCapabilities capabilities = new DesiredCapabilities();
63 |
64 | // Appium 2.x
65 | UiAutomator2Options capabilities = new UiAutomator2Options();
66 |
67 | capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
68 | capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11");
69 | capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android");
70 | capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
71 | capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
72 | capabilities.setCapability("chromedriverExecutable", System.getProperty("webdriver.chrome.driver"));
73 |
74 | // Open browser.
75 | AppiumDriver driver = null;
76 | driver = new AppiumDriver(getAppiumServerUrl(), capabilities);
77 | driver.manage()
78 | .timeouts()
79 | .implicitlyWait(Duration.ofSeconds(60));
80 | return driver;
81 | }
82 | }
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/android/FirstAppiumTest.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample.android;
2 |
3 | import com.eot.sample.Hooks;
4 | import io.appium.java_client.AppiumBy;
5 | import io.appium.java_client.AppiumDriver;
6 | import io.appium.java_client.android.options.UiAutomator2Options;
7 | import io.appium.java_client.remote.AndroidMobileCapabilityType;
8 | import io.appium.java_client.remote.MobileCapabilityType;
9 | import org.openqa.selenium.By;
10 | import org.testng.annotations.Test;
11 |
12 | public class FirstAppiumTest
13 | extends Hooks {
14 | private AppiumDriver driver;
15 |
16 | @Test
17 | public void runMessagesTest() {
18 | // 1. Create a AppiumDriver
19 | // 1.1 Set the capabilities of the driver
20 |
21 | // Appium 1.x
22 | // DesiredCapabilities capabilities = new DesiredCapabilities();
23 |
24 | // Appium 2.x
25 | UiAutomator2Options capabilities = new UiAutomator2Options();
26 |
27 | capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,
28 | "UiAutomator2");
29 | capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,
30 | "Android");
31 | capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,
32 | "Android");
33 | capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION,
34 | "12");
35 | capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,
36 | "com.google.android.apps.messaging");
37 | capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,
38 | "com.google.android.apps.messaging.ui.ConversationListActivity");
39 | capabilities.setCapability(MobileCapabilityType.NO_RESET,
40 | false);
41 | capabilities.setCapability(MobileCapabilityType.FULL_RESET,
42 | false);
43 | driver = new AppiumDriver(getAppiumServerUrl(),
44 | capabilities);
45 | System.out.println("Created AppiumDriver");
46 |
47 | // 2. Orchestrate the test scenario
48 | try {
49 | driver.findElement(By.id("com.google.android.apps.messaging:id/conversation_list_google_tos_popup_positive_button"))
50 | .click();
51 | driver.findElement(By.id("android:id/button2"))
52 | .click();
53 | driver.findElement(By.id("android:id/button1"))
54 | .click();
55 | } catch (Exception e) {
56 | System.out.println("Agree button not seen");
57 | }
58 | driver.findElement(AppiumBy.accessibilityId("Start chat"))
59 | .click();
60 | driver.findElement(AppiumBy.accessibilityId("Switch between entering text and numbers"))
61 | .click();
62 | driver.findElement(AppiumBy.accessibilityId("com.google.android.apps.messaging:id/recipient_text_view"))
63 | .sendKeys("anand");
64 | waitFor(5);
65 | if (null != driver) {
66 | System.out.println("Close the driver");
67 | driver.quit();
68 | }
69 | }
70 |
71 | private void waitFor(int numberOfSeconds) {
72 | try {
73 | System.out.println("Sleep for " + numberOfSeconds);
74 | Thread.sleep(numberOfSeconds * 1000);
75 | } catch (InterruptedException e) {
76 | e.printStackTrace();
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/ios/AppiumNativeiOSHelloWorldTest.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample.ios;
2 |
3 | import io.appium.java_client.AppiumBy;
4 | import io.appium.java_client.AppiumDriver;
5 | import io.appium.java_client.ios.options.XCUITestOptions;
6 | import io.appium.java_client.remote.MobileCapabilityType;
7 | import org.openqa.selenium.By;
8 | import org.testng.ITestResult;
9 | import org.testng.annotations.*;
10 |
11 | import java.lang.reflect.Method;
12 |
13 | import static com.eot.sample.Hooks.*;
14 |
15 | public class AppiumNativeiOSHelloWorldTest {
16 | private static final String UDID = "7B0FA5D8-1926-4461-A313-243BCE78A6CE";
17 | private static final String DEVICE_NAME = "iPhone 14 Pro";
18 | private static final String PLATFORM_VERSION = "16.2";
19 | private AppiumDriver driver;
20 |
21 | @BeforeSuite
22 | public void beforeAll() {
23 | startAppiumServer();
24 | }
25 |
26 | @AfterSuite
27 | public void afterAll() {
28 | stopAppiumServer();
29 | }
30 |
31 | @BeforeMethod
32 | public void beforeMethod(Method method) {
33 | driver = createAppiumDriver();
34 | }
35 |
36 | @AfterMethod
37 | public void afterMethod(ITestResult result) {
38 | if (null != driver) {
39 | System.out.println("Close the driver");
40 | driver.quit();
41 | }
42 | }
43 |
44 | @Test
45 | public void runIOSNativeAppTest() {
46 | driver.findElement(AppiumBy.accessibilityId("Make the number below random."))
47 | .click();
48 | driver.findElement(AppiumBy.accessibilityId("MakeRandomNumberCheckbox"))
49 | .click();
50 | driver.findElement(AppiumBy.accessibilityId("SimulateDiffsCheckbox"))
51 | .click();
52 | driver.findElement(By.xpath("//XCUIElementTypeStaticText[@name=\"Click me!\"]"))
53 | .click();
54 | }
55 |
56 | private AppiumDriver createAppiumDriver() {
57 | // Appium 1.x
58 | // DesiredCapabilities dc = new DesiredCapabilities();
59 |
60 | // Appium 2.x
61 | XCUITestOptions dc = new XCUITestOptions();
62 |
63 | dc.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
64 | dc.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
65 | dc.setCapability(MobileCapabilityType.PLATFORM_VERSION, PLATFORM_VERSION);
66 | dc.setCapability(MobileCapabilityType.DEVICE_NAME, DEVICE_NAME);
67 | dc.setCapability(MobileCapabilityType.UDID, UDID);
68 | dc.setCapability("app", System.getProperty("user.dir") + "/src/test/resources/sampleApps" +
69 | "/HelloWorldiOS.app");
70 | // dc.setCapability("app", System.getProperty("user.dir") + "/src/test/resources/sampleApps/eyes-ios-hello-world.zip");
71 |
72 | return new AppiumDriver(getAppiumServerUrl(), dc);
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/test/java/com/eot/sample/ios/AppiumWebiOSHelloWorldTest.java:
--------------------------------------------------------------------------------
1 | package com.eot.sample.ios;
2 |
3 | import io.appium.java_client.AppiumDriver;
4 | import io.appium.java_client.ios.options.XCUITestOptions;
5 | import io.appium.java_client.remote.MobileCapabilityType;
6 | import org.openqa.selenium.By;
7 | import org.testng.ITestResult;
8 | import org.testng.annotations.*;
9 |
10 | import java.lang.reflect.Method;
11 | import java.util.Date;
12 |
13 | import static com.eot.sample.Hooks.*;
14 |
15 | public class AppiumWebiOSHelloWorldTest {
16 | private static final String UDID = "F2D71DA6-ABD3-4311-A694-349FD64A5E7D";
17 | private static final String DEVICE_NAME = "iPhone 12 Pro Max";
18 | private static final String PLATFORM_VERSION = "14.5";
19 | private AppiumDriver driver;
20 |
21 | @BeforeSuite
22 | public void beforeAll() {
23 | startAppiumServer();
24 | }
25 |
26 | @AfterSuite
27 | public void afterAll() {
28 | stopAppiumServer();
29 | }
30 |
31 | @BeforeMethod
32 | public void beforeMethod(Method method) {
33 | driver = createAppiumDriver();
34 | }
35 |
36 | @AfterMethod
37 | public void afterMethod(ITestResult result) {
38 | if (null != driver) {
39 | System.out.println("Close the driver");
40 | driver.quit();
41 | }
42 | }
43 |
44 | @Test
45 | public void runIOSWebTest() throws InterruptedException {
46 | System.out.println("Start time: " + new Date());
47 | Thread.sleep(3000);
48 | driver.get("https://applitools.com/helloworld");
49 | for (int stepNumber = 0; stepNumber < 5; stepNumber++) {
50 | driver.findElement(By.linkText("?diff1")).click();
51 | Thread.sleep(1000);
52 | }
53 |
54 | driver.findElement(By.tagName("button")).click();
55 | driver.quit();
56 |
57 | System.out.println("End time: " + new Date());
58 | }
59 |
60 |
61 | private AppiumDriver createAppiumDriver() {
62 | // Appium 1.x
63 | // DesiredCapabilities dc = new DesiredCapabilities();
64 |
65 | // Appium 2.x
66 | XCUITestOptions dc = new XCUITestOptions();
67 |
68 | dc.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
69 | dc.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
70 | dc.setCapability(MobileCapabilityType.PLATFORM_VERSION, PLATFORM_VERSION);
71 | dc.setCapability(MobileCapabilityType.DEVICE_NAME, DEVICE_NAME);
72 | dc.setCapability(MobileCapabilityType.UDID, UDID);
73 | dc.setCapability(MobileCapabilityType.BROWSER_NAME, "safari");
74 | dc.setCapability(MobileCapabilityType.APP, "io.appium.SafariLauncher");
75 |
76 | return new AppiumDriver(getAppiumServerUrl(), dc);
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/test/java/com/eot/utils/CommandPrompt.java:
--------------------------------------------------------------------------------
1 | package com.eot.utils;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.IOException;
5 | import java.io.InputStream;
6 | import java.io.InputStreamReader;
7 | import java.util.ArrayList;
8 | import java.util.List;
9 | import java.util.Map;
10 |
11 | public class CommandPrompt {
12 |
13 | Process p;
14 | ProcessBuilder builder;
15 |
16 | public String runCommand(String command) throws
17 | IOException {
18 | p = Runtime.getRuntime()
19 | .exec(command);
20 | // get std output
21 | BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
22 | String line = "";
23 | String allLine = "";
24 | int i = 1;
25 | while((line = r.readLine()) != null) {
26 | allLine = allLine + "" + line + "\n";
27 | if(line.contains("Console LogLevel: debug") && line.contains("Complete")) {
28 | break;
29 | }
30 | i++;
31 | }
32 | return allLine;
33 |
34 | }
35 |
36 | public BufferedReader getBufferedReader(String command) throws
37 | IOException {
38 | List commands = new ArrayList<>();
39 | commands.add("/bin/sh");
40 | commands.add("-c");
41 | commands.add(command);
42 | ProcessBuilder builder = new ProcessBuilder(commands);
43 | Map environ = builder.environment();
44 |
45 | final Process process = builder.start();
46 | InputStream is = process.getInputStream();
47 | InputStreamReader isr = new InputStreamReader(is);
48 | return new BufferedReader(isr);
49 | }
50 |
51 | public String runCommandThruProcess(String command) throws
52 | IOException {
53 | BufferedReader br = getBufferedReader(command);
54 | String line;
55 | String allLine = "";
56 | while((line = br.readLine()) != null) {
57 | allLine = allLine + "" + line + "\n";
58 | }
59 | return allLine;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/test/java/com/eot/utils/DriverUtils.java:
--------------------------------------------------------------------------------
1 | package com.eot.utils;
2 |
3 | import io.github.bonigarcia.wdm.WebDriverManager;
4 | import org.apache.commons.lang3.ArrayUtils;
5 |
6 | import java.io.IOException;
7 | import java.util.ArrayList;
8 | import java.util.Arrays;
9 |
10 | public class DriverUtils {
11 | public static String setPathForChromeDriverFromMachine() {
12 | WebDriverManager.chromedriver()
13 | .setup();
14 | String chromeDriverPath = WebDriverManager.chromedriver()
15 | .getDownloadedDriverPath();
16 | System.out.println("ChromeDriver path: " + chromeDriverPath);
17 | System.setProperty("webdriver.chrome.driver",
18 | chromeDriverPath);
19 | return chromeDriverPath;
20 | }
21 |
22 | private static void setDriverForConnectedDevice(String browserName) {
23 | int[] versionNamesArr = getBrowserVersionsFor(browserName);
24 | if (versionNamesArr.length > 0) {
25 | int highestBrowserVersion = Arrays.stream(versionNamesArr)
26 | .max()
27 | .getAsInt();
28 | String message = "Setting up ChromeDriver for Chrome version " + highestBrowserVersion + " on device";
29 | System.out.println(message);
30 | switch (browserName) {
31 | case "chrome":
32 | WebDriverManager.chromedriver()
33 | .browserVersion(String.valueOf(highestBrowserVersion))
34 | .setup();
35 | break;
36 | case "firefox":
37 | WebDriverManager.firefoxdriver()
38 | .browserVersion(String.valueOf(highestBrowserVersion))
39 | .setup();
40 | break;
41 | case "safari":
42 | WebDriverManager.safaridriver()
43 | .browserVersion(String.valueOf(highestBrowserVersion))
44 | .setup();
45 | break;
46 | case "edge":
47 | WebDriverManager.edgedriver()
48 | .browserVersion(String.valueOf(highestBrowserVersion))
49 | .setup();
50 | break;
51 | }
52 | } else {
53 | throw new RuntimeException("No devices connected");
54 | }
55 | }
56 |
57 | public static void setChromeDriverForConnectedDevice() {
58 | setDriverForConnectedDevice("chrome");
59 | }
60 |
61 | public static void setFirefoxDriverForConnectedDevice() {
62 | setDriverForConnectedDevice("firefox");
63 | }
64 |
65 | public static void setSafariDriverForConnectedDevice() {
66 | setDriverForConnectedDevice("safari");
67 | }
68 |
69 | public static void setEdgeDriverForConnectedDevice() {
70 | setDriverForConnectedDevice("edge");
71 | }
72 |
73 | private static int[] getBrowserVersionsFor(final String browserName) {
74 | ArrayList deviceUdids = getConnectedDeviceUdids();
75 | CommandPrompt cmd = new CommandPrompt();
76 | String resultStdOut = null;
77 | resultStdOut = getBrowserVersionsOnDevice(cmd,
78 | browserName,
79 | deviceUdids.get(0));
80 | int[] versionNamesArr = {};
81 | if (resultStdOut.contains("versionName=")) {
82 | String[] foundVersions = resultStdOut.split("\n");
83 | for (String foundVersion : foundVersions) {
84 | String version = foundVersion.split("=")[1].split("\\.")[0];
85 | String format = String.format("Found " + browserName + " version - '%s' on device",
86 | version);
87 | System.out.println(format);
88 | versionNamesArr = ArrayUtils.add(versionNamesArr,
89 | Integer.parseInt(version));
90 | }
91 | } else {
92 | System.out.println(String.format(browserName + " not found on device"));
93 | }
94 | return versionNamesArr;
95 | }
96 |
97 | private static ArrayList getConnectedDeviceUdids() {
98 | ArrayList udids = new ArrayList<>();
99 | CommandPrompt cmd = new CommandPrompt();
100 | String resultStdOut = null;
101 | try {
102 | resultStdOut = cmd.runCommandThruProcess("adb devices");
103 | String[] devices = resultStdOut.split("\n");
104 | for (int cnt=1; cnt
2 |
3 |
4 |
5 | files
6 |
7 | Info.plist
8 |
9 | jreU5hZGNCik2Hp5uPrGZUy11X8=
10 |
11 | version.plist
12 |
13 | IBuwnssTaVoEqhVHtNTT91gSl10=
14 |
15 |
16 | files2
17 |
18 | version.plist
19 |
20 | hash
21 |
22 | IBuwnssTaVoEqhVHtNTT91gSl10=
23 |
24 | hash2
25 |
26 | JWd/ru1b6k0uNZgO60tQbs9H8n+wZ9N9P0FKdkazZ2c=
27 |
28 |
29 |
30 | rules
31 |
32 | ^.*
33 |
34 | ^.*\.lproj/
35 |
36 | optional
37 |
38 | weight
39 | 1000
40 |
41 | ^.*\.lproj/locversion.plist$
42 |
43 | omit
44 |
45 | weight
46 | 1100
47 |
48 | ^Base\.lproj/
49 |
50 | weight
51 | 1010
52 |
53 | ^version.plist$
54 |
55 |
56 | rules2
57 |
58 | .*\.dSYM($|/)
59 |
60 | weight
61 | 11
62 |
63 | ^(.*/)?\.DS_Store$
64 |
65 | omit
66 |
67 | weight
68 | 2000
69 |
70 | ^.*
71 |
72 | ^.*\.lproj/
73 |
74 | optional
75 |
76 | weight
77 | 1000
78 |
79 | ^.*\.lproj/locversion.plist$
80 |
81 | omit
82 |
83 | weight
84 | 1100
85 |
86 | ^Base\.lproj/
87 |
88 | weight
89 | 1010
90 |
91 | ^Info\.plist$
92 |
93 | omit
94 |
95 | weight
96 | 20
97 |
98 | ^PkgInfo$
99 |
100 | omit
101 |
102 | weight
103 | 20
104 |
105 | ^embedded\.provisionprofile$
106 |
107 | weight
108 | 20
109 |
110 | ^version\.plist$
111 |
112 | weight
113 | 20
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTAutomationSupport.framework/version.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildAliasOf
6 | XCTest
7 | BuildVersion
8 | 25
9 | CFBundleShortVersionString
10 | 1.0
11 | CFBundleVersion
12 | 15509
13 | ProjectName
14 | XCTest_Sim
15 | SourceVersion
16 | 15509000000000000
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/Info.plist
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/XCTest:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/XCTest
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Headers/XCAbstractTest.h
8 |
9 | 4jnRu9kM4nMP+Xh3ikwmHuBDxsI=
10 |
11 | Headers/XCTActivity.h
12 |
13 | BVKd+CuVL/fMWVnojVTY7BZiXkc=
14 |
15 | Headers/XCTAttachment.h
16 |
17 | Oj+TPGqNugq6OdGTXp+pv8RABrw=
18 |
19 | Headers/XCTAttachmentLifetime.h
20 |
21 | uBkx/rPKjZiieZXjaYSrZHfYrQc=
22 |
23 | Headers/XCTContext.h
24 |
25 | S2c/fkq5xnjLgsMY3mNIE7jPMFE=
26 |
27 | Headers/XCTDarwinNotificationExpectation.h
28 |
29 | xgLoekZTNR/Co8filS6uLNYJf/E=
30 |
31 | Headers/XCTKVOExpectation.h
32 |
33 | lFyxpAOexy4I0FeOWpffoTT8it0=
34 |
35 | Headers/XCTMeasureOptions.h
36 |
37 | ibArYCN2zdKhgx+eBgBCBNDAXwk=
38 |
39 | Headers/XCTMetric.h
40 |
41 | 0ajIZMxTB6Ui2i7sW317ciFSITk=
42 |
43 | Headers/XCTNSNotificationExpectation.h
44 |
45 | GgPD0VxAR13kxU718XyIoANRFnI=
46 |
47 | Headers/XCTNSPredicateExpectation.h
48 |
49 | aSEO1rwf6zy0Du3+eCT33nba5NQ=
50 |
51 | Headers/XCTWaiter.h
52 |
53 | 3xRcrUqW54PHl7VXGv1RNSfgZAg=
54 |
55 | Headers/XCTest.apinotes
56 |
57 | rdxiCOk1+8LS5qAXN2bvobJDFFQ=
58 |
59 | Headers/XCTest.h
60 |
61 | bQFfKucFGBSbvIYCB0BZ5s/oxjc=
62 |
63 | Headers/XCTestAssertions.h
64 |
65 | TFhruscn++ANKgidq0O8+oRGZg0=
66 |
67 | Headers/XCTestAssertionsImpl.h
68 |
69 | T99AMAYulUY/rC8Jm3f2wue/NwQ=
70 |
71 | Headers/XCTestCase+AsynchronousTesting.h
72 |
73 | rWTz3GJooC6B9F2UuPe8rraZ3co=
74 |
75 | Headers/XCTestCase+XCUIInterruptionMonitoring.h
76 |
77 | HshK97GInp8BY09Lz+IOOiSjMLw=
78 |
79 | Headers/XCTestCase.h
80 |
81 | cMytFl3o1iFwLUyeTTEODEj9URQ=
82 |
83 | Headers/XCTestCaseRun.h
84 |
85 | /XUqDHA/BFdQDUxQU8Ft5LXo/Ps=
86 |
87 | Headers/XCTestDefines.h
88 |
89 | Am3+DsqkiGWVQdMxbvP+PnX1GEc=
90 |
91 | Headers/XCTestErrors.h
92 |
93 | BnBscwpH851RQwavB0TR1R+NFGk=
94 |
95 | Headers/XCTestExpectation.h
96 |
97 | KhXKWvul02bgmcJVo8Ndr6k6XGc=
98 |
99 | Headers/XCTestLog.h
100 |
101 | 9BU/gwbaKcfn2L9dfo2dHRFN6Bc=
102 |
103 | Headers/XCTestObservation.h
104 |
105 | eYPPds+/sIm1g8tzzWEi74ngT8s=
106 |
107 | Headers/XCTestObservationCenter.h
108 |
109 | 5ySsNYFGF0ZFvLZnL7UTg1HNRR4=
110 |
111 | Headers/XCTestObserver.h
112 |
113 | DV3Cjdd1CAe6nYFEzmUrCtnzxQg=
114 |
115 | Headers/XCTestProbe.h
116 |
117 | fIVR0xRsxMAabrJmeGX3hPDwL0Y=
118 |
119 | Headers/XCTestRun.h
120 |
121 | 7GVNxTeghh0aBxY/Gvb+j2VTkqQ=
122 |
123 | Headers/XCTestSuite.h
124 |
125 | eRc+OVrMoZSKfP/hWkP9044Xkwo=
126 |
127 | Headers/XCTestSuiteRun.h
128 |
129 | OX+g52bOAnhjLVDKkweTKM8jTHQ=
130 |
131 | Headers/XCUIApplication.h
132 |
133 | KRfS5tDZSII6EIDyPAL3+83RDuE=
134 |
135 | Headers/XCUICoordinate.h
136 |
137 | KH9oPuVEvERZxuUq0MRGlJmp92I=
138 |
139 | Headers/XCUIDevice.h
140 |
141 | U+d9WpjjRCjLiLvCZfzVvHgwSac=
142 |
143 | Headers/XCUIElement.h
144 |
145 | kik/CdE89CdCkfNcElgLOL/fEfY=
146 |
147 | Headers/XCUIElementAttributes.h
148 |
149 | 8ihGn99tX4C4PPRNW4qUqlS9tBo=
150 |
151 | Headers/XCUIElementQuery.h
152 |
153 | C3ZXTnkZIFu38bImb5YnKX8ME3s=
154 |
155 | Headers/XCUIElementTypeQueryProvider.h
156 |
157 | eNC8SZmVLap2/0pE8MEIXg23K5k=
158 |
159 | Headers/XCUIElementTypes.h
160 |
161 | rS+FtIJ/fnc0UIdAg5Fupx0KuVc=
162 |
163 | Headers/XCUIKeyboardKeys.h
164 |
165 | iM5NitaH7AFOmYTcSm86X0OTpSw=
166 |
167 | Headers/XCUIRemote.h
168 |
169 | mL0ValPqxcHHQ2g5GKFehud+hmg=
170 |
171 | Headers/XCUIScreen.h
172 |
173 | DBqshlCvI4VeOu1t7slE1L12Akw=
174 |
175 | Headers/XCUIScreenshot.h
176 |
177 | WRAFpS5fsJOjpa68uJDYY7QcwzQ=
178 |
179 | Headers/XCUIScreenshotProviding.h
180 |
181 | qghz8l697gauRG1WZGkXCsisS40=
182 |
183 | Headers/XCUISiriService.h
184 |
185 | dHcrL5GzEWnfAVIIdfMRtkHKRh8=
186 |
187 | Info.plist
188 |
189 | PKZERfvFR9NslOzRKnNmu1CCGOk=
190 |
191 | Modules/module.modulemap
192 |
193 | ha0qqLvU0UdkLu07qH5tE4agQV4=
194 |
195 | en.lproj/InfoPlist.strings
196 |
197 | hash
198 |
199 | TuBj57ZP6zBqcL9HttO2Rucaw9E=
200 |
201 | optional
202 |
203 |
204 | version.plist
205 |
206 | IBuwnssTaVoEqhVHtNTT91gSl10=
207 |
208 |
209 | files2
210 |
211 | Headers/XCAbstractTest.h
212 |
213 | hash
214 |
215 | 4jnRu9kM4nMP+Xh3ikwmHuBDxsI=
216 |
217 | hash2
218 |
219 | IFgW59C1Ktqp4LtLT30sw91amGbNOGweE+JfCOD3+Zg=
220 |
221 |
222 | Headers/XCTActivity.h
223 |
224 | hash
225 |
226 | BVKd+CuVL/fMWVnojVTY7BZiXkc=
227 |
228 | hash2
229 |
230 | rRcgcNhfkv8++PLGoc2+V7RKA+20od2gktcAZnNphso=
231 |
232 |
233 | Headers/XCTAttachment.h
234 |
235 | hash
236 |
237 | Oj+TPGqNugq6OdGTXp+pv8RABrw=
238 |
239 | hash2
240 |
241 | sPKuJRf7076bHZkdcyw9yIODM7cLQgzwVepIaxfKcwg=
242 |
243 |
244 | Headers/XCTAttachmentLifetime.h
245 |
246 | hash
247 |
248 | uBkx/rPKjZiieZXjaYSrZHfYrQc=
249 |
250 | hash2
251 |
252 | yrLG05PHjYkx013jrhQuHeuuP2sz3+LqbAIRN/0Mqc4=
253 |
254 |
255 | Headers/XCTContext.h
256 |
257 | hash
258 |
259 | S2c/fkq5xnjLgsMY3mNIE7jPMFE=
260 |
261 | hash2
262 |
263 | aKMqn4OBmb2Fg3/8sTMLXW2eHWiyWP3bQkSzTnvrwmQ=
264 |
265 |
266 | Headers/XCTDarwinNotificationExpectation.h
267 |
268 | hash
269 |
270 | xgLoekZTNR/Co8filS6uLNYJf/E=
271 |
272 | hash2
273 |
274 | WWhQiD61KIzmH4HGY0m0DL81cWWNlj8/UbmObbMosCo=
275 |
276 |
277 | Headers/XCTKVOExpectation.h
278 |
279 | hash
280 |
281 | lFyxpAOexy4I0FeOWpffoTT8it0=
282 |
283 | hash2
284 |
285 | 0LwmSqNDabujMjFkD4VsuBrVvpDiagCmMT7+TrOMQJ8=
286 |
287 |
288 | Headers/XCTMeasureOptions.h
289 |
290 | hash
291 |
292 | ibArYCN2zdKhgx+eBgBCBNDAXwk=
293 |
294 | hash2
295 |
296 | KDHwa5eBjk9vZzDnpRNyoTiLMHC+9NfBU2oMFJTvlmQ=
297 |
298 |
299 | Headers/XCTMetric.h
300 |
301 | hash
302 |
303 | 0ajIZMxTB6Ui2i7sW317ciFSITk=
304 |
305 | hash2
306 |
307 | ohpVoJzlGk8aW+Bm+UIJpMN7QLu7ZRCzMw9yK/vngRg=
308 |
309 |
310 | Headers/XCTNSNotificationExpectation.h
311 |
312 | hash
313 |
314 | GgPD0VxAR13kxU718XyIoANRFnI=
315 |
316 | hash2
317 |
318 | VXvwBWOD16+KFCowURMEv0kaNQr2vnqCACoYDoCXge4=
319 |
320 |
321 | Headers/XCTNSPredicateExpectation.h
322 |
323 | hash
324 |
325 | aSEO1rwf6zy0Du3+eCT33nba5NQ=
326 |
327 | hash2
328 |
329 | ks1YzdiBYJW2038936fbKLaf/Ib1fAhJioMzCA6WxWg=
330 |
331 |
332 | Headers/XCTWaiter.h
333 |
334 | hash
335 |
336 | 3xRcrUqW54PHl7VXGv1RNSfgZAg=
337 |
338 | hash2
339 |
340 | mA5vx6/QQ25gHCNLjo9Y0eX1khy7s52IB7yacIGlrNk=
341 |
342 |
343 | Headers/XCTest.apinotes
344 |
345 | hash
346 |
347 | rdxiCOk1+8LS5qAXN2bvobJDFFQ=
348 |
349 | hash2
350 |
351 | d7IpqGCCD0CfwYoa51brylY4fgu3M72FcmaoEnvUdsw=
352 |
353 |
354 | Headers/XCTest.h
355 |
356 | hash
357 |
358 | bQFfKucFGBSbvIYCB0BZ5s/oxjc=
359 |
360 | hash2
361 |
362 | lsupTQ3bRsQoIE7MDToK4j69d+bLEn28IJlqk78FmQY=
363 |
364 |
365 | Headers/XCTestAssertions.h
366 |
367 | hash
368 |
369 | TFhruscn++ANKgidq0O8+oRGZg0=
370 |
371 | hash2
372 |
373 | HNwN4r4tVDYAyxvEdGWpbCOzE9tjFMwivSpf/OMiSA0=
374 |
375 |
376 | Headers/XCTestAssertionsImpl.h
377 |
378 | hash
379 |
380 | T99AMAYulUY/rC8Jm3f2wue/NwQ=
381 |
382 | hash2
383 |
384 | zNlx0hWK8x8UjUS+KOfeHvvervr/BWjBpV+5mJipE14=
385 |
386 |
387 | Headers/XCTestCase+AsynchronousTesting.h
388 |
389 | hash
390 |
391 | rWTz3GJooC6B9F2UuPe8rraZ3co=
392 |
393 | hash2
394 |
395 | tJGZbkx6PTinAC1utC38ad/hNBMIojawFdNt3abKvKE=
396 |
397 |
398 | Headers/XCTestCase+XCUIInterruptionMonitoring.h
399 |
400 | hash
401 |
402 | HshK97GInp8BY09Lz+IOOiSjMLw=
403 |
404 | hash2
405 |
406 | bQ07uLDQQVxFhGMZVX2mEVx0PcELxAp83yWtTivdhY4=
407 |
408 |
409 | Headers/XCTestCase.h
410 |
411 | hash
412 |
413 | cMytFl3o1iFwLUyeTTEODEj9URQ=
414 |
415 | hash2
416 |
417 | yswC/H8HQQONXgDwc7kA0veuoTP0vr9nKShnoBPShXg=
418 |
419 |
420 | Headers/XCTestCaseRun.h
421 |
422 | hash
423 |
424 | /XUqDHA/BFdQDUxQU8Ft5LXo/Ps=
425 |
426 | hash2
427 |
428 | jEzXeXeFAbT7xbfbqjlf4yF+lZvOKKw9u0dhT8Lzpe4=
429 |
430 |
431 | Headers/XCTestDefines.h
432 |
433 | hash
434 |
435 | Am3+DsqkiGWVQdMxbvP+PnX1GEc=
436 |
437 | hash2
438 |
439 | zuT+9hJS0Gkek0vsBM0QbHA2iRIwxHkAVlflT6Dl5Cs=
440 |
441 |
442 | Headers/XCTestErrors.h
443 |
444 | hash
445 |
446 | BnBscwpH851RQwavB0TR1R+NFGk=
447 |
448 | hash2
449 |
450 | vY/UAdXlAJaUKG1L3k0Tji8c7J/L2vAGoidgKK/87+o=
451 |
452 |
453 | Headers/XCTestExpectation.h
454 |
455 | hash
456 |
457 | KhXKWvul02bgmcJVo8Ndr6k6XGc=
458 |
459 | hash2
460 |
461 | mAYhxq+bEQg5FJhqAi4Cub/7+mMl0pLWISlW4pdh3p0=
462 |
463 |
464 | Headers/XCTestLog.h
465 |
466 | hash
467 |
468 | 9BU/gwbaKcfn2L9dfo2dHRFN6Bc=
469 |
470 | hash2
471 |
472 | Tu+6JYZZzftcXmUWH11IO9/jXCXi6QPeWDrL6izup6s=
473 |
474 |
475 | Headers/XCTestObservation.h
476 |
477 | hash
478 |
479 | eYPPds+/sIm1g8tzzWEi74ngT8s=
480 |
481 | hash2
482 |
483 | DlaZPljnXduHBIxVFsQHWivHsQV6+QqtkPm3wqcNC9c=
484 |
485 |
486 | Headers/XCTestObservationCenter.h
487 |
488 | hash
489 |
490 | 5ySsNYFGF0ZFvLZnL7UTg1HNRR4=
491 |
492 | hash2
493 |
494 | d+hY4S23zmWO8E2YIrh4biGe9oQWCfD497a+oVk2+yY=
495 |
496 |
497 | Headers/XCTestObserver.h
498 |
499 | hash
500 |
501 | DV3Cjdd1CAe6nYFEzmUrCtnzxQg=
502 |
503 | hash2
504 |
505 | 7CTdhCJbuEzQNSyp3exgcCn6JnIRjBwpUcOKmiddBtU=
506 |
507 |
508 | Headers/XCTestProbe.h
509 |
510 | hash
511 |
512 | fIVR0xRsxMAabrJmeGX3hPDwL0Y=
513 |
514 | hash2
515 |
516 | FKXb32Ennc+6f3SkuVdo8bBNcIIWwryV5u5FmQYN8Fc=
517 |
518 |
519 | Headers/XCTestRun.h
520 |
521 | hash
522 |
523 | 7GVNxTeghh0aBxY/Gvb+j2VTkqQ=
524 |
525 | hash2
526 |
527 | bSeEEos9toHX4ZeMGeRYdv1KXdCziExa2r95Y6Qcem8=
528 |
529 |
530 | Headers/XCTestSuite.h
531 |
532 | hash
533 |
534 | eRc+OVrMoZSKfP/hWkP9044Xkwo=
535 |
536 | hash2
537 |
538 | L7lrx0/vT/6C441YiHqyBo8c41P7nh8AVfj2Ju9MWF0=
539 |
540 |
541 | Headers/XCTestSuiteRun.h
542 |
543 | hash
544 |
545 | OX+g52bOAnhjLVDKkweTKM8jTHQ=
546 |
547 | hash2
548 |
549 | QDxhlFfxAJEcudV29W9M96FJW5LQiR0yqdUHzkjMuA0=
550 |
551 |
552 | Headers/XCUIApplication.h
553 |
554 | hash
555 |
556 | KRfS5tDZSII6EIDyPAL3+83RDuE=
557 |
558 | hash2
559 |
560 | ZcQ8tkNuRMWSj71jyx56Uc/drEs5EQzV/1jFn/fCc8E=
561 |
562 |
563 | Headers/XCUICoordinate.h
564 |
565 | hash
566 |
567 | KH9oPuVEvERZxuUq0MRGlJmp92I=
568 |
569 | hash2
570 |
571 | +0+WTr805cIzOsY72c8KSuWA6SUFtagukcxOv0ili5g=
572 |
573 |
574 | Headers/XCUIDevice.h
575 |
576 | hash
577 |
578 | U+d9WpjjRCjLiLvCZfzVvHgwSac=
579 |
580 | hash2
581 |
582 | VW3IwP1TYREPNB2r2kMjYcDRy4pIEIanLPXa2Q6103I=
583 |
584 |
585 | Headers/XCUIElement.h
586 |
587 | hash
588 |
589 | kik/CdE89CdCkfNcElgLOL/fEfY=
590 |
591 | hash2
592 |
593 | Fy65/sTJUEiV0ngzbtJLFKs9c0kPw/E9TxgozUurqbM=
594 |
595 |
596 | Headers/XCUIElementAttributes.h
597 |
598 | hash
599 |
600 | 8ihGn99tX4C4PPRNW4qUqlS9tBo=
601 |
602 | hash2
603 |
604 | /RERxiLo8BzHBf5biK7xsVJnDB73TOHeOH72FBuhMTo=
605 |
606 |
607 | Headers/XCUIElementQuery.h
608 |
609 | hash
610 |
611 | C3ZXTnkZIFu38bImb5YnKX8ME3s=
612 |
613 | hash2
614 |
615 | LF3E68WtedEEM/IFD3q/tOZ3q0JtUQQhOK4XkamNjNM=
616 |
617 |
618 | Headers/XCUIElementTypeQueryProvider.h
619 |
620 | hash
621 |
622 | eNC8SZmVLap2/0pE8MEIXg23K5k=
623 |
624 | hash2
625 |
626 | TkdeCwm9pHYslVsfOQREYI9bFdf4Uli/p8MK/GYWfoY=
627 |
628 |
629 | Headers/XCUIElementTypes.h
630 |
631 | hash
632 |
633 | rS+FtIJ/fnc0UIdAg5Fupx0KuVc=
634 |
635 | hash2
636 |
637 | PUsaHf1pPvtkPng1Gk8jnyBg64It8wcfcNQK5lbNMs4=
638 |
639 |
640 | Headers/XCUIKeyboardKeys.h
641 |
642 | hash
643 |
644 | iM5NitaH7AFOmYTcSm86X0OTpSw=
645 |
646 | hash2
647 |
648 | MbFj4xHxsP2eF3L+IKG6cETqjvOpZFLq0ztIDCdeyt8=
649 |
650 |
651 | Headers/XCUIRemote.h
652 |
653 | hash
654 |
655 | mL0ValPqxcHHQ2g5GKFehud+hmg=
656 |
657 | hash2
658 |
659 | ybx2NetsmHdACotRXmQIih0R1cU6EFEkgC4E82ttsQ4=
660 |
661 |
662 | Headers/XCUIScreen.h
663 |
664 | hash
665 |
666 | DBqshlCvI4VeOu1t7slE1L12Akw=
667 |
668 | hash2
669 |
670 | 45JwTQ4UtWVT2wvzdq2QOl8rBZ9Wxq9ubBB2vGvgBKc=
671 |
672 |
673 | Headers/XCUIScreenshot.h
674 |
675 | hash
676 |
677 | WRAFpS5fsJOjpa68uJDYY7QcwzQ=
678 |
679 | hash2
680 |
681 | F2tCZijPx0hU+7CIdW0fMZK4cwKbgFYiI9LKYINt5sU=
682 |
683 |
684 | Headers/XCUIScreenshotProviding.h
685 |
686 | hash
687 |
688 | qghz8l697gauRG1WZGkXCsisS40=
689 |
690 | hash2
691 |
692 | s35VI6Lzy6LUDsIoANQTenLSsJeaPXvonWElqk8cJbM=
693 |
694 |
695 | Headers/XCUISiriService.h
696 |
697 | hash
698 |
699 | dHcrL5GzEWnfAVIIdfMRtkHKRh8=
700 |
701 | hash2
702 |
703 | 3sM9IB3tMtnQkwtK6ml+Cyc98wfQkjwaoA/cdI7i500=
704 |
705 |
706 | Modules/module.modulemap
707 |
708 | hash
709 |
710 | ha0qqLvU0UdkLu07qH5tE4agQV4=
711 |
712 | hash2
713 |
714 | w5Zd8voFpYyDVfx4t9/bCAZAs1kTrhmGSzTXQMiBd/c=
715 |
716 |
717 | en.lproj/InfoPlist.strings
718 |
719 | hash
720 |
721 | TuBj57ZP6zBqcL9HttO2Rucaw9E=
722 |
723 | hash2
724 |
725 | 89RGkjZaKuewYnjpzwhIswhqfrU8+pcEXqM/DHVrUmo=
726 |
727 | optional
728 |
729 |
730 | version.plist
731 |
732 | hash
733 |
734 | IBuwnssTaVoEqhVHtNTT91gSl10=
735 |
736 | hash2
737 |
738 | JWd/ru1b6k0uNZgO60tQbs9H8n+wZ9N9P0FKdkazZ2c=
739 |
740 |
741 |
742 | rules
743 |
744 | ^.*
745 |
746 | ^.*\.lproj/
747 |
748 | optional
749 |
750 | weight
751 | 1000
752 |
753 | ^.*\.lproj/locversion.plist$
754 |
755 | omit
756 |
757 | weight
758 | 1100
759 |
760 | ^Base\.lproj/
761 |
762 | weight
763 | 1010
764 |
765 | ^version.plist$
766 |
767 |
768 | rules2
769 |
770 | .*\.dSYM($|/)
771 |
772 | weight
773 | 11
774 |
775 | ^(.*/)?\.DS_Store$
776 |
777 | omit
778 |
779 | weight
780 | 2000
781 |
782 | ^.*
783 |
784 | ^.*\.lproj/
785 |
786 | optional
787 |
788 | weight
789 | 1000
790 |
791 | ^.*\.lproj/locversion.plist$
792 |
793 | omit
794 |
795 | weight
796 | 1100
797 |
798 | ^Base\.lproj/
799 |
800 | weight
801 | 1010
802 |
803 | ^Info\.plist$
804 |
805 | omit
806 |
807 | weight
808 | 20
809 |
810 | ^PkgInfo$
811 |
812 | omit
813 |
814 | weight
815 | 20
816 |
817 | ^embedded\.provisionprofile$
818 |
819 | weight
820 | 20
821 |
822 | ^version\.plist$
823 |
824 | weight
825 | 20
826 |
827 |
828 |
829 |
830 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/en.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/XCTest.framework/version.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildAliasOf
6 | XCTest
7 | BuildVersion
8 | 25
9 | CFBundleShortVersionString
10 | 1.0
11 | CFBundleVersion
12 | 15509
13 | ProjectName
14 | XCTest_Sim
15 | SourceVersion
16 | 15509000000000000
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/libXCTestBundleInject.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/libXCTestBundleInject.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/libXCTestSwiftSupport.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/Frameworks/libXCTestSwiftSupport.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/HelloWorldiOS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/HelloWorldiOS
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/Info.plist
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/EyesImagesTests(UnitTests):
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/EyesImagesTests(UnitTests)
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.gitkeep
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | osx_image: xcode10
3 | xcode_project: ApplitoolsEyes/Applitools.xcodeproj # path to xcodeproj folder
4 | xcode_scheme: IntegrationTests
5 | xcode_sdk: iphonesimulator12.0
6 | sudo: enabled
7 | notifications:
8 | email:
9 | - anton.chuev@applitools.com
10 | script:
11 | - xcodebuild build -project ApplitoolsEyes/Applitools.xcodeproj -scheme IntegrationTests -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6,OS=12.0' test
12 | - xcodebuild build -project ApplitoolsEyes/Applitools.xcodeproj -scheme UnitTests -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6,OS=12.0' test
13 |
14 | after_success:
15 | - sh ApplitoolsEyes/Scripts/set_tags.sh
16 | - if [ "$TRAVIS_BRANCH" == "master" ] && [ -n $TRAVIS_TAG ] && [ "$APPLITOOLS_AUTO_DEPLOY" == "true" ]; then
17 | sh ApplitoolsEyes/Scripts/build_sdk.sh;
18 | sh ApplitoolsEyes/Scripts/update_version_on_cocoapods.sh;
19 | sh ApplitoolsEyes/Scripts/update_carthage_integration.sh;
20 | fi;
21 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## [4.4.1] - 2019-12-20
2 | ### Added
3 | - License info at the top of public headers
4 | ### Fixed
5 | - Timeout for network requests is 5 minutes.
6 | ### Added
7 | - Log message of actual path where debug screenshots are saved(if flag saveDebugScreenshots is set to true)
8 | ### Fixed
9 | - Nullability warnings
10 | ### Added
11 | - "Accept" HTTP header with value "application/json"
12 | ### Fixed
13 | - Work with regions those got floating x,, y, width and height values
14 | ### Added
15 | - Support of APPLITOOLS_SERVER_URL environment
16 | - Support of all existent environment variables with "bamboo_" prefix
17 |
18 | ## [4.4.0] - 2019-11-5
19 | ### Added
20 | - Configuration API.
21 | ### Added
22 | - CHANGELOG file for EyesImages SDK.
23 | .
24 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/EyesImages:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/EyesImages
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Gemfile:
--------------------------------------------------------------------------------
1 | source :rubygems
2 |
3 | gem 'thor', '~> 0.20'
4 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Info.plist
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | .gitkeep
8 |
9 | 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
10 |
11 | .travis.yml
12 |
13 | yWyVd3M8YYB8CQ5MhlY1yTDt8m4=
14 |
15 | CHANGELOG.md
16 |
17 | Ve8s7/MVCaGGltYNbnhHleF30Nw=
18 |
19 | Gemfile
20 |
21 | 9yRft9MJyV8hWCKT3jQ2XPoPk9s=
22 |
23 | Info.plist
24 |
25 | QJwVpITuyWMG5QPinODTe827PwQ=
26 |
27 | build_sdk.sh
28 |
29 | +ltLaR5Jd9hl+DrIc/OIBBl+53Y=
30 |
31 | carthage_dependencies_json.thor
32 |
33 | aPc7yLvXn3RefQa/tFwUis1CA98=
34 |
35 | carthage_dependencies_json.tt
36 |
37 | QR42GLN/wADU+A3PM6elHoZJ8NA=
38 |
39 | podspec.thor
40 |
41 | RP2wmWtkNEdPTlBe9Chg8xPtxtI=
42 |
43 | podspec.tt
44 |
45 | kgkaoU9H2J17Zgs9Q/F+0oZv+ck=
46 |
47 | set_tags.sh
48 |
49 | bDqclV6o7RSQ56C+EZ4C+w0HOxM=
50 |
51 | update_carthage_integration.sh
52 |
53 | UGhGbwfNV7niwXBxxNiIJOn2GJ0=
54 |
55 | update_version_on_cocoapods.sh
56 |
57 | YosveBWYSTorY5OfTPrAqsPnfRc=
58 |
59 |
60 | files2
61 |
62 | .gitkeep
63 |
64 | hash
65 |
66 | 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
67 |
68 | hash2
69 |
70 | 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
71 |
72 |
73 | .travis.yml
74 |
75 | hash
76 |
77 | yWyVd3M8YYB8CQ5MhlY1yTDt8m4=
78 |
79 | hash2
80 |
81 | elfZ/dHVDlfrkzYN1buapwRQ4Ahdl1fIQDz49xusry4=
82 |
83 |
84 | CHANGELOG.md
85 |
86 | hash
87 |
88 | Ve8s7/MVCaGGltYNbnhHleF30Nw=
89 |
90 | hash2
91 |
92 | 9pVD/CDMXoFvl175mzPvlFjRRXQNao62kl9peTaUDtg=
93 |
94 |
95 | Gemfile
96 |
97 | hash
98 |
99 | 9yRft9MJyV8hWCKT3jQ2XPoPk9s=
100 |
101 | hash2
102 |
103 | o85Tau514JChZmNnh8C8nq63p++d+ZqQ7LH7vunZuDs=
104 |
105 |
106 | build_sdk.sh
107 |
108 | hash
109 |
110 | +ltLaR5Jd9hl+DrIc/OIBBl+53Y=
111 |
112 | hash2
113 |
114 | /pOrDuUX9NT1ofjzU6YUHRiCFDDEQcMVIFcUyCRSckw=
115 |
116 |
117 | carthage_dependencies_json.thor
118 |
119 | hash
120 |
121 | aPc7yLvXn3RefQa/tFwUis1CA98=
122 |
123 | hash2
124 |
125 | FhpyCgVGoveLPe3I25m74bGQFQI5N04leIa1DKjwAz8=
126 |
127 |
128 | carthage_dependencies_json.tt
129 |
130 | hash
131 |
132 | QR42GLN/wADU+A3PM6elHoZJ8NA=
133 |
134 | hash2
135 |
136 | +sqj1LcJxc+rtX4hkmLR9+CRHb4eTQx+Z++vWOpMjtk=
137 |
138 |
139 | podspec.thor
140 |
141 | hash
142 |
143 | RP2wmWtkNEdPTlBe9Chg8xPtxtI=
144 |
145 | hash2
146 |
147 | k+lD2AYYyJjmNLO+/yCvwQ8FGQ0F7Kmn78Z/cQEiyRk=
148 |
149 |
150 | podspec.tt
151 |
152 | hash
153 |
154 | kgkaoU9H2J17Zgs9Q/F+0oZv+ck=
155 |
156 | hash2
157 |
158 | pR2CaxkjnA5CgCi53GVF23QhCXi9raDDU1yJSFf7RsU=
159 |
160 |
161 | set_tags.sh
162 |
163 | hash
164 |
165 | bDqclV6o7RSQ56C+EZ4C+w0HOxM=
166 |
167 | hash2
168 |
169 | Fi+AfbNgTXCIaKRcjT3BaFiRahKpYYJJk+/OQlFmE5Q=
170 |
171 |
172 | update_carthage_integration.sh
173 |
174 | hash
175 |
176 | UGhGbwfNV7niwXBxxNiIJOn2GJ0=
177 |
178 | hash2
179 |
180 | sIOKtClNSioYRXxMKI+xWYAeKSCN+lbNQ1EfzOAN5Gk=
181 |
182 |
183 | update_version_on_cocoapods.sh
184 |
185 | hash
186 |
187 | YosveBWYSTorY5OfTPrAqsPnfRc=
188 |
189 | hash2
190 |
191 | cr4tkpehfLDHbSEw4SsOdyi5LUAMcYYKuj5YftRvDUo=
192 |
193 |
194 |
195 | rules
196 |
197 | ^.*
198 |
199 | ^.*\.lproj/
200 |
201 | optional
202 |
203 | weight
204 | 1000
205 |
206 | ^.*\.lproj/locversion.plist$
207 |
208 | omit
209 |
210 | weight
211 | 1100
212 |
213 | ^Base\.lproj/
214 |
215 | weight
216 | 1010
217 |
218 | ^version.plist$
219 |
220 |
221 | rules2
222 |
223 | .*\.dSYM($|/)
224 |
225 | weight
226 | 11
227 |
228 | ^(.*/)?\.DS_Store$
229 |
230 | omit
231 |
232 | weight
233 | 2000
234 |
235 | ^.*
236 |
237 | ^.*\.lproj/
238 |
239 | optional
240 |
241 | weight
242 | 1000
243 |
244 | ^.*\.lproj/locversion.plist$
245 |
246 | omit
247 |
248 | weight
249 | 1100
250 |
251 | ^Base\.lproj/
252 |
253 | weight
254 | 1010
255 |
256 | ^Info\.plist$
257 |
258 | omit
259 |
260 | weight
261 | 20
262 |
263 | ^PkgInfo$
264 |
265 | omit
266 |
267 | weight
268 | 20
269 |
270 | ^embedded\.provisionprofile$
271 |
272 | weight
273 | 20
274 |
275 | ^version\.plist$
276 |
277 | weight
278 | 20
279 |
280 |
281 |
282 |
283 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/build_sdk.sh:
--------------------------------------------------------------------------------
1 | # Custom environment variables:
2 | # - FRAMEWORK_NAME
3 | # Change values of custom environment variables at https://travis-ci.com/applitools/eyes.ios/settings
4 | # List of default environment variables at: https://docs.travis-ci.com/user/environment-variables/
5 |
6 | # 1
7 | # Set bash script to exit immediately if any commands fail.
8 | set -e
9 |
10 | # 2
11 | # Build the framework for device and for simulator (using all needed architectures).
12 | echo "Creating of builds for device and simulator..."
13 | xcodebuild -project "ApplitoolsEyes/Applitools.xcodeproj" -target "${FRAMEWORK_NAME}" -configuration Release -arch arm64 -arch armv7 -arch armv7s only_active_arch=no defines_module=yes -sdk "iphoneos"
14 | xcodebuild -project "ApplitoolsEyes/Applitools.xcodeproj" -target "${FRAMEWORK_NAME}" -configuration Release -arch x86_64 -arch i386 only_active_arch=no defines_module=yes -sdk "iphonesimulator"
15 | echo "Builds were created!"
16 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/carthage_dependencies_json.thor:
--------------------------------------------------------------------------------
1 | class Dependencies_Json < Thor::Group
2 | include Thor::Actions
3 |
4 | argument :name
5 | class_option :version
6 |
7 | def self.source_root
8 | File.dirname(__FILE__)
9 | end
10 |
11 | def check_version_exist
12 | raise StandardError, "--version is required!" unless options['version'] && !options['version'].empty?
13 | end
14 |
15 | def create_json_file
16 | template('carthage_dependencies_json', "#{name}-#{options['version']}.json")
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/carthage_dependencies_json.tt:
--------------------------------------------------------------------------------
1 | {
2 | "<%= options['version'] %>" : "https://applitools.bintray.com/iOS/<%= name %>/<%= options['version'] %>/<%= name %>-<%= options['version'] %>.zip"
3 | }
4 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/podspec.thor:
--------------------------------------------------------------------------------
1 | class Podspec < Thor::Group
2 | include Thor::Actions
3 |
4 | argument :name
5 | class_option :version
6 |
7 | def self.source_root
8 | File.dirname(__FILE__)
9 | end
10 |
11 | def check_version_exist
12 | raise StandardError, "--version is required!" unless options['version'] && !options['version'].empty?
13 | end
14 |
15 | def create_podspec_file
16 | template('podspec.tt', "#{name}.podspec")
17 | end
18 | end
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/podspec.tt:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = '<%= name %>'
3 | s.version = '<%= options['version'] %>'
4 | s.summary = '<%= name %> SDK for automatic visual validation in XCUI.'
5 | s.homepage = 'https://applitools.com'
6 |
7 | s.author = 'Applitools Team'
8 | s.license = { :type => 'Copyright', :file => 'LICENSE' }
9 |
10 | s.source = { :http => 'https://applitools.bintray.com/iOS/<%= name %>/<%= options['version'] %>/<%= name %>-<%= options['version'] %>.zip' }
11 |
12 | s.platform = :ios
13 | s.requires_arc = true
14 | s.ios.deployment_target = '9.0'
15 |
16 | s.vendored_frameworks = '<%= name %>/<%= name %>.framework'
17 | s.public_header_files = '<%= name %>/<%= name %>.framework/Headers/*.h'
18 | s.source_files = '<%= name %>/<%= name %>.framework/Headers/*.{h}'
19 | end
20 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/set_tags.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # set_tags.sh
4 | # Applitools
5 | #
6 | # Created by Anton Chuev on 4/17/18.
7 | # Copyright © 2018 Applitools. All rights reserved.
8 |
9 | # Custom environment variables:
10 | # - GH_TOKEN
11 | # - FRAMEWORK_NAME
12 | # Default environment variables:
13 | # - TRAVIS_REPO_SLUG
14 | # - TRAVIS_BUILD_DIR
15 | #
16 | # Change values of custom environment variables at https://travis-ci.com/applitools/eyes.ios/settings
17 | # List of default environment variables at: https://docs.travis-ci.com/user/environment-variables/
18 |
19 | BRANCH="master"
20 |
21 | # Get SDK's version
22 | INFO="${TRAVIS_BUILD_DIR}/ApplitoolsEyes/${FRAMEWORK_NAME}/Info.plist"
23 | VERSION=$( defaults read "$INFO" CFBundleShortVersionString )
24 | echo "SDK version = ${VERSION}"
25 |
26 | # Are we on the right branch?
27 | if [ "$TRAVIS_BRANCH" = "$BRANCH" ]; then
28 |
29 | # Is this not a Pull Request?
30 | if [ "$TRAVIS_PULL_REQUEST" = false ]; then
31 |
32 | # Is this not a build which was triggered by setting a new tag?
33 | if [ -z "$TRAVIS_TAG" ]; then
34 |
35 | echo -e "Starting to tag commit.\n"
36 |
37 | git config --global user.email "travis@travis-ci.org"
38 | git config --global user.name "Travis"
39 |
40 | # Add tag and push to master.
41 | git tag -a v"${VERSION}-${FRAMEWORK_NAME}" -m "Travis build pushed a tag."
42 | git push https://$GH_TOKEN@github.com/$TRAVIS_REPO_SLUG.git --tags
43 | git fetch origin
44 |
45 | echo -e "Done commit with tags.\n"
46 |
47 | fi
48 | fi
49 | fi
50 |
51 | echo "SUCCESS!"
52 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/update_carthage_integration.sh:
--------------------------------------------------------------------------------
1 | # Encrypted variables:
2 | # - BINTRAY_API_KEY
3 |
4 |
5 | # 1
6 | # Set bash script to exit immediately if any commands fail.
7 | set -e
8 |
9 | # 2
10 | # Get access to set_target_framework_name.sh file, because FRAMEWORK_NAME variable is calculated there.
11 | source "${TRAVIS_BUILD_DIR}/ApplitoolsEyes/Scripts/set_target_framework_name.sh"
12 |
13 | FRAMEWORK_NAME="${TARGET_FRAMEWORK_NAME}"
14 |
15 | # 3
16 | # Get SDK's version
17 | INFO="${TRAVIS_BUILD_DIR}/ApplitoolsEyes/${FRAMEWORK_NAME}/Info.plist"
18 | VERSION=$( defaults read "$INFO" CFBundleShortVersionString )
19 | echo "SDK version = ${VERSION}"
20 |
21 | # 4
22 | # Go to 'Cocoapods Spec Generator' folder
23 | cd "ApplitoolsEyes/Carthage Dependencies JSON Generator"
24 | echo "'Carthage Dependencies JSON Generator' folder"
25 | ls
26 |
27 | # 5
28 | # Generate .json with dependencies for new version that is needed in integration with EyesXCUI of EyesImages SDK via Carthage.
29 | # Thor tool is used in generating .podspec file as well during updating Cocoa Pods part. Installation thor .gem is done there.
30 | thor dependencies_json "${FRAMEWORK_NAME}" --version="${VERSION}"
31 | ls
32 |
33 | # 6
34 | # Set up file variable
35 | FILE="${FRAMEWORK_NAME}-${VERSION}.json"
36 |
37 | # 7
38 | # Set up BINTRAY_USER variable
39 | BINTRAY_USER="antonchuev"
40 |
41 | # 8
42 | # Upload new version to Bintray.
43 | curl -T "${FILE}" -"u${BINTRAY_USER}:${BINTRAY_API_KEY}" "https://api.bintray.com/content/applitools/iOS/Carthage${FRAMEWORK_NAME}/${VERSION}/Carthage${FRAMEWORK_NAME}/${VERSION}/${FILE}"
44 |
45 | # 9
46 | # Publish new version on Bintray.
47 | curl -X POST -"u${BINTRAY_USER}:${BINTRAY_API_KEY}" "https://api.bintray.com/content/applitools/iOS/Carthage${FRAMEWORK_NAME}/${VERSION}/publish"
48 |
49 | # 10
50 | # Return back to build folder
51 | cd "${TRAVIS_BUILD_DIR}"
52 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/update_version_on_cocoapods.sh:
--------------------------------------------------------------------------------
1 | # Custom environment variables:
2 | # - GH_TOKEN
3 | # - FRAMEWORK_NAME
4 | # - BINTRAY_USER
5 | # - BINTRAY_API_KEY
6 | # Default environment variables:
7 | # - TRAVIS_BUILD_DIR
8 | #
9 | # Change values of custom environment variables at https://travis-ci.com/applitools/eyes.ios/settings
10 | # List of default environment variables at: https://docs.travis-ci.com/user/environment-variables/
11 |
12 | # 1
13 | # Set bash script to exit immediately if any commands fail.
14 | set -e
15 |
16 | # 2
17 | # Setup some constants for use later on.
18 | COCOAPODS_RELEASE_FOLDER="${TRAVIS_BUILD_DIR}/ApplitoolsEyes/${FRAMEWORK_NAME}/Release/CocoaPods/${FRAMEWORK_NAME}"
19 |
20 | # 3
21 | # Copy the device version of framework to the CocoaPods release folder.
22 | echo "--- Copying device version of framework to CocoPods release folder..."
23 | cp -r "${TRAVIS_BUILD_DIR}/ApplitoolsEyes/build/Release-iphoneos/" "${COCOAPODS_RELEASE_FOLDER}"
24 |
25 | # 4
26 | # Replace the framework exequtable within the framework with a new version created by merging the device and simulator frameworks' executables with lipo.
27 | echo "--- Merging the device and simulator frameworks' executables with lipo..."
28 | lipo -create -output "${COCOAPODS_RELEASE_FOLDER}/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" "${TRAVIS_BUILD_DIR}/ApplitoolsEyes/build/Release-iphoneos/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" "${TRAVIS_BUILD_DIR}/ApplitoolsEyes/build/Release-iphonesimulator/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}"
29 |
30 | # 5
31 | # Remove .dsym file from CocoaPods release folder.
32 | echo "--- Removing .dsym file from CocoaPods release folder..."
33 | rm -rf "${COCOAPODS_RELEASE_FOLDER}/${FRAMEWORK_NAME}.framework.dSYM"
34 |
35 | # 6
36 | # Copy LICENSE to CocoaPods release folder.
37 | echo "--- Coping LICENSE to CocoaPods release folder..."
38 | cp -r LICENSE "${COCOAPODS_RELEASE_FOLDER}"
39 |
40 | # 7
41 | # Copy Release folder to project directory excluding hidden files.
42 | echo "--- Coping release folder to project directory excluding hidden files..."
43 | rsync -av --exclude=".*" "${COCOAPODS_RELEASE_FOLDER}" .
44 |
45 | # 8
46 | # Get SDK's version.
47 | INFO="${TRAVIS_BUILD_DIR}/ApplitoolsEyes/${FRAMEWORK_NAME}/Info.plist"
48 | VERSION=$( defaults read "$INFO" CFBundleShortVersionString )
49 | echo "Getting the SDK version = ${VERSION}"
50 |
51 | # 9
52 | # Compress CocoaPods release folder
53 | echo "--- Compressing CocoaPods release folder..."
54 | zip -r "${FRAMEWORK_NAME}-${VERSION}.zip" "${FRAMEWORK_NAME}"
55 |
56 | # 10
57 | # Create variables for uploading to Bintray. BINTRAY_API_KEY variable is encrypted and locates in .yml.
58 | FILE="${FRAMEWORK_NAME}-${VERSION}.zip"
59 | BINTRAY_USER="antonchuev"
60 |
61 | # 11
62 | # Upload new version to Bintray.
63 | echo "--- Uploading new version to Bintray..."
64 | curl -T "${FILE}" -"u${BINTRAY_USER}:${BINTRAY_API_KEY}" "https://api.bintray.com/content/applitools/iOS/${FRAMEWORK_NAME}/${VERSION}/${FRAMEWORK_NAME}/${VERSION}/${FILE}"
65 |
66 | # 12
67 | # Publish new version to Bintray.
68 | echo "--- Publishing new version to Bintray..."
69 | curl -X POST -"u${BINTRAY_USER}:${BINTRAY_API_KEY}" "https://api.bintray.com/content/applitools/iOS/${FRAMEWORK_NAME}/${VERSION}/publish"
70 |
71 | # 13
72 | # Go to 'Cocoapods Spec Generator' folder
73 | cd "ApplitoolsEyes/Cocoapods Spec Generator"
74 |
75 | # 14
76 | # Install bundler gem.
77 | echo "--- Installing bundler gem..."
78 | gem install bundler
79 | bundle install
80 |
81 | # 15
82 | # Generate .podspec file
83 | echo "--- Generating .podspec file..."
84 | thor podspec "${FRAMEWORK_NAME}" --version="${VERSION}"
85 |
86 | # 16
87 | # Push Podspec to Cocoa pods repo.
88 | echo "--- Pushing .podspec file to Cocoa pods..."
89 | source ~/.rvm/scripts/rvm
90 | rvm use default
91 | pod trunk push "${FRAMEWORK_NAME}.podspec" --allow-warnings
92 |
93 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCore.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCore.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreFoundation.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreFoundation.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreGraphics.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreGraphics.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDarwin.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDarwin.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDispatch.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDispatch.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftFoundation.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftFoundation.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftObjectiveC.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftObjectiveC.dylib
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/Info.plist
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/PlugIns/EyesImagesTests(UnitTests).xctest/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Frameworks/EyesImages.framework/.gitkeep
8 |
9 | 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
10 |
11 | Frameworks/EyesImages.framework/.travis.yml
12 |
13 | yWyVd3M8YYB8CQ5MhlY1yTDt8m4=
14 |
15 | Frameworks/EyesImages.framework/CHANGELOG.md
16 |
17 | Ve8s7/MVCaGGltYNbnhHleF30Nw=
18 |
19 | Frameworks/EyesImages.framework/EyesImages
20 |
21 | zPh3z0rcgL3CzWffX+rRzT0RGdM=
22 |
23 | Frameworks/EyesImages.framework/Gemfile
24 |
25 | 9yRft9MJyV8hWCKT3jQ2XPoPk9s=
26 |
27 | Frameworks/EyesImages.framework/Info.plist
28 |
29 | QJwVpITuyWMG5QPinODTe827PwQ=
30 |
31 | Frameworks/EyesImages.framework/_CodeSignature/CodeResources
32 |
33 | MH5AAYeccQqQYOWdD4wbO/PV9Do=
34 |
35 | Frameworks/EyesImages.framework/build_sdk.sh
36 |
37 | +ltLaR5Jd9hl+DrIc/OIBBl+53Y=
38 |
39 | Frameworks/EyesImages.framework/carthage_dependencies_json.thor
40 |
41 | aPc7yLvXn3RefQa/tFwUis1CA98=
42 |
43 | Frameworks/EyesImages.framework/carthage_dependencies_json.tt
44 |
45 | QR42GLN/wADU+A3PM6elHoZJ8NA=
46 |
47 | Frameworks/EyesImages.framework/podspec.thor
48 |
49 | RP2wmWtkNEdPTlBe9Chg8xPtxtI=
50 |
51 | Frameworks/EyesImages.framework/podspec.tt
52 |
53 | kgkaoU9H2J17Zgs9Q/F+0oZv+ck=
54 |
55 | Frameworks/EyesImages.framework/set_tags.sh
56 |
57 | bDqclV6o7RSQ56C+EZ4C+w0HOxM=
58 |
59 | Frameworks/EyesImages.framework/update_carthage_integration.sh
60 |
61 | UGhGbwfNV7niwXBxxNiIJOn2GJ0=
62 |
63 | Frameworks/EyesImages.framework/update_version_on_cocoapods.sh
64 |
65 | YosveBWYSTorY5OfTPrAqsPnfRc=
66 |
67 | Frameworks/libswiftCore.dylib
68 |
69 | rrAp64iPhUL40XQR7JlGMDIZaMA=
70 |
71 | Frameworks/libswiftCoreFoundation.dylib
72 |
73 | P4IT9OqWCWZ8FyecMxQHhM6h4G8=
74 |
75 | Frameworks/libswiftCoreGraphics.dylib
76 |
77 | l7cOuKnVMm1hG9tuAE36M0hgwY4=
78 |
79 | Frameworks/libswiftDarwin.dylib
80 |
81 | XJGVexKAsC220QzBQHwL6VS/whc=
82 |
83 | Frameworks/libswiftDispatch.dylib
84 |
85 | xYRhwsR1eeXatGDr8WNyVj93krw=
86 |
87 | Frameworks/libswiftFoundation.dylib
88 |
89 | WclOTQyDfPDOGEjZboBz+yfxGVQ=
90 |
91 | Frameworks/libswiftObjectiveC.dylib
92 |
93 | W4v+YlroD8+v27M4zKa/3r9eqdA=
94 |
95 | Info.plist
96 |
97 | 5SiovgviETh/+O120dEsE62WKuA=
98 |
99 |
100 | files2
101 |
102 | Frameworks/EyesImages.framework/.gitkeep
103 |
104 | hash
105 |
106 | 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
107 |
108 | hash2
109 |
110 | 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
111 |
112 |
113 | Frameworks/EyesImages.framework/.travis.yml
114 |
115 | hash
116 |
117 | yWyVd3M8YYB8CQ5MhlY1yTDt8m4=
118 |
119 | hash2
120 |
121 | elfZ/dHVDlfrkzYN1buapwRQ4Ahdl1fIQDz49xusry4=
122 |
123 |
124 | Frameworks/EyesImages.framework/CHANGELOG.md
125 |
126 | hash
127 |
128 | Ve8s7/MVCaGGltYNbnhHleF30Nw=
129 |
130 | hash2
131 |
132 | 9pVD/CDMXoFvl175mzPvlFjRRXQNao62kl9peTaUDtg=
133 |
134 |
135 | Frameworks/EyesImages.framework/EyesImages
136 |
137 | hash
138 |
139 | zPh3z0rcgL3CzWffX+rRzT0RGdM=
140 |
141 | hash2
142 |
143 | W+18/sPkfbJS4uh2FAlceOLv3qNpg5juu3OV8F+QGeg=
144 |
145 |
146 | Frameworks/EyesImages.framework/Gemfile
147 |
148 | hash
149 |
150 | 9yRft9MJyV8hWCKT3jQ2XPoPk9s=
151 |
152 | hash2
153 |
154 | o85Tau514JChZmNnh8C8nq63p++d+ZqQ7LH7vunZuDs=
155 |
156 |
157 | Frameworks/EyesImages.framework/Info.plist
158 |
159 | hash
160 |
161 | QJwVpITuyWMG5QPinODTe827PwQ=
162 |
163 | hash2
164 |
165 | TjfzMfoeOKKDPPf9KUKtK0mV6xjbVizjJjCVkzy9i10=
166 |
167 |
168 | Frameworks/EyesImages.framework/_CodeSignature/CodeResources
169 |
170 | hash
171 |
172 | MH5AAYeccQqQYOWdD4wbO/PV9Do=
173 |
174 | hash2
175 |
176 | Go4ZoZhzUrR5HeDqBxONNq5n0wxOd9sKtXu3zGw4fA8=
177 |
178 |
179 | Frameworks/EyesImages.framework/build_sdk.sh
180 |
181 | hash
182 |
183 | +ltLaR5Jd9hl+DrIc/OIBBl+53Y=
184 |
185 | hash2
186 |
187 | /pOrDuUX9NT1ofjzU6YUHRiCFDDEQcMVIFcUyCRSckw=
188 |
189 |
190 | Frameworks/EyesImages.framework/carthage_dependencies_json.thor
191 |
192 | hash
193 |
194 | aPc7yLvXn3RefQa/tFwUis1CA98=
195 |
196 | hash2
197 |
198 | FhpyCgVGoveLPe3I25m74bGQFQI5N04leIa1DKjwAz8=
199 |
200 |
201 | Frameworks/EyesImages.framework/carthage_dependencies_json.tt
202 |
203 | hash
204 |
205 | QR42GLN/wADU+A3PM6elHoZJ8NA=
206 |
207 | hash2
208 |
209 | +sqj1LcJxc+rtX4hkmLR9+CRHb4eTQx+Z++vWOpMjtk=
210 |
211 |
212 | Frameworks/EyesImages.framework/podspec.thor
213 |
214 | hash
215 |
216 | RP2wmWtkNEdPTlBe9Chg8xPtxtI=
217 |
218 | hash2
219 |
220 | k+lD2AYYyJjmNLO+/yCvwQ8FGQ0F7Kmn78Z/cQEiyRk=
221 |
222 |
223 | Frameworks/EyesImages.framework/podspec.tt
224 |
225 | hash
226 |
227 | kgkaoU9H2J17Zgs9Q/F+0oZv+ck=
228 |
229 | hash2
230 |
231 | pR2CaxkjnA5CgCi53GVF23QhCXi9raDDU1yJSFf7RsU=
232 |
233 |
234 | Frameworks/EyesImages.framework/set_tags.sh
235 |
236 | hash
237 |
238 | bDqclV6o7RSQ56C+EZ4C+w0HOxM=
239 |
240 | hash2
241 |
242 | Fi+AfbNgTXCIaKRcjT3BaFiRahKpYYJJk+/OQlFmE5Q=
243 |
244 |
245 | Frameworks/EyesImages.framework/update_carthage_integration.sh
246 |
247 | hash
248 |
249 | UGhGbwfNV7niwXBxxNiIJOn2GJ0=
250 |
251 | hash2
252 |
253 | sIOKtClNSioYRXxMKI+xWYAeKSCN+lbNQ1EfzOAN5Gk=
254 |
255 |
256 | Frameworks/EyesImages.framework/update_version_on_cocoapods.sh
257 |
258 | hash
259 |
260 | YosveBWYSTorY5OfTPrAqsPnfRc=
261 |
262 | hash2
263 |
264 | cr4tkpehfLDHbSEw4SsOdyi5LUAMcYYKuj5YftRvDUo=
265 |
266 |
267 | Frameworks/libswiftCore.dylib
268 |
269 | hash
270 |
271 | rrAp64iPhUL40XQR7JlGMDIZaMA=
272 |
273 | hash2
274 |
275 | SVCZK2UG9ihtWggcfIn/i94g//jyC4cI73gURFdHavA=
276 |
277 |
278 | Frameworks/libswiftCoreFoundation.dylib
279 |
280 | hash
281 |
282 | P4IT9OqWCWZ8FyecMxQHhM6h4G8=
283 |
284 | hash2
285 |
286 | /wz85l+DKAaQ7/BS+77vK5X998iA4Lwz+DGJ95g4kZw=
287 |
288 |
289 | Frameworks/libswiftCoreGraphics.dylib
290 |
291 | hash
292 |
293 | l7cOuKnVMm1hG9tuAE36M0hgwY4=
294 |
295 | hash2
296 |
297 | 2g2ULh1dF2q53hPG3PIdHtRNobjaoh8CmjkUk9GLjTs=
298 |
299 |
300 | Frameworks/libswiftDarwin.dylib
301 |
302 | hash
303 |
304 | XJGVexKAsC220QzBQHwL6VS/whc=
305 |
306 | hash2
307 |
308 | Fy3X7nPk7IgG+lCSWKHuMHgGz6Yi56UOKe6XajzinhU=
309 |
310 |
311 | Frameworks/libswiftDispatch.dylib
312 |
313 | hash
314 |
315 | xYRhwsR1eeXatGDr8WNyVj93krw=
316 |
317 | hash2
318 |
319 | ZSH1H7EN5E4TGGB63N2+7rR7N+rDR1LBmkhABOf9RVQ=
320 |
321 |
322 | Frameworks/libswiftFoundation.dylib
323 |
324 | hash
325 |
326 | WclOTQyDfPDOGEjZboBz+yfxGVQ=
327 |
328 | hash2
329 |
330 | 6SyHvvl3dAOzLH6bFEeF41TPcUHS3iYOdFK7I0FEU6M=
331 |
332 |
333 | Frameworks/libswiftObjectiveC.dylib
334 |
335 | hash
336 |
337 | W4v+YlroD8+v27M4zKa/3r9eqdA=
338 |
339 | hash2
340 |
341 | zLWBGbdbTQk6chVChX0c8CFwhq8ogd9K00QEU5AufEY=
342 |
343 |
344 |
345 | rules
346 |
347 | ^.*
348 |
349 | ^.*\.lproj/
350 |
351 | optional
352 |
353 | weight
354 | 1000
355 |
356 | ^.*\.lproj/locversion.plist$
357 |
358 | omit
359 |
360 | weight
361 | 1100
362 |
363 | ^Base\.lproj/
364 |
365 | weight
366 | 1010
367 |
368 | ^version.plist$
369 |
370 |
371 | rules2
372 |
373 | .*\.dSYM($|/)
374 |
375 | weight
376 | 11
377 |
378 | ^(.*/)?\.DS_Store$
379 |
380 | omit
381 |
382 | weight
383 | 2000
384 |
385 | ^.*
386 |
387 | ^.*\.lproj/
388 |
389 | optional
390 |
391 | weight
392 | 1000
393 |
394 | ^.*\.lproj/locversion.plist$
395 |
396 | omit
397 |
398 | weight
399 | 1100
400 |
401 | ^Base\.lproj/
402 |
403 | weight
404 | 1010
405 |
406 | ^Info\.plist$
407 |
408 | omit
409 |
410 | weight
411 | 20
412 |
413 | ^PkgInfo$
414 |
415 | omit
416 |
417 | weight
418 | 20
419 |
420 | ^embedded\.provisionprofile$
421 |
422 | weight
423 | 20
424 |
425 | ^version\.plist$
426 |
427 | weight
428 | 20
429 |
430 |
431 |
432 |
433 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/README.md:
--------------------------------------------------------------------------------
1 | ## How To Get Started
2 | To make any of Applitools SDKs(**EyesXCUI**, **EyesEarlGrey** and **EyesImages**) work, you should install it using [CocoaPods](http://cocoapods.org), [Carthage](https://github.com/Carthage/Carthage) or manually.
3 |
4 | ## Installation with CocoaPods
5 | ### Step 1: Install gem
6 | CocoaPods is distributed as a ruby gem, and is installed by running the following commands in terminal:
7 | ```bash
8 | $ gem install cocoapods
9 | ```
10 |
11 | ### Step 2: Create a Podfile
12 | Open a terminal window, and $ cd into your project directory. Then, run the following command:
13 |
14 | ```bash
15 | $ pod init
16 | ```
17 |
18 | ### Step 3: Edit the Podfile
19 | Specify it in your `Podfile`:
20 | ##### EyesXCUI
21 | ```ruby
22 | target 'APPLICATION_TARGET_NAME' do
23 | target 'UI_TESTING_TARGET_NAME' do
24 | pod 'EyesXCUI'
25 | end
26 | end
27 | ```
28 | ##### EyesEarlGrey
29 | ```ruby
30 | target 'APPLICATION_TARGET_NAME' do
31 | target 'UNIT_TESTING_TARGET_NAME' do
32 | pod 'EyesEarlGrey'
33 | end
34 | end
35 | ```
36 | ##### EyesEarlGrey
37 | ```ruby
38 | target 'APPLICATION_TARGET_NAME' do
39 | target 'UNIT_TESTING_TARGET_NAME' do
40 | pod 'EyesImages'
41 | end
42 | end
43 | ```
44 |
45 | Save your `Podfile`.
46 |
47 | ### Step 4: Install dependencies
48 | Run the following command in the terminal window:
49 | ```bash
50 | $ pod install
51 | ```
52 |
53 | Close Xcode, and then open your project's `.xcworkspace` file to launch Xcode.
54 | From this time onwards, you must use the `.xcworkspace` file to open the project.
55 |
56 | ## Installation with Carthage
57 | ### Step 1: Install Carthage
58 | You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
59 | ```bash
60 | $ brew update
61 | $ brew install carthage
62 | ```
63 |
64 | Or choose [another installation method](https://github.com/Carthage/Carthage#installing-carthage).
65 |
66 | ### Step 2: Create a Cartfile
67 | Create a `Cartfile` in the same directory, where your `.xcodeproj` or `.xcworkspace` locates, using command:
68 | ```bash
69 | $ touch Cartfile
70 | ```
71 | ### Step 3: Edit the Cartfile
72 | Specify it in your `Cartfile`:
73 |
74 | ##### EyesXCUI
75 | ```ogdl
76 | binary "https://applitools.bintray.com/iOS/CarthageEyesXCUI/VERSION/EyesXCUI-VERSION.json"
77 | ```
78 |
79 | ##### EyesEarlGrey
80 | ```ogdl
81 | binary "https://applitools.bintray.com/iOS/CarthageEyesEarlGrey/VERSION/EyesEarlGrey-VERSION.json"
82 | ```
83 |
84 | ##### EyesImages
85 | ```ogdl
86 | binary "https://applitools.bintray.com/iOS/CarthageEyesImages/VERSION/EyesImages-VERSION.json"
87 | ```
88 |
89 | Replace 'VERSION' with the number value of SDK.
90 | Save your `Cartfile`.
91 |
92 | ### Step 4: Install dependencies
93 | Run the following command in the terminal window:
94 | ```bash
95 | $ carthage update
96 | ```
97 |
98 | ### Step 5: Set up environment:
99 | - Drag the built binary of Applitools's SDK, that you want to work with(EyesXCUI.framework, EyesEarlGrey.framework, EyesImages.framework), from Carthage/Build/ into your application’s Xcode project.
100 | - On your application targets’ Build Phases settings tab, click the + icon and choose New Run Script Phase. Create a Run Script in which you specify your shell (ex: /bin/sh), add the following contents to the script area below the shell:
101 | ```bash
102 | /usr/local/bin/carthage copy-frameworks
103 | ```
104 | - Click the + under `Input Files` and add an entry for each framework:
105 | ##### EyesXCUI
106 | ```bash
107 | $(SRCROOT)/Carthage/Build/iOS/EyesXCUI.framework
108 | ```
109 | ##### EyesEarlGrey
110 | ```bash
111 | $(SRCROOT)/Carthage/Build/iOS/EyesEarlGrey.framework
112 | ```
113 | ##### EyesImages
114 | ```bash
115 | $(SRCROOT)/Carthage/Build/iOS/EyesImages.framework
116 | ```
117 | - Click the + under `Output Files` and add an entry for each framework:
118 | ##### EyesXCUI
119 | ```bash
120 | $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/EyesXCUI.framework
121 | ```
122 | ##### EyesEarlGrey
123 | ```bash
124 | $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/EyesEarlGrey.framework
125 | ```
126 | ##### EyesImages
127 | ```bash
128 | $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/EyesImages.framework
129 | ```
130 |
131 | ## Manual installation
132 | 1. Drag-and-drop EyesXCUI.framework to UI test target.
133 | 
134 | 
135 |
136 | 2. Open project navigator, select UI tests target(where you want to work with EyesXCUI SDK). Select **Build Phases** section.
137 | 
138 |
139 | 3. Select **Copy Files** phase(or create if it does not exist by tapping **+** button on the top left corner of Project Navigator).
140 | 
141 | 
142 |
143 | 4. Tap **+** button on **Copy Files** phase, find and add EyesXCUI.framework.
144 | 
145 | 
146 |
147 | 5. Change **Destination** value to *Frameworks* on **Copy Files** phase.
148 | 
149 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/HelloWorldiOS.app/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Assets.car
8 |
9 | VRDSIpEl+TEUypJHofhk4h/WRx4=
10 |
11 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/objects-13.0+.nib
12 |
13 | WHL0yoGjEmKnlspYXUL17ZJ87WI=
14 |
15 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/runtime.nib
16 |
17 | mMb9DYxnTBqQOkUo6G+1GBchZCg=
18 |
19 | Base.lproj/LaunchScreen.storyboardc/Info.plist
20 |
21 | n2t8gsDpfE6XkhG31p7IQJRxTxU=
22 |
23 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/objects-13.0+.nib
24 |
25 | s3s4zIwfb3by+EUfXCIqnhqmFqg=
26 |
27 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/runtime.nib
28 |
29 | +1bc+05vtCmmfnuli/VPoYPWXtE=
30 |
31 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib
32 |
33 | MOnNuyxy+gbv0ZsRdN7Aoq174Z8=
34 |
35 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib
36 |
37 | bE8FodLiRgjQeLxnALxDTAF+nr8=
38 |
39 | Base.lproj/Main.storyboardc/Info.plist
40 |
41 | MDrKFvFWroTb0+KEbQShBcoBvo4=
42 |
43 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib
44 |
45 | Dd+WTZvpxdBmZ4DG7vK0M9cdkv8=
46 |
47 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib
48 |
49 | Ay769Ng0wjcEayVDXXqHO1IPw7k=
50 |
51 | Frameworks/XCTAutomationSupport.framework/Info.plist
52 |
53 | jreU5hZGNCik2Hp5uPrGZUy11X8=
54 |
55 | Frameworks/XCTAutomationSupport.framework/XCTAutomationSupport
56 |
57 | DUF+a5Z+T16n5pmNIgOYP+s3mOk=
58 |
59 | Frameworks/XCTAutomationSupport.framework/_CodeSignature/CodeResources
60 |
61 | 6feUATTd0/r2tER+rb3JnV0+CQY=
62 |
63 | Frameworks/XCTAutomationSupport.framework/version.plist
64 |
65 | IBuwnssTaVoEqhVHtNTT91gSl10=
66 |
67 | Frameworks/XCTest.framework/Info.plist
68 |
69 | PKZERfvFR9NslOzRKnNmu1CCGOk=
70 |
71 | Frameworks/XCTest.framework/XCTest
72 |
73 | n5db+miM5jX+gnf1Sh637Gr89Zw=
74 |
75 | Frameworks/XCTest.framework/_CodeSignature/CodeResources
76 |
77 | PrHbL9gCjHUBaCqWSsu0b+EGnYc=
78 |
79 | Frameworks/XCTest.framework/en.lproj/InfoPlist.strings
80 |
81 | hash
82 |
83 | TuBj57ZP6zBqcL9HttO2Rucaw9E=
84 |
85 | optional
86 |
87 |
88 | Frameworks/XCTest.framework/version.plist
89 |
90 | IBuwnssTaVoEqhVHtNTT91gSl10=
91 |
92 | Frameworks/libXCTestBundleInject.dylib
93 |
94 | FjI0l272em8/mVEjw4rbrzKfxZA=
95 |
96 | Frameworks/libXCTestSwiftSupport.dylib
97 |
98 | VJQSqjeRdA4318OjlAyd6XT73/c=
99 |
100 | Info.plist
101 |
102 | GdcAHF9owZ3ea1KIky3D2gtvfQk=
103 |
104 | PkgInfo
105 |
106 | n57qDP4tZfLD1rCS43W0B4LQjzE=
107 |
108 | PlugIns/EyesImagesTests(UnitTests).xctest/EyesImagesTests(UnitTests)
109 |
110 | 7DGtOmc0xjF6QcgjEGlAam4nqog=
111 |
112 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.gitkeep
113 |
114 | 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
115 |
116 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.travis.yml
117 |
118 | yWyVd3M8YYB8CQ5MhlY1yTDt8m4=
119 |
120 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/CHANGELOG.md
121 |
122 | Ve8s7/MVCaGGltYNbnhHleF30Nw=
123 |
124 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/EyesImages
125 |
126 | zPh3z0rcgL3CzWffX+rRzT0RGdM=
127 |
128 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Gemfile
129 |
130 | 9yRft9MJyV8hWCKT3jQ2XPoPk9s=
131 |
132 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Info.plist
133 |
134 | QJwVpITuyWMG5QPinODTe827PwQ=
135 |
136 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/_CodeSignature/CodeResources
137 |
138 | MH5AAYeccQqQYOWdD4wbO/PV9Do=
139 |
140 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/build_sdk.sh
141 |
142 | +ltLaR5Jd9hl+DrIc/OIBBl+53Y=
143 |
144 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/carthage_dependencies_json.thor
145 |
146 | aPc7yLvXn3RefQa/tFwUis1CA98=
147 |
148 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/carthage_dependencies_json.tt
149 |
150 | QR42GLN/wADU+A3PM6elHoZJ8NA=
151 |
152 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/podspec.thor
153 |
154 | RP2wmWtkNEdPTlBe9Chg8xPtxtI=
155 |
156 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/podspec.tt
157 |
158 | kgkaoU9H2J17Zgs9Q/F+0oZv+ck=
159 |
160 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/set_tags.sh
161 |
162 | bDqclV6o7RSQ56C+EZ4C+w0HOxM=
163 |
164 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/update_carthage_integration.sh
165 |
166 | UGhGbwfNV7niwXBxxNiIJOn2GJ0=
167 |
168 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/update_version_on_cocoapods.sh
169 |
170 | YosveBWYSTorY5OfTPrAqsPnfRc=
171 |
172 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCore.dylib
173 |
174 | rrAp64iPhUL40XQR7JlGMDIZaMA=
175 |
176 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreFoundation.dylib
177 |
178 | P4IT9OqWCWZ8FyecMxQHhM6h4G8=
179 |
180 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreGraphics.dylib
181 |
182 | l7cOuKnVMm1hG9tuAE36M0hgwY4=
183 |
184 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDarwin.dylib
185 |
186 | XJGVexKAsC220QzBQHwL6VS/whc=
187 |
188 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDispatch.dylib
189 |
190 | xYRhwsR1eeXatGDr8WNyVj93krw=
191 |
192 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftFoundation.dylib
193 |
194 | WclOTQyDfPDOGEjZboBz+yfxGVQ=
195 |
196 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftObjectiveC.dylib
197 |
198 | W4v+YlroD8+v27M4zKa/3r9eqdA=
199 |
200 | PlugIns/EyesImagesTests(UnitTests).xctest/Info.plist
201 |
202 | 5SiovgviETh/+O120dEsE62WKuA=
203 |
204 | PlugIns/EyesImagesTests(UnitTests).xctest/_CodeSignature/CodeResources
205 |
206 | emDLoGtkWr9+vLCcru+ROVyhn4U=
207 |
208 | README.md
209 |
210 | kYgWYLMpRZ7XL+WlSEbTWiJHOhE=
211 |
212 |
213 | files2
214 |
215 | Assets.car
216 |
217 | hash2
218 |
219 | xeLRKaHSztI9Z4QpWIIgAjLRHzaOLvlOK9EllnmjKmc=
220 |
221 |
222 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/objects-13.0+.nib
223 |
224 | hash2
225 |
226 | UGiFKNa5Yla8Qs4RQ32wjiGec7O/H1jd2HqSx52WEr4=
227 |
228 |
229 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/runtime.nib
230 |
231 | hash2
232 |
233 | pXBIGhu9K1neDcOi4UXZ4SLs9824ftzPYX9uxhGxRkQ=
234 |
235 |
236 | Base.lproj/LaunchScreen.storyboardc/Info.plist
237 |
238 | hash2
239 |
240 | HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
241 |
242 |
243 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/objects-13.0+.nib
244 |
245 | hash2
246 |
247 | e3D28uI9u8eI6w89oZM9BufoLlrAsWALyQVEBymoON8=
248 |
249 |
250 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/runtime.nib
251 |
252 | hash2
253 |
254 | A7tNhBxORljFklNw8CP2/jCbAsL9+El73naMUYBEMjQ=
255 |
256 |
257 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib
258 |
259 | hash2
260 |
261 | dU/SzRlIts+VURZFM3uDALIHsnqZWD6OC7+MPHF/jxw=
262 |
263 |
264 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib
265 |
266 | hash2
267 |
268 | fjCp83byuhmbFxEe6HHLHUdnGoUoOsvy6XTgrGC9yTg=
269 |
270 |
271 | Base.lproj/Main.storyboardc/Info.plist
272 |
273 | hash2
274 |
275 | PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ=
276 |
277 |
278 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib
279 |
280 | hash2
281 |
282 | o6dX3JFqD9/QtfPuvvRR05g/LSiT0Sb7pBilh4A39ag=
283 |
284 |
285 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib
286 |
287 | hash2
288 |
289 | 6imaquWxEyBo9oPd/CnM8vGGVQ6evRBRj6/zsO0fuWM=
290 |
291 |
292 | Frameworks/XCTAutomationSupport.framework/Info.plist
293 |
294 | hash2
295 |
296 | +nr3ouuUEQTKa3ftEYI3Fg0rDlErksYX+eDxpZ1LVaI=
297 |
298 |
299 | Frameworks/XCTAutomationSupport.framework/XCTAutomationSupport
300 |
301 | hash2
302 |
303 | kZCvHePeVutqsyDtgfClyDWqxTeDIZDrp+iwV39UevE=
304 |
305 |
306 | Frameworks/XCTAutomationSupport.framework/_CodeSignature/CodeResources
307 |
308 | hash2
309 |
310 | AKj1Rrfouzxuyo4wUGoNg1mj1lAqZrsPYOvuSMJn8Aw=
311 |
312 |
313 | Frameworks/XCTAutomationSupport.framework/version.plist
314 |
315 | hash2
316 |
317 | JWd/ru1b6k0uNZgO60tQbs9H8n+wZ9N9P0FKdkazZ2c=
318 |
319 |
320 | Frameworks/XCTest.framework/Info.plist
321 |
322 | hash2
323 |
324 | T3aARpB6bVvaFExMgjbfOQc+iQUEFERrbnjO8L6DvZc=
325 |
326 |
327 | Frameworks/XCTest.framework/XCTest
328 |
329 | hash2
330 |
331 | CpxZ1W8v75Koo6FOru2i8z4EVvgoPRc4T0TIiu62pB0=
332 |
333 |
334 | Frameworks/XCTest.framework/_CodeSignature/CodeResources
335 |
336 | hash2
337 |
338 | 9ir34yGFEiL4iXHgeWCV1xU+GGEJQ/IYVsoy2yc9Nks=
339 |
340 |
341 | Frameworks/XCTest.framework/en.lproj/InfoPlist.strings
342 |
343 | hash2
344 |
345 | 89RGkjZaKuewYnjpzwhIswhqfrU8+pcEXqM/DHVrUmo=
346 |
347 | optional
348 |
349 |
350 | Frameworks/XCTest.framework/version.plist
351 |
352 | hash2
353 |
354 | JWd/ru1b6k0uNZgO60tQbs9H8n+wZ9N9P0FKdkazZ2c=
355 |
356 |
357 | Frameworks/libXCTestBundleInject.dylib
358 |
359 | hash2
360 |
361 | r1hEe52+xQY2ZdMm4JF7zjPjDt9jCnxR7dH/Q63lX+A=
362 |
363 |
364 | Frameworks/libXCTestSwiftSupport.dylib
365 |
366 | hash2
367 |
368 | 45pg9HlsUKawUobZCeEKqB3iB74fbPfWZUqEs9oZTYM=
369 |
370 |
371 | PlugIns/EyesImagesTests(UnitTests).xctest/EyesImagesTests(UnitTests)
372 |
373 | hash2
374 |
375 | HlTifwIpZyfb6EhCGATknL7JdND1GIZ0yZ0B0YO+nZU=
376 |
377 |
378 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.gitkeep
379 |
380 | hash2
381 |
382 | 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
383 |
384 |
385 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/.travis.yml
386 |
387 | hash2
388 |
389 | elfZ/dHVDlfrkzYN1buapwRQ4Ahdl1fIQDz49xusry4=
390 |
391 |
392 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/CHANGELOG.md
393 |
394 | hash2
395 |
396 | 9pVD/CDMXoFvl175mzPvlFjRRXQNao62kl9peTaUDtg=
397 |
398 |
399 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/EyesImages
400 |
401 | hash2
402 |
403 | W+18/sPkfbJS4uh2FAlceOLv3qNpg5juu3OV8F+QGeg=
404 |
405 |
406 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Gemfile
407 |
408 | hash2
409 |
410 | o85Tau514JChZmNnh8C8nq63p++d+ZqQ7LH7vunZuDs=
411 |
412 |
413 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/Info.plist
414 |
415 | hash2
416 |
417 | TjfzMfoeOKKDPPf9KUKtK0mV6xjbVizjJjCVkzy9i10=
418 |
419 |
420 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/_CodeSignature/CodeResources
421 |
422 | hash2
423 |
424 | Go4ZoZhzUrR5HeDqBxONNq5n0wxOd9sKtXu3zGw4fA8=
425 |
426 |
427 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/build_sdk.sh
428 |
429 | hash2
430 |
431 | /pOrDuUX9NT1ofjzU6YUHRiCFDDEQcMVIFcUyCRSckw=
432 |
433 |
434 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/carthage_dependencies_json.thor
435 |
436 | hash2
437 |
438 | FhpyCgVGoveLPe3I25m74bGQFQI5N04leIa1DKjwAz8=
439 |
440 |
441 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/carthage_dependencies_json.tt
442 |
443 | hash2
444 |
445 | +sqj1LcJxc+rtX4hkmLR9+CRHb4eTQx+Z++vWOpMjtk=
446 |
447 |
448 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/podspec.thor
449 |
450 | hash2
451 |
452 | k+lD2AYYyJjmNLO+/yCvwQ8FGQ0F7Kmn78Z/cQEiyRk=
453 |
454 |
455 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/podspec.tt
456 |
457 | hash2
458 |
459 | pR2CaxkjnA5CgCi53GVF23QhCXi9raDDU1yJSFf7RsU=
460 |
461 |
462 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/set_tags.sh
463 |
464 | hash2
465 |
466 | Fi+AfbNgTXCIaKRcjT3BaFiRahKpYYJJk+/OQlFmE5Q=
467 |
468 |
469 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/update_carthage_integration.sh
470 |
471 | hash2
472 |
473 | sIOKtClNSioYRXxMKI+xWYAeKSCN+lbNQ1EfzOAN5Gk=
474 |
475 |
476 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/EyesImages.framework/update_version_on_cocoapods.sh
477 |
478 | hash2
479 |
480 | cr4tkpehfLDHbSEw4SsOdyi5LUAMcYYKuj5YftRvDUo=
481 |
482 |
483 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCore.dylib
484 |
485 | hash2
486 |
487 | SVCZK2UG9ihtWggcfIn/i94g//jyC4cI73gURFdHavA=
488 |
489 |
490 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreFoundation.dylib
491 |
492 | hash2
493 |
494 | /wz85l+DKAaQ7/BS+77vK5X998iA4Lwz+DGJ95g4kZw=
495 |
496 |
497 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftCoreGraphics.dylib
498 |
499 | hash2
500 |
501 | 2g2ULh1dF2q53hPG3PIdHtRNobjaoh8CmjkUk9GLjTs=
502 |
503 |
504 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDarwin.dylib
505 |
506 | hash2
507 |
508 | Fy3X7nPk7IgG+lCSWKHuMHgGz6Yi56UOKe6XajzinhU=
509 |
510 |
511 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftDispatch.dylib
512 |
513 | hash2
514 |
515 | ZSH1H7EN5E4TGGB63N2+7rR7N+rDR1LBmkhABOf9RVQ=
516 |
517 |
518 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftFoundation.dylib
519 |
520 | hash2
521 |
522 | 6SyHvvl3dAOzLH6bFEeF41TPcUHS3iYOdFK7I0FEU6M=
523 |
524 |
525 | PlugIns/EyesImagesTests(UnitTests).xctest/Frameworks/libswiftObjectiveC.dylib
526 |
527 | hash2
528 |
529 | zLWBGbdbTQk6chVChX0c8CFwhq8ogd9K00QEU5AufEY=
530 |
531 |
532 | PlugIns/EyesImagesTests(UnitTests).xctest/Info.plist
533 |
534 | hash2
535 |
536 | pQIQ61rBBL3jCP133rQI4uQ+p7yuqzG77qHZuhb9NiY=
537 |
538 |
539 | PlugIns/EyesImagesTests(UnitTests).xctest/_CodeSignature/CodeResources
540 |
541 | hash2
542 |
543 | 1wfn9BrRaVtxb8jC9ukNJN/ZMUc+zgQpvnEu6sXhmDc=
544 |
545 |
546 | README.md
547 |
548 | hash2
549 |
550 | 1iWhRlkc4N3arYBvuBkRY7zU4FRHLEnGjraYvmXog4o=
551 |
552 |
553 |
554 | rules
555 |
556 | ^.*
557 |
558 | ^.*\.lproj/
559 |
560 | optional
561 |
562 | weight
563 | 1000
564 |
565 | ^.*\.lproj/locversion.plist$
566 |
567 | omit
568 |
569 | weight
570 | 1100
571 |
572 | ^Base\.lproj/
573 |
574 | weight
575 | 1010
576 |
577 | ^version.plist$
578 |
579 |
580 | rules2
581 |
582 | .*\.dSYM($|/)
583 |
584 | weight
585 | 11
586 |
587 | ^(.*/)?\.DS_Store$
588 |
589 | omit
590 |
591 | weight
592 | 2000
593 |
594 | ^.*
595 |
596 | ^.*\.lproj/
597 |
598 | optional
599 |
600 | weight
601 | 1000
602 |
603 | ^.*\.lproj/locversion.plist$
604 |
605 | omit
606 |
607 | weight
608 | 1100
609 |
610 | ^Base\.lproj/
611 |
612 | weight
613 | 1010
614 |
615 | ^Info\.plist$
616 |
617 | omit
618 |
619 | weight
620 | 20
621 |
622 | ^PkgInfo$
623 |
624 | omit
625 |
626 | weight
627 | 20
628 |
629 | ^embedded\.provisionprofile$
630 |
631 | weight
632 | 20
633 |
634 | ^version\.plist$
635 |
636 | weight
637 | 20
638 |
639 |
640 |
641 |
642 |
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/TheApp-VR-v1.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/TheApp-VR-v1.apk
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/VodQAReactNative.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/VodQAReactNative.zip
--------------------------------------------------------------------------------
/src/test/resources/sampleApps/eyes-ios-hello-world.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anandbagmar/AppiumJavaSample/e2e924d959d7afa9e0795f28228da005e2330693/src/test/resources/sampleApps/eyes-ios-hello-world.zip
--------------------------------------------------------------------------------
/src/test/resources/testng.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------