@swmansion/argent 0.23.0 → 0.23.1-next.1
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.
- package/README.md +1 -1
- package/bin/argent-android-devtools-0.1.0.apk +0 -0
- package/bin/darwin/ax-service +0 -0
- package/bin/darwin/tvos-ax-service +0 -0
- package/bin/darwin/tvos-hid-daemon +0 -0
- package/bin/tcp/ax-service +0 -0
- package/dist/cli-cmds.mjs +48 -20
- package/dist/installer.mjs +46 -18
- package/dist/ios-device-runner/ArgentRunner/ArgentRunner/RunnerHostApp.swift +37 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunner.xcodeproj/project.pbxproj +389 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunner.xcodeproj/xcshareddata/xcschemes/ArgentRunner.xcscheme +88 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentExceptionGuard.h +16 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentExceptionGuard.m +16 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Commands.swift +280 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Gestures.swift +149 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Screenshot.swift +21 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+Snapshot.swift +327 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession+TextEntry.swift +157 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerSession.swift +410 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/ArgentRunnerUITests-Bridging-Header.h +1 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/CommandJournal.swift +134 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/MainThreadGate.swift +111 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/RunnerHTTPServer.swift +267 -0
- package/dist/ios-device-runner/ArgentRunner/ArgentRunnerUITests/RunnerProtocol.swift +331 -0
- package/dist/mcp-server.mjs +47 -19
- package/dist/tool-server.cjs +4224 -1388
- package/dylibs/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/libKeyboardPatch.dylib +0 -0
- package/dylibs/libNativeDevtoolsIos.dylib +0 -0
- package/dylibs/tcp/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/tcp/libKeyboardPatch.dylib +0 -0
- package/dylibs/tcp/libNativeDevtoolsIos.dylib +0 -0
- package/dylibs/tvos/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/tvos/libKeyboardPatch.dylib +0 -0
- package/dylibs/tvos/libNativeDevtoolsIos.dylib +0 -0
- package/package.json +1 -1
- package/rules/argent.md +8 -3
- package/skills/argent-create-flow/SKILL.md +1 -0
- package/skills/argent-device-interact/SKILL.md +2 -0
- package/skills/argent-ios-device-interact/SKILL.md +18 -0
- package/skills/argent-ios-device-setup/SKILL.md +20 -0
- package/skills/argent-qa-flows/SKILL.md +2 -0
- package/skills/argent-screenshot-diff/SKILL.md +2 -0
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Argent drives a growing set of targets through a single toolkit, each with the r
|
|
|
23
23
|
|
|
24
24
|
| Platform | Targets | Interaction |
|
|
25
25
|
| ----------------- | ----------------------------------------------------------------------- | ---------------- |
|
|
26
|
-
| **iOS** | Simulators
|
|
26
|
+
| **iOS** | Simulators and physical iPhones (USB) | Touch / gesture |
|
|
27
27
|
| **Android** | Emulators (AVDs) and physical devices over adb | Touch / gesture |
|
|
28
28
|
| **TV** | Apple TV (tvOS), Android TV / Google TV, Amazon Fire TV (Vega) | D-pad / remote |
|
|
29
29
|
| **Desktop & web** | Electron and Chromium apps (incl. React Native Web / Expo web) over CDP | Mouse / keyboard |
|
|
Binary file
|
package/bin/darwin/ax-service
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/tcp/ax-service
CHANGED
|
Binary file
|
package/dist/cli-cmds.mjs
CHANGED
|
@@ -1805,14 +1805,10 @@ async function sweepDeadStateFiles() {
|
|
|
1805
1805
|
continue;
|
|
1806
1806
|
}
|
|
1807
1807
|
if (fs.existsSync(fresh.bundlePath)) continue;
|
|
1808
|
-
|
|
1809
|
-
if (guarded && !processCommandMatches(fresh.pid, fresh.bundlePath)) continue;
|
|
1808
|
+
if (!couldBeOurToolServer(fresh.pid, fresh.bundlePath)) continue;
|
|
1810
1809
|
await unlink(file).catch(() => {
|
|
1811
1810
|
});
|
|
1812
|
-
void terminatePid(
|
|
1813
|
-
fresh.pid,
|
|
1814
|
-
guarded ? () => processCommandMatches(fresh.pid, fresh.bundlePath) : void 0
|
|
1815
|
-
);
|
|
1811
|
+
void terminatePid(fresh.pid, () => couldBeOurToolServer(fresh.pid, fresh.bundlePath));
|
|
1816
1812
|
}
|
|
1817
1813
|
}
|
|
1818
1814
|
var readState = readToolsServerState;
|
|
@@ -1851,20 +1847,37 @@ async function killToolServer(bundlePath) {
|
|
|
1851
1847
|
await terminatePid(state2.pid);
|
|
1852
1848
|
await clearToolsServerState(bundlePath ?? state2.bundlePath);
|
|
1853
1849
|
}
|
|
1854
|
-
|
|
1850
|
+
var PS_BIN = ["/bin/ps", "/usr/bin/ps"].find((p) => fs.existsSync(p)) ?? "ps";
|
|
1851
|
+
var PS_WIDTH_FLAGS = ["-ww"];
|
|
1852
|
+
function readProcessCommandLine(pid, flags2 = PS_WIDTH_FLAGS) {
|
|
1853
|
+
return execFileSync(PS_BIN, [...flags2, "-p", String(pid), "-o", "command="], {
|
|
1854
|
+
encoding: "utf8",
|
|
1855
|
+
timeout: 2e3,
|
|
1856
|
+
// A recycled pid can sit on a process with an argv past Node's 1 MiB exec
|
|
1857
|
+
// default, where the overrun surfaces as ENOBUFS instead of a command line.
|
|
1858
|
+
// Same ceiling as tool-server's vega-process ps probes.
|
|
1859
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
1860
|
+
// Piping ps's stderr is what puts a rejected flag ("ps: invalid option --
|
|
1861
|
+
// 'w'") into the thrown error's message.
|
|
1862
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
1863
|
+
}).trim();
|
|
1864
|
+
}
|
|
1865
|
+
function couldBeOurToolServer(pid, marker) {
|
|
1855
1866
|
if (!marker) return false;
|
|
1867
|
+
if (process.platform === "win32") return true;
|
|
1868
|
+
let cmd;
|
|
1856
1869
|
try {
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
const escaped = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1864
|
-
return new RegExp(`(?:^|\\s)${escaped} start(?:\\s|$)`).test(cmd);
|
|
1865
|
-
} catch {
|
|
1870
|
+
cmd = readProcessCommandLine(pid);
|
|
1871
|
+
} catch (err) {
|
|
1872
|
+
process.stderr.write(
|
|
1873
|
+
`[launcher] ps could not read pid ${pid}'s command line; leaving it alone: ${String(err)}
|
|
1874
|
+
`
|
|
1875
|
+
);
|
|
1866
1876
|
return false;
|
|
1867
1877
|
}
|
|
1878
|
+
if (!cmd) return false;
|
|
1879
|
+
const escaped = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1880
|
+
return new RegExp(`(?:^|\\s)${escaped} start(?:\\s|$)`).test(cmd);
|
|
1868
1881
|
}
|
|
1869
1882
|
var LOCK_WAIT_TIMEOUT_MS = 3e4;
|
|
1870
1883
|
var LOCK_STALE_MS = 45e3;
|
|
@@ -1953,8 +1966,8 @@ async function ensureToolsServer(paths) {
|
|
|
1953
1966
|
const state2 = await readState(paths.bundlePath);
|
|
1954
1967
|
const reuse = await reusableHandle(state2, paths.bundlePath, paths.version);
|
|
1955
1968
|
if (reuse) return reuse;
|
|
1956
|
-
if (state2 && state2.managed === "autospawn" && state2.bundlePath === paths.bundlePath && isProcessAlive(state2.pid) &&
|
|
1957
|
-
await terminatePid(state2.pid, () =>
|
|
1969
|
+
if (state2 && state2.managed === "autospawn" && state2.bundlePath === paths.bundlePath && isProcessAlive(state2.pid) && couldBeOurToolServer(state2.pid, state2.bundlePath)) {
|
|
1970
|
+
await terminatePid(state2.pid, () => couldBeOurToolServer(state2.pid, state2.bundlePath));
|
|
1958
1971
|
}
|
|
1959
1972
|
await clearToolsServerState(paths.bundlePath);
|
|
1960
1973
|
await sweepDeadStateFiles();
|
|
@@ -2290,6 +2303,18 @@ var FAILURE_CODES = {
|
|
|
2290
2303
|
SIMULATOR_COMMAND_REJECTED: "SIMULATOR_COMMAND_REJECTED",
|
|
2291
2304
|
SIMULATOR_COMMAND_ACK_TIMEOUT: "SIMULATOR_COMMAND_ACK_TIMEOUT",
|
|
2292
2305
|
SIMULATOR_COMMAND_TRANSPORT_FAILED: "SIMULATOR_COMMAND_TRANSPORT_FAILED",
|
|
2306
|
+
// Physical iOS devices: the XCUITest-runner blueprint lifecycle, the runner
|
|
2307
|
+
// command client, and the `xcrun devicectl` subprocess wrapper (simulators
|
|
2308
|
+
// use the SIMULATOR_* set).
|
|
2309
|
+
IOS_DEVICE_RUNNER_FACTORY_OPTIONS_MISSING: "IOS_DEVICE_RUNNER_FACTORY_OPTIONS_MISSING",
|
|
2310
|
+
IOS_DEVICE_RUNNER_NOT_READY: "IOS_DEVICE_RUNNER_NOT_READY",
|
|
2311
|
+
IOS_DEVICE_RUNNER_TERMINATED: "IOS_DEVICE_RUNNER_TERMINATED",
|
|
2312
|
+
IOS_DEVICE_RUNNER_EXITED: "IOS_DEVICE_RUNNER_EXITED",
|
|
2313
|
+
// The runner answered a command with an ok:false envelope.
|
|
2314
|
+
IOS_DEVICE_RUNNER_COMMAND_FAILED: "IOS_DEVICE_RUNNER_COMMAND_FAILED",
|
|
2315
|
+
// The usbmux or HTTP exchange with a reachable runner failed.
|
|
2316
|
+
IOS_DEVICE_RUNNER_TRANSPORT_FAILED: "IOS_DEVICE_RUNNER_TRANSPORT_FAILED",
|
|
2317
|
+
IOS_DEVICECTL_COMMAND_FAILED: "IOS_DEVICECTL_COMMAND_FAILED",
|
|
2293
2318
|
AX_QUERY_TIMEOUT: "AX_QUERY_TIMEOUT",
|
|
2294
2319
|
AX_DAEMON_READY_TIMEOUT: "AX_DAEMON_READY_TIMEOUT",
|
|
2295
2320
|
AX_DAEMON_EXITED_BEFORE_READY: "AX_DAEMON_EXITED_BEFORE_READY",
|
|
@@ -2460,6 +2485,7 @@ var FAILURE_CODES = {
|
|
|
2460
2485
|
KEYBOARD_KEY_UNSUPPORTED: "KEYBOARD_KEY_UNSUPPORTED",
|
|
2461
2486
|
KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
|
|
2462
2487
|
KEYBOARD_TEXT_AND_KEY_COMBINED: "KEYBOARD_TEXT_AND_KEY_COMBINED",
|
|
2488
|
+
KEYBOARD_INPUT_NOT_FOCUSED: "KEYBOARD_INPUT_NOT_FOCUSED",
|
|
2463
2489
|
SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
|
|
2464
2490
|
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
2465
2491
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
@@ -2504,7 +2530,9 @@ var FAILURE_COMMANDS = [
|
|
|
2504
2530
|
"electron",
|
|
2505
2531
|
"npm",
|
|
2506
2532
|
"npx",
|
|
2507
|
-
"unknown"
|
|
2533
|
+
"unknown",
|
|
2534
|
+
"devicectl",
|
|
2535
|
+
"xcodebuild"
|
|
2508
2536
|
];
|
|
2509
2537
|
var FAILURE_SIGNAL_NAMES = [
|
|
2510
2538
|
"SIGABRT",
|
|
@@ -7225,7 +7253,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
7225
7253
|
var SESSION_ID2 = randomUUID5();
|
|
7226
7254
|
function readCliVersion() {
|
|
7227
7255
|
if (true) {
|
|
7228
|
-
return "0.23.
|
|
7256
|
+
return "0.23.1-next.1";
|
|
7229
7257
|
}
|
|
7230
7258
|
return "0.0.0";
|
|
7231
7259
|
}
|
package/dist/installer.mjs
CHANGED
|
@@ -15625,6 +15625,18 @@ var FAILURE_CODES = {
|
|
|
15625
15625
|
SIMULATOR_COMMAND_REJECTED: "SIMULATOR_COMMAND_REJECTED",
|
|
15626
15626
|
SIMULATOR_COMMAND_ACK_TIMEOUT: "SIMULATOR_COMMAND_ACK_TIMEOUT",
|
|
15627
15627
|
SIMULATOR_COMMAND_TRANSPORT_FAILED: "SIMULATOR_COMMAND_TRANSPORT_FAILED",
|
|
15628
|
+
// Physical iOS devices: the XCUITest-runner blueprint lifecycle, the runner
|
|
15629
|
+
// command client, and the `xcrun devicectl` subprocess wrapper (simulators
|
|
15630
|
+
// use the SIMULATOR_* set).
|
|
15631
|
+
IOS_DEVICE_RUNNER_FACTORY_OPTIONS_MISSING: "IOS_DEVICE_RUNNER_FACTORY_OPTIONS_MISSING",
|
|
15632
|
+
IOS_DEVICE_RUNNER_NOT_READY: "IOS_DEVICE_RUNNER_NOT_READY",
|
|
15633
|
+
IOS_DEVICE_RUNNER_TERMINATED: "IOS_DEVICE_RUNNER_TERMINATED",
|
|
15634
|
+
IOS_DEVICE_RUNNER_EXITED: "IOS_DEVICE_RUNNER_EXITED",
|
|
15635
|
+
// The runner answered a command with an ok:false envelope.
|
|
15636
|
+
IOS_DEVICE_RUNNER_COMMAND_FAILED: "IOS_DEVICE_RUNNER_COMMAND_FAILED",
|
|
15637
|
+
// The usbmux or HTTP exchange with a reachable runner failed.
|
|
15638
|
+
IOS_DEVICE_RUNNER_TRANSPORT_FAILED: "IOS_DEVICE_RUNNER_TRANSPORT_FAILED",
|
|
15639
|
+
IOS_DEVICECTL_COMMAND_FAILED: "IOS_DEVICECTL_COMMAND_FAILED",
|
|
15628
15640
|
AX_QUERY_TIMEOUT: "AX_QUERY_TIMEOUT",
|
|
15629
15641
|
AX_DAEMON_READY_TIMEOUT: "AX_DAEMON_READY_TIMEOUT",
|
|
15630
15642
|
AX_DAEMON_EXITED_BEFORE_READY: "AX_DAEMON_EXITED_BEFORE_READY",
|
|
@@ -15795,6 +15807,7 @@ var FAILURE_CODES = {
|
|
|
15795
15807
|
KEYBOARD_KEY_UNSUPPORTED: "KEYBOARD_KEY_UNSUPPORTED",
|
|
15796
15808
|
KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
|
|
15797
15809
|
KEYBOARD_TEXT_AND_KEY_COMBINED: "KEYBOARD_TEXT_AND_KEY_COMBINED",
|
|
15810
|
+
KEYBOARD_INPUT_NOT_FOCUSED: "KEYBOARD_INPUT_NOT_FOCUSED",
|
|
15798
15811
|
SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
|
|
15799
15812
|
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
15800
15813
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
@@ -15839,7 +15852,9 @@ var FAILURE_COMMANDS = [
|
|
|
15839
15852
|
"electron",
|
|
15840
15853
|
"npm",
|
|
15841
15854
|
"npx",
|
|
15842
|
-
"unknown"
|
|
15855
|
+
"unknown",
|
|
15856
|
+
"devicectl",
|
|
15857
|
+
"xcodebuild"
|
|
15843
15858
|
];
|
|
15844
15859
|
var FAILURE_SIGNAL_NAMES = [
|
|
15845
15860
|
"SIGABRT",
|
|
@@ -16610,7 +16625,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
16610
16625
|
var SESSION_ID = randomUUID4();
|
|
16611
16626
|
function readCliVersion() {
|
|
16612
16627
|
if (true) {
|
|
16613
|
-
return "0.23.
|
|
16628
|
+
return "0.23.1-next.1";
|
|
16614
16629
|
}
|
|
16615
16630
|
return "0.0.0";
|
|
16616
16631
|
}
|
|
@@ -23031,15 +23046,11 @@ async function killToolServerForInstallDir(packageDir) {
|
|
|
23031
23046
|
const fresh = await readStateFile(file);
|
|
23032
23047
|
if (!fresh || fresh.pid !== state2.pid || fresh.bundlePath !== state2.bundlePath) continue;
|
|
23033
23048
|
const alive = isProcessAlive(fresh.pid);
|
|
23034
|
-
|
|
23035
|
-
if (alive && guarded && !processCommandMatches(fresh.pid, fresh.bundlePath)) {
|
|
23049
|
+
if (alive && !couldBeOurToolServer(fresh.pid, fresh.bundlePath)) {
|
|
23036
23050
|
continue;
|
|
23037
23051
|
}
|
|
23038
23052
|
if (alive) {
|
|
23039
|
-
await terminatePid(
|
|
23040
|
-
fresh.pid,
|
|
23041
|
-
guarded ? () => processCommandMatches(fresh.pid, fresh.bundlePath) : void 0
|
|
23042
|
-
);
|
|
23053
|
+
await terminatePid(fresh.pid, () => couldBeOurToolServer(fresh.pid, fresh.bundlePath));
|
|
23043
23054
|
}
|
|
23044
23055
|
await unlink(file).catch(() => {
|
|
23045
23056
|
});
|
|
@@ -23047,20 +23058,37 @@ async function killToolServerForInstallDir(packageDir) {
|
|
|
23047
23058
|
}
|
|
23048
23059
|
return killed;
|
|
23049
23060
|
}
|
|
23050
|
-
|
|
23061
|
+
var PS_BIN = ["/bin/ps", "/usr/bin/ps"].find((p) => fs16.existsSync(p)) ?? "ps";
|
|
23062
|
+
var PS_WIDTH_FLAGS = ["-ww"];
|
|
23063
|
+
function readProcessCommandLine(pid, flags = PS_WIDTH_FLAGS) {
|
|
23064
|
+
return execFileSync5(PS_BIN, [...flags, "-p", String(pid), "-o", "command="], {
|
|
23065
|
+
encoding: "utf8",
|
|
23066
|
+
timeout: 2e3,
|
|
23067
|
+
// A recycled pid can sit on a process with an argv past Node's 1 MiB exec
|
|
23068
|
+
// default, where the overrun surfaces as ENOBUFS instead of a command line.
|
|
23069
|
+
// Same ceiling as tool-server's vega-process ps probes.
|
|
23070
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
23071
|
+
// Piping ps's stderr is what puts a rejected flag ("ps: invalid option --
|
|
23072
|
+
// 'w'") into the thrown error's message.
|
|
23073
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
23074
|
+
}).trim();
|
|
23075
|
+
}
|
|
23076
|
+
function couldBeOurToolServer(pid, marker) {
|
|
23051
23077
|
if (!marker) return false;
|
|
23078
|
+
if (process.platform === "win32") return true;
|
|
23079
|
+
let cmd;
|
|
23052
23080
|
try {
|
|
23053
|
-
|
|
23054
|
-
|
|
23055
|
-
|
|
23056
|
-
|
|
23057
|
-
|
|
23058
|
-
|
|
23059
|
-
const escaped = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
23060
|
-
return new RegExp(`(?:^|\\s)${escaped} start(?:\\s|$)`).test(cmd);
|
|
23061
|
-
} catch {
|
|
23081
|
+
cmd = readProcessCommandLine(pid);
|
|
23082
|
+
} catch (err) {
|
|
23083
|
+
process.stderr.write(
|
|
23084
|
+
`[launcher] ps could not read pid ${pid}'s command line; leaving it alone: ${String(err)}
|
|
23085
|
+
`
|
|
23086
|
+
);
|
|
23062
23087
|
return false;
|
|
23063
23088
|
}
|
|
23089
|
+
if (!cmd) return false;
|
|
23090
|
+
const escaped = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
23091
|
+
return new RegExp(`(?:^|\\s)${escaped} start(?:\\s|$)`).test(cmd);
|
|
23064
23092
|
}
|
|
23065
23093
|
|
|
23066
23094
|
// ../argent-tools-client/src/link-config.ts
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import UIKit
|
|
2
|
+
|
|
3
|
+
/// Placeholder host application for the Argent runner's UI-test bundle.
|
|
4
|
+
///
|
|
5
|
+
/// It never participates in automation (every command targets another app by
|
|
6
|
+
/// bundle id), but XCUITest requires a host app to exist, and testmanagerd
|
|
7
|
+
/// launches it once when the session starts. The single black screen makes it
|
|
8
|
+
/// obvious on the device that the runner, not a user app, is frontmost.
|
|
9
|
+
@main
|
|
10
|
+
final class RunnerHostAppDelegate: UIResponder, UIApplicationDelegate {
|
|
11
|
+
var window: UIWindow?
|
|
12
|
+
|
|
13
|
+
func application(
|
|
14
|
+
_ application: UIApplication,
|
|
15
|
+
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
|
16
|
+
) -> Bool {
|
|
17
|
+
let controller = UIViewController()
|
|
18
|
+
controller.view.backgroundColor = .black
|
|
19
|
+
|
|
20
|
+
let label = UILabel()
|
|
21
|
+
label.text = "Argent Runner"
|
|
22
|
+
label.textColor = .white
|
|
23
|
+
label.font = .systemFont(ofSize: 22, weight: .semibold)
|
|
24
|
+
label.translatesAutoresizingMaskIntoConstraints = false
|
|
25
|
+
controller.view.addSubview(label)
|
|
26
|
+
NSLayoutConstraint.activate([
|
|
27
|
+
label.centerXAnchor.constraint(equalTo: controller.view.centerXAnchor),
|
|
28
|
+
label.centerYAnchor.constraint(equalTo: controller.view.centerYAnchor),
|
|
29
|
+
])
|
|
30
|
+
|
|
31
|
+
let window = UIWindow(frame: UIScreen.main.bounds)
|
|
32
|
+
window.rootViewController = controller
|
|
33
|
+
window.makeKeyAndVisible()
|
|
34
|
+
self.window = window
|
|
35
|
+
return true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -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
|
+
}
|