e2e framework benchmark — ios 2026-10-25

Run bench-2026-10-25-ios-eas, started 2026-10-25T12:16:03.510Z

Host
VirtualMac2,1, Apple M4 Pro (Virtual), 10 cores, 40.0 GB RAM, macOS 26.5.2
Toolchain
Xcode 26.6, Java 17.0.19, Node 22.23.1, bun 1.3.14, warden 0.1.1
Host load at start
3.85
Device
warden-iphone-17-1 (ios, iOS 26.5), udid 07FBA7CD-07EC-40FA-8ADF-5EC275C0C571
App
nz.co.delacour.warden.example, hash import:2d35643eda49, sha256 2d35643eda49, 96.4 MB
Options
runs 5, retries 0, reboot between no, caffeinated yes
Frameworks
warden bun 1.3.14 + warden-e2e, argent 0.30.1, agent-device agent-device 0.21.31, tester-army e2e 0.20.0

Fairness rules

Summary

FrameworkStatusVersionSuite median (warm)p95RatioCold rep 1Cold-start costPrepareTeardownOverheadPass rateFlakeResidueFootprint (LOC / deps)
warden✓ okbun 1.3.14 + warden-e2e97.04 s98.63 s1.06×98.33 s1.94 s652 ms85 ms80 ms100%0%0 proc / 0 app / 0 path379 LOC / 0 B
argent✓ ok0.30.1131.81 s132.14 s1.44×132.43 s2.35 s1.73 s511 ms168 ms100%0%0 proc / 0 app / 1 path161 LOC / 0 B
agent-device✓ okagent-device 0.21.3191.77 s91.93 s1.00×92.86 s18.41 s17.32 s322 ms223 ms100%0%0 proc / 1 app / 1 path158 LOC / 0 B
tester-army✓ oke2e 0.20.0132.34 s133.43 s1.44×151.03 s18.69 s0 ms523 ms2.21 s100%0%0 proc / 1 app / 1 path307 LOC / 0 B

Warm suite wall time

Bar = warm median. Whisker = p95. Dot = cold rep 1. Lower is faster; ratios are against the fastest framework.

Warm suite median per framework with p95 whisker and cold rep 1 markerwarden bun 1.3.14 + warden-e2e: warden 97.04 s · 1.06×. argent 0.30.1: argent 131.81 s · 1.44×. agent-device agent-device 0.21.31: agent-device 91.77 s · 1.00×. tester-army e2e 0.20.0: tester-army 132.34 s · 1.44×050 s100 s150 s200 swarden bun 1.3.14 + warden-e2ewarden: 97.04 s · 1.06× (p95 98.63 s, cold rep 1 98.33 s)97.04 s · 1.06×argent 0.30.1argent: 131.81 s · 1.44× (p95 132.14 s, cold rep 1 132.43 s)131.81 s · 1.44×agent-device agent-device 0.21.31agent-device: 91.77 s · 1.00× (p95 91.93 s, cold rep 1 92.86 s)91.77 s · 1.00×tester-army e2e 0.20.0tester-army: 132.34 s · 1.44× (p95 133.43 s, cold rep 1 151.03 s)132.34 s · 1.44×

Per-test medians (ms)

Testwardenargentagent-devicetester-army
onboarding steps through to sign-in3136 (1.00×)8220 (2.62×)3867 (1.23×)6032 (1.92×)
invalid email and short password show field errors17987 (1.09×)17962 (1.09×)16549 (1.00×)20867 (1.26×)
a locked account shows the form alert11046 (1.14×)14040 (1.45×)9671 (1.00×)12799 (1.32×)
valid credentials land on todos10937 (1.12×)14982 (1.53×)9771 (1.00×)14889 (1.52×)
add, complete and filter todos16997 (1.10×)20867 (1.35×)15503 (1.00×)21196 (1.37×)
open a todo, mark it done, then delete it12015 (1.00×)18881 (1.57×)12491 (1.04×)18171 (1.51×)
deep link opens a todo by id11791 (1.13×)17367 (1.67×)10417 (1.00×)18056 (1.73×)
settings shows the account, toggles switches and signs out13018 (1.00×)19116 (1.47×)13228 (1.02×)18070 (1.39×)

Median per test

