mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-22 21:00:51 +02:00
feat(ios-qa): adaptive XCUITest runner that reaches nested controls and verifies taps
JSON-driven XCUITest runner plus SwiftUI/UIKit fixture apps that drive a real app by bundle id. The runner resolves the actual switch inside a SwiftUI Toggle wrapper, and when a center tap misses the full-width row it retries on the control's trailing edge via an element-anchored normalized offset (adaptive, not a raw screen coordinate), then verifies the switch value actually changed. A tap that silently does nothing is now reported as an interaction failure, not a false product defect. Validated on the simulator and on a physical iPhone. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
466b1ec744
commit
c2ac1f32c0
+70
@@ -47,3 +47,73 @@ targets:
|
||||
SWIFT_VERSION: "5.9"
|
||||
IPHONEOS_DEPLOYMENT_TARGET: "16.0"
|
||||
ENABLE_PREVIEWS: YES
|
||||
|
||||
AdaptiveSwiftUIFixture:
|
||||
type: application
|
||||
platform: iOS
|
||||
deploymentTarget: "16.0"
|
||||
sources:
|
||||
- path: Sources/AdaptiveSwiftUIFixture
|
||||
info:
|
||||
path: Sources/AdaptiveSwiftUIFixture/Info.plist
|
||||
properties:
|
||||
CFBundleDisplayName: SwiftUI QA Gallery
|
||||
UILaunchScreen: {}
|
||||
UISupportedInterfaceOrientations: [UIInterfaceOrientationPortrait]
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.gstack.iosqa.adaptive.swiftui
|
||||
CODE_SIGNING_ALLOWED: NO
|
||||
TARGETED_DEVICE_FAMILY: "1"
|
||||
SWIFT_VERSION: "5.9"
|
||||
|
||||
AdaptiveUIKitFixture:
|
||||
type: application
|
||||
platform: iOS
|
||||
deploymentTarget: "16.0"
|
||||
sources:
|
||||
- path: Sources/AdaptiveUIKitFixture
|
||||
info:
|
||||
path: Sources/AdaptiveUIKitFixture/Info.plist
|
||||
properties:
|
||||
CFBundleDisplayName: UIKit QA Gallery
|
||||
UILaunchScreen: {}
|
||||
UISupportedInterfaceOrientations: [UIInterfaceOrientationPortrait]
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.gstack.iosqa.adaptive.uikit
|
||||
CODE_SIGNING_ALLOWED: NO
|
||||
TARGETED_DEVICE_FAMILY: "1"
|
||||
SWIFT_VERSION: "5.9"
|
||||
|
||||
AdaptiveFixtureUITests:
|
||||
type: bundle.ui-testing
|
||||
platform: iOS
|
||||
deploymentTarget: "16.0"
|
||||
sources:
|
||||
- path: Tests/AdaptiveFixtureUITests
|
||||
dependencies:
|
||||
- target: AdaptiveSwiftUIFixture
|
||||
- target: AdaptiveUIKitFixture
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.gstack.iosqa.adaptive.uitests
|
||||
GENERATE_INFOPLIST_FILE: YES
|
||||
CODE_SIGNING_ALLOWED: NO
|
||||
SWIFT_VERSION: "5.9"
|
||||
|
||||
schemes:
|
||||
AdaptiveFixtureUITests:
|
||||
build:
|
||||
targets:
|
||||
AdaptiveSwiftUIFixture: all
|
||||
AdaptiveUIKitFixture: all
|
||||
AdaptiveFixtureUITests: [test]
|
||||
test:
|
||||
config: Debug
|
||||
targets:
|
||||
- AdaptiveFixtureUITests
|
||||
environmentVariables:
|
||||
GSTACK_IOS_QA_FLOW_PATH: $(GSTACK_IOS_QA_FLOW_PATH_VALUE)
|
||||
GSTACK_IOS_QA_FLOW_JSON_BASE64: $(GSTACK_IOS_QA_FLOW_JSON_BASE64_VALUE)
|
||||
GSTACK_IOS_QA_TARGET_KIND: $(GSTACK_IOS_QA_TARGET_KIND_VALUE)
|
||||
|
||||
Reference in New Issue
Block a user