@swmansion/argent 0.22.2-next.9 → 0.23.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +1 -1
  2. package/bin/darwin/simulator-server +0 -0
  3. package/bin/linux/simulator-server +0 -0
  4. package/bin/linux-arm64/simulator-server +0 -0
  5. package/bin/win32/simulator-server.exe +0 -0
  6. package/dist/cli-cmds.mjs +25 -2
  7. package/dist/installer.mjs +210 -8
  8. package/dist/ios-device-runner/ArgentRunner/ArgentRunner/RunnerHostApp.swift +37 -0
  9. package/dist/ios-device-runner/ArgentRunner/ArgentRunner.xcodeproj/project.pbxproj +389 -0
  10. package/dist/ios-device-runner/ArgentRunner/ArgentRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  11. package/dist/ios-device-runner/ArgentRunner/ArgentRunner.xcodeproj/xcshareddata/xcschemes/ArgentRunner.xcscheme +88 -0
  12. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentExceptionGuard.h +16 -0
  13. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentExceptionGuard.m +16 -0
  14. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Commands.swift +280 -0
  15. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Gestures.swift +149 -0
  16. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Screenshot.swift +21 -0
  17. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Snapshot.swift +327 -0
  18. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+TextEntry.swift +157 -0
  19. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession.swift +410 -0
  20. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerUITests-Bridging-Header.h +1 -0
  21. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/CommandJournal.swift +134 -0
  22. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/MainThreadGate.swift +111 -0
  23. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/RunnerHTTPServer.swift +267 -0
  24. package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/RunnerProtocol.swift +331 -0
  25. package/dist/mcp-server.mjs +24 -1
  26. package/dist/tool-server.cjs +4232 -1388
  27. package/package.json +1 -1
  28. package/rules/argent.md +8 -3
  29. package/skills/argent-create-flow/SKILL.md +1 -0
  30. package/skills/argent-device-interact/SKILL.md +2 -0
  31. package/skills/argent-ios-device-interact/SKILL.md +18 -0
  32. package/skills/argent-ios-device-setup/SKILL.md +20 -0
  33. package/skills/argent-qa-flows/SKILL.md +2 -0
  34. package/skills/argent-screenshot-diff/SKILL.md +2 -0