Warm median per test and framework, in millisecondsonboarding steps through to sign-in: warden 3136 ms · 1.00×, argent 8220 ms · 2.62×, agent-device 3867 ms · 1.23×, tester-army 6032 ms · 1.92×. invalid email and short password show field errors: warden 17987 ms · 1.09×, argent 17962 ms · 1.09×, agent-device 16549 ms · 1.00×, tester-army 20867 ms · 1.26×. a locked account shows the form alert: warden 11046 ms · 1.14×, argent 14040 ms · 1.45×, agent-device 9671 ms · 1.00×, tester-army 12799 ms · 1.32×. valid credentials land on todos: warden 10937 ms · 1.12×, argent 14982 ms · 1.53×, agent-device 9771 ms · 1.00×, tester-army 14889 ms · 1.52×. add, complete and filter todos: warden 16997 ms · 1.10×, argent 20867 ms · 1.35×, agent-device 15503 ms · 1.00×, tester-army 21196 ms · 1.37×. open a todo, mark it done, then delete it: warden 12015 ms · 1.00×, argent 18881 ms · 1.57×, agent-device 12491 ms · 1.04×, tester-army 18171 ms · 1.51×. deep link opens a todo by id: warden 11791 ms · 1.13×, argent 17367 ms · 1.67×, agent-device 10417 ms · 1.00×, tester-army 18056 ms · 1.73×. settings shows the account, toggles switches and signs out: warden 13018 ms · 1.00×, argent 19116 ms · 1.47×, agent-device 13228 ms · 1.02×, tester-army 18070 ms · 1.39×010 s20 s30 sonboarding steps through to sign-inwarden: 3136 ms · 1.00×3136 ms · 1.00×argent: 8220 ms · 2.62×8220 ms · 2.62×agent-device: 3867 ms · 1.23×3867 ms · 1.23×tester-army: 6032 ms · 1.92×6032 ms · 1.92×invalid email and short password show field errorswarden: 17987 ms · 1.09×17987 ms · 1.09×argent: 17962 ms · 1.09×17962 ms · 1.09×agent-device: 16549 ms · 1.00×16549 ms · 1.00×tester-army: 20867 ms · 1.26×20867 ms · 1.26×a locked account shows the form alertwarden: 11046 ms · 1.14×11046 ms · 1.14×argent: 14040 ms · 1.45×14040 ms · 1.45×agent-device: 9671 ms · 1.00×9671 ms · 1.00×tester-army: 12799 ms · 1.32×12799 ms · 1.32×valid credentials land on todoswarden: 10937 ms · 1.12×10937 ms · 1.12×argent: 14982 ms · 1.53×14982 ms · 1.53×agent-device: 9771 ms · 1.00×9771 ms · 1.00×tester-army: 14889 ms · 1.52×14889 ms · 1.52×add, complete and filter todoswarden: 16997 ms · 1.10×16997 ms · 1.10×argent: 20867 ms · 1.35×20867 ms · 1.35×agent-device: 15503 ms · 1.00×15503 ms · 1.00×tester-army: 21196 ms · 1.37×21196 ms · 1.37×open a todo, mark it done, then delete itwarden: 12015 ms · 1.00×12015 ms · 1.00×argent: 18881 ms · 1.57×18881 ms · 1.57×agent-device: 12491 ms · 1.04×12491 ms · 1.04×tester-army: 18171 ms · 1.51×18171 ms · 1.51×deep link opens a todo by idwarden: 11791 ms · 1.13×11791 ms · 1.13×argent: 17367 ms · 1.67×17367 ms · 1.67×agent-device: 10417 ms · 1.00×10417 ms · 1.00×tester-army: 18056 ms · 1.73×18056 ms · 1.73×settings shows the account, toggles switches and signs outwarden: 13018 ms · 1.00×13018 ms · 1.00×argent: 19116 ms · 1.47×19116 ms · 1.47×agent-device: 13228 ms · 1.02×13228 ms · 1.02×tester-army: 18070 ms · 1.39×18070 ms · 1.39×

Spread across warm reps

Whisker = min to max. Shaded box = min to p95. Tick = median. A distribution carries no quartiles, so the box is not an interquartile range.

