mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-21 20:30:47 +02:00
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>
120 lines
3.4 KiB
YAML
120 lines
3.4 KiB
YAML
name: FixtureApp
|
|
options:
|
|
deploymentTarget:
|
|
iOS: "16.0"
|
|
bundleIdPrefix: com.gstack.iosqa
|
|
developmentLanguage: en
|
|
createIntermediateGroups: true
|
|
|
|
settings:
|
|
DEVELOPMENT_TEAM: 623FYQ2M88
|
|
CODE_SIGN_STYLE: Automatic
|
|
ENABLE_USER_SCRIPT_SANDBOXING: NO
|
|
# Personal-team bundle IDs are scoped per-team; this prefix is unique.
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.gstack.iosqa.fixture
|
|
|
|
# Local SPM package providing DebugBridgeCore + DebugBridgeUI as dependencies.
|
|
# packages keyword (with `path:`) means a sibling local package next to project.yml.
|
|
packages:
|
|
DebugBridge:
|
|
path: .
|
|
|
|
targets:
|
|
FixtureApp:
|
|
type: application
|
|
platform: iOS
|
|
deploymentTarget: "16.0"
|
|
sources:
|
|
- path: Sources/FixtureApp
|
|
dependencies:
|
|
- package: DebugBridge
|
|
product: DebugBridgeCore
|
|
- package: DebugBridge
|
|
product: DebugBridgeUI
|
|
info:
|
|
path: Sources/FixtureApp/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: ios-qa fixture
|
|
UILaunchScreen: {}
|
|
UISupportedInterfaceOrientations: [UIInterfaceOrientationPortrait]
|
|
UIRequiredDeviceCapabilities: [arm64]
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.gstack.iosqa.fixture
|
|
DEVELOPMENT_TEAM: 623FYQ2M88
|
|
CODE_SIGN_STYLE: Automatic
|
|
TARGETED_DEVICE_FAMILY: "1"
|
|
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)
|