Test Example in Kotlin

Link to Test Example in Kotlin copied to clipboard

Be sure to checkout the full Appium setup guide with axe DevTools Mobile if you're just getting started, or more examples of axe DevTools Mobile for Appium in other languages.

executeScript in Kotlin

Initiate an accessibility scan by calling the following in your Kotlin Appium tests:

val settings = mapOf("apiKey" to "<your-api-key-here>")
driver.executeScript("axe:scan", settings)

Example With Page Source

When Appium's page source API is incorporated into your tests, consider optimizing performance by passing it through the execute script method. While providing the page source is optional, we advise against it unless you are confident that the page source accurately reflects your application's current state and remains unmodified. For more precise results, it's recommended to refrain from passing the page source.

val settings = mapOf("apiKey" to "<your-api-key-here>")
val pageSource = driver.pageSource
driver.executeScript("axe:scan", settings, pageSource)

Full Example with UIAutomator2

import io.appium.java_client.android.AndroidDriver
import io.appium.java_client.remote.AutomationName
import io.appium.java_client.remote.MobileCapabilityType
import io.appium.java_client.remote.MobilePlatform
import org.junit.Before
import org.junit.Test
import org.openqa.selenium.remote.DesiredCapabilities
import java.net.URL

class AppiumPluginTest {
    private lateinit var driver: AndroidDriver

    companion object {
        private const val DEFAULT_APPIUM_ADDRESS = "http://0.0.0.0:4723"

        fun makeDriver(): AndroidDriver {
            val capabilities = DesiredCapabilities()
            capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID)
            capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.ANDROID_UIAUTOMATOR2)
            capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator")
            capabilities.setCapability("appium:appPackage", "com.android.settings")
            capabilities.setCapability("appium:appActivity", ".Settings")

            return AndroidDriver(URL(DEFAULT_APPIUM_ADDRESS), capabilities)
        }
    }

    @Before
    fun setup() {
        driver = makeDriver()
    }

    @Test
    fun test() {
        val settings = mapOf("apiKey" to "<your-api-key-here>")
        driver.executeScript("axe:scan", settings)
    }
}

Full Example with XCUITest

import io.appium.java_client.ios.IOSDriver
import io.appium.java_client.remote.AutomationName
import io.appium.java_client.remote.MobileCapabilityType
import io.appium.java_client.remote.MobilePlatform
import org.junit.Before
import org.junit.Test
import org.openqa.selenium.remote.DesiredCapabilities
import java.net.URL

class AppiumPluginTest {
    private lateinit var driver: IOSDriver

    companion object {
        private const val DEFAULT_APPIUM_ADDRESS = "http://0.0.0.0:4723"

        fun makeDriver(): IOSDriver {
            val capabilities = DesiredCapabilities()
            capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.IOS)
            capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST)
            capabilities.setCapability("appium:bundleId", "com.dequesystems.axe-devtools-ios-sample-app")
            capabilities.setCapability("appium:udid", "...") // xcrun simctl list | grep Booted

            return IOSDriver(URL(DEFAULT_APPIUM_ADDRESS), capabilities)
        }
    }

    @Before
    fun setup() {
        driver = makeDriver()
    }

    @Test
    fun test() {
        val settings = mapOf("apiKey" to "<your-api-key-here>")
        driver.executeScript("axe:scan", settings)
    }
}