Warm rep spread per test: min to max whisker, min to p95 box, median tickonboarding steps through to sign-in: warden warden 3.14 s, argent argent 8.22 s, agent-device agent-device 3.87 s, tester-army tester-army 6.03 s. invalid email and short password show field errors: warden warden 17.99 s, argent argent 17.96 s, agent-device agent-device 16.55 s, tester-army tester-army 20.87 s. a locked account shows the form alert: warden warden 11.05 s, argent argent 14.04 s, agent-device agent-device 9.67 s, tester-army tester-army 12.80 s. valid credentials land on todos: warden warden 10.94 s, argent argent 14.98 s, agent-device agent-device 9.77 s, tester-army tester-army 14.89 s. add, complete and filter todos: warden warden 17.00 s, argent argent 20.87 s, agent-device agent-device 15.50 s, tester-army tester-army 21.20 s. open a todo, mark it done, then delete it: warden warden 12.02 s, argent argent 18.88 s, agent-device agent-device 12.49 s, tester-army tester-army 18.17 s. deep link opens a todo by id: warden warden 11.79 s, argent argent 17.37 s, agent-device agent-device 10.42 s, tester-army tester-army 18.06 s. settings shows the account, toggles switches and signs out: warden warden 13.02 s, argent argent 19.12 s, agent-device agent-device 13.23 s, tester-army tester-army 18.07 s010 s20 s30 sonboarding steps through to sign-inwarden: warden 3.14 s (p95 3.23 s, min 3057, max 3233, n 4)warden 3.14 sargent: argent 8.22 s (p95 8.29 s, min 8096, max 8293, n 4)argent 8.22 sagent-device: agent-device 3.87 s (p95 3.88 s, min 3807, max 3879, n 4)agent-device 3.87 stester-army: tester-army 6.03 s (p95 6.06 s, min 5989, max 6064, n 4)tester-army 6.03 sinvalid email and short password show field errorswarden: warden 17.99 s (p95 18.28 s, min 17578, max 18283, n 4)warden 17.99 sargent: argent 17.96 s (p95 18.14 s, min 17869, max 18142, n 4)argent 17.96 sagent-device: agent-device 16.55 s (p95 16.60 s, min 16522, max 16596, n 4)agent-device 16.55 stester-army: tester-army 20.87 s (p95 21.02 s, min 20766, max 21025, n 4)tester-army 20.87 sa locked account shows the form alertwarden: warden 11.05 s (p95 11.56 s, min 10749, max 11557, n 4)warden 11.05 sargent: argent 14.04 s (p95 14.14 s, min 13968, max 14136, n 4)argent 14.04 sagent-device: agent-device 9.67 s (p95 9.74 s, min 9645, max 9739, n 4)agent-device 9.67 stester-army: tester-army 12.80 s (p95 12.92 s, min 12687, max 12921, n 4)tester-army 12.80 svalid credentials land on todoswarden: warden 10.94 s (p95 11.34 s, min 10606, max 11344, n 4)warden 10.94 sargent: argent 14.98 s (p95 15.20 s, min 14942, max 15203, n 4)argent 14.98 sagent-device: agent-device 9.77 s (p95 9.85 s, min 9755, max 9846, n 4)agent-device 9.77 stester-army: tester-army 14.89 s (p95 15.18 s, min 14719, max 15175, n 4)tester-army 14.89 sadd, complete and filter todoswarden: warden 17.00 s (p95 17.26 s, min 16603, max 17260, n 4)warden 17.00 sargent: argent 20.87 s (p95 21.11 s, min 20517, max 21113, n 4)argent 20.87 sagent-device: agent-device 15.50 s (p95 15.53 s, min 15481, max 15528, n 4)agent-device 15.50 stester-army: tester-army 21.20 s (p95 21.27 s, min 21143, max 21273, n 4)tester-army 21.20 sopen a todo, mark it done, then delete itwarden: warden 12.02 s (p95 12.57 s, min 11808, max 12569, n 4)warden 12.02 sargent: argent 18.88 s (p95 19.07 s, min 18699, max 19066, n 4)argent 18.88 sagent-device: agent-device 12.49 s (p95 12.56 s, min 12406, max 12561, n 4)agent-device 12.49 stester-army: tester-army 18.17 s (p95 18.27 s, min 18128, max 18272, n 4)tester-army 18.17 sdeep link opens a todo by idwarden: warden 11.79 s (p95 12.22 s, min 11202, max 12223, n 4)warden 11.79 sargent: argent 17.37 s (p95 17.55 s, min 17142, max 17554, n 4)argent 17.37 sagent-device: agent-device 10.42 s (p95 10.61 s, min 10235, max 10613, n 4)agent-device 10.42 stester-army: tester-army 18.06 s (p95 18.51 s, min 17940, max 18508, n 4)tester-army 18.06 ssettings shows the account, toggles switches and signs outwarden: warden 13.02 s (p95 13.79 s, min 12502, max 13787, n 4)warden 13.02 sargent: argent 19.12 s (p95 19.41 s, min 19050, max 19414, n 4)argent 19.12 sagent-device: agent-device 13.23 s (p95 13.28 s, min 13177, max 13277, n 4)agent-device 13.23 stester-army: tester-army 18.07 s (p95 18.33 s, min 17952, max 18333, n 4)tester-army 18.07 s

