Sauce Labs Appium Example
We're developing an Appium Plugin that's set to launch early 2024. This plugin will enable you to better integrate accessibility testing throughout your Appium tests, no matter the language they are written in!
Using Appium with axe DevTools Today? The below information is provided in context of implementing the axeDevToolsUIKit framework (setup available to view here) and engaging with an embedded floating action button to kick off a scan. The axeDevToolsUIKit framework is decommissioned and will not receive new updates while the plugin is being built.
Below is an example for running your Appium tests integrated with axe DevTools against Sauce Labs. The current
Setup Configuration
Using Sauce Labs to test your project with Appium requires setting the iOSDriver
URL within the test file to point to the below Sauce Labs URL. Be sure to plug in your Sauce Labs username and access key.
public static final String URL = "https://" + SAUCE_USERNAME +":" + SAUCE_ACCESS_KEY +"@ondemand.us-west- 1.saucelabs.com:443/wd/hub";
Next, check that the desired capabilities for Appium are set correctly within the test file. Update or set the app capability:
caps.setCapability("app", "storage:filename=<APP NAME AS IT APPEARS ON SAUCE STORAGE>");
Build Setup
With the configurations and test file ready, let's create a build and upload it to Sauce Labs for testing. Use the below script from the project's root, or follow the documentation to build your app and upload it manually.
APP_LOCATION="DerivedData/Build/Products/Debug-iphoneos"
APP_NAME=“./apps/$APP_NAME.ipa”
xcodebuild -configuration Debug \
-scheme SCHEME HERE \
-sdk iphoneos \
-derivedDataPath "./DerivedData"
mkdir Payload
mkdir apps
mv $APP_LOCATION/$APP_NAME.app Payload
zip -r $APP_NAME Payload
rm -rf Payload/*
curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
--request POST 'https://api.us-west-1.saucelabs.com/v1/storage/upload' \
--form 'payload=@""' \
--form 'name=$APP_NAME
rm -rf apps
rm -rf DerivedData
Run Tests
Make a call to the testing framework you're using to run your tests. You may add your testing command to the above script or create a new one.
This command will vary by the testing framework used.
The axeDevToolsUIKit.xcframework supports SauceLabs and Appium on a simulator or real device. Please see the SauceLabs documentation for instructions on how to get set up.
Are you using additional continuous integration tools? Sauce Labs supports testing within your current environment. Learn more about integration with your CI pipeline and Sauce Labs.
Automation
Once you've confirmed your configurations are set up correctly, you're ready to automate this process! We've included a script below to automatically build .ipa files for devices, upload them to Sauce Labs, and run your tests. Your team can also use this script to invoke a test run on Sauce Labs manually.
APP_LOCATION="DerivedData/Build/Products/Debug-iphoneos"
APP_NAME="App Name Here"
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphoneos \
-derivedDataPath "./DerivedData"
mkdir Payload
mkdir apps
mv $APP_LOCATION/$APP_NAME.app Payload
zip -r "apps/$APP_NAME.ipa" Payload
rm -rf Payload/*
mv $APP_LOCATION/${APP_NAME}UITests-Runner.app Payload
zip -r "apps/${APP_NAME}UITests-Runner.ipa" Payload
rm -rf Payload
# call testing framework to run tests
./gradlew test