For this example in context, see https://github.com/PerfectoMobileSA/PerfectoJavaSample/blob/master/src/main/java/com/perfecto/sampleproject/PerfectoAppium.java
For an example of PerfectoLabUtils.java, see https://github.com/PerfectoMobileSA/PerfectoJavaSample/blob/master/src/main/java/com/perfecto/sampleproject/PerfectoLabUtils.java.
Because Appium is designed for mobile application testing, the Appium drivers can automatically install and activate the application as part of the driver initialization process. For alternative methods to instrument, install, and start the application, see below.
The AppiumDriver uses the "app" capability to identify the application file to install on the target device. Perfecto supports this functionality but requires that the location of the file be in the media section of the Repository:
The AppiumDriver will then, normally, start the application on the device.
Other capabilities that affect the installation and launch of the application include:
Also, set the capabilities for appPackage (Android) or bundleID (iOS). For Android, you can specify the app activity in addition to the package name.
//install and start application iOS with autoLaunch capabilities.setCapability("autoLaunch",true); capabilities.setCapability("fullReset",true); capabilities.setCapability("app","PRIVATE:applications/Errands.ipa"); capabilities.setCapability("bundleId", "com.yoctoville.errands"); //start application Android capabilities.setCapability("appPackage", "com.google.android.keep"); capabilities.setCapability("appActivity", ".activities.BrowseActivity");
If you chose to not automatically launch the app through the "autoLaunch" capability, use the AppiumDriver's launchApp() method to start the application that was specified by the appPackage or bundleID capability.
Perfecto supports the following types of instrumentation of applications installed on the devices:
If you are checking a hybrid application running on an Android device, you should instrument the app as part of the driver creation process. Perfecto's Appium support includes a capability that will automatically instrument the application. Use the “autoInstrument” capability set to true.
If your application make use of the device sensors (for example the camera or fingerprint reader) as an input source, you can use Perfecto data injection commands to supply test input after performing sensor instrumentation. Use "sensorInstrument" capability set to true.
If you are working with Selenium RWD or for some reason cannot use the Appium capabilities to install and start the app, use the following procedures.
Use the Perfecto proprietary command mobile:application:install to install an application that was previously uploaded to the Perfecto Repository.
//declare the Map for script parameters Map<String, Object> params = new HashMap<>(); params.put("file", "PRIVATE:applications/Errands.ipa"); params.put("instrument", "noinstrument"); driver.executeScript("mobile:application:install", params);
See the Function Reference page for the Install application function for details of supplying parameters for application instrumentation using the parameters:
Use the Perfecto proprietary command mobile:application:open to start an installed application.
//declare the Map for script parameters Map<String, Object> params = new HashMap<>(); params.put("identifier", "com.google.android.apps.maps"); driver.executeScript("mobile:application:open", params);
In addition to instrumentation during installation, Perfecto supports an offline application to instrument Android applications. After instrumentation, the apk file can be installed on a Perfecto Lab Android device.