Per-step latency

Whisker = min to max. Shaded box = min to p95. Tick = median. Only frameworks that report steps appear.

Step latency per frameworkwarden (504 steps): warden 170 ms · p95 3.93 s. argent (1192 steps): argent 318 ms · p95 1.82 s. agent-device (632 steps): agent-device 479 ms · p95 1.62 s. tester-army (592 steps): tester-army 494 ms · p95 3.18 s02 s4 s6 swarden (504 steps)warden: 170 ms · p95 3.93 s170 ms · p95 3.93 sargent (1192 steps)argent: 318 ms · p95 1.82 s318 ms · p95 1.82 sagent-device (632 steps)agent-device: 479 ms · p95 1.62 s479 ms · p95 1.62 stester-army (592 steps)tester-army: 494 ms · p95 3.18 s494 ms · p95 3.18 s
FrameworkStepsMedianp95Max
warden504170 ms3.93 s5.00 s
argent1192318 ms1.82 s2.82 s
agent-device632479 ms1.62 s1.90 s
tester-army592494 ms3.18 s3.98 s

Resources

CPU

CPU use per frameworkHost CPU average: warden 8.1%, argent 1.7%, agent-device 12.9%, tester-army 13.9%. Host CPU peak: warden 59.4%, argent 39.7%, agent-device 532.8%, tester-army 508.1%. Simulator CPU average: warden 102.7%, argent 131.3%, agent-device 125.8%, tester-army 118.9%. Simulator CPU peak: warden 292.5%, argent 788.2%, agent-device 380.0%, tester-army 560.4%0%200%400%600%800%Host CPU averagewarden: 8.1%8.1%argent: 1.7%1.7%agent-device: 12.9%12.9%tester-army: 13.9%13.9%Host CPU peakwarden: 59.4%59.4%argent: 39.7%39.7%agent-device: 532.8%532.8%tester-army: 508.1%508.1%Simulator CPU averagewarden: 102.7%102.7%argent: 131.3%131.3%agent-device: 125.8%125.8%tester-army: 118.9%118.9%Simulator CPU peakwarden: 292.5%292.5%argent: 788.2%788.2%agent-device: 380.0%380.0%tester-army: 560.4%560.4%

Memory

Peak resident memory per frameworkHost RSS peak: warden 184.9 MB, argent 261.8 MB, agent-device 2.4 GB, tester-army 2.0 GB. Simulator RSS peak: warden 36.5 GB, argent 36.5 GB, agent-device 37.0 GB, tester-army 37.0 GB0 B9.3 GB18.6 GB27.9 GB37.3 GBHost RSS peakwarden: 184.9 MB184.9 MBargent: 261.8 MB261.8 MBagent-device: 2.4 GB2.4 GBtester-army: 2.0 GB2.0 GBSimulator RSS peakwarden: 36.5 GB36.5 GBargent: 36.5 GB36.5 GBagent-device: 37.0 GB37.0 GBtester-army: 37.0 GB37.0 GB
FrameworkScopeCPU-s / repCPU avgCPU peakRSS avgRSS peak
wardenhost9.12 s8.1%59.4%147.8 MB184.9 MB
wardensim—102.7%292.5%36.4 GB36.5 GB
argenthost2.79 s1.7%39.7%182.0 MB261.8 MB
argentsim—131.3%788.2%36.3 GB36.5 GB
agent-devicehost10.30 s12.9%532.8%745.9 MB2.4 GB
agent-devicesim—125.8%380.0%36.8 GB37.0 GB
tester-armyhost17.01 s13.9%508.1%599.5 MB2.0 GB
tester-armysim—118.9%560.4%36.8 GB37.0 GB

