Last updated: Nov 12, 2020 14:31
Before you get started, make sure you have installed the following:
- Java Development Kit 1.8
- An IDE of your choice, such as Eclipse or IntelliJ IDEA
- If you work with Eclipse, TestNG for Eclipse and the Maven plugin
- If you work with IntelliJ IDEA, the Maven plugin
- Maven (download and install)
- Android Studio
- Local Appium server, running at port 4723
For more information, see this introduction to Appium. For information on the Appium versions Perfecto supports, see the Selenium/Appium versions tab in the Supported platforms article.
1 | Get started
The starting point is
LocalAppium.java, a short Java script with Maven dependencies. The
pom.xml file is institutional here because it holds all configurations and dependencies. In its initial state, the file is very simple.
The script connects to an emulator, opens the Settings app on an Android device, and verifies whether the Data usage screen is present.
To get started:
- Access the sample project in GitHub and copy the clone URL: https://github.com/PerfectoMobileSA/PerfectoSampleProject
- Open your IDE and check out the project from GitHub.
- Run the script to make sure it executes without any issues.
2 | Configure the script for Perfecto
In this step, we update the
pom.xml file with the required Perfecto dependencies and modify the script from Step 1 to add in security information, the Perfecto cloud name, Smart Reporting information, and test data. We also want to make sure that the script exits gracefully.
The updated script is called
PerfectoAppium.java. The following procedure walks you through the configuration.
Expand a step to view its content.
Copy the dependencies in the
pom.xml file and paste them into the
pom.xml file of your own project. This step is essential because the imports in our final script only work when the dependencies specified in this file are available.
Generate your security token through the Perfecto UI. Then search for the following line in
PerfectoAppium.java and replace
<<security token>> with your Perfecto security token.
Alternatively, you can pass the token as a Maven property, as follows:
To generate a security token:
- In the Perfecto UI at <YourCloud>.app.perfectomobile.com (where YourCloud is your actual cloud name, such as mobilecloud), click your user name and select My security token.
- In the My security token form, click Generate Security Token.
Click Copy to clipboard. Then paste it into any scripts that you want to run with Perfecto.
- Click Close.
Use capabilities to select a device from the Perfecto lab. You can be as generic or specific as needed. In our script, we have included the these capabilities, as shown in the following code snippet:
model: The device model
openDeviceTimeout: The timeout, in minutes, to wait for a specific device in case it is not available at the start of the script (use with caution)
appPackage: The Java package of the Android app you want to run
For more information on capabilities, see:
You can use the Manual Testing view in the Perfecto UI to generate a code snippet with device-specific capabilities that you can then copy-paste into your script.
To generate capabilities (for mobile or web devices) through the Perfecto UI:
- On the Perfecto landing page, under Manual Testing, click Open Device.
- In the Manual Testing view, do the following to generate capabilities:
- In the list or tile view, click a device.
- In the details pane on the right, click the Capabilities tab.
- (Mobile device only) Depending on what you want to see in your code sample, select Device attributes or Device ID.
- From the drop-down list, select the programming language to use.
- The code snippet is updated automatically.
- Click Copy to clipboard.
- Paste it into your existing script.
As part of creating an instance of the RemoteWebDriver, you need to supply the URL of your Perfecto cloud. Search for the following line in
PerfectoAppium.java and replace
<<cloud name>> with the name of your Perfecto cloud (for example
The general structure of the URL string is as follows:
"https://" + Utils.fetchCloudName(cloudName) + ".perfectomobile.com/nexperience/perfectomobile/wd/hub"
Here is the respective line from our sample script:
To get the most out of running your test in Perfecto, you need to create an instance of the Smart Reporting client (
ReportiumClient). This will allow you to later retrieve and analyze the test report. The reporting client is responsible for gathering basic information about the test and transmitting it to the Smart Reporting system.
In Utils.java, we show how to use the
createPerfectoReportiumClient() method. Use the
PerfectoExecutionContext class to supply the link to the factory class creating the client instance. Use the
withWebDriver() method to supply the link of the driver instance.
build() method to create the context object's instance and supply this to the
createPerfectoReportiumClient() method when creating the
In addition to supplying the driver link, the context supports optional settings, such as adding:
- Reporting tags: Tags are used as a freestyle text for filtering the reports in the Reporting app. Use the withContextTags() method as shown in the following code snippet.
- CI job information: Job information is used to add your test runs to the CI Dashboard view. Use the withJob() method of the
PerfectoExecutionContextinstance, supplying the job name and job number, when creating the
Our sample script uses system variables to fetch the
reportium-job-numbervalues . Both system variables are sent from CI tools like Jenkins as a Maven
-Dsystem property. For example:
The following figure illustrates how the
reportium-job-numbersystem variables get their value from Jenkins. These variables are passed as -D parameters for install goals of Maven.
Our script supports both local and CI-based executions (for more information, see Add reporting to Jenkins > Supply Maven or Ivy parameters).
Replace the existing code after the
try block with the following settings app code.
In our example, the test is separated into logical groupings of actions as logical steps. Each step is labeled and appears in the Execution Report together with the component actions. The beginning of each logical step is indicated with the
To close Smart Reporting and the driver, supply an indication of the final outcome of the test by generating a
TestResult instance in an
In our example, the
createSuccess method notifies the reporting server that the test resulted in a successful status. The
createFailure method notifies the reporting server that the test resulted in an unsuccessful status and supports adding a notification message that is displayed in the test report. Our script also provides a failure reason, but this is optional. To learn more about failure reasons in reporting, see Work with failure reasons.
Last, make sure to close and quit the
RemoteWebDriver and retrieve the Smart Reporting URL for the generated test report.
- Right-click the
pom.xmlfile and select Run As > Maven build.
In the Edit Configuration form, on the Main tab:
In the Goals field, enter the following Maven goals:
If the credentials are hard coded:
If the credentials are passed as parameters:
- Click Run.
The following image shows sample run results.
The first time you run this test, you need to edit the run configuration.
To run this test for the first time:
- From the Run menu, select Run.
- Select Edit Configurations.
- Select the plus sign and select Maven.
- In the Run form, do the following:
- In the Name field, enter a descriptive name for the run.
- On the Parameters tab, in the Command line field, enter the following command, depending on whether credentials are hard-coded or passed as parameters.
If credentials are hard-coded:
If credentials are passed as parameters:
The following image shows sample run results.
To perform subsequent runs:
- From the Run menu, select Run > <Name>.
Also in this section: