Deploys app to device farm and starts a test run with a preconfigured test package and device pool.
access_key_id- Access key for your AWS/IAM user. Define this as a secret environment variable in your workflow.secret_access_key- Secret key for your AWS/IAM user. Define this as a secret environment variable in your workflow.device_farm_project- Project ARNs can be obtained using the AWS CLIdevicefarm list-projectscommand.test_package_name- Filename of test package to run. This should be a filename (not a path) that matches the name of the test bundle previously uploaded with the aws-device-farm-file-deploy step. The most recently uploaded package with this name will be used.test_type- See the Test.type documentation.platform- Platform to run tests on. Options:ios,android,ios+androidbuild_version- Build number
billing_method- Billing method for your test run. UseMETEREDfor free tier and pay-as-you-go billing, andUNMETEREDto use pre-paid device slots. Default:METEREDlocale- The locale as ISO language and country code to be used by the test devices. Default:en_USfilter- Test filter. For example com.android.abc.test1. See the ScheduleRunTest.filter documentation.test_spec- Device Farm Custom TestSpec ARN. Environment ARNs can be obtained using the AWS CLIdevicefarm list-uploadscommand.run_name_prefix- If you want to specify a name, this prefix will be used followed by platform and bitrise build number.aws_region- If you want to specify a different AWS region. Leave empty to use the default config/env setting.run_wait_for_results- Whether or not to wait for the test results from device farm. If set to true, the script waits for the test run to complete on Device farm before returning success/failure. This will slow down your Bitrise runs, however allows you to make decisions in subsequent steps based on success/failure of the tests. Default:truerun_fail_on_warning- Fail if the device farm results return result of WARNED. Depending on your tests, you may or may not wish to fail the step if Device farm returns a WARNED result. Only takes effect ifrun_wait_for_resultsis also enabled. Default:true
ipa_path- IPA file path. Required for iOS runs whenipa_nameis not provided. Default:$BITRISE_IPA_PATHipa_name- Filename of IPA package to use for testing. This should be a filename (not a path) that matches the name of the IPA bundle previously uploaded with the aws-device-farm-file-deploy step. The most recently uploaded package with this name will be used. If provided, this takes precedence overipa_path.ios_pool- Device Farm iOS Device Pool ARN. Required for iOS runs. ARNs can be obtained using the AWS CLIdevicefarm list-device-poolscommand.
apk_path- APK file path. Required for Android runs whenapk_nameis not provided. Default:$BITRISE_SIGNED_APK_PATHapk_name- Filename of APK package to use for testing. This should be a filename (not a path) that matches the name of the APK bundle previously uploaded with the aws-device-farm-file-deploy step. The most recently uploaded package with this name will be used. If provided, this takes precedence overapk_path.android_pool- Device Farm Android Device Pool ARN. Required for Android runs. ARNs can be obtained using the AWS CLIdevicefarm list-device-poolscommand.
BITRISE_DEVICEFARM_RESULTS_RAW- The full output from the device farm run in JSON from AWS Device FarmBITRISE_DEVICEFARM_RESULTS_SUMMARY- A human-readable summary of the results suitable for feeding into something like a slack message
This step supports two approaches for providing app packages (IPA/APK files):
- Use
ipa_pathfor iOS apps - Use
apk_pathfor Android apps - The step will upload the file to Device Farm before running tests
- Suitable when you have local files or files generated during the build
- Use
ipa_namefor iOS apps - Use
apk_namefor Android apps - The step will look up the most recently uploaded package with the specified name
- No upload is performed, saving time and bandwidth
- Requires packages to be previously uploaded using the aws-device-farm-file-deploy step
- Package name parameters take precedence over file path parameters when both are provided
- Always use
test_package_name(package name approach only) - Test packages must be previously uploaded using the aws-device-farm-file-deploy step
Can be run directly with the bitrise CLI,
just git clone this repository, cd into it's folder in your Terminal/Command Line
and call bitrise run test.
Check the bitrise.yml file for required inputs which have to be
added to your .bitrise.secrets.yml file!
Step by step:
- Open up your Terminal / Command Line
git clonethe repositorycdinto the directory of the step (the one you justgit cloned)- Create a
.bitrise.secrets.ymlfile in the same directory ofbitrise.yml- the.bitrise.secrets.ymlis a git ignored file, you can store your secrets in - Check the
bitrise.ymlfile for any secret you should set in.bitrise.secrets.yml
- Best practice is to mark these options with something like
# define these in your .bitrise.secrets.yml, in theapp:envssection.
- Once you have all the required secret parameters in your
.bitrise.secrets.ymlyou can just run this step with the bitrise CLI:bitrise run test
An example .bitrise.secrets.yml file:
---
# These environments should NOT be checked into source control, they are used
# to populate your tests when running this step locally.
envs:
- AWS_ACCESS_KEY: ""
- AWS_SECRET_KEY: ""
- DEVICE_FARM_PROJECT: ""
- TEST_PACKAGE_NAME: "test_bundle.zip"
- TEST_TYPE: "APPIUM_PYTHON"
- PLATFORM: "ios+android"
- IOS_POOL: ""
- ANDROID_POOL: ""
- RUN_NAME_PREFIX: "testscript"
- AWS_REGION: "us-west-2"
- BITRISE_IPA_PATH: ""
- BITRISE_SIGNED_APK_PATH: ""
- BITRISE_BUILD_NUMBER: 0
bitrise run test- Note: This test requires additional configuration to pass:
AWS_ACCESS_KEYandAWS_SECRET_KEYmust be set in.bitrise.secrets.yml- An Amazon device farm project must be set up in the target region, and its ARN must be specified in the
device_farm_projectinput - If
platforminput is... 1. ... set toios, thenios_poolmust be set to the ARN of an iOS device pool and eitheripa_pathoripa_namemust be set 1. ... set toandroid, thenandroid_poolmust be set to the ARN of an Android device pool and eitherapk_pathorapk_namemust be set 1. ... set toios+android, then all of the above inputs must be set
- see
step.ymlfor more info on obtaining ARNs
- Create a new git repository for your step (don't fork the step template, create a new repository)
- Copy the step template files into your repository
- Fill the
step.shwith your functionality - Wire out your inputs to
step.yml(inputssection) - Fill out the other parts of the
step.ymltoo - Provide test values for the inputs in the
bitrise.yml - Run your step with
bitrise run test- if it works, you're ready
For Step development guidelines & best practices check this documentation: https://github.com/bitrise-io/bitrise/blob/master/_docs/step-development-guideline.md.
NOTE:
If you want to use your step in your project's bitrise.yml:
- git push the step into it's repository
- reference it in your
bitrise.ymlwith thegit::PUBLIC-GIT-CLONE-URL@BRANCHstep reference style:
- git::https://github.com/user/my-step.git@branch:
title: My step
inputs:
- my_input_1: "my value 1"
- my_input_2: "my value 2"
You can find more examples of step reference styles in the bitrise CLI repository.
- Fork this repository
git cloneit- Create a branch you'll work on
- To use/test the step just follow the How to use this Step section
- Do the changes you want to
- Run/test the step before sending your contribution
- You can also test the step in your
bitriseproject, either on your Mac or on bitrise.io - You just have to replace the step ID in your project's
bitrise.ymlwith either a relative path, or with a git URL format - (relative) path format: instead of
- original-step-id:use- path::./relative/path/of/script/on/your/Mac: - direct git URL format: instead of
- original-step-id:use- git::https://github.com/user/step.git@branch: - You can find more example of alternative step referencing at: https://github.com/bitrise-io/bitrise/blob/master/_examples/tutorials/steps-and-workflows/bitrise.yml
- Once you're done just commit your changes & create a Pull Request
You can share your Step or step version with the bitrise CLI. Just run bitrise share and follow the guide it prints.