CPU-s / rep is the host CPU time of the timed run (warm median) and the headline. CPU avg and peak are ps %cpu, a decaying average on macOS: they move with suite length, do not judge on them.

Where the CPU goes

One table per framework, from the warm-median rep's timed run (the rep whose host CPU-seconds is the lower median). Rows are processes grouped by label (top 12 per scope, the rest in other); host is the framework's own process tree, sim the simulator's launchd_sim tree (iOS only). Share is of the scope's CPU-seconds. RSS is the label's summed RSS per 500 ms tick (0 where it had no process). Spawns counts distinct pids a tick saw: a process that lives between two ticks is only seen through the (exit charge) rows (CPU of a child the bench ran, booked at its exit), so many short-lived xcrun simctl calls read low in Spawns and in CPU.

warden

ProcessScopeCPU-sShareRSS avgRSS peakSpawns
warden-simdhost7.03 s77.2%55.9 MB56.0 MB1
bun testhost1.15 s12.6%92.2 MB107.1 MB1
bun test (exit charge)host0.69 s7.5%0 B0 B0
simctlhost0.24 s2.7%277.4 KB20.7 MB3
(PlistBuddy)host0.00 s0.0%0 B0 B0
(bash)host0.00 s0.0%0 B0 B0
(simctl)host0.00 s0.0%0 B0 B0
bun cli.tshost0.00 s0.0%0 B0 B0
iOSsim75.30 s64.7%34.8 GB34.8 GB286
wardenexamplesim30.57 s26.3%374.9 MB432.8 MB8
SimulatorFrameworkBridge-iOS servesim6.04 s5.2%197.7 MB210.2 MB12
bun cli.tssim2.01 s1.7%235.0 MB241.7 MB1
CoreSimulatorBridgesim0.94 s0.8%83.7 MB83.9 MB1
launchd_simsim0.39 s0.3%52.2 MB52.2 MB1
xpcproxy_simsim0.26 s0.2%390.5 KB11.4 MB8
mlhostdsim0.24 s0.2%129.7 KB14.4 MB2
pssim0.15 s0.1%1.9 MB1.9 MB191
(launchctl)sim0.14 s0.1%93.2 KB17.4 MB1
storekitdsim0.14 s0.1%127.9 MB127.9 MB1
trialdsim0.13 s0.1%96.6 MB96.6 MB1
othersim0.00 s0.0%443.9 MB443.9 MB6

argent

ProcessScopeCPU-sShareRSS avgRSS peakSpawns
simulator-serverhost2.50 s92.0%96.6 MB96.7 MB1
node argenthost0.21 s7.8%85.7 MB87.9 MB1
node argent (exit charge)host0.01 s0.2%0 B0 B0
(node)host0.00 s0.0%0 B0 B0
node tool-server.cjshost0.00 s0.0%0 B0 B0
simctlhost0.00 s0.0%0 B0 B0
system_profilerhost0.00 s0.0%0 B0 B0
iOSsim98.77 s74.0%34.8 GB34.9 GB287
wardenexamplesim29.50 s22.1%375.5 MB435.1 MB8
bun cli.tssim2.78 s2.1%298.6 MB308.0 MB1
simctlsim0.41 s0.3%363.8 KB20.5 MB7
CoreSimulatorBridgesim0.40 s0.3%117.8 MB118.2 MB1
launchd_simsim0.37 s0.3%52.2 MB52.2 MB1
pssim0.29 s0.2%1.9 MB2.0 MB260
(mlhostd)sim0.26 s0.2%222.5 KB40.5 MB2
trialdsim0.20 s0.1%96.7 MB96.7 MB1
storekitdsim0.19 s0.1%128.4 MB128.4 MB1
(managedappdistri)sim0.14 s0.1%214.5 KB54.5 MB1
mlhostdsim0.13 s0.1%119.3 KB15.7 MB2
othersim0.05 s0.0%444.5 MB453.2 MB9