@@ -0,0 +1,389 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 77;
7
+ objects = {
8
+
9
+ /* Begin PBXContainerItemProxy section */
10
+ A00000000000000000000025 /* PBXContainerItemProxy */ = {
11
+ isa = PBXContainerItemProxy;
12
+ containerPortal = A00000000000000000000001 /* Project object */;
13
+ proxyType = 1;
14
+ remoteGlobalIDString = A00000000000000000000011;
15
+ remoteInfo = ArgentRunner;
16
+ };
17
+ /* End PBXContainerItemProxy section */
18
+
19
+ /* Begin PBXFileReference section */
20
+ A00000000000000000000007 /* ArgentRunner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ArgentRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
21
+ A00000000000000000000008 /* ArgentRunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ArgentRunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
22
+ /* End PBXFileReference section */
23
+
24
+ /* Begin PBXFileSystemSynchronizedRootGroup section */
25
+ A00000000000000000000009 /* ArgentRunner */ = {
26
+ isa = PBXFileSystemSynchronizedRootGroup;
27
+ path = ArgentRunner;
28
+ sourceTree = "<group>";
29
+ };
30
+ A00000000000000000000010 /* ArgentRunnerUITests */ = {
31
+ isa = PBXFileSystemSynchronizedRootGroup;
32
+ path = ArgentRunnerUITests;
33
+ sourceTree = "<group>";
34
+ };
35
+ /* End PBXFileSystemSynchronizedRootGroup section */
36
+
37
+ /* Begin PBXFrameworksBuildPhase section */
38
+ A00000000000000000000016 /* Frameworks */ = {
39
+ isa = PBXFrameworksBuildPhase;
40
+ buildActionMask = 2147483647;
41
+ files = (
42
+ );
43
+ runOnlyForDeploymentPostprocessing = 0;
44
+ };
45
+ A00000000000000000000023 /* Frameworks */ = {
46
+ isa = PBXFrameworksBuildPhase;
47
+ buildActionMask = 2147483647;
48
+ files = (
49
+ );
50
+ runOnlyForDeploymentPostprocessing = 0;
51
+ };
52
+ /* End PBXFrameworksBuildPhase section */
53
+
54
+ /* Begin PBXGroup section */
55
+ A00000000000000000000005 = {
56
+ isa = PBXGroup;
57
+ children = (
58
+ A00000000000000000000009 /* ArgentRunner */,
59
+ A00000000000000000000010 /* ArgentRunnerUITests */,
60
+ A00000000000000000000006 /* Products */,
61
+ );
62
+ sourceTree = "<group>";
63
+ };
64
+ A00000000000000000000006 /* Products */ = {
65
+ isa = PBXGroup;
66
+ children = (
67
+ A00000000000000000000007 /* ArgentRunner.app */,
68
+ A00000000000000000000008 /* ArgentRunnerUITests.xctest */,
69
+ );
70
+ name = Products;
71
+ sourceTree = "<group>";
72
+ };
73
+ /* End PBXGroup section */
74
+
75
+ /* Begin PBXNativeTarget section */
76
+ A00000000000000000000011 /* ArgentRunner */ = {
77
+ isa = PBXNativeTarget;
78
+ buildConfigurationList = A00000000000000000000012 /* Build configuration list for PBXNativeTarget "ArgentRunner" */;
79
+ buildPhases = (
80
+ A00000000000000000000015 /* Sources */,
81
+ A00000000000000000000016 /* Frameworks */,
82
+ A00000000000000000000017 /* Resources */,
83
+ );
84
+ buildRules = (
85
+ );
86
+ dependencies = (
87
+ );
88
+ fileSystemSynchronizedGroups = (
89
+ A00000000000000000000009 /* ArgentRunner */,
90
+ );
91
+ name = ArgentRunner;
92
+ packageProductDependencies = (
93
+ );
94
+ productName = ArgentRunner;
95
+ productReference = A00000000000000000000007 /* ArgentRunner.app */;
96
+ productType = "com.apple.product-type.application";
97
+ };
98
+ A00000000000000000000018 /* ArgentRunnerUITests */ = {
99
+ isa = PBXNativeTarget;
100
+ buildConfigurationList = A00000000000000000000019 /* Build configuration list for PBXNativeTarget "ArgentRunnerUITests" */;
101
+ buildPhases = (
102
+ A00000000000000000000022 /* Sources */,
103
+ A00000000000000000000023 /* Frameworks */,
104
+ A00000000000000000000024 /* Resources */,
105
+ );
106
+ buildRules = (
107
+ );
108
+ dependencies = (
109
+ A00000000000000000000026 /* PBXTargetDependency */,
110
+ );
111
+ fileSystemSynchronizedGroups = (
112
+ A00000000000000000000010 /* ArgentRunnerUITests */,
113
+ );
114
+ name = ArgentRunnerUITests;
115
+ packageProductDependencies = (
116
+ );
117
+ productName = ArgentRunnerUITests;
118
+ productReference = A00000000000000000000008 /* ArgentRunnerUITests.xctest */;
119
+ productType = "com.apple.product-type.bundle.ui-testing";
120
+ };
121
+ /* End PBXNativeTarget section */
122
+
123
+ /* Begin PBXProject section */
124
+ A00000000000000000000001 /* Project object */ = {
125
+ isa = PBXProject;
126
+ attributes = {
127
+ BuildIndependentTargetsInParallel = 1;
128
+ LastUpgradeCheck = 2600;
129
+ TargetAttributes = {
130
+ A00000000000000000000011 = {
131
+ CreatedOnToolsVersion = 26.0;
132
+ };
133
+ A00000000000000000000018 = {
134
+ CreatedOnToolsVersion = 26.0;
135
+ TestTargetID = A00000000000000000000011;
136
+ };
137
+ };
138
+ };
139
+ buildConfigurationList = A00000000000000000000002 /* Build configuration list for PBXProject "ArgentRunner" */;
140
+ developmentRegion = en;
141
+ hasScannedForEncodings = 0;
142
+ knownRegions = (
143
+ en,
144
+ Base,
145
+ );
146
+ mainGroup = A00000000000000000000005;
147
+ minimizedProjectReferenceProxies = 1;
148
+ preferredProjectObjectVersion = 77;
149
+ productRefGroup = A00000000000000000000006 /* Products */;
150
+ projectDirPath = "";
151
+ projectRoot = "";
152
+ targets = (
153
+ A00000000000000000000011 /* ArgentRunner */,
154
+ A00000000000000000000018 /* ArgentRunnerUITests */,
155
+ );
156
+ };
157
+ /* End PBXProject section */
158
+
159
+ /* Begin PBXResourcesBuildPhase section */
160
+ A00000000000000000000017 /* Resources */ = {
161
+ isa = PBXResourcesBuildPhase;
162
+ buildActionMask = 2147483647;
163
+ files = (
164
+ );
165
+ runOnlyForDeploymentPostprocessing = 0;
166
+ };
167
+ A00000000000000000000024 /* Resources */ = {
168
+ isa = PBXResourcesBuildPhase;
169
+ buildActionMask = 2147483647;
170
+ files = (
171
+ );
172
+ runOnlyForDeploymentPostprocessing = 0;
173
+ };
174
+ /* End PBXResourcesBuildPhase section */
175
+
176
+ /* Begin PBXSourcesBuildPhase section */
177
+ A00000000000000000000015 /* Sources */ = {
178
+ isa = PBXSourcesBuildPhase;
179
+ buildActionMask = 2147483647;
180
+ files = (
181
+ );
182
+ runOnlyForDeploymentPostprocessing = 0;
183
+ };
184
+ A00000000000000000000022 /* Sources */ = {
185
+ isa = PBXSourcesBuildPhase;
186
+ buildActionMask = 2147483647;
187
+ files = (
188
+ );
189
+ runOnlyForDeploymentPostprocessing = 0;
190
+ };
191
+ /* End PBXSourcesBuildPhase section */
192
+
193
+ /* Begin PBXTargetDependency section */
194
+ A00000000000000000000026 /* PBXTargetDependency */ = {
195
+ isa = PBXTargetDependency;
196
+ target = A00000000000000000000011 /* ArgentRunner */;
197
+ targetProxy = A00000000000000000000025 /* PBXContainerItemProxy */;
198
+ };
199
+ /* End PBXTargetDependency section */
200
+
201
+ /* Begin XCBuildConfiguration section */
202
+ A00000000000000000000003 /* Debug */ = {
203
+ isa = XCBuildConfiguration;
204
+ buildSettings = {
205
+ ALWAYS_SEARCH_USER_PATHS = NO;
206
+ ARGENT_RUNNER_APP_BUNDLE_ID = com.argent.ios.runner;
207
+ ARGENT_RUNNER_TEST_BUNDLE_ID = "$(ARGENT_RUNNER_APP_BUNDLE_ID).uitests";
208
+ CLANG_ANALYZER_NONNULL = YES;
209
+ CLANG_ENABLE_MODULES = YES;
210
+ CLANG_ENABLE_OBJC_ARC = YES;
211
+ CLANG_ENABLE_OBJC_WEAK = YES;
212
+ CLANG_WARN_BOOL_CONVERSION = YES;
213
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
214
+ CLANG_WARN_EMPTY_BODY = YES;
215
+ CLANG_WARN_ENUM_CONVERSION = YES;
216
+ CLANG_WARN_INFINITE_RECURSION = YES;
217
+ CLANG_WARN_INT_CONVERSION = YES;
218
+ CLANG_WARN_UNREACHABLE_CODE = YES;
219
+ COPY_PHASE_STRIP = NO;
220
+ DEBUG_INFORMATION_FORMAT = dwarf;
221
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
222
+ ENABLE_TESTABILITY = YES;
223
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
224
+ GCC_C_LANGUAGE_STANDARD = gnu17;
225
+ GCC_NO_COMMON_BLOCKS = YES;
226
+ GCC_OPTIMIZATION_LEVEL = 0;
227
+ GCC_PREPROCESSOR_DEFINITIONS = (
228
+ "DEBUG=1",
229
+ "$(inherited)",
230
+ );
231
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
232
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
233
+ GCC_WARN_UNUSED_FUNCTION = YES;
234
+ GCC_WARN_UNUSED_VARIABLE = YES;
235
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
236
+ ONLY_ACTIVE_ARCH = YES;
237
+ SDKROOT = iphoneos;
238
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
239
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
240
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
241
+ SWIFT_VERSION = 5.0;
242
+ TARGETED_DEVICE_FAMILY = 1;
243
+ };
244
+ name = Debug;
245
+ };
246
+ A00000000000000000000004 /* Release */ = {
247
+ isa = XCBuildConfiguration;
248
+ buildSettings = {
249
+ ALWAYS_SEARCH_USER_PATHS = NO;
250
+ ARGENT_RUNNER_APP_BUNDLE_ID = com.argent.ios.runner;
251
+ ARGENT_RUNNER_TEST_BUNDLE_ID = "$(ARGENT_RUNNER_APP_BUNDLE_ID).uitests";
252
+ CLANG_ANALYZER_NONNULL = YES;
253
+ CLANG_ENABLE_MODULES = YES;
254
+ CLANG_ENABLE_OBJC_ARC = YES;
255
+ CLANG_ENABLE_OBJC_WEAK = YES;
256
+ CLANG_WARN_BOOL_CONVERSION = YES;
257
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
258
+ CLANG_WARN_EMPTY_BODY = YES;
259
+ CLANG_WARN_ENUM_CONVERSION = YES;
260
+ CLANG_WARN_INFINITE_RECURSION = YES;
261
+ CLANG_WARN_INT_CONVERSION = YES;
262
+ CLANG_WARN_UNREACHABLE_CODE = YES;
263
+ COPY_PHASE_STRIP = NO;
264
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
265
+ ENABLE_NS_ASSERTIONS = NO;
266
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
267
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
268
+ GCC_C_LANGUAGE_STANDARD = gnu17;
269
+ GCC_NO_COMMON_BLOCKS = YES;
270
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
271
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
272
+ GCC_WARN_UNUSED_FUNCTION = YES;
273
+ GCC_WARN_UNUSED_VARIABLE = YES;
274
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
275
+ SDKROOT = iphoneos;
276
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
277
+ SWIFT_COMPILATION_MODE = wholemodule;
278
+ SWIFT_VERSION = 5.0;
279
+ TARGETED_DEVICE_FAMILY = 1;
280
+ VALIDATE_PRODUCT = YES;
281
+ };
282
+ name = Release;
283
+ };
284
+ A00000000000000000000013 /* Debug */ = {
285
+ isa = XCBuildConfiguration;
286
+ buildSettings = {
287
+ CODE_SIGN_STYLE = Automatic;
288
+ CURRENT_PROJECT_VERSION = 1;
289
+ GENERATE_INFOPLIST_FILE = YES;
290
+ INFOPLIST_KEY_UIApplicationSceneManifest_Generation = NO;
291
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
292
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
293
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
294
+ LD_RUNPATH_SEARCH_PATHS = (
295
+ "$(inherited)",
296
+ "@executable_path/Frameworks",
297
+ );
298
+ MARKETING_VERSION = 1.0;
299
+ PRODUCT_BUNDLE_IDENTIFIER = "$(ARGENT_RUNNER_APP_BUNDLE_ID)";
300
+ PRODUCT_NAME = "$(TARGET_NAME)";
301
+ SWIFT_EMIT_LOC_STRINGS = YES;
302
+ };
303
+ name = Debug;
304
+ };
305
+ A00000000000000000000014 /* Release */ = {
306
+ isa = XCBuildConfiguration;
307
+ buildSettings = {
308
+ CODE_SIGN_STYLE = Automatic;
309
+ CURRENT_PROJECT_VERSION = 1;
310
+ GENERATE_INFOPLIST_FILE = YES;
311
+ INFOPLIST_KEY_UIApplicationSceneManifest_Generation = NO;
312
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
313
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
314
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
315
+ LD_RUNPATH_SEARCH_PATHS = (
316
+ "$(inherited)",
317
+ "@executable_path/Frameworks",
318
+ );
319
+ MARKETING_VERSION = 1.0;
320
+ PRODUCT_BUNDLE_IDENTIFIER = "$(ARGENT_RUNNER_APP_BUNDLE_ID)";
321
+ PRODUCT_NAME = "$(TARGET_NAME)";
322
+ SWIFT_EMIT_LOC_STRINGS = YES;
323
+ };
324
+ name = Release;
325
+ };
326
+ A00000000000000000000020 /* Debug */ = {
327
+ isa = XCBuildConfiguration;
328
+ buildSettings = {
329
+ CODE_SIGN_STYLE = Automatic;
330
+ CURRENT_PROJECT_VERSION = 1;
331
+ GENERATE_INFOPLIST_FILE = YES;
332
+ MARKETING_VERSION = 1.0;
333
+ PRODUCT_BUNDLE_IDENTIFIER = "$(ARGENT_RUNNER_TEST_BUNDLE_ID)";
334
+ PRODUCT_NAME = "$(TARGET_NAME)";
335
+ SWIFT_EMIT_LOC_STRINGS = NO;
336
+ SWIFT_OBJC_BRIDGING_HEADER = "ArgentRunnerUITests/ArgentRunnerUITests-Bridging-Header.h";
337
+ TEST_TARGET_NAME = ArgentRunner;
338
+ };
339
+ name = Debug;
340
+ };
341
+ A00000000000000000000021 /* Release */ = {
342
+ isa = XCBuildConfiguration;
343
+ buildSettings = {
344
+ CODE_SIGN_STYLE = Automatic;
345
+ CURRENT_PROJECT_VERSION = 1;
346
+ GENERATE_INFOPLIST_FILE = YES;
347
+ MARKETING_VERSION = 1.0;
348
+ PRODUCT_BUNDLE_IDENTIFIER = "$(ARGENT_RUNNER_TEST_BUNDLE_ID)";
349
+ PRODUCT_NAME = "$(TARGET_NAME)";
350
+ SWIFT_EMIT_LOC_STRINGS = NO;
351
+ SWIFT_OBJC_BRIDGING_HEADER = "ArgentRunnerUITests/ArgentRunnerUITests-Bridging-Header.h";
352
+ TEST_TARGET_NAME = ArgentRunner;
353
+ };
354
+ name = Release;
355
+ };
356
+ /* End XCBuildConfiguration section */
357
+
358
+ /* Begin XCConfigurationList section */
359
+ A00000000000000000000002 /* Build configuration list for PBXProject "ArgentRunner" */ = {
360
+ isa = XCConfigurationList;
361
+ buildConfigurations = (
362
+ A00000000000000000000003 /* Debug */,
363
+ A00000000000000000000004 /* Release */,
364
+ );
365
+ defaultConfigurationIsVisible = 0;
366
+ defaultConfigurationName = Release;
367
+ };
368
+ A00000000000000000000012 /* Build configuration list for PBXNativeTarget "ArgentRunner" */ = {
369
+ isa = XCConfigurationList;
370
+ buildConfigurations = (
371
+ A00000000000000000000013 /* Debug */,
372
+ A00000000000000000000014 /* Release */,
373
+ );
374
+ defaultConfigurationIsVisible = 0;
375
+ defaultConfigurationName = Release;
376
+ };
377
+ A00000000000000000000019 /* Build configuration list for PBXNativeTarget "ArgentRunnerUITests" */ = {
378
+ isa = XCConfigurationList;
379
+ buildConfigurations = (
380
+ A00000000000000000000020 /* Debug */,
381
+ A00000000000000000000021 /* Release */,
382
+ );
383
+ defaultConfigurationIsVisible = 0;
384
+ defaultConfigurationName = Release;
385
+ };
386
+ /* End XCConfigurationList section */
387
+ };
388
+ rootObject = A00000000000000000000001 /* Project object */;
389
+ }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,88 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Scheme
3
+ LastUpgradeVersion = "2600"
4
+ version = "1.7">
5
+ <BuildAction
6
+ parallelizeBuildables = "YES"
7
+ buildImplicitDependencies = "YES">
8
+ <BuildActionEntries>
9
+ <BuildActionEntry
10
+ buildForTesting = "YES"
11
+ buildForRunning = "YES"
12
+ buildForProfiling = "YES"
13
+ buildForArchiving = "YES"
14
+ buildForAnalyzing = "YES">
15
+ <BuildableReference
16
+ BuildableIdentifier = "primary"
17
+ BlueprintIdentifier = "A00000000000000000000011"
18
+ BuildableName = "ArgentRunner.app"
19
+ BlueprintName = "ArgentRunner"
20
+ ReferencedContainer = "container:ArgentRunner.xcodeproj">
21
+ </BuildableReference>
22
+ </BuildActionEntry>
23
+ </BuildActionEntries>
24
+ </BuildAction>
25
+ <TestAction
26
+ buildConfiguration = "Debug"
27
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
+ shouldUseLaunchSchemeArgsEnv = "YES">
30
+ <Testables>
31
+ <TestableReference
32
+ skipped = "NO">
33
+ <BuildableReference
34
+ BuildableIdentifier = "primary"
35
+ BlueprintIdentifier = "A00000000000000000000018"
36
+ BuildableName = "ArgentRunnerUITests.xctest"
37
+ BlueprintName = "ArgentRunnerUITests"
38
+ ReferencedContainer = "container:ArgentRunner.xcodeproj">
39
+ </BuildableReference>
40
+ </TestableReference>
41
+ </Testables>
42
+ </TestAction>
43
+ <LaunchAction
44
+ buildConfiguration = "Debug"
45
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
46
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
47
+ launchStyle = "0"
48
+ useCustomWorkingDirectory = "NO"
49
+ ignoresPersistentStateOnLaunch = "NO"
50
+ debugDocumentVersioning = "YES"
51
+ debugServiceExtension = "internal"
52
+ allowLocationSimulation = "YES">
53
+ <BuildableProductRunnable
54
+ runnableDebuggingMode = "0">
55
+ <BuildableReference
56
+ BuildableIdentifier = "primary"
57
+ BlueprintIdentifier = "A00000000000000000000011"
58
+ BuildableName = "ArgentRunner.app"
59
+ BlueprintName = "ArgentRunner"
60
+ ReferencedContainer = "container:ArgentRunner.xcodeproj">
61
+ </BuildableReference>
62
+ </BuildableProductRunnable>
63
+ </LaunchAction>
64
+ <ProfileAction
65
+ buildConfiguration = "Release"
66
+ shouldUseLaunchSchemeArgsEnv = "YES"
67
+ savedToolIdentifier = ""
68
+ useCustomWorkingDirectory = "NO"
69
+ debugDocumentVersioning = "YES">
70
+ <BuildableProductRunnable
71
+ runnableDebuggingMode = "0">
72
+ <BuildableReference
73
+ BuildableIdentifier = "primary"
74
+ BlueprintIdentifier = "A00000000000000000000011"
75
+ BuildableName = "ArgentRunner.app"
76
+ BlueprintName = "ArgentRunner"
77
+ ReferencedContainer = "container:ArgentRunner.xcodeproj">
78
+ </BuildableReference>
79
+ </BuildableProductRunnable>
80
+ </ProfileAction>
81
+ <AnalyzeAction
82
+ buildConfiguration = "Debug">
83
+ </AnalyzeAction>
84
+ <ArchiveAction
85
+ buildConfiguration = "Release"
86
+ revealArchiveInOrganizer = "YES">
87
+ </ArchiveAction>
88
+ </Scheme>
@@ -0,0 +1,16 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ NS_ASSUME_NONNULL_BEGIN
4
+
5
+ /// Runs a block inside an Objective-C @try so the NSExceptions XCTest's
6
+ /// accessibility machinery throws (stale elements, AX server errors) surface
7
+ /// as a returned description instead of crashing the whole test process;
8
+ /// Swift cannot catch them on its own.
9
+ @interface ArgentExceptionGuard : NSObject
10
+
11
+ /// Returns nil when the block completed, otherwise "Name: reason".
12
+ + (NSString *_Nullable)runCatching:(NS_NOESCAPE dispatch_block_t)block;
13
+
14
+ @end
15
+
16
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,16 @@
1
+ #import "ArgentExceptionGuard.h"
2
+
3
+ @implementation ArgentExceptionGuard
4
+
5
+ + (NSString *_Nullable)runCatching:(NS_NOESCAPE dispatch_block_t)block {
6
+ @try {
7
+ block();
8
+ return nil;
9
+ } @catch (NSException *exception) {
10
+ NSString *name = exception.name ?: @"NSException";
11
+ NSString *reason = exception.reason ?: @"unhandled Objective-C exception";
12
+ return [NSString stringWithFormat:@"%@: %@", name, reason];
13
+ }
14
+ }
15
+
16
+ @end