IMPORTANT Generate an API key on our frontend

Getting started with Xcode

iOS only - Fastest way to get started, for those without Appium setup on their machine

Setup Xcode

1

Open Xcode

Open an existing project or create a new project in Xcode.

Follow these steps if you’re creating a new project.

2

Add package dependency

In the top menu bar go to File -> Add package dependencies

3

Search for package

In the search field in the top right corner paste https://github.com/qaml-ai/qaml-swift

4

Click add package.

5

Select target

Select your UITest target, NOT your main app target.

Writing Tests in qaml-swift

1

Go to a test File

2

Import qaml

Include import qaml at the top of your test file

3

Create a new test function

Note, this test case will only work if you have Apple weather app on your device. Example test:

import XCTest
import qaml

final class test_sampleTest: XCTestCase {

    func test_weatherApp_weatherInSF() throws {
        let app = XCUIApplication(bundleIdentifier: "com.apple.weather")
        app.launch()
        
        let q = QamlClient(
            apiKey: "<API_KEY>",
            app: app
        )
        
        q.execute("click the location list button")
        q.execute("tap the search bar at the top")
        q.execute("type San Francisco")
        q.execute("tap the first result in the location list, 'San Francisco, CA United States'")
        q.assertCondition("The screen shows the weather for San Francisco")
    }
}
4

Select your device

Select the device you’d like to run your test on at the top.

  • For physical devices, attach your device to your computer via USB.
  • For simulated devices, select your desired device from the drop down menu.
  • For third party device farms, following their XCUITest documentation.
  • AWS Docs, Sauce Labs Docs, Browserstack Docs.

If you have XCode cloud set up, these tests will run as part of your Xcode cloud actions. Apple offers iOS developers 25 hours of free device farm access per month. Read more about this on Xcode’s documentation.