agent-device

ProcessScopeCPU-sShareRSS avgRSS peakSpawns
xcodebuildhost7.50 s73.3%218.0 MB218.7 MB1
bun cli.tshost1.77 s17.3%268.7 MB273.3 MB1
snapshot-bridgehost0.77 s7.5%116.3 MB116.4 MB1
node agent-devicehost0.15 s1.5%61.0 MB66.8 MB1
pshost0.02 s0.2%1.9 MB1.9 MB182
simctlhost0.02 s0.2%20.4 MB20.4 MB1
node agent-device (exit charge)host0.01 s0.1%0 B0 B0
(simctl)host0.00 s0.0%96.9 KB17.2 MB1
DTServiceHubhost0.00 s0.0%16.7 MB16.7 MB1
caffeinatehost0.00 s0.0%7.3 MB7.3 MB1
(bash)host0.00 s0.0%0 B0 B0
(clang)host0.00 s0.0%0 B0 B0
otherhost0.00 s0.0%0 B0 B0
iOSsim89.31 s65.7%35.5 GB35.5 GB291
wardenexamplesim35.81 s26.3%371.9 MB438.3 MB8
AgentDeviceRunnerUITests-Runnersim9.14 s6.7%268.2 MB268.2 MB1
CoreSimulatorBridgesim0.51 s0.4%80.6 MB80.7 MB1
simctlsim0.48 s0.4%676.7 KB20.5 MB7
launchd_simsim0.31 s0.2%52.4 MB52.4 MB1
trialdsim0.13 s0.1%96.7 MB96.7 MB1
storekitdsim0.13 s0.1%128.3 MB128.3 MB1
xpcproxy_simsim0.09 s0.1%176.0 KB9.1 MB4
mlhostdsim0.08 s0.1%34.2 KB6.1 MB1
(wardenexample)sim0.00 s0.0%2.4 MB433.2 MB1
assetsdsim0.00 s0.0%163.2 MB163.2 MB1
othersim0.00 s0.0%274.3 MB274.3 MB4

tester-army

ProcessScopeCPU-sShareRSS avgRSS peakSpawns
xcodebuildhost14.26 s84.0%217.0 MB218.2 MB1
node entry.jshost1.05 s6.2%84.9 MB92.8 MB1
snapshot-bridgehost0.63 s3.7%116.2 MB116.3 MB1
(node) (exit charge)host0.62 s3.7%0 B0 B0
node e2ehost0.35 s2.1%109.4 MB132.3 MB1
(node)host0.03 s0.2%0 B0 B0
other (exit charge)host0.03 s0.2%0 B0 B0
(ps)host0.01 s0.1%27.9 KB1.7 MB5
simctlhost0.00 s0.0%20.5 MB20.5 MB1
DTServiceHubhost0.00 s0.0%16.8 MB16.8 MB1
(pgrep)host0.00 s0.0%0 B0 B0
(simctl)host0.00 s0.0%0 B0 B0
otherhost0.00 s0.0%0 B0 B0
iOSsim107.48 s60.4%35.1 GB35.2 GB289
wardenexamplesim49.85 s28.0%380.4 MB441.8 MB9
AgentDeviceRunnerUITests-Runnersim15.86 s8.9%271.0 MB271.2 MB1
bun cli.tssim2.56 s1.4%254.0 MB264.4 MB1
CoreSimulatorBridgesim0.57 s0.3%80.6 MB80.6 MB1
simctlsim0.54 s0.3%534.1 KB20.8 MB8
launchd_simsim0.46 s0.3%51.8 MB51.8 MB1
mlhostdsim0.24 s0.1%135.3 KB14.3 MB3
trialdsim0.16 s0.1%96.6 MB96.7 MB1
storekitdsim0.15 s0.1%128.2 MB128.2 MB1
launchctlsim0.10 s0.1%36.7 KB9.4 MB1
pssim0.06 s0.0%1.9 MB1.9 MB263
othersim0.07 s0.0%446.4 MB870.8 MB8

Residue

Unsupported / failed

None.