Files
sanderling/internal/ios/ios_test.go
pj 97154cf580 feat(ios): launch via XCTest with env vars for hierarchy/tap access (#39)
* feat(proto): add env map to LaunchRequest

* feat(driver): add env param to Launch interface and all implementations

* feat(sidecar): add IosDriverBackend using Maestro IOSDriver + env pass-through

* feat(testrun): launch iOS app via XCTest with env vars instead of simctl

* fix(ios): replace LaunchApp with BootedUDID; simctl launch moved to XCTest path

* test(cli): add tests for ios platform flag and ios-device flag parsing

* fix(sdk-ios): check semaphore wait result; resolve port from args and env; register extractors before start
2026-04-23 17:35:31 +07:00

90 lines
2.1 KiB
Go

package ios
import (
"context"
"testing"
)
func TestPickSimulator_ByName(t *testing.T) {
available := []simDevice{
{UDID: "aaa", Name: "iPad Pro", IsAvailable: true},
{UDID: "bbb", Name: "iPhone 15", IsAvailable: true},
}
got, err := pickSimulator("iPhone 15", available)
if err != nil {
t.Fatal(err)
}
if got.UDID != "bbb" {
t.Errorf("got %q, want bbb", got.UDID)
}
}
func TestPickSimulator_ByUDID(t *testing.T) {
available := []simDevice{
{UDID: "aaa", Name: "iPad Pro", IsAvailable: true},
{UDID: "bbb", Name: "iPhone 14", IsAvailable: true},
}
got, err := pickSimulator("aaa", available)
if err != nil {
t.Fatal(err)
}
if got.Name != "iPad Pro" {
t.Errorf("got %q, want iPad Pro", got.Name)
}
}
func TestPickSimulator_UnknownName(t *testing.T) {
available := []simDevice{
{UDID: "aaa", Name: "iPad Pro", IsAvailable: true},
}
_, err := pickSimulator("Pixel 7", available)
if err == nil {
t.Fatal("expected error for unknown simulator name")
}
}
func TestPickSimulator_EmptyName_PrefersIPhone(t *testing.T) {
available := []simDevice{
{UDID: "aaa", Name: "iPad mini", IsAvailable: true},
{UDID: "bbb", Name: "iPhone 16", IsAvailable: true},
{UDID: "ccc", Name: "Apple Watch", IsAvailable: true},
}
got, err := pickSimulator("", available)
if err != nil {
t.Fatal(err)
}
if got.UDID != "bbb" {
t.Errorf("got %q, want bbb (iPhone)", got.UDID)
}
}
func TestPickSimulator_EmptyName_FallsBackToFirst(t *testing.T) {
available := []simDevice{
{UDID: "aaa", Name: "iPad Air", IsAvailable: true},
{UDID: "bbb", Name: "Apple TV", IsAvailable: true},
}
got, err := pickSimulator("", available)
if err != nil {
t.Fatal(err)
}
if got.UDID != "aaa" {
t.Errorf("got %q, want aaa (first available)", got.UDID)
}
}
func TestPickSimulator_EmptyList(t *testing.T) {
_, err := pickSimulator("", nil)
if err == nil {
t.Fatal("expected error for empty simulator list")
}
}
func TestBootedUDID_CanceledContext(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
cancel()
udid := BootedUDID(ctx)
if udid != "" {
t.Errorf("expected empty UDID on canceled context, got %q", udid)
}
}