Workshop with iOS app - up1/course-appium-robotframework GitHub Wiki
Workshop with iOS app
1. Start appium server
Install driver :: XCUITest
$appium driver list
$appium driver install xcuitest
$appium --allow-cors
2. Access to appium server with Appium Inspector
{
"platformName": "iOS",
"appium:deviceName": "iPhone 15 Pro",
"appium:platformVersion": "17.5",
"appium:automationName": "XCUITest",
"appium:bundleId": "dev.xyz",
"appium:connectionRetryTimeout": 60000,
"appium:noReset": true
}
List of devices in MacOS
$xcrun xctrace list devices
== Simulators ==
iPad (10th generation) Simulator (17.5) (25FFDE58-FBF9-470E-9404-D0D7C3990558)
iPad Air 11-inch (M2) Simulator (17.5) (AFF14603-1CA4-4A28-AFF8-2E46B2F82988)
iPad Air 13-inch (M2) Simulator (17.5) (39F0D5D9-DB2C-4628-BCB6-EC152CD5297E)
iPad Pro 11-inch (M4) Simulator (17.5) (08B8CAD7-42A3-459B-A030-CA9A0CAFA852)
iPad Pro 13-inch (M4) Simulator (17.5) (04027796-18BF-4028-AF44-947EC5288A9F)
iPad mini (6th generation) Simulator (17.5) (60731347-E435-4C8B-ADF9-863EECF9BAD2)
iPhone 15 Simulator (17.5) (537A7FD2-CDA2-4D5B-BC1C-141B5FC4D411)
iPhone 15 Plus Simulator (17.5) (E611E7B2-CC6A-4217-9190-B4780F78C39C)
iPhone 15 Pro Simulator (17.5) (26535A44-1572-45F5-99A7-CF600C68CE2D)
iPhone 15 Pro Max Simulator (17.5) (E8774E3B-605E-42E1-B033-8628EA7874FC)
iPhone SE (3rd generation) Simulator (17.5) (75A0C05A-76D4-4527-A468-764BB5A268C3)
3. Add accessibility id to element in SwiftUI
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
.accessibilityIdentifier("hello_text")
}
.padding()
}
}
#Preview {
ContentView()
}
4. Write test case with Robotframework
*** Settings ***
Library AppiumLibrary
Test Teardown Close Application
*** Test Cases ***
Test Case Name
Open Application http://127.0.0.1:4723
... platformName=iOS
... appium:deviceName=iPhone 15 Pro
... appium:platformVersion=17.5
... appium:automationName=XCUITest
... appium:bundleId=dev.xyz
... appium:connectionRetryTimeout=${60000}
... appium:noReset=${True}
... appium:includeSafariInWebviews=${True}
... appium:newCommandTimeout=${3600}
... appium:connectHardwareKeyboard=${True}
${el1} = Set Variable accessibility_id=hello_text
Wait Until Page Contains Element ${el1}
Element Text Should Be ${el1} Hello, world!