SwiftUI component UITest シリーズ Toggle 編
Sponsor Link
Toggle
対象要素の取得
Accessibility ID を付与することで、他の要素と同じように取得できます。
XCUIElementTypeQueryProvider からの取得には、switches を使用します。
Toggle を取得
let app = XCUIApplication()
app.launch()
let toggle = app.switches["MyToggle"]
状態をチェック
状態は、value プロパティに保持しています。
ただし、String です。
ON 状態では、”1″ を、OFF 状態では、”0″ を持ちます。
操作
.tap() を行うことで、トグル動作を行います。
テストコード例
以下は、デフォルトが OFF のToggle を、タップ後に ON になっているかを確認するコードです。
Toggle テスト例
let app = XCUIApplication()
app.launch()
let toggle = app.switches["MyToggle"]
XCTAssertTrue(toggle.exists)
// (1)
XCTAssertEqual(toggle.value as! String, "0")
// (2)
toggle.tap()
// (3)
XCTAssertEqual(toggle.value as! String, "1")
コード解説
- デフォルトで Off 設定になっていることをテスト
- Toggle に対して、タップしています
- タップ後に、On になっていることをテスト
アプリと、テストコード例
画面には、Toggle と Text が表示されていて、Toggle の状態に応じて Text のラベルを Onと Off に切り替えるアプリです。
Toggle テストアプリ
//
// ContentView.swift
//
// Created by : Tomoaki Yagishita on 2020/10/28
// © 2020 SmallDeskSoftware
//
import SwiftUI
struct ContentView: View {
@State private var isOn:Bool = false
var body: some View {
VStack {
Toggle("toggle", isOn: $isOn)
.accessibility(identifier: "MyToggle")
.padding()
Text(isOn ? "On" : "Off")
.accessibility(identifier: "MyToggleText")
.padding()
}
}
}
Toggle アプリ テストコード
func testToggle() throws {
let app = XCUIApplication()
app.launch()
let toggle = app.switches["MyToggle"]
XCTAssertTrue(toggle.exists)
XCTAssertEqual(toggle.value as! String, "0")
let text = app.staticTexts["MyToggleText"]
XCTAssertTrue(text.exists)
XCTAssertEqual(text.label, "Off")
toggle.tap()
XCTAssertEqual(toggle.value as! String, "1")
XCTAssertEqual(text.label, "On")
}
まとめ:SwiftUI の Toggle をテストする
SwiftUI の Toggle をテストする
- XCUIApplication から、accessibility ID 指定で Toggle を取得することができる
- XCUIApplication から、switches[“ID”] で Toggle を取得することができる
- Toggle の状態は、value プロパティから String として取得できる
- SwiftUI では、accessibility ID は、.accessibility modifier で付与する
説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。
Sponsor Link