e2e framework benchmark — ios 2026-10-25

Run eas-ios-warden, started 2026-10-25T15:26:50.963Z

Host
VirtualMac2,1, Apple M4 Pro (Virtual), 10 cores, 16.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
4.24
Device
warden-iphone-17-1 (ios, iOS 26.5), udid 6A9A3A44-CC76-4F8F-8212-8D690E7969B9
App
nz.co.delacour.warden.example, hash import:c283eae41c7a, sha256 c283eae41c7a, 96.4 MB
Options
runs 5, retries 0, reboot between no, caffeinated yes
Frameworks
warden bun 1.3.14 + warden-e2e

Fairness rules

Summary

FrameworkStatusVersionSuite median (warm)p95RatioCold rep 1Cold-start costPrepareTeardownOverheadPass rateFlakeResidueFootprint (LOC / deps)
warden✓ okbun 1.3.14 + warden-e2e91.89 s94.65 s1.00×89.75 snone (rep 1 not slower, -1.35 s)800 ms76 ms94 ms100%0%0 proc / 0 app / 0 path379 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 91.89 s · 1.00×025 s50 s75 s100 swarden bun 1.3.14 + warden-e2ewarden: 91.89 s · 1.00× (p95 94.65 s, cold rep 1 89.75 s)91.89 s · 1.00×

Per-test medians (ms)

Testwarden
onboarding steps through to sign-in2990 (1.00×)
invalid email and short password show field errors17521 (1.00×)
a locked account shows the form alert10814 (1.00×)
valid credentials land on todos10564 (1.00×)
add, complete and filter todos15780 (1.00×)
open a todo, mark it done, then delete it11437 (1.00×)
deep link opens a todo by id10812 (1.00×)
settings shows the account, toggles switches and signs out12019 (1.00×)

Median per test

Warm median per test and framework, in millisecondsonboarding steps through to sign-in: warden 2990 ms · 1.00×. invalid email and short password show field errors: warden 17521 ms · 1.00×. a locked account shows the form alert: warden 10814 ms · 1.00×. valid credentials land on todos: warden 10564 ms · 1.00×. add, complete and filter todos: warden 15780 ms · 1.00×. open a todo, mark it done, then delete it: warden 11437 ms · 1.00×. deep link opens a todo by id: warden 10812 ms · 1.00×. settings shows the account, toggles switches and signs out: warden 12019 ms · 1.00×05 s10 s15 s20 sonboarding steps through to sign-inwarden: 2990 ms · 1.00×2990 ms · 1.00×invalid email and short password show field errorswarden: 17521 ms · 1.00×17521 ms · 1.00×a locked account shows the form alertwarden: 10814 ms · 1.00×10814 ms · 1.00×valid credentials land on todoswarden: 10564 ms · 1.00×10564 ms · 1.00×add, complete and filter todoswarden: 15780 ms · 1.00×15780 ms · 1.00×open a todo, mark it done, then delete itwarden: 11437 ms · 1.00×11437 ms · 1.00×deep link opens a todo by idwarden: 10812 ms · 1.00×10812 ms · 1.00×settings shows the account, toggles switches and signs outwarden: 12019 ms · 1.00×12019 ms · 1.00×

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 2.99 s. invalid email and short password show field errors: warden warden 17.52 s. a locked account shows the form alert: warden warden 10.81 s. valid credentials land on todos: warden warden 10.56 s. add, complete and filter todos: warden warden 15.78 s. open a todo, mark it done, then delete it: warden warden 11.44 s. deep link opens a todo by id: warden warden 10.81 s. settings shows the account, toggles switches and signs out: warden warden 12.02 s05 s10 s15 s20 sonboarding steps through to sign-inwarden: warden 2.99 s (p95 3.39 s, min 2951, max 3392, n 4)warden 2.99 sinvalid email and short password show field errorswarden: warden 17.52 s (p95 18.03 s, min 15594, max 18034, n 4)warden 17.52 sa locked account shows the form alertwarden: warden 10.81 s (p95 11.00 s, min 10314, max 11002, n 4)warden 10.81 svalid credentials land on todoswarden: warden 10.56 s (p95 10.93 s, min 9713, max 10931, n 4)warden 10.56 sadd, complete and filter todoswarden: warden 15.78 s (p95 16.49 s, min 15288, max 16491, n 4)warden 15.78 sopen a todo, mark it done, then delete itwarden: warden 11.44 s (p95 11.83 s, min 11163, max 11826, n 4)warden 11.44 sdeep link opens a todo by idwarden: warden 10.81 s (p95 11.62 s, min 10626, max 11624, n 4)warden 10.81 ssettings shows the account, toggles switches and signs outwarden: warden 12.02 s (p95 12.88 s, min 11697, max 12884, n 4)warden 12.02 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 107 ms · p95 3.95 s02 s4 s6 swarden (504 steps)warden: 107 ms · p95 3.95 s107 ms · p95 3.95 s
FrameworkStepsMedianp95Max
warden504107 ms3.95 s5.19 s

Resources

CPU

CPU use per frameworkHost CPU average: warden 2.9%. Host CPU peak: warden 41.8%. Simulator CPU average: warden 164.0%. Simulator CPU peak: warden 822.3%0%250%500%750%1000%Host CPU averagewarden: 2.9%2.9%Host CPU peakwarden: 41.8%41.8%Simulator CPU averagewarden: 164.0%164.0%Simulator CPU peakwarden: 822.3%822.3%

Memory

Peak resident memory per frameworkHost RSS peak: warden 177.6 MB. Simulator RSS peak: warden 33.5 GB0 B9.3 GB18.6 GB27.9 GB37.3 GBHost RSS peakwarden: 177.6 MB177.6 MBSimulator RSS peakwarden: 33.5 GB33.5 GB
FrameworkScopeCPU-s / repCPU avgCPU peakRSS avgRSS peak
wardenhost3.79 s2.9%41.8%146.1 MB177.6 MB
wardensim—164.0%822.3%33.3 GB33.5 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-simdhost1.83 s48.5%55.6 MB55.6 MB1
bun testhost1.09 s28.9%88.4 MB101.9 MB1
(bun) (exit charge)host0.55 s14.6%0 B0 B0
simctlhost0.19 s5.0%276.1 KB20.5 MB4
(simctl)host0.09 s2.4%209.5 KB20.3 MB2
(bun)host0.02 s0.5%0 B0 B0
(ps)host0.00 s0.0%0 B0 B0
bun cli.tshost0.00 s0.0%0 B0 B0
iOSsim59.59 s58.8%31.8 GB31.9 GB291
wardenexamplesim31.06 s30.6%374.2 MB429.8 MB8
SimulatorFrameworkBridge-iOS servesim5.92 s5.8%198.1 MB210.8 MB12
bun cli.tssim2.23 s2.2%246.9 MB251.9 MB1
CoreSimulatorBridgesim1.05 s1.0%79.6 MB79.7 MB1
pssim0.41 s0.4%1.9 MB1.9 MB184
launchd_simsim0.38 s0.4%26.1 MB26.1 MB1
xpcproxy_simsim0.19 s0.2%319.6 KB12.3 MB8
(mlhostd)sim0.15 s0.1%87.8 KB15.8 MB1
(wardenexample)sim0.14 s0.1%4.7 MB434.7 MB2
storekitdsim0.09 s0.1%124.8 MB124.8 MB1
trialdsim0.09 s0.1%85.1 MB85.1 MB1
othersim0.07 s0.1%378.2 MB395.3 MB7

Residue

Unsupported / failed

None.