From 32391c44c105d320ffbae6f27a4094aba1fbacbd Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Thu, 10 Sep 2026 14:45:26 +0200 Subject: [PATCH 01/18] test(example): add agent-device visual regression PoC for Surface Proof of concept for screenshot-based visual regression testing using agent-device against the existing example screens, scoped to Surface. - example/visual/run.mjs: one command per platform (iOS simulator, Android emulator) that opens the example app, navigates to the Surface screen, crops the "Elevated surface" / "Flat surface" sections, and diffs them against committed baselines. Exits 1 on regression; --update re-baselines. - example/visual/README.md: results. Noise floor is 0 px on both platforms across warm captures and a relaunch. agent-device's default diff threshold (0.1) misses a realistic one-level shadow regression on both platforms; 0.02 catches it with noise still at 0. - example/visual/env.json: pinned device/OS/density/versions the baselines are valid for. - SurfaceExample: testID + accessible on the two List.Sections so `screenshot --crop-on` can target them. Twelve agent-device dogfooding issues were recorded locally for filing. --- example/src/Examples/SurfaceExample.tsx | 8 +- example/visual/.gitignore | 1 + example/visual/README.md | 159 ++++++ .../android/android-base-elevated.png | Bin 0 -> 31693 bytes .../android/android-base-flat.png | Bin 0 -> 23886 bytes .../__baselines__/ios/surface-elevated.png | Bin 0 -> 62787 bytes .../visual/__baselines__/ios/surface-flat.png | Bin 0 -> 24632 bytes example/visual/env.json | 55 ++ example/visual/run.mjs | 496 ++++++++++++++++++ 9 files changed, 717 insertions(+), 2 deletions(-) create mode 100644 example/visual/.gitignore create mode 100644 example/visual/README.md create mode 100644 example/visual/__baselines__/android/android-base-elevated.png create mode 100644 example/visual/__baselines__/android/android-base-flat.png create mode 100644 example/visual/__baselines__/ios/surface-elevated.png create mode 100644 example/visual/__baselines__/ios/surface-flat.png create mode 100644 example/visual/env.json create mode 100644 example/visual/run.mjs diff --git a/example/src/Examples/SurfaceExample.tsx b/example/src/Examples/SurfaceExample.tsx index e941c7c843..55aaceaa4d 100644 --- a/example/src/Examples/SurfaceExample.tsx +++ b/example/src/Examples/SurfaceExample.tsx @@ -53,7 +53,11 @@ const SurfaceExample = () => { return ( - + { - + ` taps the match instead of only locating it. +2. `scroll bottom` hits a safety limit and leaves the Expo dev menu open. +3. `open --relaunch` restarts the app with the Expo dev menu open. +4. Default `diff screenshot --threshold 0.1` misses soft-shadow regressions (above). +5. Screenshot JSON carries no timing; wall-clock has to be measured externally. + +Also noted: docs say `wait --stable`, the CLI takes `wait stable [quietMs] [timeoutMs]`. + +Issues 6–12 (session binding per cwd, non-portable `find` selectors, stale-ref errors, Android relaunch landing in the launcher, `logs` on an inactive log, `--pixel-density` iOS-only, Node client not resolvable from the `npx` cache) are in `artifacts/issues.md` with commands and evidence. + +## Android + +Emulator `Pixel_10_Pro`, API 37 (Android 17), arm64 `google_apis_playstore_ps16k`, 480 dpi, 1280x2856, emulator 36.6.11, `hw.gpu.mode=auto`. Wall-clock: emulator boot 8 s, `yarn example android` (incremental, build + install + launch) 119 s, `open` 668 ms, `open --relaunch` 1,688 ms, one cropped capture ≈ 2 s. + +`--pixel-density` is rejected on Android (`UNSUPPORTED_OPERATION`, iOS-family only); Android screenshots already come back in native device pixels, so the `surface-elevated` crop is 1280x642 = 821,760 px. `--crop-on 'id="surface-elevated"'` and `'id="surface-flat"'` each resolve to exactly one node (`testID` + `accessible` exposes `resource-id`), so no fallback selector was needed. + +### Stability + +Four captures of `surface-elevated` diffed against the baseline, 821,760 pixels each, at every pre-registered threshold: + +| capture | changed px @ 0.1 | @ 0.05 | @ 0.02 | @ 0.01 | regions | +| ------------------------------------------------ | ---------------- | ------ | ------ | ------ | ------- | +| warm-1 | 0 | 0 | 0 | 0 | 0 | +| warm-2 | 0 | 0 | 0 | 0 | 0 | +| warm-3 | 0 | 0 | 0 | 0 | 0 | +| relaunch-1 (`open --relaunch`, pid 9944 → 10860) | 0 | 0 | 0 | 0 | 0 | + +**Noise floor: 0 pixels at every threshold down to 0.01**, including across a real process restart. Same result as iOS. No animation freezing, no status-bar handling: the crop excludes the status bar, and `screenshot` stabilises Android chrome by default. + +### Sensitivity + +Both breaks are one-line changes to the Android branch of `src/components/Surface.tsx` (`androidElevationLevels[elevation]`), applied by Fast Refresh — confirmed by a temporary `console.log` probe seen 19 times in `adb logcat`, then removed. Each break was reverted with `git checkout --` and re-diffed to 0 at all four thresholds. + +| break | @ 0.1 (CLI default) | @ 0.05 | @ 0.02 | @ 0.01 | widest region | +| ------------------------------------------- | ----------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -------------------------------- | +| Gross — every elevated surface gets level 5 | 65,051 px (7.92 %), 2 regions | 118,661 px (14.44 %), 4 regions | 208,505 px (25.37 %), 4 regions | 265,916 px (32.36 %), 2 regions | 1280x444 @ 0.01 (whole card row) | +| Realistic — level 1 renders level 2 | **0 px, `match: true`** | 1,830 px (0.22 %), 1 region | 9,336 px (1.14 %), 1 region | 14,686 px (1.79 %), 1 region | 380x381 on the Elevation 1 card | + +The realistic break repeats the iOS finding exactly: at the default threshold the regression is reported as a perfect match; at 0.02 it is caught cleanly, in one region (374x375 at x=473, y=207) that covers only the Elevation 1 card, with the noise floor still 0. The diff image is a ring around that card, heaviest along the bottom edge — the extra shadow spread. Human visibility: subtle. Side by side you would notice the card sits slightly higher; in isolation almost nobody would. The gross break, unlike on iOS, is caught at the default threshold too, because a native `elevation` jump from 1 to 5 changes background compositing across the whole row, not just a soft shadow edge. + +### Caveats + +These numbers are for one emulator on one host with `hw.gpu.mode=auto`, i.e. host-GPU rendering. **swiftshader was not measured**, so nothing here says whether Android baselines survive on `ubuntu-latest`, which renders with swiftshader — CI parity is an open item, not a claim. Nor was a cold emulator boot from a wiped snapshot, an AVD at another density, a system-image update, or a Release build. Emulator relaunch is more expensive than on iOS in commands, not seconds: `open --relaunch` starts the Expo dev launcher, so reconnecting to Metro and waiting for the bundle takes three extra steps (see issues 9 and 10), and `wait stable` returns "settled" on the still-empty tree while the bundle loads — a suite must wait for real content, not for stability. + +Six more agent-device findings came out of the Android run (session/device binding, non-portable `find` selectors, ref invalidation, dev-launcher relaunch, silent `logs`, and `--pixel-density` being iOS-only). They are issues 6-11 in `artifacts/issues.md`, with commands and artifact references. + +## Not done / out of scope + +Web (`--crop-on` is refused off iOS/Android, so it is a different loop), deep links, CI, other components, cross-platform comparison. + +Before 0.02 is trusted as a default threshold rather than a Surface-specific one, the same protocol should be run on: other shadow-bearing components (Card, Chip, FAB), a text-heavy crop (glyph antialiasing may raise the noise floor), dark theme (different contrast profile), and an emulator on swiftshader, which is what `ubuntu-latest` CI renders with. None of these were measured. + +Also unmeasured: cold simulator/emulator boot, a different day or host machine, an iOS runtime or emulator image update. Baselines are valid for the `env.json` configuration only. + +## Running it + +`example/visual/run.mjs` is the hand-run CLI loop above as one Node script (plain +ESM, Node 24, no build step, no new dependencies). It spawns +`npx agent-device@0.21.0 … --json` and parses stdout. The published package does +export `createAgentDeviceClient`, but `agent-device` is not a dependency of this +repo and is not resolvable from `example/`, so using the typed client would mean +adding a dependency — out of scope for the PoC. + +```bash +node example/visual/run.mjs --platform ios +node example/visual/run.mjs --platform android +``` + +Flags: `--update` (overwrite the baselines with the current captures instead of +diffing), `--threshold <0-1>` (default `0.02`, the PoC finding — the CLI default of +`0.1` misses soft-shadow regressions), `--story surface-elevated,surface-flat`. + +Prerequisites are documented, not automated: the app must already be built and +installed on the device pinned in `env.json`, and Metro must be running. The +script opens the app, dismisses the Expo dev menu if it is showing, navigates to +the Surface example (skipped if it is already on screen), waits for the UI to go +quiet, then captures and diffs each story. + +Each story prints one line: + +``` +ios surface-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +``` + +PASS means agent-device reported `match: true` at that threshold — no pixel +differed by more than the threshold's colour distance. FAIL means it did not; +`changed` is the pixel count and `regions` the number of clustered diff areas. +The process exits 1 if any story fails, so it can gate a script or a CI step. +Captures, diff images, per-command JSON and `summary.json` land in +`example/visual/artifacts/run//`. + +On start-up the script compares the connected device with `env.json` — UDID, iOS +runtime and boot state via `xcrun simctl list -j devices`; API level and density +via `adb getprop` and `adb shell wm density` — and prints a `WARNING:` line per +mismatch. It does not refuse to run: baselines are only valid for the pinned +configuration, so a warning is the signal that a diff result is not comparable +with the numbers in this file. + +Verified end to end on 2026-09-10: PASS with `changed=0` on both stories on both +platforms; with the realistic iOS break reapplied by Fast Refresh +(`shadow(elevation === 1 ? 2 : elevation, …)`) the script reported +`ios surface-elevated changed=10179 (1.31%) regions=3 threshold=0.02 → FAIL` and +exited 1 — the same pixel count as the hand-run loop — then PASS again after +`git checkout -- src/components/Surface.tsx`. diff --git a/example/visual/__baselines__/android/android-base-elevated.png b/example/visual/__baselines__/android/android-base-elevated.png new file mode 100644 index 0000000000000000000000000000000000000000..c94e2bc1b130d2115e61ca8d2451db373b1ba6fc GIT binary patch literal 31693 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 literal 0 HcmV?d00001 diff --git a/example/visual/__baselines__/android/android-base-flat.png b/example/visual/__baselines__/android/android-base-flat.png new file mode 100644 index 0000000000000000000000000000000000000000..4f688b4e617c3a6ee0dd2fa84e42fc3384bb8bf4 GIT binary patch literal 23886 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 literal 0 HcmV?d00001 diff --git a/example/visual/env.json b/example/visual/env.json new file mode 100644 index 0000000000..d33502b533 --- /dev/null +++ b/example/visual/env.json @@ -0,0 +1,55 @@ +{ + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "commit": "cbcd52f7e", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-elevated": "__baselines__/ios/surface-elevated.png", + "surface-flat": "__baselines__/ios/surface-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-elevated": "__baselines__/android/android-base-elevated.png", + "surface-flat": "__baselines__/android/android-base-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } +} diff --git a/example/visual/run.mjs b/example/visual/run.mjs new file mode 100644 index 0000000000..0550478038 --- /dev/null +++ b/example/visual/run.mjs @@ -0,0 +1,496 @@ +#!/usr/bin/env node +/** + * Visual regression loop for the Surface example (PoC). + * + * node example/visual/run.mjs --platform ios|android [--update] + * [--threshold 0.02] [--story surface-elevated,surface-flat] + * + * Drives agent-device 0.21.0 through `npx` and parses `--json` stdout. The + * package does export `createAgentDeviceClient`, but it is not a dependency of + * this repo and is not resolvable from `example/`, and the PoC rule is "no new + * dependencies", so the CLI is spawned instead. + * + * Prerequisites (documented, not automated): the example app is already built + * and installed on a device matching example/visual/env.json, Metro is running, + * and the baselines in example/visual/__baselines__// were captured + * on that same device. + */ + +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const VISUAL_DIR = path.dirname(fileURLToPath(import.meta.url)); +const BASELINE_DIR = path.join(VISUAL_DIR, '__baselines__'); +const ENV_FILE = path.join(VISUAL_DIR, 'env.json'); +const AGENT_DEVICE = 'agent-device@0.21.0'; +const BUNDLE_ID = 'com.callstack.reactnativepaperexample'; +const DEFAULT_STORIES = ['surface-elevated', 'surface-flat']; +const DEFAULT_THRESHOLD = 0.02; // PoC finding: the CLI default of 0.1 misses soft-shadow regressions. +const DEV_MENU_LABELS = ['Close', 'Continue']; + +// agent-device sessions are keyed by cwd. Point this at the directory whose +// session is already bound to the intended device to reuse that binding; +// otherwise a fresh session is created and bound by `open --udid`. +const SESSION_CWD = process.env.AGENT_DEVICE_SESSION_CWD || VISUAL_DIR; + +let commandSeq = 0; +let cmdDir = VISUAL_DIR; + +function fail(message) { + console.error(`error: ${message}`); + process.exit(2); +} + +function warn(message) { + console.warn(`WARNING: ${message}`); +} + +function sleepSync(ms) { + Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); +} + +function parseArgs(argv) { + const out = { + update: false, + threshold: DEFAULT_THRESHOLD, + stories: DEFAULT_STORIES, + }; + + for (let i = 0; i < argv.length; i++) { + const arg = argv[i]; + const next = () => { + const value = argv[++i]; + if (value == null) fail(`${arg} needs a value`); + return value; + }; + + switch (arg) { + case '--platform': + out.platform = next(); + break; + case '--update': + out.update = true; + break; + case '--threshold': + out.threshold = Number(next()); + break; + case '--story': + case '--stories': + out.stories = next() + .split(',') + .map((s) => s.trim()) + .filter(Boolean); + break; + case '--help': + case '-h': + console.log( + 'usage: node example/visual/run.mjs --platform ios|android [--update] [--threshold <0-1>] [--story a,b]' + ); + process.exit(0); + break; + default: + fail(`unknown argument ${arg}`); + } + } + + if (out.platform !== 'ios' && out.platform !== 'android') { + fail('--platform must be ios or android'); + } + if ( + !Number.isFinite(out.threshold) || + out.threshold < 0 || + out.threshold > 1 + ) { + fail('--threshold must be a number between 0 and 1'); + } + + return out; +} + +/** Runs one agent-device command, records its JSON, returns the parsed payload. */ +function ad(label, args, { allowFail = false } = {}) { + const argv = [AGENT_DEVICE, ...args, '--json']; + const startedAt = Date.now(); + const proc = spawnSync('npx', argv, { + cwd: SESSION_CWD, + encoding: 'utf8', + maxBuffer: 256 * 1024 * 1024, + }); + const elapsedMs = Date.now() - startedAt; + const stdout = proc.stdout || ''; + + let parsed = null; + const first = stdout.indexOf('{'); + const last = stdout.lastIndexOf('}'); + if (first !== -1 && last > first) { + try { + parsed = JSON.parse(stdout.slice(first, last + 1)); + } catch { + parsed = null; + } + } + + const file = path.join( + cmdDir, + `${String(++commandSeq).padStart(3, '0')}-${label}.json` + ); + fs.writeFileSync( + file, + JSON.stringify( + { + command: ['npx', ...argv], + cwd: SESSION_CWD, + exitCode: proc.status, + elapsedMs, + response: parsed, + stdout: parsed ? undefined : stdout, + stderr: proc.stderr || undefined, + }, + null, + 2 + ) + ); + + const ok = proc.status === 0 && parsed && parsed.success !== false; + if (!ok && !allowFail) { + const reason = + parsed?.error?.details?.reason || + parsed?.error?.message || + proc.stderr?.trim() || + `exit ${proc.status}`; + fail(`agent-device ${label} failed: ${reason} (see ${file})`); + } + + return { + ok, + data: parsed?.data ?? null, + error: parsed?.error ?? null, + elapsedMs, + }; +} + +function sh(command, args) { + const proc = spawnSync(command, args, { + encoding: 'utf8', + maxBuffer: 64 * 1024 * 1024, + }); + return { + status: proc.status, + stdout: proc.stdout || '', + stderr: proc.stderr || '', + }; +} + +function adbPath() { + const home = process.env.HOME || ''; + const sdk = + process.env.ANDROID_HOME || + process.env.ANDROID_SDK_ROOT || + path.join(home, 'Library/Android/sdk'); + const candidate = path.join(sdk, 'platform-tools/adb'); + return fs.existsSync(candidate) ? candidate : 'adb'; +} + +/** Compares the connected device with env.json and warns (never refuses). */ +function checkEnvironment(platform, env) { + const observed = {}; + + if (platform === 'ios') { + const expectedUdid = env.udid; + const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); + if (res.status !== 0) { + warn(`could not run xcrun simctl list: ${res.stderr.trim()}`); + return observed; + } + + let devices; + try { + devices = JSON.parse(res.stdout).devices || {}; + } catch { + warn('could not parse xcrun simctl list output'); + return observed; + } + + let match = null; + for (const [runtime, list] of Object.entries(devices)) { + for (const device of list) { + if (device.udid === expectedUdid) match = { runtime, device }; + } + } + + if (!match) { + warn(`env.json udid ${expectedUdid} is not in xcrun simctl list`); + return observed; + } + + observed.udid = match.device.udid; + observed.name = match.device.name; + observed.runtime = match.runtime; + observed.state = match.device.state; + + if (env.runtime && match.runtime !== env.runtime) { + warn( + `runtime mismatch: env.json ${env.runtime}, device ${match.runtime}` + ); + } + if ( + env.iosVersion && + !match.runtime.endsWith(env.iosVersion.replace(/\./g, '-')) + ) { + warn( + `iOS version mismatch: env.json ${env.iosVersion}, device runtime ${match.runtime}` + ); + } + if (env.device && match.device.name !== env.device) { + warn( + `device name mismatch: env.json ${env.device}, device ${match.device.name}` + ); + } + if (match.device.state !== 'Booted') { + warn(`device ${expectedUdid} is ${match.device.state}, not Booted`); + } + return observed; + } + + const adb = adbPath(); + const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); + const sdkLevel = prop('ro.build.version.sdk'); + if (!sdkLevel) { + warn( + `could not read Android properties via ${adb} (is an emulator connected?)` + ); + return observed; + } + + observed.apiLevel = Number(sdkLevel); + observed.androidRelease = prop('ro.build.version.release'); + const densityOut = sh(adb, ['shell', 'wm', 'density']).stdout; + const densityMatch = densityOut.match(/(\d+)\s*$/m); + observed.density = densityMatch ? Number(densityMatch[1]) : null; + + if (env.apiLevel != null && observed.apiLevel !== env.apiLevel) { + warn( + `Android API mismatch: env.json ${env.apiLevel}, device ${observed.apiLevel}` + ); + } + if ( + env.density != null && + observed.density != null && + observed.density !== env.density + ) { + warn( + `Android density mismatch: env.json ${env.density}, device ${observed.density}` + ); + } + return observed; +} + +function resolveBaseline(platform, story) { + const dir = path.join(BASELINE_DIR, platform); + if (!fs.existsSync(dir)) fail(`no baseline directory ${dir}`); + const files = fs.readdirSync(dir).filter((f) => f.endsWith('.png')); + + const exact = files.find((f) => f === `${story}.png`); + if (exact) return path.join(dir, exact); + + // Baseline names differ per platform (ios: surface-elevated.png, + // android: android-base-elevated.png), so match on the story's last segment. + const suffix = story.split('-').pop(); + const bySuffix = files.filter((f) => f.endsWith(`-${suffix}.png`)); + if (bySuffix.length === 1) return path.join(dir, bySuffix[0]); + if (bySuffix.length > 1) { + fail(`ambiguous baseline for ${story} in ${dir}: ${bySuffix.join(', ')}`); + } + fail( + `no baseline for ${story} in ${dir} (found: ${files.join(', ') || 'none'})` + ); +} + +function dismissDevMenu(globals) { + for (let attempt = 0; attempt < 3; attempt++) { + const snap = ad('snapshot-devmenu', ['snapshot', ...globals]); + const nodes = snap.data?.nodes || []; + const hit = nodes.find((n) => + DEV_MENU_LABELS.includes((n.label || '').trim()) + ); + if (!hit) return attempt > 0; + console.log(` dev menu: pressing "${hit.label}" (@${hit.ref})`); + ad('press-devmenu', ['press', `@${hit.ref}`, ...globals]); + sleepSync(1000); + } + warn('dev-menu labels still present after 3 dismissal attempts'); + return true; +} + +function onSurfaceScreen(globals, stories) { + const snap = ad('snapshot-raw', ['snapshot', '--raw', ...globals]); + const nodes = snap.data?.nodes || []; + return stories.every((story) => nodes.some((n) => n.identifier === story)); +} + +function navigateToSurface(globals, stories) { + if (onSurfaceScreen(globals, stories)) { + console.log(' already on the Surface screen'); + return; + } + + for (let attempt = 1; attempt <= 2; attempt++) { + ad('scroll-1', ['scroll', 'down', '6', '--settle', ...globals]); + ad('scroll-2', ['scroll', 'down', '6', '--settle', ...globals]); + + // `find 'label="Surface"'` is AMBIGUOUS_MATCH on Android (and taps as a + // side effect on iOS), so press by ref off a fresh snapshot instead. + const snap = ad('snapshot-list', ['snapshot', ...globals]); + const candidates = (snap.data?.nodes || []).filter( + (n) => (n.label || '').trim() === 'Surface' + ); + if (candidates.length === 0) { + if (attempt === 2) + fail('could not find the "Surface" row in the example list'); + continue; + } + + // Prefer the largest match: the row container on Android, the label on iOS. + const area = (n) => (n.rect?.width || 0) * (n.rect?.height || 0); + const target = candidates.sort((a, b) => area(b) - area(a))[0]; + console.log(` pressing "Surface" row (@${target.ref})`); + ad('press-surface', ['press', `@${target.ref}`, '--settle', ...globals]); + + if (onSurfaceScreen(globals, stories)) return; + if (attempt === 2) + fail('pressed the "Surface" row but the example screen did not appear'); + } +} + +function main() { + const opts = parseArgs(process.argv.slice(2)); + const { platform } = opts; + + if (!fs.existsSync(ENV_FILE)) fail(`missing ${ENV_FILE}`); + const envFile = JSON.parse(fs.readFileSync(ENV_FILE, 'utf8')); + const env = platform === 'ios' ? envFile : { ...envFile.android }; + + const outDir = path.join(VISUAL_DIR, 'artifacts', 'run', platform); + cmdDir = path.join(outDir, 'cmds'); + fs.mkdirSync(cmdDir, { recursive: true }); + + const globals = + platform === 'ios' + ? ['--platform', 'ios', '--udid', env.udid] + : [ + '--platform', + 'android', + '--session', + env.agentDeviceSession || 'android', + ]; + + console.log( + `# ${platform} — threshold ${opts.threshold}${opts.update ? ' (update)' : ''}` + ); + const observed = checkEnvironment(platform, env); + + const startedAt = Date.now(); + ad('open', ['open', BUNDLE_ID, ...globals]); + dismissDevMenu(globals); + navigateToSurface(globals, opts.stories); + ad('wait-stable', ['wait', 'stable', '500', '10000', ...globals]); + sleepSync(2000); // covers the customFontLoaded theme swap, which has no node change + + const results = []; + let failed = false; + + for (const story of opts.stories) { + const current = path.join(outDir, `${story}.png`); + const shotArgs = [ + 'screenshot', + current, + '--crop-on', + `id="${story}"`, + ...globals, + ]; + // --pixel-density is iOS-only (UNSUPPORTED_OPERATION on Android). + if (platform === 'ios') + shotArgs.push('--pixel-density', String(env.pixelDensity || 3)); + const shot = ad(`screenshot-${story}`, shotArgs); + + const baseline = resolveBaseline(platform, story); + + if (opts.update) { + fs.copyFileSync(current, baseline); + console.log( + `${platform} ${story} baseline updated → ${path.relative(VISUAL_DIR, baseline)}` + ); + results.push({ + story, + updated: true, + baseline, + current, + width: shot.data?.width ?? null, + height: shot.data?.height ?? null, + }); + continue; + } + + const diffOut = path.join(outDir, `${story}-diff.png`); + const diff = ad(`diff-${story}`, [ + 'diff', + 'screenshot', + '--baseline', + baseline, + current, + '--out', + diffOut, + '--threshold', + String(opts.threshold), + ...globals, + ]); + + const changed = diff.data?.differentPixels ?? -1; + const pct = diff.data?.mismatchPercentage ?? -1; + const regions = diff.data?.regions?.length ?? 0; + const pass = diff.data?.match === true; + if (!pass) failed = true; + + console.log( + `${platform} ${story} changed=${changed} (${pct}%) regions=${regions} threshold=${opts.threshold} → ${pass ? 'PASS' : 'FAIL'}` + ); + + results.push({ + story, + baseline, + current, + diff: diffOut, + totalPixels: diff.data?.totalPixels ?? null, + changedPixels: changed, + mismatchPercentage: pct, + regions: diff.data?.regions ?? [], + threshold: opts.threshold, + pass, + }); + } + + const summary = { + platform, + threshold: opts.threshold, + update: opts.update, + stories: opts.stories, + agentDeviceVersion: AGENT_DEVICE, + sessionCwd: SESSION_CWD, + expectedEnv: env, + observedEnv: observed, + startedAt: new Date(startedAt).toISOString(), + wallClockMs: Date.now() - startedAt, + results, + pass: !failed, + }; + fs.writeFileSync( + path.join(outDir, 'summary.json'), + JSON.stringify(summary, null, 2) + ); + + process.exit(failed ? 1 : 0); +} + +main(); From e4f03110f563d5b0a77420699cebcc8ebd081c7e Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Thu, 10 Sep 2026 15:59:45 +0200 Subject: [PATCH 02/18] test(example): address review on the visual regression PoC - Drop `accessible` from the two List.Sections. With it, iOS collapsed each section into a single accessibility element (XCUITest tree evidence in evidence/a11y/). `testID` alone resolves `screenshot --crop-on` on both platforms with identical rects, so the example app's accessibility tree is unchanged by the hook. - Rename the test ids to surface-example-{elevated,flat} so they cannot be confused with the library defaults removed in #5088 / #5099. Baselines renamed to __baselines__//.png on both platforms. - Commit the evidence: raw diff JSON behind every table, break diff images, issues.md, the a11y trees, and the final script runs. - run.mjs: env.json mismatch and crop-size mismatch are hard failures (exit 2 / 3) unless --force; --update can create a missing baseline; always relaunch so the bundle is fresh (Fast Refresh was seen to stop reaching Android); handle the Expo dev menu and dev launcher; because the example app persists navigation state, go Back to the list root and press the Surface row by position, not the header by label; --force-full on every snapshot; summary.json written on every exit; --out. - Re-measure the realistic break three times per platform at pre-declared thresholds: bit-identical (iOS 10,179 px, Android 9,336 px at 0.02; 0 at 0.1) and identical to the original single captures. - README: status, evidence links, a11y section, re-measurement section, issues 13-18, updated Running-it. --- example/src/Examples/SurfaceExample.tsx | 8 +- example/visual/README.md | 118 +- ...vated.png => surface-example-elevated.png} | Bin ...base-flat.png => surface-example-flat.png} | Bin ...vated.png => surface-example-elevated.png} | Bin ...face-flat.png => surface-example-flat.png} | Bin example/visual/env.json | 8 +- .../a11y/01-ios-snapshot-with-accessible.json | 1896 +++++++ .../02-android-snapshot-with-accessible.json | 4343 +++++++++++++++++ .../a11y/03-testid-only-and-crop.json | 8 + .../a11y/03-testid-only-and-snapshot.json | 4341 ++++++++++++++++ .../a11y/03-testid-only-ios-crop.json | 11 + .../a11y/03-testid-only-ios-snapshot.json | 2912 +++++++++++ .../android/103-diff-relaunch-1-t0.01.json | 9 + .../android/103-diff-relaunch-1-t0.02.json | 9 + .../android/103-diff-relaunch-1-t0.05.json | 9 + .../android/103-diff-relaunch-1-t0.1.json | 9 + .../android/108-diff-gross-t0.01.json | 64 + .../android/108-diff-gross-t0.02.json | 116 + .../android/108-diff-gross-t0.05.json | 116 + .../evidence/android/108-diff-gross-t0.1.json | 64 + .../android/111-diff-revert1-t0.01.json | 9 + .../android/111-diff-revert1-t0.02.json | 9 + .../android/111-diff-revert1-t0.05.json | 9 + .../android/111-diff-revert1-t0.1.json | 9 + .../android/114-diff-realistic-t0.01.json | 38 + .../android/114-diff-realistic-t0.02.json | 38 + .../android/114-diff-realistic-t0.05.json | 38 + .../android/114-diff-realistic-t0.1.json | 9 + .../android/117-diff-revert2-t0.01.json | 9 + .../android/117-diff-revert2-t0.02.json | 9 + .../android/117-diff-revert2-t0.05.json | 9 + .../android/117-diff-revert2-t0.1.json | 9 + .../android/94-diff-warm-1-t0.01.json | 9 + .../android/94-diff-warm-1-t0.02.json | 9 + .../android/94-diff-warm-1-t0.05.json | 9 + .../evidence/android/94-diff-warm-1-t0.1.json | 9 + .../android/94-diff-warm-2-t0.01.json | 9 + .../android/94-diff-warm-2-t0.02.json | 9 + .../android/94-diff-warm-2-t0.05.json | 9 + .../evidence/android/94-diff-warm-2-t0.1.json | 9 + .../android/94-diff-warm-3-t0.01.json | 9 + .../android/94-diff-warm-3-t0.02.json | 9 + .../android/94-diff-warm-3-t0.05.json | 9 + .../evidence/android/94-diff-warm-3-t0.1.json | 9 + .../diff-images/android-gross-t0.02.png | Bin 0 -> 32552 bytes .../diff-images/android-gross-t0.1.png | Bin 0 -> 32694 bytes .../diff-images/android-realistic-1-t0.02.png | Bin 0 -> 25122 bytes .../diff-images/android-realistic-2-t0.02.png | Bin 0 -> 25122 bytes .../diff-images/android-realistic-3-t0.02.png | Bin 0 -> 25122 bytes .../evidence/diff-images/ios-gross-t0.02.png | Bin 0 -> 109657 bytes .../evidence/diff-images/ios-gross-t0.1.png | Bin 0 -> 120512 bytes .../diff-images/ios-realistic-1-t0.02.png | Bin 0 -> 52140 bytes .../diff-images/ios-realistic-2-t0.02.png | Bin 0 -> 52140 bytes .../diff-images/ios-realistic-3-t0.02.png | Bin 0 -> 52140 bytes .../diff-images/ios-realistic-t0.02.png | Bin 0 -> 52140 bytes example/visual/evidence/ios/26-diff.json | 9 + example/visual/evidence/ios/30-diff.json | 9 + example/visual/evidence/ios/37-diff.json | 9 + example/visual/evidence/ios/40-diff.json | 9 + example/visual/evidence/ios/43-diff.json | 9 + example/visual/evidence/ios/53-diff.json | 9 + example/visual/evidence/ios/59-diff.json | 38 + example/visual/evidence/ios/60-diff.json | 90 + example/visual/evidence/ios/63-diff.json | 9 + .../visual/evidence/ios/66-diff-t0.02.json | 90 + example/visual/evidence/ios/66-diff-t0.1.json | 9 + example/visual/evidence/ios/69-diff.json | 9 + .../evidence/ios/6x-diff-relaunch-1-t002.json | 9 + .../evidence/ios/6x-diff-warm-1-t002.json | 9 + .../evidence/ios/6x-diff-warm-2-t002.json | 9 + .../evidence/ios/6x-diff-warm-3-t002.json | 9 + example/visual/evidence/issues.md | 301 ++ .../runs/android/fix-fail/summary.json | 106 + .../surface-example-elevated-diff.png | Bin 0 -> 25122 bytes .../fix-pass-after-revert/summary.json | 79 + .../fix-pass-from-other-screen/summary.json | 79 + .../fix-pass-from-surface/summary.json | 79 + .../evidence/runs/ios/fix-fail/summary.json | 185 + .../surface-example-elevated-diff.png | Bin 0 -> 52140 bytes .../ios/fix-pass-after-revert/summary.json | 106 + .../fix-pass-from-other-screen/summary.json | 106 + .../ios/fix-pass-from-surface/summary.json | 106 + .../android/000-snapshot-raw-forcefull.json | 4341 ++++++++++++++++ .../sensitivity/android/gross-diff-t0.02.json | 116 + .../sensitivity/android/gross-diff-t0.1.json | 64 + .../android/gross-probe-diff-t0.02.json | 9 + .../android/gross-probe-diff-t0.1.json | 9 + .../sensitivity/android/gross-probe-shot.json | 8 + .../sensitivity/android/gross-probe-wait.json | 8 + .../sensitivity/android/gross-probe.png | Bin 0 -> 31693 bytes .../sensitivity/android/gross-shot.json | 8 + .../sensitivity/android/gross-wait.json | 8 + .../evidence/sensitivity/android/gross.png | Bin 0 -> 63721 bytes .../android/realistic-1-diff-t0.02.json | 38 + .../android/realistic-1-diff-t0.1.json | 9 + .../sensitivity/android/realistic-1-shot.json | 8 + .../sensitivity/android/realistic-1-wait.json | 8 + .../sensitivity/android/realistic-1.png | Bin 0 -> 33878 bytes .../android/realistic-2-diff-t0.02.json | 38 + .../android/realistic-2-diff-t0.1.json | 9 + .../sensitivity/android/realistic-2-shot.json | 8 + .../sensitivity/android/realistic-2-wait.json | 8 + .../sensitivity/android/realistic-2.png | Bin 0 -> 33878 bytes .../android/realistic-3-diff-t0.02.json | 38 + .../android/realistic-3-diff-t0.1.json | 9 + .../sensitivity/android/realistic-3-shot.json | 8 + .../sensitivity/android/realistic-3-wait.json | 8 + .../sensitivity/android/realistic-3.png | Bin 0 -> 33878 bytes .../android/reverted-diff-t0.02.json | 9 + .../android/reverted-diff-t0.1.json | 9 + .../sensitivity/android/reverted-shot.json | 8 + .../sensitivity/android/reverted-wait.json | 8 + .../evidence/sensitivity/android/reverted.png | Bin 0 -> 31693 bytes .../sanity-before-break-diff-t0.02.json | 9 + .../sanity-before-break-diff-t0.1.json | 9 + .../android/sanity-before-break-shot.json | 8 + .../android/sanity-before-break-wait.json | 8 + .../android/sanity-before-break.png | Bin 0 -> 31693 bytes .../ios/000-snapshot-raw-forcefull.json | 2821 +++++++++++ .../sensitivity/ios/gross-diff-t0.02.json | 90 + .../sensitivity/ios/gross-diff-t0.1.json | 38 + .../evidence/sensitivity/ios/gross-shot.json | 11 + .../evidence/sensitivity/ios/gross-wait.json | 8 + .../visual/evidence/sensitivity/ios/gross.png | Bin 0 -> 259444 bytes .../ios/realistic-1-diff-t0.02.json | 90 + .../ios/realistic-1-diff-t0.1.json | 9 + .../sensitivity/ios/realistic-1-shot.json | 11 + .../sensitivity/ios/realistic-1-wait.json | 8 + .../evidence/sensitivity/ios/realistic-1.png | Bin 0 -> 81121 bytes .../ios/realistic-2-diff-t0.02.json | 90 + .../ios/realistic-2-diff-t0.1.json | 9 + .../sensitivity/ios/realistic-2-shot.json | 11 + .../sensitivity/ios/realistic-2-wait.json | 8 + .../evidence/sensitivity/ios/realistic-2.png | Bin 0 -> 81121 bytes .../ios/realistic-3-diff-t0.02.json | 90 + .../ios/realistic-3-diff-t0.1.json | 9 + .../sensitivity/ios/realistic-3-shot.json | 11 + .../sensitivity/ios/realistic-3-wait.json | 8 + .../evidence/sensitivity/ios/realistic-3.png | Bin 0 -> 81121 bytes .../sensitivity/ios/reverted-diff-t0.02.json | 9 + .../sensitivity/ios/reverted-diff-t0.1.json | 9 + .../sensitivity/ios/reverted-shot.json | 11 + .../sensitivity/ios/reverted-wait.json | 8 + .../evidence/sensitivity/ios/reverted.png | Bin 0 -> 62787 bytes example/visual/evidence/summary.md | 125 + example/visual/run.mjs | 745 ++- 147 files changed, 24709 insertions(+), 174 deletions(-) rename example/visual/__baselines__/android/{android-base-elevated.png => surface-example-elevated.png} (100%) rename example/visual/__baselines__/android/{android-base-flat.png => surface-example-flat.png} (100%) rename example/visual/__baselines__/ios/{surface-elevated.png => surface-example-elevated.png} (100%) rename example/visual/__baselines__/ios/{surface-flat.png => surface-example-flat.png} (100%) create mode 100644 example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json create mode 100644 example/visual/evidence/a11y/02-android-snapshot-with-accessible.json create mode 100644 example/visual/evidence/a11y/03-testid-only-and-crop.json create mode 100644 example/visual/evidence/a11y/03-testid-only-and-snapshot.json create mode 100644 example/visual/evidence/a11y/03-testid-only-ios-crop.json create mode 100644 example/visual/evidence/a11y/03-testid-only-ios-snapshot.json create mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.01.json create mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.02.json create mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.05.json create mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.1.json create mode 100644 example/visual/evidence/android/108-diff-gross-t0.01.json create mode 100644 example/visual/evidence/android/108-diff-gross-t0.02.json create mode 100644 example/visual/evidence/android/108-diff-gross-t0.05.json create mode 100644 example/visual/evidence/android/108-diff-gross-t0.1.json create mode 100644 example/visual/evidence/android/111-diff-revert1-t0.01.json create mode 100644 example/visual/evidence/android/111-diff-revert1-t0.02.json create mode 100644 example/visual/evidence/android/111-diff-revert1-t0.05.json create mode 100644 example/visual/evidence/android/111-diff-revert1-t0.1.json create mode 100644 example/visual/evidence/android/114-diff-realistic-t0.01.json create mode 100644 example/visual/evidence/android/114-diff-realistic-t0.02.json create mode 100644 example/visual/evidence/android/114-diff-realistic-t0.05.json create mode 100644 example/visual/evidence/android/114-diff-realistic-t0.1.json create mode 100644 example/visual/evidence/android/117-diff-revert2-t0.01.json create mode 100644 example/visual/evidence/android/117-diff-revert2-t0.02.json create mode 100644 example/visual/evidence/android/117-diff-revert2-t0.05.json create mode 100644 example/visual/evidence/android/117-diff-revert2-t0.1.json create mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.01.json create mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.02.json create mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.05.json create mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.1.json create mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.01.json create mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.02.json create mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.05.json create mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.1.json create mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.01.json create mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.02.json create mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.05.json create mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.1.json create mode 100644 example/visual/evidence/diff-images/android-gross-t0.02.png create mode 100644 example/visual/evidence/diff-images/android-gross-t0.1.png create mode 100644 example/visual/evidence/diff-images/android-realistic-1-t0.02.png create mode 100644 example/visual/evidence/diff-images/android-realistic-2-t0.02.png create mode 100644 example/visual/evidence/diff-images/android-realistic-3-t0.02.png create mode 100644 example/visual/evidence/diff-images/ios-gross-t0.02.png create mode 100644 example/visual/evidence/diff-images/ios-gross-t0.1.png create mode 100644 example/visual/evidence/diff-images/ios-realistic-1-t0.02.png create mode 100644 example/visual/evidence/diff-images/ios-realistic-2-t0.02.png create mode 100644 example/visual/evidence/diff-images/ios-realistic-3-t0.02.png create mode 100644 example/visual/evidence/diff-images/ios-realistic-t0.02.png create mode 100644 example/visual/evidence/ios/26-diff.json create mode 100644 example/visual/evidence/ios/30-diff.json create mode 100644 example/visual/evidence/ios/37-diff.json create mode 100644 example/visual/evidence/ios/40-diff.json create mode 100644 example/visual/evidence/ios/43-diff.json create mode 100644 example/visual/evidence/ios/53-diff.json create mode 100644 example/visual/evidence/ios/59-diff.json create mode 100644 example/visual/evidence/ios/60-diff.json create mode 100644 example/visual/evidence/ios/63-diff.json create mode 100644 example/visual/evidence/ios/66-diff-t0.02.json create mode 100644 example/visual/evidence/ios/66-diff-t0.1.json create mode 100644 example/visual/evidence/ios/69-diff.json create mode 100644 example/visual/evidence/ios/6x-diff-relaunch-1-t002.json create mode 100644 example/visual/evidence/ios/6x-diff-warm-1-t002.json create mode 100644 example/visual/evidence/ios/6x-diff-warm-2-t002.json create mode 100644 example/visual/evidence/ios/6x-diff-warm-3-t002.json create mode 100644 example/visual/evidence/issues.md create mode 100644 example/visual/evidence/runs/android/fix-fail/summary.json create mode 100644 example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png create mode 100644 example/visual/evidence/runs/android/fix-pass-after-revert/summary.json create mode 100644 example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json create mode 100644 example/visual/evidence/runs/android/fix-pass-from-surface/summary.json create mode 100644 example/visual/evidence/runs/ios/fix-fail/summary.json create mode 100644 example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png create mode 100644 example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json create mode 100644 example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json create mode 100644 example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json create mode 100644 example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json create mode 100644 example/visual/evidence/sensitivity/android/gross-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/gross-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/gross-probe-shot.json create mode 100644 example/visual/evidence/sensitivity/android/gross-probe-wait.json create mode 100644 example/visual/evidence/sensitivity/android/gross-probe.png create mode 100644 example/visual/evidence/sensitivity/android/gross-shot.json create mode 100644 example/visual/evidence/sensitivity/android/gross-wait.json create mode 100644 example/visual/evidence/sensitivity/android/gross.png create mode 100644 example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-1-shot.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-1-wait.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-1.png create mode 100644 example/visual/evidence/sensitivity/android/realistic-2-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-2-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-2-shot.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-2-wait.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-2.png create mode 100644 example/visual/evidence/sensitivity/android/realistic-3-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-3-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-3-shot.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-3-wait.json create mode 100644 example/visual/evidence/sensitivity/android/realistic-3.png create mode 100644 example/visual/evidence/sensitivity/android/reverted-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/reverted-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/reverted-shot.json create mode 100644 example/visual/evidence/sensitivity/android/reverted-wait.json create mode 100644 example/visual/evidence/sensitivity/android/reverted.png create mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-shot.json create mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-wait.json create mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break.png create mode 100644 example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json create mode 100644 example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/ios/gross-shot.json create mode 100644 example/visual/evidence/sensitivity/ios/gross-wait.json create mode 100644 example/visual/evidence/sensitivity/ios/gross.png create mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-shot.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-wait.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-1.png create mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-shot.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-wait.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-2.png create mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-shot.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-wait.json create mode 100644 example/visual/evidence/sensitivity/ios/realistic-3.png create mode 100644 example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json create mode 100644 example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json create mode 100644 example/visual/evidence/sensitivity/ios/reverted-shot.json create mode 100644 example/visual/evidence/sensitivity/ios/reverted-wait.json create mode 100644 example/visual/evidence/sensitivity/ios/reverted.png create mode 100644 example/visual/evidence/summary.md diff --git a/example/src/Examples/SurfaceExample.tsx b/example/src/Examples/SurfaceExample.tsx index 55aaceaa4d..4a745e341e 100644 --- a/example/src/Examples/SurfaceExample.tsx +++ b/example/src/Examples/SurfaceExample.tsx @@ -53,11 +53,7 @@ const SurfaceExample = () => { return ( - + { - + ` taps the match instead of only locating it. 2. `scroll bottom` hits a safety limit and leaves the Expo dev menu open. @@ -61,17 +73,19 @@ See `artifacts/issues.md` for commands and evidence. Also noted: docs say `wait --stable`, the CLI takes `wait stable [quietMs] [timeoutMs]`. -Issues 6–12 (session binding per cwd, non-portable `find` selectors, stale-ref errors, Android relaunch landing in the launcher, `logs` on an inactive log, `--pixel-density` iOS-only, Node client not resolvable from the `npx` cache) are in `artifacts/issues.md` with commands and evidence. +Issues 6–12 (session binding per cwd, non-portable `find` selectors, stale-ref errors, Android relaunch landing in the launcher, `logs` on an inactive log, `--pixel-density` iOS-only, Node client not resolvable from the `npx` cache) are in `evidence/issues.md` with commands and evidence. + +Issues 13–18 came out of the review round: `snapshot` returns an empty `nodes` array when the tree is unchanged unless `--force-full` is passed; a relaunch restores the previous route (the example app persists navigation state, so this is app behaviour the runner has to handle, logged for context); the dev menu appears after app-ready, not at open; Fast Refresh not reaching Android after a relaunch; an occasional non-zero CLI exit with empty stdout and stderr; and `diff screenshot --out` writing no image when the result is a match. ## Android Emulator `Pixel_10_Pro`, API 37 (Android 17), arm64 `google_apis_playstore_ps16k`, 480 dpi, 1280x2856, emulator 36.6.11, `hw.gpu.mode=auto`. Wall-clock: emulator boot 8 s, `yarn example android` (incremental, build + install + launch) 119 s, `open` 668 ms, `open --relaunch` 1,688 ms, one cropped capture ≈ 2 s. -`--pixel-density` is rejected on Android (`UNSUPPORTED_OPERATION`, iOS-family only); Android screenshots already come back in native device pixels, so the `surface-elevated` crop is 1280x642 = 821,760 px. `--crop-on 'id="surface-elevated"'` and `'id="surface-flat"'` each resolve to exactly one node (`testID` + `accessible` exposes `resource-id`), so no fallback selector was needed. +`--pixel-density` is rejected on Android (`UNSUPPORTED_OPERATION`, iOS-family only); Android screenshots already come back in native device pixels, so the `surface-example-elevated` crop is 1280x642 = 821,760 px. `--crop-on 'id="surface-example-elevated"'` and `'id="surface-example-flat"'` each resolve to exactly one node (`testID` + `accessible` exposes `resource-id`), so no fallback selector was needed. ### Stability -Four captures of `surface-elevated` diffed against the baseline, 821,760 pixels each, at every pre-registered threshold: +Four captures of `surface-example-elevated` diffed against the baseline, 821,760 pixels each, at every pre-registered threshold: | capture | changed px @ 0.1 | @ 0.05 | @ 0.02 | @ 0.01 | regions | | ------------------------------------------------ | ---------------- | ------ | ------ | ------ | ------- | @@ -97,7 +111,24 @@ The realistic break repeats the iOS finding exactly: at the default threshold th These numbers are for one emulator on one host with `hw.gpu.mode=auto`, i.e. host-GPU rendering. **swiftshader was not measured**, so nothing here says whether Android baselines survive on `ubuntu-latest`, which renders with swiftshader — CI parity is an open item, not a claim. Nor was a cold emulator boot from a wiped snapshot, an AVD at another density, a system-image update, or a Release build. Emulator relaunch is more expensive than on iOS in commands, not seconds: `open --relaunch` starts the Expo dev launcher, so reconnecting to Metro and waiting for the bundle takes three extra steps (see issues 9 and 10), and `wait stable` returns "settled" on the still-empty tree while the bundle loads — a suite must wait for real content, not for stability. -Six more agent-device findings came out of the Android run (session/device binding, non-portable `find` selectors, ref invalidation, dev-launcher relaunch, silent `logs`, and `--pixel-density` being iOS-only). They are issues 6-11 in `artifacts/issues.md`, with commands and artifact references. +Six more agent-device findings came out of the Android run (session/device binding, non-portable `find` selectors, ref invalidation, dev-launcher relaunch, silent `logs`, and `--pixel-density` being iOS-only). They are issues 6-11 in `evidence/issues.md`, with commands and artifact references. + +## Re-measured after review + +Review asked that the headline sensitivity claim rest on more than one capture, and that the threshold be fixed before measuring rather than after. Both were done on 2026-09-10 with the renamed test ids and `testID` only (no `accessible`). Each row is an independent capture — `wait stable`, 2 s sleep, screenshot, then two diffs against the committed baseline at the two pre-declared thresholds. Raw JSON is in `evidence/sensitivity//`, diff images in `evidence/diff-images/-realistic--t0.02.png`. + +| platform | capture | changed px @ 0.1 | changed px @ 0.02 | regions @ 0.02 | +| -------- | ----------- | ---------------- | ----------------- | -------------- | +| iOS | realistic-1 | 0 | 10,179 (1.31 %) | 3 | +| iOS | realistic-2 | 0 | 10,179 (1.31 %) | 3 | +| iOS | realistic-3 | 0 | 10,179 (1.31 %) | 3 | +| Android | realistic-1 | 0 | 9,336 (1.14 %) | 1 | +| Android | realistic-2 | 0 | 9,336 (1.14 %) | 1 | +| Android | realistic-3 | 0 | 9,336 (1.14 %) | 1 | + +**Bit-identical across all three captures on both platforms**, and identical to the original single-capture numbers. There is no capture noise to average over: on these targets the changed-pixel count is a deterministic function of the code. The gross break was re-captured once per platform with the same result as before (iOS 4,277 / 116,292 px; Android 65,051 / 208,505 px at 0.1 / 0.02). After reverting, every capture diffed to 0 at both thresholds. + +One operational finding from this pass matters for any runner built on this: **Fast Refresh stopped reaching the Android app after a relaunch.** Metro was serving the changed bundle (verified by fetching it), `adb reverse` was in place, and yet captures stayed at 0 changed pixels until a dev-menu Reload — after which the break appeared at exactly the expected magnitude. A runner that captures without forcing a fresh bundle can compare stale pixels and report PASS. `run.mjs` therefore always relaunches the app before capturing (issue 16). ## Not done / out of scope @@ -121,39 +152,60 @@ node example/visual/run.mjs --platform ios node example/visual/run.mjs --platform android ``` -Flags: `--update` (overwrite the baselines with the current captures instead of -diffing), `--threshold <0-1>` (default `0.02`, the PoC finding — the CLI default of -`0.1` misses soft-shadow regressions), `--story surface-elevated,surface-flat`. +Flags: `--update` (write the current captures as baselines — creates a missing +baseline, overwrites an existing one), `--threshold <0-1>` (default `0.02`, the PoC +finding — the CLI default of `0.1` misses soft-shadow regressions), +`--story surface-example-elevated,surface-example-flat`, `--out ` (where captures, +diff images, per-command JSON and `summary.json` go; default +`example/visual/artifacts/run/`, gitignored), `--force` (downgrade the two +guardrails below to warnings). Prerequisites are documented, not automated: the app must already be built and installed on the device pinned in `env.json`, and Metro must be running. The -script opens the app, dismisses the Expo dev menu if it is showing, navigates to -the Surface example (skipped if it is already on screen), waits for the UI to go -quiet, then captures and diffs each story. +script always relaunches the app (`open --relaunch` on iOS, `am force-stop` + +`open` on Android) so the JS bundle is fetched fresh from Metro — never trusting +whatever is already on screen, after Fast Refresh was seen to silently stop +reaching the Android app. It waits for the app to be ready (not just for the tree +to be stable), dismisses the Expo dev menu (iOS) or dev launcher (Android) if +they appear, and then — because the example app persists navigation state and +restores the last route — either finds the Surface screen already showing or +presses Back to the example list root and presses the Surface row (matched by +position and width, not by label alone, so the header title is never mistaken +for it). Every loop is bounded and fails with a message rather than scrolling +forever. It then waits for the UI to go quiet and captures and diffs each story. Each story prints one line: ``` -ios surface-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS ``` PASS means agent-device reported `match: true` at that threshold — no pixel differed by more than the threshold's colour distance. FAIL means it did not; `changed` is the pixel count and `regions` the number of clustered diff areas. -The process exits 1 if any story fails, so it can gate a script or a CI step. -Captures, diff images, per-command JSON and `summary.json` land in -`example/visual/artifacts/run//`. - -On start-up the script compares the connected device with `env.json` — UDID, iOS -runtime and boot state via `xcrun simctl list -j devices`; API level and density -via `adb getprop` and `adb shell wm density` — and prints a `WARNING:` line per -mismatch. It does not refuse to run: baselines are only valid for the pinned -configuration, so a warning is the signal that a diff result is not comparable -with the numbers in this file. - -Verified end to end on 2026-09-10: PASS with `changed=0` on both stories on both -platforms; with the realistic iOS break reapplied by Fast Refresh -(`shadow(elevation === 1 ? 2 : elevation, …)`) the script reported -`ios surface-elevated changed=10179 (1.31%) regions=3 threshold=0.02 → FAIL` and -exited 1 — the same pixel count as the hand-run loop — then PASS again after -`git checkout -- src/components/Surface.tsx`. +Exit codes: `1` if any story fails; `2` if the connected device does not match +`env.json`; `3` if a capture's dimensions do not match the crop pinned in +`env.json`. A regression is the only thing that exits 1. + +Two guardrails, both hard failures unless `--force`: + +- **Device pin.** Before any capture the script compares the connected device with + `env.json` — UDID, iOS runtime and boot state via `xcrun simctl list -j devices`; + API level and density via `adb getprop` and `adb shell wm density`. Any mismatch, + or an inability to identify the device at all, exits 2 with an expected/observed + list. This applies to `--update` too, so committed baselines cannot be + overwritten from the wrong simulator by accident. +- **Crop size.** After every capture the reported width, height and (on iOS) + pixel density are compared with the crop pinned in `env.json`. A mismatch exits + 3; a wrong-sized capture can never read as PASS. `env.json` is never rewritten + by the script. + +Verified end to end on 2026-09-10 after review; `summary.json` and the diff images are in +`evidence/runs//fix-*/`. From the Surface screen: PASS with `changed=0` +on both stories, both platforms (iOS 12.7 s, Android 24.9 s). Started from another +example screen: relaunch → overlay dismissed → Back ×2 → Surface row pressed → PASS +(iOS 35.6 s, Android 33.6 s). With the realistic break applied and no manual +reload: `ios surface-example-elevated changed=10179 (1.31%) regions=3 → FAIL`, exit 1; +`android surface-example-elevated changed=9336 (1.14%) regions=1 → FAIL`, exit 1 — +the same counts as every hand-run capture. After `git checkout -- src/components/Surface.tsx`: +PASS again on both. diff --git a/example/visual/__baselines__/android/android-base-elevated.png b/example/visual/__baselines__/android/surface-example-elevated.png similarity index 100% rename from example/visual/__baselines__/android/android-base-elevated.png rename to example/visual/__baselines__/android/surface-example-elevated.png diff --git a/example/visual/__baselines__/android/android-base-flat.png b/example/visual/__baselines__/android/surface-example-flat.png similarity index 100% rename from example/visual/__baselines__/android/android-base-flat.png rename to example/visual/__baselines__/android/surface-example-flat.png diff --git a/example/visual/__baselines__/ios/surface-elevated.png b/example/visual/__baselines__/ios/surface-example-elevated.png similarity index 100% rename from example/visual/__baselines__/ios/surface-elevated.png rename to example/visual/__baselines__/ios/surface-example-elevated.png diff --git a/example/visual/__baselines__/ios/surface-flat.png b/example/visual/__baselines__/ios/surface-example-flat.png similarity index 100% rename from example/visual/__baselines__/ios/surface-flat.png rename to example/visual/__baselines__/ios/surface-example-flat.png diff --git a/example/visual/env.json b/example/visual/env.json index d33502b533..ab10fdd3dc 100644 --- a/example/visual/env.json +++ b/example/visual/env.json @@ -12,8 +12,8 @@ "commit": "cbcd52f7e", "date": "2026-09-10T09:30:58Z", "baselines": { - "surface-elevated": "__baselines__/ios/surface-elevated.png", - "surface-flat": "__baselines__/ios/surface-flat.png", + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", "cropWidth": 1206, "cropHeight": 642, "logicalWidth": 402, @@ -40,8 +40,8 @@ "metroHost": "http://192.168.1.151:8081", "date": "2026-09-10T09:45:00Z", "baselines": { - "surface-elevated": "__baselines__/android/android-base-elevated.png", - "surface-flat": "__baselines__/android/android-base-flat.png", + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", "cropWidth": 1280, "cropHeight": 642, "totalPixels": 821760, diff --git a/example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json b/example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json new file mode 100644 index 0000000000..e979d076fc --- /dev/null +++ b/example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json @@ -0,0 +1,1896 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "Application", + "role": "UIApplication", + "label": "React Native Paper Example", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 0, + "pid": 37870, + "ref": "e1" + }, + { + "index": 1, + "parentIndex": 0, + "type": "Window", + "role": "UIWindow", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 1, + "pid": 37870, + "ref": "e2" + }, + { + "index": 2, + "parentIndex": 1, + "type": "Other", + "role": "UITransitionView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 2, + "pid": 37870, + "ref": "e3" + }, + { + "index": 3, + "parentIndex": 2, + "type": "Other", + "role": "UIDropShadowView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 3, + "pid": 37870, + "ref": "e4" + }, + { + "index": 4, + "parentIndex": 3, + "type": "Other", + "role": "_TtC13EXDevLauncherP33_867A144D7C8F5D750D0BFA9E58EDAFE322DevLauncherWrapperView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 4, + "pid": 37870, + "ref": "e5" + }, + { + "index": 5, + "parentIndex": 4, + "type": "Other", + "role": "RCTSurfaceHostingProxyRootView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 5, + "pid": 37870, + "ref": "e6" + }, + { + "index": 6, + "parentIndex": 5, + "type": "Other", + "role": "RCTSurfaceView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 6, + "pid": 37870, + "ref": "e7" + }, + { + "index": 7, + "parentIndex": 6, + "type": "Other", + "role": "RCTRootComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 7, + "pid": 37870, + "ref": "e8" + }, + { + "index": 8, + "parentIndex": 7, + "type": "Other", + "role": "RNCSafeAreaProviderComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 8, + "pid": 37870, + "ref": "e9" + }, + { + "index": 9, + "parentIndex": 8, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e10" + }, + { + "index": 10, + "parentIndex": 9, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 10, + "pid": 37870, + "ref": "e11" + }, + { + "index": 11, + "parentIndex": 10, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 11, + "pid": 37870, + "ref": "e12" + }, + { + "index": 12, + "parentIndex": 11, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 12, + "pid": 37870, + "ref": "e13" + }, + { + "index": 13, + "parentIndex": 12, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 13, + "pid": 37870, + "ref": "e14" + }, + { + "index": 14, + "parentIndex": 13, + "type": "Other", + "role": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 770 + }, + "depth": 14, + "pid": 37870, + "ref": "e15" + }, + { + "index": 15, + "parentIndex": 14, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 770 + }, + "depth": 15, + "pid": 37870, + "ref": "e16" + }, + { + "index": 16, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Example items", + "rect": { + "x": -306, + "y": 30, + "width": 294, + "height": 20 + }, + "depth": 16, + "pid": 37870, + "ref": "e17" + }, + { + "index": 17, + "parentIndex": 16, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Example items", + "rect": { + "x": -306, + "y": 30, + "width": 294, + "height": 20 + }, + "depth": 17, + "pid": 37870, + "ref": "e18" + }, + { + "index": 18, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Inbox, 44", + "rect": { + "x": -322, + "y": 68, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e19" + }, + { + "index": 19, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Starred", + "rect": { + "x": -322, + "y": 124, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e20" + }, + { + "index": 20, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Sent mail", + "rect": { + "x": -322, + "y": 180, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e21" + }, + { + "index": 21, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Colored label", + "rect": { + "x": -322, + "y": 236, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e22" + }, + { + "index": 22, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "A very long title that will be truncated", + "rect": { + "x": -322, + "y": 292, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e23" + }, + { + "index": 23, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -318, + "y": 352, + "width": 290, + "height": 1 + }, + "depth": 16, + "pid": 37870, + "ref": "e24" + }, + { + "index": 24, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Preferences", + "rect": { + "x": -306, + "y": 375, + "width": 294, + "height": 20 + }, + "depth": 16, + "pid": 37870, + "ref": "e25" + }, + { + "index": 25, + "parentIndex": 24, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Preferences", + "rect": { + "x": -306, + "y": 375, + "width": 294, + "height": 20 + }, + "depth": 17, + "pid": 37870, + "ref": "e26" + }, + { + "index": 26, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Dark Theme", + "rect": { + "x": -334, + "y": 413, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e27" + }, + { + "index": 27, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "RTL", + "rect": { + "x": -334, + "y": 469, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e28" + }, + { + "index": 28, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Collapsed drawer *", + "rect": { + "x": -334, + "y": 525, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e29" + }, + { + "index": 29, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Custom font *", + "rect": { + "x": -334, + "y": 581, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e30" + }, + { + "index": 30, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Highlight effect *", + "rect": { + "x": -334, + "y": 637, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e31" + }, + { + "index": 31, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -318, + "y": 697, + "width": 290, + "height": 1 + }, + "depth": 16, + "pid": 37870, + "ref": "e32" + }, + { + "index": 32, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "* - optional example toggles", + "rect": { + "x": -310, + "y": 708, + "width": 274, + "height": 16 + }, + "depth": 16, + "pid": 37870, + "ref": "e33" + }, + { + "index": 33, + "parentIndex": 32, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "* - optional example toggles", + "rect": { + "x": -310, + "y": 708, + "width": 274, + "height": 16 + }, + "depth": 17, + "pid": 37870, + "ref": "e34" + }, + { + "index": 34, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "React Native Paper Version 6.0.0-alpha.0", + "rect": { + "x": -310, + "y": 736, + "width": 274, + "height": 16 + }, + "depth": 16, + "pid": 37870, + "ref": "e35" + }, + { + "index": 35, + "parentIndex": 34, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "React Native Paper Version 6.0.0-alpha.0", + "rect": { + "x": -310, + "y": 736, + "width": 274, + "height": 16 + }, + "depth": 17, + "pid": 37870, + "ref": "e36" + }, + { + "index": 36, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -33, + "y": 62, + "width": 30, + "height": 778 + }, + "depth": 14, + "pid": 37870, + "ref": "e37" + }, + { + "index": 37, + "parentIndex": 36, + "type": "Other", + "role": "UIView", + "rect": { + "x": -6, + "y": 169, + "width": 3, + "height": 668 + }, + "depth": 15, + "pid": 37870, + "ref": "e38" + }, + { + "index": 38, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -346, + "y": 807, + "width": 346, + "height": 30 + }, + "depth": 14, + "pid": 37870, + "ref": "e39" + }, + { + "index": 39, + "parentIndex": 38, + "type": "Other", + "role": "UIView", + "rect": { + "x": -343, + "y": 834, + "width": 340, + "height": 3 + }, + "depth": 15, + "pid": 37870, + "ref": "e40" + }, + { + "index": 40, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -33, + "y": 62, + "width": 30, + "height": 778 + }, + "depth": 14, + "pid": 37870, + "ref": "e41" + }, + { + "index": 41, + "parentIndex": 40, + "type": "Other", + "role": "UIView", + "rect": { + "x": -6, + "y": 169, + "width": 3, + "height": 668 + }, + "depth": 15, + "pid": 37870, + "ref": "e42" + }, + { + "index": 42, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -346, + "y": 807, + "width": 346, + "height": 30 + }, + "depth": 14, + "pid": 37870, + "ref": "e43" + }, + { + "index": 43, + "parentIndex": 42, + "type": "Other", + "role": "UIView", + "rect": { + "x": -343, + "y": 834, + "width": 340, + "height": 3 + }, + "depth": 15, + "pid": 37870, + "ref": "e44" + }, + { + "index": 44, + "parentIndex": 10, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 11, + "pid": 37870, + "ref": "e45" + }, + { + "index": 45, + "parentIndex": 44, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 12, + "pid": 37870, + "ref": "e46" + }, + { + "index": 46, + "parentIndex": 45, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 13, + "pid": 37870, + "ref": "e47" + }, + { + "index": 47, + "parentIndex": 46, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 14, + "pid": 37870, + "ref": "e48" + }, + { + "index": 48, + "parentIndex": 47, + "type": "Other", + "role": "RNSScreenStackView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 15, + "pid": 37870, + "ref": "e49" + }, + { + "index": 49, + "parentIndex": 48, + "type": "Other", + "role": "UILayoutContainerView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 16, + "pid": 37870, + "ref": "e50" + }, + { + "index": 50, + "parentIndex": 49, + "type": "Other", + "role": "UINavigationTransitionView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 17, + "pid": 37870, + "ref": "e51" + }, + { + "index": 51, + "parentIndex": 50, + "type": "Other", + "role": "UIViewControllerWrapperView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 18, + "pid": 37870, + "ref": "e52" + }, + { + "index": 52, + "parentIndex": 51, + "type": "Other", + "role": "RNSScreenView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 19, + "pid": 37870, + "ref": "e53" + }, + { + "index": 53, + "parentIndex": 52, + "type": "Other", + "role": "RNSScreenContentWrapper", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 20, + "pid": 37870, + "ref": "e54" + }, + { + "index": 54, + "parentIndex": 53, + "type": "Other", + "role": "RNSSafeAreaViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 21, + "pid": 37870, + "ref": "e55" + }, + { + "index": 55, + "parentIndex": 54, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 22, + "pid": 37870, + "ref": "e56" + }, + { + "index": 56, + "parentIndex": 55, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 23, + "pid": 37870, + "ref": "e57" + }, + { + "index": 57, + "parentIndex": 56, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 24, + "pid": 37870, + "ref": "e58" + }, + { + "index": 58, + "parentIndex": 57, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 25, + "pid": 37870, + "ref": "e59" + }, + { + "index": 59, + "parentIndex": 57, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 25, + "pid": 37870, + "ref": "e60" + }, + { + "index": 60, + "parentIndex": 59, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Back", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 26, + "pid": 37870, + "ref": "e61" + }, + { + "index": 61, + "parentIndex": 57, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 25, + "pid": 37870, + "ref": "e62" + }, + { + "index": 62, + "parentIndex": 61, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 26, + "pid": 37870, + "ref": "e63" + }, + { + "index": 63, + "parentIndex": 55, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 23, + "pid": 37870, + "ref": "e64" + }, + { + "index": 64, + "parentIndex": 63, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 24, + "pid": 37870, + "ref": "e65" + }, + { + "index": 65, + "parentIndex": 64, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 1435 + }, + "depth": 25, + "pid": 37870, + "ref": "e66" + }, + { + "index": 66, + "parentIndex": 65, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 1435 + }, + "depth": 26, + "pid": 37870, + "ref": "e67" + }, + { + "index": 67, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Elevated surface, Elevation 0, Elevation 1, Elevation 2, Elevation 3, Elevation 4, Elevation 5, Vertical scroll bar, 3 pages", + "identifier": "surface-elevated", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 214 + }, + "depth": 27, + "pid": 37870, + "ref": "e68" + }, + { + "index": 68, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Flat surface, Elevation 0, Elevation 1, Elevation 2, Elevation 3, Elevation 4, Elevation 5, Vertical scroll bar, 3 pages", + "identifier": "surface-flat", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 214 + }, + "depth": 27, + "pid": 37870, + "ref": "e69" + }, + { + "index": 69, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e70" + }, + { + "index": 70, + "parentIndex": 69, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e71" + }, + { + "index": 71, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 664, + "width": 120, + "height": 120 + }, + "depth": 27, + "pid": 37870, + "ref": "e72" + }, + { + "index": 72, + "parentIndex": 71, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 664, + "width": 120, + "height": 120 + }, + "depth": 28, + "pid": 37870, + "ref": "e73" + }, + { + "index": 73, + "parentIndex": 71, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 28, + "pid": 37870, + "ref": "e74" + }, + { + "index": 74, + "parentIndex": 73, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 29, + "pid": 37870, + "ref": "e75" + }, + { + "index": 75, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 27, + "pid": 37870, + "ref": "e76" + }, + { + "index": 76, + "parentIndex": 75, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 28, + "pid": 37870, + "ref": "e77" + }, + { + "index": 77, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 27, + "pid": 37870, + "ref": "e78" + }, + { + "index": 78, + "parentIndex": 77, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 28, + "pid": 37870, + "ref": "e79" + }, + { + "index": 79, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Layout", + "rect": { + "x": 0, + "y": 900, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e80" + }, + { + "index": 80, + "parentIndex": 79, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Layout", + "rect": { + "x": 0, + "y": 900, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e81" + }, + { + "index": 81, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 24, + "y": 970, + "width": 354, + "height": 39 + }, + "depth": 27, + "pid": 37870, + "ref": "e82" + }, + { + "index": 82, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 27, + "pid": 37870, + "ref": "e83" + }, + { + "index": 83, + "parentIndex": 82, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e84" + }, + { + "index": 84, + "parentIndex": 82, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Left", + "rect": { + "x": 35, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e85" + }, + { + "index": 85, + "parentIndex": 84, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Left", + "rect": { + "x": 35, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e86" + }, + { + "index": 86, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 27, + "pid": 37870, + "ref": "e87" + }, + { + "index": 87, + "parentIndex": 86, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e88" + }, + { + "index": 88, + "parentIndex": 86, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Right", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e89" + }, + { + "index": 89, + "parentIndex": 88, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Right", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e90" + }, + { + "index": 90, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 24, + "y": 1029, + "width": 354, + "height": 400 + }, + "depth": 27, + "pid": 37870, + "ref": "e91" + }, + { + "index": 91, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1040, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 27, + "pid": 37870, + "ref": "e92" + }, + { + "index": 92, + "parentIndex": 91, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1040, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 28, + "pid": 37870, + "ref": "e93" + }, + { + "index": 93, + "parentIndex": 91, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Top", + "rect": { + "x": 35, + "y": 1122, + "width": 332, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e94" + }, + { + "index": 94, + "parentIndex": 93, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Top", + "rect": { + "x": 35, + "y": 1122, + "width": 332, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e95" + }, + { + "index": 95, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1236.6666717529297, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 27, + "pid": 37870, + "ref": "e96" + }, + { + "index": 96, + "parentIndex": 95, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1236.6666717529297, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 28, + "pid": 37870, + "ref": "e97" + }, + { + "index": 97, + "parentIndex": 95, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Bottom", + "rect": { + "x": 35, + "y": 1318.6666717529297, + "width": 332, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e98" + }, + { + "index": 98, + "parentIndex": 97, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Bottom", + "rect": { + "x": 35, + "y": 1318.6666717529297, + "width": 332, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e99" + }, + { + "index": 99, + "parentIndex": 64, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 25, + "pid": 37870, + "ref": "e100" + }, + { + "index": 100, + "parentIndex": 99, + "type": "Other", + "role": "UIView", + "rect": { + "x": 65, + "y": 868, + "width": 272, + "height": 3 + }, + "depth": 26, + "pid": 37870, + "ref": "e101" + }, + { + "index": 101, + "parentIndex": 64, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 25, + "pid": 37870, + "ref": "e102" + }, + { + "index": 102, + "parentIndex": 101, + "type": "Other", + "role": "UIView", + "rect": { + "x": 65, + "y": 868, + "width": 272, + "height": 3 + }, + "depth": 26, + "pid": 37870, + "ref": "e103" + }, + { + "index": 103, + "parentIndex": 49, + "type": "Other", + "role": "_UIFloatingBarContainerView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 17, + "pid": 37870, + "ref": "e104" + }, + { + "index": 104, + "parentIndex": 103, + "type": "Other", + "role": "_TtGC5UIKitP10$186ecd81022FloatingBarHostingViewVS_20FloatingBarContainer_", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 18, + "pid": 37870, + "ref": "e105" + }, + { + "index": 105, + "parentIndex": 8, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e106" + }, + { + "index": 106, + "parentIndex": 7, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 8, + "pid": 37870, + "ref": "e107" + }, + { + "index": 107, + "parentIndex": 106, + "type": "Other", + "role": "RCTDebuggingOverlayComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e108" + }, + { + "index": 108, + "parentIndex": 107, + "type": "Other", + "role": "RCTDebuggingOverlay", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 10, + "pid": 37870, + "ref": "e109" + }, + { + "index": 109, + "parentIndex": 0, + "type": "Window", + "role": "UIWindow", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 1, + "pid": 37870, + "ref": "e110" + }, + { + "index": 110, + "parentIndex": 109, + "type": "Other", + "role": "UITransitionView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 2, + "pid": 37870, + "ref": "e111" + }, + { + "index": 111, + "parentIndex": 110, + "type": "Other", + "role": "UIDropShadowView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 3, + "pid": 37870, + "ref": "e112" + }, + { + "index": 112, + "parentIndex": 111, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 4, + "pid": 37870, + "ref": "e113" + }, + { + "index": 113, + "parentIndex": 112, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 5, + "pid": 37870, + "ref": "e114" + }, + { + "index": 114, + "parentIndex": 113, + "type": "StaticText", + "role": "UILabel", + "label": "Refreshing...", + "rect": { + "x": 10, + "y": -22.33333333333333, + "width": 382, + "height": 14.333333333333329 + }, + "depth": 6, + "pid": 37870, + "ref": "e115" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 115, + "totalNodeCount": 115, + "reasons": [] + }, + "warnings": [ + "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." + ], + "snapshotDiagnostics": { + "stats": { + "count": 121, + "p50Ms": 68, + "p95Ms": 122, + "maxMs": 677, + "slowThresholdMs": 1500, + "platform": "ios", + "backends": { + "xctest": 121 + } + } + }, + "refsGeneration": 835195 + } +} diff --git a/example/visual/evidence/a11y/02-android-snapshot-with-accessible.json b/example/visual/evidence/a11y/02-android-snapshot-with-accessible.json new file mode 100644 index 0000000000..d2bc849f18 --- /dev/null +++ b/example/visual/evidence/a11y/02-android-snapshot-with-accessible.json @@ -0,0 +1,4343 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e1" + }, + { + "index": 1, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_launch_animation_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e2" + }, + { + "index": 2, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e3" + }, + { + "index": 3, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 2, + "ref": "e4" + }, + { + "index": 4, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 3, + "ref": "e5" + }, + { + "index": 5, + "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 4, + "ref": "e6" + }, + { + "index": 6, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 5, + "ref": "e7" + }, + { + "index": 7, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_contents", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1220, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 6, + "ref": "e8" + }, + { + "index": 8, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 525, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e9" + }, + { + "index": 9, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_content", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 196, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 8, + "ref": "e10" + }, + { + "index": 10, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_except_heads_up", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 196, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 9, + "ref": "e11" + }, + { + "index": 11, + "type": "android.widget.TextView", + "label": "3:11", + "value": "3:11", + "identifier": "com.android.systemui:id/clock", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 45, + "width": 130, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 10, + "ref": "e12" + }, + { + "index": 12, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/start_side_notif_and_chip_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 10, + "ref": "e13" + }, + { + "index": 13, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/notification_icon_area", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 12, + "ref": "e14" + }, + { + "index": 14, + "type": "android.view.ViewGroup", + "identifier": "com.android.systemui:id/notificationIcons", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 13, + "ref": "e15" + }, + { + "index": 15, + "type": "android.widget.ImageView", + "label": "Security & privacy notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 14, + "ref": "e16" + }, + { + "index": 16, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 0, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 10, + "parentIndex": 10, + "ref": "e17" + }, + { + "index": 17, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 16, + "ref": "e18" + }, + { + "index": 18, + "type": "android.view.View", + "identifier": "com.android.systemui:id/cutout_space_view", + "bundleId": "com.android.systemui", + "rect": { + "x": 573, + "y": 0, + "width": 109, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e19" + }, + { + "index": 19, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_end_side_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 682, + "y": 0, + "width": 526, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e20" + }, + { + "index": 20, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_end_side_content", + "bundleId": "com.android.systemui", + "rect": { + "x": 963, + "y": 0, + "width": 245, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 19, + "ref": "e21" + }, + { + "index": 21, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/system_icons", + "bundleId": "com.android.systemui", + "rect": { + "x": 963, + "y": 45, + "width": 245, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 20, + "ref": "e22" + }, + { + "index": 22, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/statusIcons", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 144, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e23" + }, + { + "index": 23, + "type": "android.widget.FrameLayout", + "label": "T-Mobile, three bars.", + "identifier": "com.android.systemui:id/mobile_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 69, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e24" + }, + { + "index": 24, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/mobile_group", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 45, + "width": 51, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 23, + "ref": "e25" + }, + { + "index": 25, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 24, + "ref": "e26" + }, + { + "index": 26, + "type": "android.widget.ImageView", + "identifier": "com.android.systemui:id/mobile_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 25, + "ref": "e27" + }, + { + "index": 27, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 78, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 22, + "ref": "e28" + }, + { + "index": 28, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 78, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 22, + "ref": "e29" + }, + { + "index": 29, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/wifi_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 1041, + "y": 45, + "width": 66, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e30" + }, + { + "index": 30, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/wifi_group", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 45, + "width": 48, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 29, + "ref": "e31" + }, + { + "index": 31, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/wifi_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 30, + "ref": "e32" + }, + { + "index": 32, + "type": "android.widget.ImageView", + "label": "Wifi signal full.", + "identifier": "com.android.systemui:id/wifi_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 31, + "ref": "e33" + }, + { + "index": 33, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e34" + }, + { + "index": 34, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 33, + "ref": "e35" + }, + { + "index": 35, + "type": "android.view.View", + "identifier": "com.android.systemui:id/battery", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 34, + "ref": "e36" + }, + { + "index": 36, + "type": "android.view.View", + "label": "Battery 100 percent.", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 72, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 35, + "ref": "e37" + }, + { + "index": 37, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e38" + }, + { + "index": 38, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 37, + "ref": "e39" + }, + { + "index": 39, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 38, + "ref": "e40" + }, + { + "index": 40, + "type": "android.widget.LinearLayout", + "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 39, + "ref": "e41" + }, + { + "index": 41, + "type": "android.widget.FrameLayout", + "identifier": "android:id/content", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 40, + "ref": "e42" + }, + { + "index": 42, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 41, + "ref": "e43" + }, + { + "index": 43, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 42, + "ref": "e44" + }, + { + "index": 44, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 43, + "ref": "e45" + }, + { + "index": 45, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 44, + "ref": "e46" + }, + { + "index": 46, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 156, + "width": 252, + "height": 252 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 45, + "ref": "e47" + }, + { + "index": 47, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1076, + "y": 204, + "width": 156, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 46, + "ref": "e48" + }, + { + "index": 48, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1082, + "y": 210, + "width": 144, + "height": 144 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 47, + "ref": "e49" + }, + { + "index": 49, + "type": "android.widget.ImageView", + "label": "Tools", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1115, + "y": 243, + "width": 78, + "height": 78 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 48, + "ref": "e50" + }, + { + "index": 50, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 42, + "ref": "e51" + }, + { + "index": 51, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 50, + "ref": "e52" + }, + { + "index": 52, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 51, + "ref": "e53" + }, + { + "index": 53, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 50, + "ref": "e54" + }, + { + "index": 54, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 53, + "ref": "e55" + }, + { + "index": 55, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 53, + "ref": "e56" + }, + { + "index": 56, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 55, + "ref": "e57" + }, + { + "index": 57, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 56, + "ref": "e58" + }, + { + "index": 58, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 57, + "ref": "e59" + }, + { + "index": 59, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 12, + "parentIndex": 58, + "ref": "e60" + }, + { + "index": 60, + "type": "android.widget.Button", + "label": "Close drawer", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 13, + "parentIndex": 59, + "ref": "e61" + }, + { + "index": 61, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 58, + "ref": "e62" + }, + { + "index": 62, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 61, + "ref": "e63" + }, + { + "index": 63, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 62, + "ref": "e64" + }, + { + "index": 64, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 15, + "parentIndex": 63, + "ref": "e65" + }, + { + "index": 65, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 16, + "parentIndex": 64, + "ref": "e66" + }, + { + "index": 66, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 65, + "ref": "e67" + }, + { + "index": 67, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 17, + "parentIndex": 65, + "ref": "e68" + }, + { + "index": 68, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 18, + "parentIndex": 67, + "ref": "e69" + }, + { + "index": 69, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 19, + "parentIndex": 68, + "ref": "e70" + }, + { + "index": 70, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 20, + "parentIndex": 69, + "ref": "e71" + }, + { + "index": 71, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 70, + "ref": "e72" + }, + { + "index": 72, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 71, + "ref": "e73" + }, + { + "index": 73, + "type": "android.widget.Button", + "label": "Back", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 72, + "ref": "e74" + }, + { + "index": 74, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 73, + "ref": "e75" + }, + { + "index": 75, + "type": "android.widget.TextView", + "label": "󰁍", + "value": "󰁍", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 74, + "ref": "e76" + }, + { + "index": 76, + "type": "android.view.View", + "label": "Surface", + "value": "Surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 210, + "width": 1064, + "height": 84 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 71, + "ref": "e77" + }, + { + "index": 77, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 20, + "parentIndex": 69, + "hiddenContentBelow": true, + "ref": "e78" + }, + { + "index": 78, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 77, + "ref": "e79" + }, + { + "index": 79, + "type": "android.view.ViewGroup", + "identifier": "surface-elevated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 78, + "ref": "e80" + }, + { + "index": 80, + "type": "android.widget.TextView", + "label": "Elevated surface", + "value": "Elevated surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 79, + "ref": "e81" + }, + { + "index": 81, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 79, + "ref": "e82" + }, + { + "index": 82, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 81, + "ref": "e83" + }, + { + "index": 83, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 82, + "ref": "e84" + }, + { + "index": 84, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 26, + "parentIndex": 83, + "ref": "e85" + }, + { + "index": 85, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 480, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 82, + "ref": "e86" + }, + { + "index": 86, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 26, + "parentIndex": 85, + "ref": "e87" + }, + { + "index": 87, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 912, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 82, + "ref": "e88" + }, + { + "index": 88, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 26, + "parentIndex": 87, + "ref": "e89" + }, + { + "index": 89, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1344, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 82, + "ref": "e90" + }, + { + "index": 90, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1430, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 26, + "parentIndex": 89, + "ref": "e91" + }, + { + "index": 91, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1776, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 82, + "ref": "e92" + }, + { + "index": 92, + "type": "android.widget.TextView", + "label": "Elevation 4", + "value": "Elevation 4", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1862, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 26, + "parentIndex": 91, + "ref": "e93" + }, + { + "index": 93, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2208, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 82, + "ref": "e94" + }, + { + "index": 94, + "type": "android.widget.TextView", + "label": "Elevation 5", + "value": "Elevation 5", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2294, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 26, + "parentIndex": 93, + "ref": "e95" + }, + { + "index": 95, + "type": "android.view.ViewGroup", + "identifier": "surface-flat", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 78, + "ref": "e96" + }, + { + "index": 96, + "type": "android.widget.TextView", + "label": "Flat surface", + "value": "Flat surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 95, + "ref": "e97" + }, + { + "index": 97, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 95, + "ref": "e98" + }, + { + "index": 98, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 97, + "ref": "e99" + }, + { + "index": 99, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 98, + "ref": "e100" + }, + { + "index": 100, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 26, + "parentIndex": 99, + "ref": "e101" + }, + { + "index": 101, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 480, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 98, + "ref": "e102" + }, + { + "index": 102, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 26, + "parentIndex": 101, + "ref": "e103" + }, + { + "index": 103, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 912, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 98, + "ref": "e104" + }, + { + "index": 104, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 26, + "parentIndex": 103, + "ref": "e105" + }, + { + "index": 105, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1344, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 98, + "ref": "e106" + }, + { + "index": 106, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1430, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 26, + "parentIndex": 105, + "ref": "e107" + }, + { + "index": 107, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1776, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 98, + "ref": "e108" + }, + { + "index": 108, + "type": "android.widget.TextView", + "label": "Elevation 4", + "value": "Elevation 4", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1862, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 26, + "parentIndex": 107, + "ref": "e109" + }, + { + "index": 109, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2208, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 98, + "ref": "e110" + }, + { + "index": 110, + "type": "android.widget.TextView", + "label": "Elevation 5", + "value": "Elevation 5", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2294, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 26, + "parentIndex": 109, + "ref": "e111" + }, + { + "index": 111, + "type": "android.widget.TextView", + "label": "Animated elevation", + "value": "Animated elevation", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1752, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e112" + }, + { + "index": 112, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 1962, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e113" + }, + { + "index": 113, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 2118, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 112, + "ref": "e114" + }, + { + "index": 114, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e115" + }, + { + "index": 115, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 114, + "ref": "e116" + }, + { + "index": 116, + "type": "android.widget.TextView", + "label": "󰍴", + "value": "󰍴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 90, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 115, + "ref": "e117" + }, + { + "index": 117, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e118" + }, + { + "index": 118, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 117, + "ref": "e119" + }, + { + "index": 119, + "type": "android.widget.TextView", + "label": "󰐕", + "value": "󰐕", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 294, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 118, + "ref": "e120" + }, + { + "index": 120, + "type": "android.widget.TextView", + "label": "Layout", + "value": "Layout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2670, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e121" + }, + { + "index": 121, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2880, + "width": 1136, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e122" + }, + { + "index": 122, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e123" + }, + { + "index": 123, + "type": "android.widget.TextView", + "label": "Left", + "value": "Left", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 122, + "ref": "e124" + }, + { + "index": 124, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 661, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e125" + }, + { + "index": 125, + "type": "android.widget.TextView", + "label": "Right", + "value": "Right", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 661, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 124, + "ref": "e126" + }, + { + "index": 126, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 3063, + "width": 1136, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e127" + }, + { + "index": 127, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3096, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e128" + }, + { + "index": 128, + "type": "android.widget.TextView", + "label": "Top", + "value": "Top", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3339, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 127, + "ref": "e129" + }, + { + "index": 129, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3686, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e130" + }, + { + "index": 130, + "type": "android.widget.TextView", + "label": "Bottom", + "value": "Bottom", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3929, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 129, + "ref": "e131" + }, + { + "index": 131, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 18, + "parentIndex": 67, + "ref": "e132" + }, + { + "index": 132, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 57, + "ref": "e133" + }, + { + "index": 133, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 12, + "parentIndex": 132, + "ref": "e134" + }, + { + "index": 134, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2706 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 13, + "parentIndex": 133, + "ref": "e135" + }, + { + "index": 135, + "type": "android.widget.TextView", + "label": "Example items", + "value": "Example items", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 246, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e136" + }, + { + "index": 136, + "type": "android.widget.Button", + "label": "Inbox, 44", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 360, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e137" + }, + { + "index": 137, + "type": "android.widget.TextView", + "label": "󰚇", + "value": "󰚇", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 408, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e138" + }, + { + "index": 138, + "type": "android.widget.TextView", + "label": "Inbox", + "value": "Inbox", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 414, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e139" + }, + { + "index": 139, + "type": "android.widget.TextView", + "label": "44", + "value": "44", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 414, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e140" + }, + { + "index": 140, + "type": "android.widget.Button", + "label": "Starred", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 528, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e141" + }, + { + "index": 141, + "type": "android.widget.TextView", + "label": "󰓎", + "value": "󰓎", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 576, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e142" + }, + { + "index": 142, + "type": "android.widget.TextView", + "label": "Starred", + "value": "Starred", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 582, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e143" + }, + { + "index": 143, + "type": "android.widget.TextView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 603, + "width": 0, + "height": 18 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e144" + }, + { + "index": 144, + "type": "android.widget.Button", + "label": "Sent mail", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 696, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e145" + }, + { + "index": 145, + "type": "android.widget.TextView", + "label": "󰒊", + "value": "󰒊", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 744, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 144, + "ref": "e146" + }, + { + "index": 146, + "type": "android.widget.TextView", + "label": "Sent mail", + "value": "Sent mail", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 750, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 144, + "ref": "e147" + }, + { + "index": 147, + "type": "android.widget.Button", + "label": "Colored label", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 864, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e148" + }, + { + "index": 148, + "type": "android.widget.TextView", + "label": "󰏘", + "value": "󰏘", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 912, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 147, + "ref": "e149" + }, + { + "index": 149, + "type": "android.widget.TextView", + "label": "Colored label", + "value": "Colored label", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 918, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 147, + "ref": "e150" + }, + { + "index": 150, + "type": "android.widget.Button", + "label": "A very long title that will be truncated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1032, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e151" + }, + { + "index": 151, + "type": "android.widget.TextView", + "label": "󰆴", + "value": "󰆴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1080, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e152" + }, + { + "index": 152, + "type": "android.widget.TextView", + "label": "A very long title that will be truncated", + "value": "A very long title that will be truncated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1086, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e153" + }, + { + "index": 153, + "type": "android.widget.TextView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1107, + "width": 0, + "height": 18 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e154" + }, + { + "index": 154, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1212, + "width": 0, + "height": 3 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e155" + }, + { + "index": 155, + "type": "android.widget.TextView", + "label": "Preferences", + "value": "Preferences", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1281, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e156" + }, + { + "index": 156, + "type": "android.view.ViewGroup", + "label": "Use Dynamic Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1395, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e157" + }, + { + "index": 157, + "type": "android.widget.TextView", + "label": "Use Dynamic Theme", + "value": "Use Dynamic Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1449, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 156, + "ref": "e158" + }, + { + "index": 158, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 156, + "ref": "e159" + }, + { + "index": 159, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e160" + }, + { + "index": 160, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 158, + "ref": "e161" + }, + { + "index": 161, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1431, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 160, + "ref": "e162" + }, + { + "index": 162, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e163" + }, + { + "index": 163, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1443, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e164" + }, + { + "index": 164, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1443, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 163, + "ref": "e165" + }, + { + "index": 165, + "type": "android.view.ViewGroup", + "label": "Dark Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1563, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e166" + }, + { + "index": 166, + "type": "android.widget.TextView", + "label": "Dark Theme", + "value": "Dark Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1617, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 165, + "ref": "e167" + }, + { + "index": 167, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 165, + "ref": "e168" + }, + { + "index": 168, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e169" + }, + { + "index": 169, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 167, + "ref": "e170" + }, + { + "index": 170, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1599, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 169, + "ref": "e171" + }, + { + "index": 171, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1599, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 169, + "ref": "e172" + }, + { + "index": 172, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e173" + }, + { + "index": 173, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1623, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e174" + }, + { + "index": 174, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1623, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 173, + "ref": "e175" + }, + { + "index": 175, + "type": "android.view.ViewGroup", + "label": "RTL", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1731, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e176" + }, + { + "index": 176, + "type": "android.widget.TextView", + "label": "RTL", + "value": "RTL", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1785, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 175, + "ref": "e177" + }, + { + "index": 177, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 175, + "ref": "e178" + }, + { + "index": 178, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e179" + }, + { + "index": 179, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 177, + "ref": "e180" + }, + { + "index": 180, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1767, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 179, + "ref": "e181" + }, + { + "index": 181, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1767, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 179, + "ref": "e182" + }, + { + "index": 182, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e183" + }, + { + "index": 183, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1791, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e184" + }, + { + "index": 184, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1791, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 183, + "ref": "e185" + }, + { + "index": 185, + "type": "android.view.ViewGroup", + "label": "Collapsed drawer *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1899, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e186" + }, + { + "index": 186, + "type": "android.widget.TextView", + "label": "Collapsed drawer *", + "value": "Collapsed drawer *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1953, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 185, + "ref": "e187" + }, + { + "index": 187, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 185, + "ref": "e188" + }, + { + "index": 188, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e189" + }, + { + "index": 189, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 187, + "ref": "e190" + }, + { + "index": 190, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1935, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 189, + "ref": "e191" + }, + { + "index": 191, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1935, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 189, + "ref": "e192" + }, + { + "index": 192, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e193" + }, + { + "index": 193, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1959, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e194" + }, + { + "index": 194, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1959, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 193, + "ref": "e195" + }, + { + "index": 195, + "type": "android.view.ViewGroup", + "label": "Custom font *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2067, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e196" + }, + { + "index": 196, + "type": "android.widget.TextView", + "label": "Custom font *", + "value": "Custom font *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2121, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 195, + "ref": "e197" + }, + { + "index": 197, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 195, + "ref": "e198" + }, + { + "index": 198, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e199" + }, + { + "index": 199, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 197, + "ref": "e200" + }, + { + "index": 200, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2103, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 199, + "ref": "e201" + }, + { + "index": 201, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2103, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 199, + "ref": "e202" + }, + { + "index": 202, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e203" + }, + { + "index": 203, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2127, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e204" + }, + { + "index": 204, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2127, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 203, + "ref": "e205" + }, + { + "index": 205, + "type": "android.view.ViewGroup", + "label": "Ripple effect *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2235, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e206" + }, + { + "index": 206, + "type": "android.widget.TextView", + "label": "Ripple effect *", + "value": "Ripple effect *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2289, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 205, + "ref": "e207" + }, + { + "index": 207, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 205, + "ref": "e208" + }, + { + "index": 208, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e209" + }, + { + "index": 209, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 207, + "ref": "e210" + }, + { + "index": 210, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2271, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 209, + "ref": "e211" + }, + { + "index": 211, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e212" + }, + { + "index": 212, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2283, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e213" + }, + { + "index": 213, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2283, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 212, + "ref": "e214" + }, + { + "index": 214, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2415, + "width": 0, + "height": 3 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e215" + }, + { + "index": 215, + "type": "android.widget.TextView", + "label": "* - optional example toggles", + "value": "* - optional example toggles", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2448, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e216" + }, + { + "index": 216, + "type": "android.widget.TextView", + "label": "React Native Paper Version 6.0.0-alpha.0", + "value": "React Native Paper Version 6.0.0-alpha.0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2532, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e217" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 217, + "totalNodeCount": 217, + "reasons": [] + }, + "androidSnapshot": { + "backend": "android-helper", + "helperVersion": "0.21.0", + "helperApiVersion": "2", + "helperTransport": "persistent-session", + "helperSessionReused": true, + "installReason": "current", + "waitForIdleTimeoutMs": 500, + "waitForIdleQuietMs": 100, + "timeoutMs": 2000, + "maxDepth": 128, + "maxNodes": 5000, + "rootPresent": true, + "captureMode": "interactive-windows", + "windowCount": 2, + "nodeCount": 217, + "helperTruncated": false, + "elapsedMs": 76 + }, + "snapshotQuality": { + "state": "healthy", + "backend": "android-helper" + }, + "snapshotDiagnostics": { + "stats": { + "count": 102, + "p50Ms": 50, + "p95Ms": 206, + "maxMs": 609, + "slowThresholdMs": 1500, + "platform": "android", + "backends": { + "android": 102 + } + } + }, + "refsGeneration": 835370 + } +} diff --git a/example/visual/evidence/a11y/03-testid-only-and-crop.json b/example/visual/evidence/a11y/03-testid-only-and-crop.json new file mode 100644 index 0000000000..0524c24d24 --- /dev/null +++ b/example/visual/evidence/a11y/03-testid-only-and-crop.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/a11y/03-no-accessible-and.png", + "width": 1280, + "height": 642 + } +} diff --git a/example/visual/evidence/a11y/03-testid-only-and-snapshot.json b/example/visual/evidence/a11y/03-testid-only-and-snapshot.json new file mode 100644 index 0000000000..b5eb9164e9 --- /dev/null +++ b/example/visual/evidence/a11y/03-testid-only-and-snapshot.json @@ -0,0 +1,4341 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e1" + }, + { + "index": 1, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_launch_animation_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e2" + }, + { + "index": 2, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e3" + }, + { + "index": 3, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 2, + "ref": "e4" + }, + { + "index": 4, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 3, + "ref": "e5" + }, + { + "index": 5, + "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 4, + "ref": "e6" + }, + { + "index": 6, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 5, + "ref": "e7" + }, + { + "index": 7, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_contents", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1220, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 6, + "ref": "e8" + }, + { + "index": 8, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 525, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e9" + }, + { + "index": 9, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_content", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 196, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 8, + "ref": "e10" + }, + { + "index": 10, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_except_heads_up", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 196, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 9, + "ref": "e11" + }, + { + "index": 11, + "type": "android.widget.TextView", + "label": "3:12", + "value": "3:12", + "identifier": "com.android.systemui:id/clock", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 45, + "width": 130, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 10, + "ref": "e12" + }, + { + "index": 12, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/start_side_notif_and_chip_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 10, + "ref": "e13" + }, + { + "index": 13, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/notification_icon_area", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 12, + "ref": "e14" + }, + { + "index": 14, + "type": "android.view.ViewGroup", + "identifier": "com.android.systemui:id/notificationIcons", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 13, + "ref": "e15" + }, + { + "index": 15, + "type": "android.widget.ImageView", + "label": "Security & privacy notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 14, + "ref": "e16" + }, + { + "index": 16, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 0, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 10, + "parentIndex": 10, + "ref": "e17" + }, + { + "index": 17, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 16, + "ref": "e18" + }, + { + "index": 18, + "type": "android.view.View", + "identifier": "com.android.systemui:id/cutout_space_view", + "bundleId": "com.android.systemui", + "rect": { + "x": 573, + "y": 0, + "width": 109, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e19" + }, + { + "index": 19, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_end_side_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 682, + "y": 0, + "width": 526, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e20" + }, + { + "index": 20, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_end_side_content", + "bundleId": "com.android.systemui", + "rect": { + "x": 963, + "y": 0, + "width": 245, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 19, + "ref": "e21" + }, + { + "index": 21, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/system_icons", + "bundleId": "com.android.systemui", + "rect": { + "x": 963, + "y": 45, + "width": 245, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 20, + "ref": "e22" + }, + { + "index": 22, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/statusIcons", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 144, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e23" + }, + { + "index": 23, + "type": "android.widget.FrameLayout", + "label": "T-Mobile, one bar.", + "identifier": "com.android.systemui:id/mobile_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 69, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e24" + }, + { + "index": 24, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/mobile_group", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 45, + "width": 51, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 23, + "ref": "e25" + }, + { + "index": 25, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 24, + "ref": "e26" + }, + { + "index": 26, + "type": "android.widget.ImageView", + "identifier": "com.android.systemui:id/mobile_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 25, + "ref": "e27" + }, + { + "index": 27, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 78, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 22, + "ref": "e28" + }, + { + "index": 28, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 78, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 22, + "ref": "e29" + }, + { + "index": 29, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/wifi_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 1041, + "y": 45, + "width": 66, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e30" + }, + { + "index": 30, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/wifi_group", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 45, + "width": 48, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 29, + "ref": "e31" + }, + { + "index": 31, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/wifi_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 30, + "ref": "e32" + }, + { + "index": 32, + "type": "android.widget.ImageView", + "label": "Wifi signal full.", + "identifier": "com.android.systemui:id/wifi_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 31, + "ref": "e33" + }, + { + "index": 33, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e34" + }, + { + "index": 34, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 33, + "ref": "e35" + }, + { + "index": 35, + "type": "android.view.View", + "identifier": "com.android.systemui:id/battery", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 34, + "ref": "e36" + }, + { + "index": 36, + "type": "android.view.View", + "label": "Battery 100 percent.", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 72, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 35, + "ref": "e37" + }, + { + "index": 37, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e38" + }, + { + "index": 38, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 37, + "ref": "e39" + }, + { + "index": 39, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 38, + "ref": "e40" + }, + { + "index": 40, + "type": "android.widget.LinearLayout", + "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 39, + "ref": "e41" + }, + { + "index": 41, + "type": "android.widget.FrameLayout", + "identifier": "android:id/content", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 40, + "ref": "e42" + }, + { + "index": 42, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 41, + "ref": "e43" + }, + { + "index": 43, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 42, + "ref": "e44" + }, + { + "index": 44, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 43, + "ref": "e45" + }, + { + "index": 45, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 44, + "ref": "e46" + }, + { + "index": 46, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 156, + "width": 252, + "height": 252 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 45, + "ref": "e47" + }, + { + "index": 47, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1076, + "y": 204, + "width": 156, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 46, + "ref": "e48" + }, + { + "index": 48, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1082, + "y": 210, + "width": 144, + "height": 144 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 47, + "ref": "e49" + }, + { + "index": 49, + "type": "android.widget.ImageView", + "label": "Tools", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1115, + "y": 243, + "width": 78, + "height": 78 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 48, + "ref": "e50" + }, + { + "index": 50, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 42, + "ref": "e51" + }, + { + "index": 51, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 50, + "ref": "e52" + }, + { + "index": 52, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 51, + "ref": "e53" + }, + { + "index": 53, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 50, + "ref": "e54" + }, + { + "index": 54, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 53, + "ref": "e55" + }, + { + "index": 55, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 53, + "ref": "e56" + }, + { + "index": 56, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 55, + "ref": "e57" + }, + { + "index": 57, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 56, + "ref": "e58" + }, + { + "index": 58, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 57, + "ref": "e59" + }, + { + "index": 59, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 12, + "parentIndex": 58, + "ref": "e60" + }, + { + "index": 60, + "type": "android.widget.Button", + "label": "Close drawer", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 13, + "parentIndex": 59, + "ref": "e61" + }, + { + "index": 61, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 58, + "ref": "e62" + }, + { + "index": 62, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 61, + "ref": "e63" + }, + { + "index": 63, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 62, + "ref": "e64" + }, + { + "index": 64, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 15, + "parentIndex": 63, + "ref": "e65" + }, + { + "index": 65, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 16, + "parentIndex": 64, + "ref": "e66" + }, + { + "index": 66, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 65, + "ref": "e67" + }, + { + "index": 67, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 17, + "parentIndex": 65, + "ref": "e68" + }, + { + "index": 68, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 18, + "parentIndex": 67, + "ref": "e69" + }, + { + "index": 69, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 19, + "parentIndex": 68, + "ref": "e70" + }, + { + "index": 70, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 20, + "parentIndex": 69, + "ref": "e71" + }, + { + "index": 71, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 70, + "ref": "e72" + }, + { + "index": 72, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 71, + "ref": "e73" + }, + { + "index": 73, + "type": "android.widget.Button", + "label": "Back", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 72, + "ref": "e74" + }, + { + "index": 74, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 73, + "ref": "e75" + }, + { + "index": 75, + "type": "android.widget.TextView", + "label": "󰁍", + "value": "󰁍", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 74, + "ref": "e76" + }, + { + "index": 76, + "type": "android.view.View", + "label": "Surface", + "value": "Surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 210, + "width": 1064, + "height": 84 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 71, + "ref": "e77" + }, + { + "index": 77, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 20, + "parentIndex": 69, + "hiddenContentBelow": true, + "ref": "e78" + }, + { + "index": 78, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 77, + "ref": "e79" + }, + { + "index": 79, + "type": "android.view.ViewGroup", + "identifier": "surface-elevated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e80" + }, + { + "index": 80, + "type": "android.widget.TextView", + "label": "Elevated surface", + "value": "Elevated surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e81" + }, + { + "index": 81, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 78, + "ref": "e82" + }, + { + "index": 82, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 81, + "ref": "e83" + }, + { + "index": 83, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 82, + "ref": "e84" + }, + { + "index": 84, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 83, + "ref": "e85" + }, + { + "index": 85, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 480, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 82, + "ref": "e86" + }, + { + "index": 86, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 85, + "ref": "e87" + }, + { + "index": 87, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 912, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 82, + "ref": "e88" + }, + { + "index": 88, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 87, + "ref": "e89" + }, + { + "index": 89, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1344, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 82, + "ref": "e90" + }, + { + "index": 90, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1430, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 89, + "ref": "e91" + }, + { + "index": 91, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1776, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 82, + "ref": "e92" + }, + { + "index": 92, + "type": "android.widget.TextView", + "label": "Elevation 4", + "value": "Elevation 4", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1862, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 91, + "ref": "e93" + }, + { + "index": 93, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2208, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 82, + "ref": "e94" + }, + { + "index": 94, + "type": "android.widget.TextView", + "label": "Elevation 5", + "value": "Elevation 5", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2294, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 93, + "ref": "e95" + }, + { + "index": 95, + "type": "android.view.ViewGroup", + "identifier": "surface-flat", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e96" + }, + { + "index": 96, + "type": "android.widget.TextView", + "label": "Flat surface", + "value": "Flat surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e97" + }, + { + "index": 97, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 78, + "ref": "e98" + }, + { + "index": 98, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 97, + "ref": "e99" + }, + { + "index": 99, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 98, + "ref": "e100" + }, + { + "index": 100, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 99, + "ref": "e101" + }, + { + "index": 101, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 480, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 98, + "ref": "e102" + }, + { + "index": 102, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 101, + "ref": "e103" + }, + { + "index": 103, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 912, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 98, + "ref": "e104" + }, + { + "index": 104, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 103, + "ref": "e105" + }, + { + "index": 105, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1344, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 98, + "ref": "e106" + }, + { + "index": 106, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1430, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 105, + "ref": "e107" + }, + { + "index": 107, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1776, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 98, + "ref": "e108" + }, + { + "index": 108, + "type": "android.widget.TextView", + "label": "Elevation 4", + "value": "Elevation 4", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1862, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 107, + "ref": "e109" + }, + { + "index": 109, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2208, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 98, + "ref": "e110" + }, + { + "index": 110, + "type": "android.widget.TextView", + "label": "Elevation 5", + "value": "Elevation 5", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2294, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 109, + "ref": "e111" + }, + { + "index": 111, + "type": "android.widget.TextView", + "label": "Animated elevation", + "value": "Animated elevation", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1752, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e112" + }, + { + "index": 112, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 1962, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e113" + }, + { + "index": 113, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 2118, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 112, + "ref": "e114" + }, + { + "index": 114, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e115" + }, + { + "index": 115, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 114, + "ref": "e116" + }, + { + "index": 116, + "type": "android.widget.TextView", + "label": "󰍴", + "value": "󰍴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 90, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 115, + "ref": "e117" + }, + { + "index": 117, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e118" + }, + { + "index": 118, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 117, + "ref": "e119" + }, + { + "index": 119, + "type": "android.widget.TextView", + "label": "󰐕", + "value": "󰐕", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 294, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 118, + "ref": "e120" + }, + { + "index": 120, + "type": "android.widget.TextView", + "label": "Layout", + "value": "Layout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2670, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e121" + }, + { + "index": 121, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2880, + "width": 1136, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e122" + }, + { + "index": 122, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e123" + }, + { + "index": 123, + "type": "android.widget.TextView", + "label": "Left", + "value": "Left", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 122, + "ref": "e124" + }, + { + "index": 124, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 661, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e125" + }, + { + "index": 125, + "type": "android.widget.TextView", + "label": "Right", + "value": "Right", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 661, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 124, + "ref": "e126" + }, + { + "index": 126, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 3063, + "width": 1136, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e127" + }, + { + "index": 127, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3096, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e128" + }, + { + "index": 128, + "type": "android.widget.TextView", + "label": "Top", + "value": "Top", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3339, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 127, + "ref": "e129" + }, + { + "index": 129, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3686, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e130" + }, + { + "index": 130, + "type": "android.widget.TextView", + "label": "Bottom", + "value": "Bottom", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3929, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 129, + "ref": "e131" + }, + { + "index": 131, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 18, + "parentIndex": 67, + "ref": "e132" + }, + { + "index": 132, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 57, + "ref": "e133" + }, + { + "index": 133, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 12, + "parentIndex": 132, + "ref": "e134" + }, + { + "index": 134, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2706 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 13, + "parentIndex": 133, + "ref": "e135" + }, + { + "index": 135, + "type": "android.widget.TextView", + "label": "Example items", + "value": "Example items", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 246, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e136" + }, + { + "index": 136, + "type": "android.widget.Button", + "label": "Inbox, 44", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 360, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e137" + }, + { + "index": 137, + "type": "android.widget.TextView", + "label": "󰚇", + "value": "󰚇", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 408, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e138" + }, + { + "index": 138, + "type": "android.widget.TextView", + "label": "Inbox", + "value": "Inbox", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 414, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e139" + }, + { + "index": 139, + "type": "android.widget.TextView", + "label": "44", + "value": "44", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 414, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e140" + }, + { + "index": 140, + "type": "android.widget.Button", + "label": "Starred", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 528, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e141" + }, + { + "index": 141, + "type": "android.widget.TextView", + "label": "󰓎", + "value": "󰓎", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 576, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e142" + }, + { + "index": 142, + "type": "android.widget.TextView", + "label": "Starred", + "value": "Starred", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 582, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e143" + }, + { + "index": 143, + "type": "android.widget.TextView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 603, + "width": 0, + "height": 18 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e144" + }, + { + "index": 144, + "type": "android.widget.Button", + "label": "Sent mail", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 696, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e145" + }, + { + "index": 145, + "type": "android.widget.TextView", + "label": "󰒊", + "value": "󰒊", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 744, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 144, + "ref": "e146" + }, + { + "index": 146, + "type": "android.widget.TextView", + "label": "Sent mail", + "value": "Sent mail", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 750, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 144, + "ref": "e147" + }, + { + "index": 147, + "type": "android.widget.Button", + "label": "Colored label", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 864, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e148" + }, + { + "index": 148, + "type": "android.widget.TextView", + "label": "󰏘", + "value": "󰏘", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 912, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 147, + "ref": "e149" + }, + { + "index": 149, + "type": "android.widget.TextView", + "label": "Colored label", + "value": "Colored label", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 918, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 147, + "ref": "e150" + }, + { + "index": 150, + "type": "android.widget.Button", + "label": "A very long title that will be truncated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1032, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e151" + }, + { + "index": 151, + "type": "android.widget.TextView", + "label": "󰆴", + "value": "󰆴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1080, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e152" + }, + { + "index": 152, + "type": "android.widget.TextView", + "label": "A very long title that will be truncated", + "value": "A very long title that will be truncated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1086, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e153" + }, + { + "index": 153, + "type": "android.widget.TextView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1107, + "width": 0, + "height": 18 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e154" + }, + { + "index": 154, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1212, + "width": 0, + "height": 3 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e155" + }, + { + "index": 155, + "type": "android.widget.TextView", + "label": "Preferences", + "value": "Preferences", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1281, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e156" + }, + { + "index": 156, + "type": "android.view.ViewGroup", + "label": "Use Dynamic Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1395, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e157" + }, + { + "index": 157, + "type": "android.widget.TextView", + "label": "Use Dynamic Theme", + "value": "Use Dynamic Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1449, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 156, + "ref": "e158" + }, + { + "index": 158, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 156, + "ref": "e159" + }, + { + "index": 159, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e160" + }, + { + "index": 160, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 158, + "ref": "e161" + }, + { + "index": 161, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1431, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 160, + "ref": "e162" + }, + { + "index": 162, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e163" + }, + { + "index": 163, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1443, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e164" + }, + { + "index": 164, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1443, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 163, + "ref": "e165" + }, + { + "index": 165, + "type": "android.view.ViewGroup", + "label": "Dark Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1563, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e166" + }, + { + "index": 166, + "type": "android.widget.TextView", + "label": "Dark Theme", + "value": "Dark Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1617, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 165, + "ref": "e167" + }, + { + "index": 167, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 165, + "ref": "e168" + }, + { + "index": 168, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e169" + }, + { + "index": 169, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 167, + "ref": "e170" + }, + { + "index": 170, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1599, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 169, + "ref": "e171" + }, + { + "index": 171, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1599, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 169, + "ref": "e172" + }, + { + "index": 172, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e173" + }, + { + "index": 173, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1623, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e174" + }, + { + "index": 174, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1623, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 173, + "ref": "e175" + }, + { + "index": 175, + "type": "android.view.ViewGroup", + "label": "RTL", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1731, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e176" + }, + { + "index": 176, + "type": "android.widget.TextView", + "label": "RTL", + "value": "RTL", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1785, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 175, + "ref": "e177" + }, + { + "index": 177, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 175, + "ref": "e178" + }, + { + "index": 178, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e179" + }, + { + "index": 179, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 177, + "ref": "e180" + }, + { + "index": 180, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1767, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 179, + "ref": "e181" + }, + { + "index": 181, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1767, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 179, + "ref": "e182" + }, + { + "index": 182, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e183" + }, + { + "index": 183, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1791, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e184" + }, + { + "index": 184, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1791, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 183, + "ref": "e185" + }, + { + "index": 185, + "type": "android.view.ViewGroup", + "label": "Collapsed drawer *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1899, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e186" + }, + { + "index": 186, + "type": "android.widget.TextView", + "label": "Collapsed drawer *", + "value": "Collapsed drawer *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1953, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 185, + "ref": "e187" + }, + { + "index": 187, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 185, + "ref": "e188" + }, + { + "index": 188, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e189" + }, + { + "index": 189, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 187, + "ref": "e190" + }, + { + "index": 190, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1935, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 189, + "ref": "e191" + }, + { + "index": 191, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1935, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 189, + "ref": "e192" + }, + { + "index": 192, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e193" + }, + { + "index": 193, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1959, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e194" + }, + { + "index": 194, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1959, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 193, + "ref": "e195" + }, + { + "index": 195, + "type": "android.view.ViewGroup", + "label": "Custom font *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2067, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e196" + }, + { + "index": 196, + "type": "android.widget.TextView", + "label": "Custom font *", + "value": "Custom font *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2121, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 195, + "ref": "e197" + }, + { + "index": 197, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 195, + "ref": "e198" + }, + { + "index": 198, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e199" + }, + { + "index": 199, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 197, + "ref": "e200" + }, + { + "index": 200, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2103, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 199, + "ref": "e201" + }, + { + "index": 201, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2103, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 199, + "ref": "e202" + }, + { + "index": 202, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e203" + }, + { + "index": 203, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2127, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e204" + }, + { + "index": 204, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2127, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 203, + "ref": "e205" + }, + { + "index": 205, + "type": "android.view.ViewGroup", + "label": "Ripple effect *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2235, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e206" + }, + { + "index": 206, + "type": "android.widget.TextView", + "label": "Ripple effect *", + "value": "Ripple effect *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2289, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 205, + "ref": "e207" + }, + { + "index": 207, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 205, + "ref": "e208" + }, + { + "index": 208, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e209" + }, + { + "index": 209, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 207, + "ref": "e210" + }, + { + "index": 210, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2271, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 209, + "ref": "e211" + }, + { + "index": 211, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e212" + }, + { + "index": 212, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2283, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e213" + }, + { + "index": 213, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2283, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 212, + "ref": "e214" + }, + { + "index": 214, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2415, + "width": 0, + "height": 3 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e215" + }, + { + "index": 215, + "type": "android.widget.TextView", + "label": "* - optional example toggles", + "value": "* - optional example toggles", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2448, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e216" + }, + { + "index": 216, + "type": "android.widget.TextView", + "label": "React Native Paper Version 6.0.0-alpha.0", + "value": "React Native Paper Version 6.0.0-alpha.0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2532, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e217" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 217, + "totalNodeCount": 217, + "reasons": [] + }, + "androidSnapshot": { + "backend": "android-helper", + "helperVersion": "0.21.0", + "helperApiVersion": "2", + "helperTransport": "persistent-session", + "helperSessionReused": true, + "installReason": "current", + "waitForIdleTimeoutMs": 500, + "waitForIdleQuietMs": 100, + "timeoutMs": 2000, + "maxDepth": 128, + "maxNodes": 5000, + "rootPresent": true, + "captureMode": "interactive-windows", + "windowCount": 2, + "nodeCount": 217, + "helperTruncated": false, + "elapsedMs": 100 + }, + "snapshotQuality": { + "state": "healthy", + "backend": "android-helper" + }, + "snapshotDiagnostics": { + "stats": { + "count": 103, + "p50Ms": 52, + "p95Ms": 206, + "maxMs": 609, + "slowThresholdMs": 1500, + "platform": "android", + "backends": { + "android": 103 + } + } + }, + "refsGeneration": 835371 + } +} diff --git a/example/visual/evidence/a11y/03-testid-only-ios-crop.json b/example/visual/evidence/a11y/03-testid-only-ios-crop.json new file mode 100644 index 0000000000..b2fee57b63 --- /dev/null +++ b/example/visual/evidence/a11y/03-testid-only-ios-crop.json @@ -0,0 +1,11 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/a11y/03-no-accessible-ios.png", + "width": 1206, + "height": 642, + "logicalWidth": 402, + "logicalHeight": 214, + "pixelDensity": 3 + } +} diff --git a/example/visual/evidence/a11y/03-testid-only-ios-snapshot.json b/example/visual/evidence/a11y/03-testid-only-ios-snapshot.json new file mode 100644 index 0000000000..b96669cca7 --- /dev/null +++ b/example/visual/evidence/a11y/03-testid-only-ios-snapshot.json @@ -0,0 +1,2912 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "Application", + "role": "UIApplication", + "label": "React Native Paper Example", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 0, + "pid": 37870, + "ref": "e1" + }, + { + "index": 1, + "parentIndex": 0, + "type": "Window", + "role": "UIWindow", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 1, + "pid": 37870, + "ref": "e2" + }, + { + "index": 2, + "parentIndex": 1, + "type": "Other", + "role": "UITransitionView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 2, + "pid": 37870, + "ref": "e3" + }, + { + "index": 3, + "parentIndex": 2, + "type": "Other", + "role": "UIDropShadowView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 3, + "pid": 37870, + "ref": "e4" + }, + { + "index": 4, + "parentIndex": 3, + "type": "Other", + "role": "_TtC13EXDevLauncherP33_867A144D7C8F5D750D0BFA9E58EDAFE322DevLauncherWrapperView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 4, + "pid": 37870, + "ref": "e5" + }, + { + "index": 5, + "parentIndex": 4, + "type": "Other", + "role": "RCTSurfaceHostingProxyRootView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 5, + "pid": 37870, + "ref": "e6" + }, + { + "index": 6, + "parentIndex": 5, + "type": "Other", + "role": "RCTSurfaceView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 6, + "pid": 37870, + "ref": "e7" + }, + { + "index": 7, + "parentIndex": 6, + "type": "Other", + "role": "RCTRootComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 7, + "pid": 37870, + "ref": "e8" + }, + { + "index": 8, + "parentIndex": 7, + "type": "Other", + "role": "RNCSafeAreaProviderComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 8, + "pid": 37870, + "ref": "e9" + }, + { + "index": 9, + "parentIndex": 8, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e10" + }, + { + "index": 10, + "parentIndex": 9, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 10, + "pid": 37870, + "ref": "e11" + }, + { + "index": 11, + "parentIndex": 10, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 11, + "pid": 37870, + "ref": "e12" + }, + { + "index": 12, + "parentIndex": 11, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 12, + "pid": 37870, + "ref": "e13" + }, + { + "index": 13, + "parentIndex": 12, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 13, + "pid": 37870, + "ref": "e14" + }, + { + "index": 14, + "parentIndex": 13, + "type": "Other", + "role": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 770 + }, + "depth": 14, + "pid": 37870, + "ref": "e15" + }, + { + "index": 15, + "parentIndex": 14, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 770 + }, + "depth": 15, + "pid": 37870, + "ref": "e16" + }, + { + "index": 16, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Example items", + "rect": { + "x": -306, + "y": 30, + "width": 294, + "height": 20 + }, + "depth": 16, + "pid": 37870, + "ref": "e17" + }, + { + "index": 17, + "parentIndex": 16, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Example items", + "rect": { + "x": -306, + "y": 30, + "width": 294, + "height": 20 + }, + "depth": 17, + "pid": 37870, + "ref": "e18" + }, + { + "index": 18, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Inbox, 44", + "rect": { + "x": -322, + "y": 68, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e19" + }, + { + "index": 19, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Starred", + "rect": { + "x": -322, + "y": 124, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e20" + }, + { + "index": 20, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Sent mail", + "rect": { + "x": -322, + "y": 180, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e21" + }, + { + "index": 21, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Colored label", + "rect": { + "x": -322, + "y": 236, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e22" + }, + { + "index": 22, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "A very long title that will be truncated", + "rect": { + "x": -322, + "y": 292, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e23" + }, + { + "index": 23, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -318, + "y": 352, + "width": 290, + "height": 1 + }, + "depth": 16, + "pid": 37870, + "ref": "e24" + }, + { + "index": 24, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Preferences", + "rect": { + "x": -306, + "y": 375, + "width": 294, + "height": 20 + }, + "depth": 16, + "pid": 37870, + "ref": "e25" + }, + { + "index": 25, + "parentIndex": 24, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Preferences", + "rect": { + "x": -306, + "y": 375, + "width": 294, + "height": 20 + }, + "depth": 17, + "pid": 37870, + "ref": "e26" + }, + { + "index": 26, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Dark Theme", + "rect": { + "x": -334, + "y": 413, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e27" + }, + { + "index": 27, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "RTL", + "rect": { + "x": -334, + "y": 469, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e28" + }, + { + "index": 28, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Collapsed drawer *", + "rect": { + "x": -334, + "y": 525, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e29" + }, + { + "index": 29, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Custom font *", + "rect": { + "x": -334, + "y": 581, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e30" + }, + { + "index": 30, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Highlight effect *", + "rect": { + "x": -334, + "y": 637, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e31" + }, + { + "index": 31, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -318, + "y": 697, + "width": 290, + "height": 1 + }, + "depth": 16, + "pid": 37870, + "ref": "e32" + }, + { + "index": 32, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "* - optional example toggles", + "rect": { + "x": -310, + "y": 708, + "width": 274, + "height": 16 + }, + "depth": 16, + "pid": 37870, + "ref": "e33" + }, + { + "index": 33, + "parentIndex": 32, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "* - optional example toggles", + "rect": { + "x": -310, + "y": 708, + "width": 274, + "height": 16 + }, + "depth": 17, + "pid": 37870, + "ref": "e34" + }, + { + "index": 34, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "React Native Paper Version 6.0.0-alpha.0", + "rect": { + "x": -310, + "y": 736, + "width": 274, + "height": 16 + }, + "depth": 16, + "pid": 37870, + "ref": "e35" + }, + { + "index": 35, + "parentIndex": 34, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "React Native Paper Version 6.0.0-alpha.0", + "rect": { + "x": -310, + "y": 736, + "width": 274, + "height": 16 + }, + "depth": 17, + "pid": 37870, + "ref": "e36" + }, + { + "index": 36, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -33, + "y": 62, + "width": 30, + "height": 778 + }, + "depth": 14, + "pid": 37870, + "ref": "e37" + }, + { + "index": 37, + "parentIndex": 36, + "type": "Other", + "role": "UIView", + "rect": { + "x": -6, + "y": 169, + "width": 3, + "height": 668 + }, + "depth": 15, + "pid": 37870, + "ref": "e38" + }, + { + "index": 38, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -346, + "y": 807, + "width": 346, + "height": 30 + }, + "depth": 14, + "pid": 37870, + "ref": "e39" + }, + { + "index": 39, + "parentIndex": 38, + "type": "Other", + "role": "UIView", + "rect": { + "x": -343, + "y": 834, + "width": 340, + "height": 3 + }, + "depth": 15, + "pid": 37870, + "ref": "e40" + }, + { + "index": 40, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -33, + "y": 62, + "width": 30, + "height": 778 + }, + "depth": 14, + "pid": 37870, + "ref": "e41" + }, + { + "index": 41, + "parentIndex": 40, + "type": "Other", + "role": "UIView", + "rect": { + "x": -6, + "y": 169, + "width": 3, + "height": 668 + }, + "depth": 15, + "pid": 37870, + "ref": "e42" + }, + { + "index": 42, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -346, + "y": 807, + "width": 346, + "height": 30 + }, + "depth": 14, + "pid": 37870, + "ref": "e43" + }, + { + "index": 43, + "parentIndex": 42, + "type": "Other", + "role": "UIView", + "rect": { + "x": -343, + "y": 834, + "width": 340, + "height": 3 + }, + "depth": 15, + "pid": 37870, + "ref": "e44" + }, + { + "index": 44, + "parentIndex": 10, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 11, + "pid": 37870, + "ref": "e45" + }, + { + "index": 45, + "parentIndex": 44, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 12, + "pid": 37870, + "ref": "e46" + }, + { + "index": 46, + "parentIndex": 45, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 13, + "pid": 37870, + "ref": "e47" + }, + { + "index": 47, + "parentIndex": 46, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 14, + "pid": 37870, + "ref": "e48" + }, + { + "index": 48, + "parentIndex": 47, + "type": "Other", + "role": "RNSScreenStackView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 15, + "pid": 37870, + "ref": "e49" + }, + { + "index": 49, + "parentIndex": 48, + "type": "Other", + "role": "UILayoutContainerView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 16, + "pid": 37870, + "ref": "e50" + }, + { + "index": 50, + "parentIndex": 49, + "type": "Other", + "role": "UINavigationTransitionView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 17, + "pid": 37870, + "ref": "e51" + }, + { + "index": 51, + "parentIndex": 50, + "type": "Other", + "role": "UIViewControllerWrapperView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 18, + "pid": 37870, + "ref": "e52" + }, + { + "index": 52, + "parentIndex": 51, + "type": "Other", + "role": "RNSScreenView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 19, + "pid": 37870, + "ref": "e53" + }, + { + "index": 53, + "parentIndex": 52, + "type": "Other", + "role": "RNSScreenContentWrapper", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 20, + "pid": 37870, + "ref": "e54" + }, + { + "index": 54, + "parentIndex": 53, + "type": "Other", + "role": "RNSSafeAreaViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 21, + "pid": 37870, + "ref": "e55" + }, + { + "index": 55, + "parentIndex": 54, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 22, + "pid": 37870, + "ref": "e56" + }, + { + "index": 56, + "parentIndex": 55, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 23, + "pid": 37870, + "ref": "e57" + }, + { + "index": 57, + "parentIndex": 56, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 24, + "pid": 37870, + "ref": "e58" + }, + { + "index": 58, + "parentIndex": 57, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 25, + "pid": 37870, + "ref": "e59" + }, + { + "index": 59, + "parentIndex": 57, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 25, + "pid": 37870, + "ref": "e60" + }, + { + "index": 60, + "parentIndex": 59, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Back", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 26, + "pid": 37870, + "ref": "e61" + }, + { + "index": 61, + "parentIndex": 57, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 25, + "pid": 37870, + "ref": "e62" + }, + { + "index": 62, + "parentIndex": 61, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 26, + "pid": 37870, + "ref": "e63" + }, + { + "index": 63, + "parentIndex": 55, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 23, + "pid": 37870, + "ref": "e64" + }, + { + "index": 64, + "parentIndex": 63, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 24, + "pid": 37870, + "ref": "e65" + }, + { + "index": 65, + "parentIndex": 64, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 1435 + }, + "depth": 25, + "pid": 37870, + "ref": "e66" + }, + { + "index": 66, + "parentIndex": 65, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 1435 + }, + "depth": 26, + "pid": 37870, + "ref": "e67" + }, + { + "index": 67, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevated surface", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e68" + }, + { + "index": 68, + "parentIndex": 67, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevated surface", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e69" + }, + { + "index": 69, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "identifier": "surface-elevated", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 214 + }, + "depth": 27, + "pid": 37870, + "ref": "e70" + }, + { + "index": 70, + "parentIndex": 66, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 180, + "width": 402, + "height": 168 + }, + "depth": 27, + "pid": 37870, + "ref": "e71" + }, + { + "index": 71, + "parentIndex": 70, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 180, + "width": 402, + "height": 168 + }, + "depth": 28, + "pid": 37870, + "ref": "e72" + }, + { + "index": 72, + "parentIndex": 71, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 180, + "width": 872, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e73" + }, + { + "index": 73, + "parentIndex": 72, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 180, + "width": 872, + "height": 168 + }, + "depth": 30, + "pid": 37870, + "ref": "e74" + }, + { + "index": 74, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e75" + }, + { + "index": 75, + "parentIndex": 74, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e76" + }, + { + "index": 76, + "parentIndex": 74, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 256, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e77" + }, + { + "index": 77, + "parentIndex": 76, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 256, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e78" + }, + { + "index": 78, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 160, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e79" + }, + { + "index": 79, + "parentIndex": 78, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 160, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e80" + }, + { + "index": 80, + "parentIndex": 78, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 256, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e81" + }, + { + "index": 81, + "parentIndex": 80, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 256, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e82" + }, + { + "index": 82, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 304, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e83" + }, + { + "index": 83, + "parentIndex": 82, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 304, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e84" + }, + { + "index": 84, + "parentIndex": 82, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 256, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e85" + }, + { + "index": 85, + "parentIndex": 84, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 256, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e86" + }, + { + "index": 86, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 448, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e87" + }, + { + "index": 87, + "parentIndex": 86, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 448, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e88" + }, + { + "index": 88, + "parentIndex": 86, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 256, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e89" + }, + { + "index": 89, + "parentIndex": 88, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 256, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e90" + }, + { + "index": 90, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 592, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e91" + }, + { + "index": 91, + "parentIndex": 90, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 592, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e92" + }, + { + "index": 92, + "parentIndex": 90, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 256, + "width": 67, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e93" + }, + { + "index": 93, + "parentIndex": 92, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 256, + "width": 67, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e94" + }, + { + "index": 94, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 736, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e95" + }, + { + "index": 95, + "parentIndex": 94, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 736, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e96" + }, + { + "index": 96, + "parentIndex": 94, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 256, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e97" + }, + { + "index": 97, + "parentIndex": 96, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 256, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e98" + }, + { + "index": 98, + "parentIndex": 71, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 180, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e99" + }, + { + "index": 99, + "parentIndex": 98, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 183, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e100" + }, + { + "index": 100, + "parentIndex": 71, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 180, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e101" + }, + { + "index": 101, + "parentIndex": 100, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 183, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e102" + }, + { + "index": 102, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Flat surface", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e103" + }, + { + "index": 103, + "parentIndex": 102, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Flat surface", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e104" + }, + { + "index": 104, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "identifier": "surface-flat", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 214 + }, + "depth": 27, + "pid": 37870, + "ref": "e105" + }, + { + "index": 105, + "parentIndex": 66, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 410, + "width": 402, + "height": 168 + }, + "depth": 27, + "pid": 37870, + "ref": "e106" + }, + { + "index": 106, + "parentIndex": 105, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 410, + "width": 402, + "height": 168 + }, + "depth": 28, + "pid": 37870, + "ref": "e107" + }, + { + "index": 107, + "parentIndex": 106, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 410, + "width": 872, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e108" + }, + { + "index": 108, + "parentIndex": 107, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 410, + "width": 872, + "height": 168 + }, + "depth": 30, + "pid": 37870, + "ref": "e109" + }, + { + "index": 109, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e110" + }, + { + "index": 110, + "parentIndex": 109, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 486, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e111" + }, + { + "index": 111, + "parentIndex": 110, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 486, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e112" + }, + { + "index": 112, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 160, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e113" + }, + { + "index": 113, + "parentIndex": 112, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 486, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e114" + }, + { + "index": 114, + "parentIndex": 113, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 486, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e115" + }, + { + "index": 115, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 304, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e116" + }, + { + "index": 116, + "parentIndex": 115, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 486, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e117" + }, + { + "index": 117, + "parentIndex": 116, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 486, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e118" + }, + { + "index": 118, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 448, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e119" + }, + { + "index": 119, + "parentIndex": 118, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 486, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e120" + }, + { + "index": 120, + "parentIndex": 119, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 486, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e121" + }, + { + "index": 121, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 592, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e122" + }, + { + "index": 122, + "parentIndex": 121, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 486, + "width": 67, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e123" + }, + { + "index": 123, + "parentIndex": 122, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 486, + "width": 67, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e124" + }, + { + "index": 124, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 736, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e125" + }, + { + "index": 125, + "parentIndex": 124, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 486, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e126" + }, + { + "index": 126, + "parentIndex": 125, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 486, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e127" + }, + { + "index": 127, + "parentIndex": 106, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 410, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e128" + }, + { + "index": 128, + "parentIndex": 127, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 413, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e129" + }, + { + "index": 129, + "parentIndex": 106, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 410, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e130" + }, + { + "index": 130, + "parentIndex": 129, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 413, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e131" + }, + { + "index": 131, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e132" + }, + { + "index": 132, + "parentIndex": 131, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e133" + }, + { + "index": 133, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 664, + "width": 120, + "height": 120 + }, + "depth": 27, + "pid": 37870, + "ref": "e134" + }, + { + "index": 134, + "parentIndex": 133, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 664, + "width": 120, + "height": 120 + }, + "depth": 28, + "pid": 37870, + "ref": "e135" + }, + { + "index": 135, + "parentIndex": 133, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 28, + "pid": 37870, + "ref": "e136" + }, + { + "index": 136, + "parentIndex": 135, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 29, + "pid": 37870, + "ref": "e137" + }, + { + "index": 137, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 27, + "pid": 37870, + "ref": "e138" + }, + { + "index": 138, + "parentIndex": 137, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 28, + "pid": 37870, + "ref": "e139" + }, + { + "index": 139, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 27, + "pid": 37870, + "ref": "e140" + }, + { + "index": 140, + "parentIndex": 139, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 28, + "pid": 37870, + "ref": "e141" + }, + { + "index": 141, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Layout", + "rect": { + "x": 0, + "y": 900, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e142" + }, + { + "index": 142, + "parentIndex": 141, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Layout", + "rect": { + "x": 0, + "y": 900, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e143" + }, + { + "index": 143, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 24, + "y": 970, + "width": 354, + "height": 39 + }, + "depth": 27, + "pid": 37870, + "ref": "e144" + }, + { + "index": 144, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 27, + "pid": 37870, + "ref": "e145" + }, + { + "index": 145, + "parentIndex": 144, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e146" + }, + { + "index": 146, + "parentIndex": 144, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Left", + "rect": { + "x": 35, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e147" + }, + { + "index": 147, + "parentIndex": 146, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Left", + "rect": { + "x": 35, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e148" + }, + { + "index": 148, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 27, + "pid": 37870, + "ref": "e149" + }, + { + "index": 149, + "parentIndex": 148, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e150" + }, + { + "index": 150, + "parentIndex": 148, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Right", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e151" + }, + { + "index": 151, + "parentIndex": 150, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Right", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e152" + }, + { + "index": 152, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 24, + "y": 1029, + "width": 354, + "height": 400 + }, + "depth": 27, + "pid": 37870, + "ref": "e153" + }, + { + "index": 153, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1040, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 27, + "pid": 37870, + "ref": "e154" + }, + { + "index": 154, + "parentIndex": 153, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1040, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 28, + "pid": 37870, + "ref": "e155" + }, + { + "index": 155, + "parentIndex": 153, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Top", + "rect": { + "x": 35, + "y": 1122, + "width": 332, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e156" + }, + { + "index": 156, + "parentIndex": 155, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Top", + "rect": { + "x": 35, + "y": 1122, + "width": 332, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e157" + }, + { + "index": 157, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1236.6666717529297, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 27, + "pid": 37870, + "ref": "e158" + }, + { + "index": 158, + "parentIndex": 157, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1236.6666717529297, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 28, + "pid": 37870, + "ref": "e159" + }, + { + "index": 159, + "parentIndex": 157, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Bottom", + "rect": { + "x": 35, + "y": 1318.6666717529297, + "width": 332, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e160" + }, + { + "index": 160, + "parentIndex": 159, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Bottom", + "rect": { + "x": 35, + "y": 1318.6666717529297, + "width": 332, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e161" + }, + { + "index": 161, + "parentIndex": 64, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 25, + "pid": 37870, + "ref": "e162" + }, + { + "index": 162, + "parentIndex": 161, + "type": "Other", + "role": "UIView", + "rect": { + "x": 65, + "y": 868, + "width": 272, + "height": 3 + }, + "depth": 26, + "pid": 37870, + "ref": "e163" + }, + { + "index": 163, + "parentIndex": 64, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 25, + "pid": 37870, + "ref": "e164" + }, + { + "index": 164, + "parentIndex": 163, + "type": "Other", + "role": "UIView", + "rect": { + "x": 65, + "y": 868, + "width": 272, + "height": 3 + }, + "depth": 26, + "pid": 37870, + "ref": "e165" + }, + { + "index": 165, + "parentIndex": 49, + "type": "Other", + "role": "_UIFloatingBarContainerView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 17, + "pid": 37870, + "ref": "e166" + }, + { + "index": 166, + "parentIndex": 165, + "type": "Other", + "role": "_TtGC5UIKitP10$186ecd81022FloatingBarHostingViewVS_20FloatingBarContainer_", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 18, + "pid": 37870, + "ref": "e167" + }, + { + "index": 167, + "parentIndex": 8, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e168" + }, + { + "index": 168, + "parentIndex": 7, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 8, + "pid": 37870, + "ref": "e169" + }, + { + "index": 169, + "parentIndex": 168, + "type": "Other", + "role": "RCTDebuggingOverlayComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e170" + }, + { + "index": 170, + "parentIndex": 169, + "type": "Other", + "role": "RCTDebuggingOverlay", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 10, + "pid": 37870, + "ref": "e171" + }, + { + "index": 171, + "parentIndex": 0, + "type": "Window", + "role": "UIWindow", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 1, + "pid": 37870, + "ref": "e172" + }, + { + "index": 172, + "parentIndex": 171, + "type": "Other", + "role": "UITransitionView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 2, + "pid": 37870, + "ref": "e173" + }, + { + "index": 173, + "parentIndex": 172, + "type": "Other", + "role": "UIDropShadowView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 3, + "pid": 37870, + "ref": "e174" + }, + { + "index": 174, + "parentIndex": 173, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 4, + "pid": 37870, + "ref": "e175" + }, + { + "index": 175, + "parentIndex": 174, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": -92.33333333333333, + "width": 402, + "height": 92.33333333333333 + }, + "depth": 5, + "pid": 37870, + "ref": "e176" + }, + { + "index": 176, + "parentIndex": 175, + "type": "StaticText", + "role": "UILabel", + "label": "Refreshing...", + "rect": { + "x": 10, + "y": -22.33333333333333, + "width": 382, + "height": 14.333333333333329 + }, + "depth": 6, + "pid": 37870, + "ref": "e177" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 177, + "totalNodeCount": 177, + "reasons": [] + }, + "warnings": [ + "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." + ], + "snapshotDiagnostics": { + "stats": { + "count": 122, + "p50Ms": 65, + "p95Ms": 122, + "maxMs": 677, + "slowThresholdMs": 1500, + "platform": "ios", + "backends": { + "xctest": 122 + } + } + }, + "refsGeneration": 835196 + } +} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.01.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.01.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/103-diff-relaunch-1-t0.01.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.02.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/103-diff-relaunch-1-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.05.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.05.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/103-diff-relaunch-1-t0.05.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.1.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/103-diff-relaunch-1-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/108-diff-gross-t0.01.json b/example/visual/evidence/android/108-diff-gross-t0.01.json new file mode 100644 index 0000000000..caa6bd95f7 --- /dev/null +++ b/example/visual/evidence/android/108-diff-gross-t0.01.json @@ -0,0 +1,64 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.01.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 0, + "y": 187, + "width": 1280, + "height": 444 + }, + "normalizedRect": { + "x": 0, + "y": 29.13, + "width": 100, + "height": 69.16 + }, + "differentPixels": 237664, + "shareOfDiffPercentage": 89.38, + "densityPercentage": 41.82, + "shape": "large-area", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#e7e5eb", + "baselineLuminance": 248, + "currentLuminance": 230, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 24 + }, + "normalizedRect": { + "x": 0, + "y": 0, + "width": 100, + "height": 3.74 + }, + "differentPixels": 28252, + "shareOfDiffPercentage": 10.62, + "densityPercentage": 91.97, + "shape": "horizontal-band", + "size": "medium", + "location": "top-center", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#f5f3f9", + "baselineLuminance": 249, + "currentLuminance": 244, + "dominantChange": "mixed" + } + ], + "totalPixels": 821760, + "differentPixels": 265916, + "mismatchPercentage": 32.36, + "match": false + } +} diff --git a/example/visual/evidence/android/108-diff-gross-t0.02.json b/example/visual/evidence/android/108-diff-gross-t0.02.json new file mode 100644 index 0000000000..892308d9c3 --- /dev/null +++ b/example/visual/evidence/android/108-diff-gross-t0.02.json @@ -0,0 +1,116 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 8, + "y": 196, + "width": 438, + "height": 423 + }, + "normalizedRect": { + "x": 0.63, + "y": 30.53, + "width": 34.22, + "height": 65.89 + }, + "differentPixels": 115856, + "shareOfDiffPercentage": 55.57, + "densityPercentage": 62.53, + "shape": "compact", + "size": "large", + "location": "middle-left", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#dfdde2", + "baselineLuminance": 249, + "currentLuminance": 222, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 447, + "y": 196, + "width": 442, + "height": 423 + }, + "normalizedRect": { + "x": 34.92, + "y": 30.53, + "width": 34.53, + "height": 65.89 + }, + "differentPixels": 48999, + "shareOfDiffPercentage": 23.5, + "densityPercentage": 26.21, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#edebf1", + "baselineLuminance": 248, + "currentLuminance": 236, + "dominantChange": "darker" + }, + { + "index": 3, + "rect": { + "x": 890, + "y": 196, + "width": 390, + "height": 423 + }, + "normalizedRect": { + "x": 69.53, + "y": 30.53, + "width": 30.47, + "height": 65.89 + }, + "differentPixels": 30792, + "shareOfDiffPercentage": 14.77, + "densityPercentage": 18.67, + "shape": "compact", + "size": "large", + "location": "middle-right", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#eceaef", + "baselineLuminance": 245, + "currentLuminance": 235, + "dominantChange": "mixed" + }, + { + "index": 4, + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 11 + }, + "normalizedRect": { + "x": 0, + "y": 0, + "width": 100, + "height": 1.71 + }, + "differentPixels": 12858, + "shareOfDiffPercentage": 6.17, + "densityPercentage": 91.32, + "shape": "horizontal-band", + "size": "medium", + "location": "top-center", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#f3f1f7", + "baselineLuminance": 249, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "totalPixels": 821760, + "differentPixels": 208505, + "mismatchPercentage": 25.37, + "match": false + } +} diff --git a/example/visual/evidence/android/108-diff-gross-t0.05.json b/example/visual/evidence/android/108-diff-gross-t0.05.json new file mode 100644 index 0000000000..7656b5cab0 --- /dev/null +++ b/example/visual/evidence/android/108-diff-gross-t0.05.json @@ -0,0 +1,116 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.05.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 26, + "y": 206, + "width": 390, + "height": 395 + }, + "normalizedRect": { + "x": 2.03, + "y": 32.09, + "width": 30.47, + "height": 61.53 + }, + "differentPixels": 89648, + "shareOfDiffPercentage": 75.55, + "densityPercentage": 58.19, + "shape": "compact", + "size": "large", + "location": "middle-left", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#d9d7dd", + "baselineLuminance": 249, + "currentLuminance": 216, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 467, + "y": 217, + "width": 386, + "height": 384 + }, + "normalizedRect": { + "x": 36.48, + "y": 33.8, + "width": 30.16, + "height": 59.81 + }, + "differentPixels": 18619, + "shareOfDiffPercentage": 15.69, + "densityPercentage": 12.56, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#e6e4e9", + "baselineLuminance": 248, + "currentLuminance": 229, + "dominantChange": "darker" + }, + { + "index": 3, + "rect": { + "x": 927, + "y": 250, + "width": 353, + "height": 351 + }, + "normalizedRect": { + "x": 72.42, + "y": 38.94, + "width": 27.58, + "height": 54.67 + }, + "differentPixels": 9773, + "shareOfDiffPercentage": 8.24, + "densityPercentage": 7.89, + "shape": "compact", + "size": "large", + "location": "middle-right", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#e5e3e9", + "baselineLuminance": 245, + "currentLuminance": 228, + "dominantChange": "darker" + }, + { + "index": 4, + "rect": { + "x": 502, + "y": 206, + "width": 316, + "height": 2 + }, + "normalizedRect": { + "x": 39.22, + "y": 32.09, + "width": 24.69, + "height": 0.31 + }, + "differentPixels": 621, + "shareOfDiffPercentage": 0.52, + "densityPercentage": 98.26, + "shape": "horizontal-band", + "size": "small", + "location": "top-center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#eceaf0", + "baselineLuminance": 248, + "currentLuminance": 235, + "dominantChange": "darker" + } + ], + "totalPixels": 821760, + "differentPixels": 118661, + "mismatchPercentage": 14.44, + "match": false + } +} diff --git a/example/visual/evidence/android/108-diff-gross-t0.1.json b/example/visual/evidence/android/108-diff-gross-t0.1.json new file mode 100644 index 0000000000..001375732d --- /dev/null +++ b/example/visual/evidence/android/108-diff-gross-t0.1.json @@ -0,0 +1,64 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.1.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 42, + "y": 225, + "width": 359, + "height": 356 + }, + "normalizedRect": { + "x": 3.28, + "y": 35.05, + "width": 28.05, + "height": 55.45 + }, + "differentPixels": 62597, + "shareOfDiffPercentage": 96.23, + "densityPercentage": 48.98, + "shape": "compact", + "size": "large", + "location": "middle-left", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#d3d1d7", + "baselineLuminance": 249, + "currentLuminance": 210, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 500, + "y": 573, + "width": 321, + "height": 8 + }, + "normalizedRect": { + "x": 39.06, + "y": 89.25, + "width": 25.08, + "height": 1.25 + }, + "differentPixels": 2454, + "shareOfDiffPercentage": 3.77, + "densityPercentage": 95.56, + "shape": "horizontal-band", + "size": "small", + "location": "bottom-center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#dcdbe0", + "baselineLuminance": 248, + "currentLuminance": 220, + "dominantChange": "darker" + } + ], + "totalPixels": 821760, + "differentPixels": 65051, + "mismatchPercentage": 7.92, + "match": false + } +} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.01.json b/example/visual/evidence/android/111-diff-revert1-t0.01.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/111-diff-revert1-t0.01.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.02.json b/example/visual/evidence/android/111-diff-revert1-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/111-diff-revert1-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.05.json b/example/visual/evidence/android/111-diff-revert1-t0.05.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/111-diff-revert1-t0.05.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.1.json b/example/visual/evidence/android/111-diff-revert1-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/111-diff-revert1-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.01.json b/example/visual/evidence/android/114-diff-realistic-t0.01.json new file mode 100644 index 0000000000..342ae48a2a --- /dev/null +++ b/example/visual/evidence/android/114-diff-realistic-t0.01.json @@ -0,0 +1,38 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.01.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 470, + "y": 204, + "width": 380, + "height": 381 + }, + "normalizedRect": { + "x": 36.72, + "y": 31.78, + "width": 29.69, + "height": 59.35 + }, + "differentPixels": 14686, + "shareOfDiffPercentage": 100, + "densityPercentage": 10.14, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#eeecf2", + "baselineLuminance": 245, + "currentLuminance": 237, + "dominantChange": "mixed" + } + ], + "totalPixels": 821760, + "differentPixels": 14686, + "mismatchPercentage": 1.79, + "match": false + } +} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.02.json b/example/visual/evidence/android/114-diff-realistic-t0.02.json new file mode 100644 index 0000000000..0052c4b9f6 --- /dev/null +++ b/example/visual/evidence/android/114-diff-realistic-t0.02.json @@ -0,0 +1,38 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 473, + "y": 207, + "width": 374, + "height": 375 + }, + "normalizedRect": { + "x": 36.95, + "y": 32.24, + "width": 29.22, + "height": 58.41 + }, + "differentPixels": 9336, + "shareOfDiffPercentage": 100, + "densityPercentage": 6.66, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#eceaf0", + "baselineLuminance": 245, + "currentLuminance": 235, + "dominantChange": "mixed" + } + ], + "totalPixels": 821760, + "differentPixels": 9336, + "mismatchPercentage": 1.14, + "match": false + } +} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.05.json b/example/visual/evidence/android/114-diff-realistic-t0.05.json new file mode 100644 index 0000000000..5cdd2d8e25 --- /dev/null +++ b/example/visual/evidence/android/114-diff-realistic-t0.05.json @@ -0,0 +1,38 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.05.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 481, + "y": 560, + "width": 360, + "height": 17 + }, + "normalizedRect": { + "x": 37.58, + "y": 87.23, + "width": 28.13, + "height": 2.65 + }, + "differentPixels": 1830, + "shareOfDiffPercentage": 100, + "densityPercentage": 29.9, + "shape": "horizontal-band", + "size": "small", + "location": "bottom-center", + "averageBaselineColorHex": "#f5f3f9", + "averageCurrentColorHex": "#e6e4ea", + "baselineLuminance": 244, + "currentLuminance": 229, + "dominantChange": "darker" + } + ], + "totalPixels": 821760, + "differentPixels": 1830, + "mismatchPercentage": 0.22, + "match": false + } +} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.1.json b/example/visual/evidence/android/114-diff-realistic-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/114-diff-realistic-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.01.json b/example/visual/evidence/android/117-diff-revert2-t0.01.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/117-diff-revert2-t0.01.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.02.json b/example/visual/evidence/android/117-diff-revert2-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/117-diff-revert2-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.05.json b/example/visual/evidence/android/117-diff-revert2-t0.05.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/117-diff-revert2-t0.05.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.1.json b/example/visual/evidence/android/117-diff-revert2-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/117-diff-revert2-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.01.json b/example/visual/evidence/android/94-diff-warm-1-t0.01.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-1-t0.01.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.02.json b/example/visual/evidence/android/94-diff-warm-1-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-1-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.05.json b/example/visual/evidence/android/94-diff-warm-1-t0.05.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-1-t0.05.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.1.json b/example/visual/evidence/android/94-diff-warm-1-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-1-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.01.json b/example/visual/evidence/android/94-diff-warm-2-t0.01.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-2-t0.01.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.02.json b/example/visual/evidence/android/94-diff-warm-2-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-2-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.05.json b/example/visual/evidence/android/94-diff-warm-2-t0.05.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-2-t0.05.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.1.json b/example/visual/evidence/android/94-diff-warm-2-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-2-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.01.json b/example/visual/evidence/android/94-diff-warm-3-t0.01.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-3-t0.01.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.02.json b/example/visual/evidence/android/94-diff-warm-3-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-3-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.05.json b/example/visual/evidence/android/94-diff-warm-3-t0.05.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-3-t0.05.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.1.json b/example/visual/evidence/android/94-diff-warm-3-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/android/94-diff-warm-3-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/diff-images/android-gross-t0.02.png b/example/visual/evidence/diff-images/android-gross-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f157ad1aaf398488b0f88713477106034f89a7 GIT binary patch literal 32552 zcmeFa2{_ejyFXrS?M)-AiAts=k;qVJAd)O&kz`In8jPhxloU#aWy+MwRD_~JrjiVq zib_HB0JLYk_w&a7E;@p6tQ>+ksEzx8DDtXb}TG-btoXJ+?2>#{X+xpA{=#N&*r z?}zX}OS$}Ahuu%0tJ^g-BAK7o+RyaFI zbE*1?iVTg0c_ri9e5YmR(CAe1pOo-U=8M|Omt!sN;~rDujL+%Rs>{2l+dU-de9S9t ztSnWTS4J9eF<;QF_FraR93K(-pIjz4-557Lpb*5oM%qa7*U0zsCJMcOji&i8j`n|X znNw*(NFa0a-ejLoVime-GqXR52%(%d_%B!Se=+ZW!ju0Uqxq+8;FsOD?XYN#(|&#Z z*Ri|P>)U&J{2sh`vFl4`=j-p$v9WcwSzXS#3x5AiM@@R=!rtcG-I)!_47oTLvHD!l zNMDQ8|9v6ocXDTt*>b41E=k+qz=0jiHRMNgJ-&bc>6b5SWnLeVe)auiuF3Go2$zwe z;cbj$Vr;xeZ<$4RcekjhD0AFI0qe`D>FJpn8J_XEDWd9YH;9SxGpI}y+DR{nYqc+n z-&Vuag}PuqTFYK#=8d-6{sniR9eg@ACTD4&qqofEM%@wV1IEVGgyN)qdM^%cJa}(^ zN>Ha<{a(Fg7oVMfV3?|MqtiGcS!7GhqI}bU3{jf!-jugTq*scHiP3f1L@W&?S1;n~ zKDkBXPv_hYm+AvII^P`KlqSG0tDun7(x)3HXb^_s=FgvxeX|wem)*KGuBA_E^`g6P zkG|e7%>UIn_v9At%g^~Z6fr{gspZR;-+6n~c(?Maz7ejJw?{E_=K}AY zFEb9`GffY+`=t_=fFJ8=@bdSvt^<^F0W{rz4U7D+-*0fLA-rZfR zuq8=UJwsHW#tB4Wi&%GD>ZFd>;N=Oitx7x^gKP#(rU_gT7S?OVek`EtNj`TLi?N1qy z@b>oZ`SxuB>B6@lc3JYtVJ)5nkHy}}E6+AxDmkD_}wToqZe7vWx zPgieQI70$EKjynOJ@)wop`M&P_cEiyLPt$hTs$*BUo-CYClRdC%zf3e z&edzy4375|N)5LMC}dzjOKWTEiQz^&zwPc5*TDmfwmY}kN+<61P1AI#!3y!henMDh zhR0N=#}^R@NPhly|9}8rR{6CRlJDNV%Rb$==8@qwaY#?$^wiefyLUsVO2O>SGBRVW z-aM+p4krKkV$L%V(@bP{Rxdb(H93VQC%
    Fnt6O45$4JtBR5U&`A9rlyI_wo;A` z4$ls51WiM7LPA1*Z;x(TzGB7L_2A$ogkn8CBCv}VFSf~Q+y;)1jk(ww0aME*eN(Y2DECn>Xl`_VUUWITBA?1XRyy*}NnuIpsBn(`~# zEV=F5KR>(p$Gy~42mKJs^7O(fH4K>%Ldj|cg{S*IV#)eB?gOP>2=WQJ(YOMBUlkrt26@83hb7xQ2_qtQT}6#aD01-~07)OGcDrx#{Cdh{aS zb%bF&y3{+q?$19r9@gG&LA1N}_-2~$>%I}tfyJr(esQ+ASwTlqtUG^=)7sS3)YrCI zTwAwqx3sXhnDTx69OT~O*s){rA=y13PsZ-!#=EbN+|S5Ry3wi3(rg=ESErktd?;R2 z-L%lXN?T!4`9`NkWK@)erRAju&bd{V>({UMd)s|VKB4j3;NWL*&z~#8@%e!;O9(!|jT43gdn);^>*SfqpPLk> zMg<_D+W3@gJAe|9g)4Q_>p?OABB{>&xSd@9a2#;VfM*kZf7`0puQ^IfOZ}>0A z7Qd7_BSUoTTUJYUcJ@K==sxs&a(pD>;gcsXVZ|)|_~Q?T5rgPwWM`LkVntChcASg6 z{Z5=X@c=NR=1T(uh+#`k<{SeGRa8^}V&%Vl`gH#4)%hhlYCSzY_a8r2QS*J^^J#SS z`u>z%%J!@L{rw@6ej7wZ`(f*_S+&*Gi?9qxS&3ol^6Br|)5Ru`HKMFXHb+5o`8`7@ z76EIvAL_x##Ly0Z@6sje7M&sLGSbT(yk^^(r!Z~dp_b)#g_9+KQUL%1;D@ zZC95t^L7<^x6!AAgOV_y3^SJ|U~zdDON%;opV<1d`PDF}5wWqI8QW@HM*H~yk`J(^ zpOf;zI%@aQ(j=W7925=0j1zz!?~X`gX~xcOZW?-ee$9m*u|IyCl3!cnv}XHRWv~nP z*;ah~xCU0`f$K=GL*K{kI%>v`^YSXO%UoAkhlhtpuLGPK8!c+vO9Kqd%!Cq(<3lJg z&;)K89Z#MtKA`4{MZxlgTN;#@O%1MqrQ?MA5gilbpnu%fcCb!c;Q`b!-&CkV5=sQN zXhOcQ&F>)w7_!r1a9ii=xZTi_t@83;L?95vrh$tt{hwwVggF@Gn|7853rR<5mH=>| z(g6*Pjd5^JoIx+~kkouDplE~{797v8oEcfJUVt@mLlWE7w*lopf3_@m*V@Xbrzhb& zJ#`L~>guRL0fwOUC0bfq?>~GvR11j&GWtDgJh6H6=F#i$AF#^=U)(g3>i8-o8Jnxd z&?9(iTwII10YR{@b<(RB!N)p$99Wo|x*;tCJZx*@@9gaKgW@|oJHz3P2ihz)U|8Sz!`;itBl(nFskF^wlBox1hiKh{;yAB2W3OFITnU1hih z^+8h4A$i0XQU}Nt?9Xbn)VV=uJVks?<&CQsVN(doPE3vW&B*C>05n-RjN?E8>?PE> z)gCNYX0dQ}g_i{OiLI}o*I;RP;gSNCh?k9p^__5X3Wo72`B>;t!$fg-yE^IhV*-%Z zz7rccUv>Wg6oaG68y~}uI|YAzEi8kB2|(ERb6cBd1zayDtn|;3ai+V-Ehlxa;kcxN zLQNLzKrlfwxB=O|pa_=tsPszcF^uDk46TiUwA;Ycbt9O8^f@>>Dj9^iX~Wy@QkWi6 z$ni~1CNdDQ4@7+gTN^%p{6ZYeQ(L${7M!b4g`s5forr73g2{0B8n9qcHSnxnq=HU^ zSG?gLhhsV&TO6fNJ#P)PfkS6?;>0yLMP-agf!--+0r7qSv>^J(@vN_Kx_W9#{c0BIxRaUWz3_lw~1A|*{k4iY7J^K}(TmgW$cudE@!Le0Wwl@f~Y`X08DGid?X6G@!3IYMC24G_Ch{S-bFpY4B zv5hq00qgIuK=?9v|Ni|5iV()_NqMU(EHMlx*$MNHP&kZ1D+5WJ6IW}Rgjs6*94O_1 zrXGxhF~yD%e*iKATi^%C;^6Rudk>#LUvA5m+r;)9-%Jo0q-xu2j)Gs}Xp|vpLA(ay zGOomH9X-9KO$baNav7PKI}v@Bww*92f6}NVU$=HN^h&{pC|@*apCX3**?c+U`K1WSNR0YncrM9uIw_ulIxuMjwzm}*hAfZ-k_0!PZ);EGnj|Lt8i_K)qRWYC4ae!0Toz1o z{19=Kk&(r{W?RJYD#{z73D_Lt1jO7hE@|ywzxp(i)I&VHhD2h#9y~j^BdM-+3t+fz z7_O{o-kE1tSBRe(XqyWUM-C(qR3HH(F$>0suf7l%qJdf6gq2%>xWQW5+Bs!|sCL)3_C_l5~#*W8HD84SNB+aErC;)Vp}tVVeLwcnh(PHu72QuBoi zC@e@^BnW5^_6Z(15RRxP4X{d_eV1K>q0xR{ZF0bfG#d*Fqo zfg?BmIXZeW!#)0;S%(0&7#@%u9Ua{-M;u>7JuAdbUm;E-R_)IpTPzS_`=zF(4a)sE z8-t4>7%-gj*aQ;3SaLkmg9{Z5jE{vIZ-DJOF1vcL(XNohWLyh=CyqXWildKwSjCu0 zm5l^W;P&V@AjI4Z|6i&L_z6Em4~oF?>_BEihwh9m174&JPEES@J~^8YRy+W*0I6ej z!UWUJ3cqCdeA0CvZT+K!-!sdug~H*chIkS#Ee+n0F>xCHOKKQgc;fHJh3JH&KypnW zHn6Lr*%#|}&LyEcafgF4L;*K#TS!0-U(+7} zusmE;pl7gY{@E8uI{KX;7`aS$Sanrm{ zNXJzmB?hb{8w2YnCr^?X_6BOc$VEsYnFFr{;he^waOkmpi+SYjSHX-Q05IM|a0_P= zoIKJ_lV*^Mnocg(*h{_3DTS*z2(o*=b5D2c^?Cei3uC5@y zw}GDCY95}Uwiok(2Le!WWCUh5A)3qi%$YI}AT#jk*>7;P$4F=k8-|#PbE~ZEC&WKi znUMFSWD&S~KtTeoh_dXt;dmfvBVhxR+5O?e2LL^Ei&!d%#2^+3>D1HX;2@}xhCIuT z)cqE+t0kdcV*%5ni?NqbV0eFv6(*iqGC^|);WV5(fFyYZ(*h4#v;rIkJ>ZCFLNT06 zB%|Ca5fp(;I9wZN$j2@MVUfv`UG3P2kfwP0r`hyX`0T1+9+H}ZHBJa$VH@CkB-J4_ zTZ@oV0-i|{+|rD~LhbZ=i}+*__wjEs8KQBok8G^%8$n`2fesHII|U(qB+OyCU($KqZyQl#*SHFM(igNA`uUftw9(@6L#PR z{199RQaGBp+!*R8Ujpz5U+BG)-;;)*lFUj&;vxlU5hSX@;hPY;G4aG`djPo;F)Sns zb`icXVncY|H{{Q~B=(!ct|Xj?+CWjEA|)gS?lzl#c>)$_CQOfq;vvBaTYTywh4Z6wzOAtz&vEmI|k z9-%5Qo0f2JNr-ZMGh)2>5Fb_*SgNsTggqoc-=U}H=BpC-4EdyD_&|uSjE#-^B_NQv z0RB6?=WeXn+{GmVW`+O)+=%-S{F0L2p)8Haik$(ym!d0y)S&umIVwF#+Or5+4ty1Ue244Bvp%Cvqj34Toh{({=dyIpvVW zbAkt3%Hz=iFoOq0a=0W2e*E|`NebvAO^T#i8=`~^JfP%shaVSE^p|j9LX=N5*Qivr@%@;#~WMRRyW3sDj88L)1 z3-ld!1=Ah_6aiPj2+;~C4vBNT8IBKxjo(wW;!b@xlqpE3Es@{THmd>(9=|^Yj|=em zM9?l4*kO1c%5Yf0hot=}5}K9<&|GXWvT+enQ6#(k2-GseAaWgU#3W4gySw_F6ZD|T zQkZNyNu+F!4}lBZaSSOSB7KiRBr*!&C)`a@L{ESYtSU>mhH!Q>^Lj=& zVG}9I7#)xI?k!;WEO-RC{@)$}&O9ZP&iwl_;s{s1{F@=*!`~7DCj3uVnP`OwpB?n6 z1v+Y9YlQg&;|;=flsvRJE>I`AV4uUHxt4OM*2bDB_X`UPelK0dd}ALPLiyQ#g_YV> zBgQ`(5<)TK?_4a#A4okH;d4+&jjh=P19Vj=vmj^twHMdX>Q^A()@jpqoI1!qhgN%X z7vrmOUwl=!j6*|B_*S0~?$^{;-YA?xi+to(Z^JBMF<$g3Y@T!qVwi_^r(#oOgt3{Uwrc9wi-)^dvhM0FRi&p{Tb~YZ4AE&5yE|!AV)@)7^*Wvc zK7M#*4vo^&(<`}fY+B!f+PTVywIFH#UQnm-=!)lqm}ZkiVSY}M_+aN~x=g-!60v{p zMjH%f!ytcxOPM9>7MWox7hgQi%&n+@nS+39q*i1ewx>>HUWv2w>4-2N-h^V&tE`C( zY7*1+mim!tH8~X3d<~X!Xy~S_3#6K8r>x^_XlVYN=xDoFxqmyMuC{81kb?b$MTf$W zO?pFy&iXaR2Eu$_M6Mb;$sp%qX6Ohn%bCmZEbAS)xUQZ_$Jk27gzPgDo-<0leUP~p z9kohNpHIgaQ+_+LY_0`(>84d3f@cV7jA6Ip(!;nm>I$ol8nLH!j1{)b&}?Z)o`ZNC z=6I$Ff`h<0!(EUr=Nand*IHlU_iSVk)1p7K%(aYLlsTR~WK7%qN@U(&yyDrbY`?8jmvOXi`=Vgos^XO-#^R+VmLuznYSjqPLVGVT^6cUB{p8yMOQf%v|-9bs)^_ z==hjZiTp%Gp}h&P!9lPfAUYk}W0bOPG;9tnQuCQdc=kEwE=Bo(^Oec__u8+TL;LA8 zZ%W&@i#cy4g6y@Rrn*-w_4cPHk7E@&bs4{)TalJL?o$!P-(Ke2@;Uec7iCcZJnH=} zzUklv_?_cRWYdI$qiNT((h~}ZZ+*2+wqmiPIoA$dXGySP4FV|QTJ0wh=c0dwvy9z%F7ixzyt(jy~WWtB$ z@_X7~BeDbmwCb~b#lcqXC7ITJzVgGb(HAe9WW4r-mM($&tC}A_LX7)rD?oKC1#T;>$RU z1^KhDLf$mzPJf;n>O5?qqQ(X|iw{ARGhP!bwVZ5se=6_{Nuj%VNjU9~uAAShXI3rvgxAZD@e=>LpyK_k@OO+$I(LI{1Lr^kCN4FjY21)EI6Ge>3Q zwmqhzK_w?!fmX`8>qvB401zNDfNZzw;h|0#PbIoEHy#%@U`z9+!#!Hn54#Cqz{f1? z8U`%NJO2Lfe%B9vW|uQt?a& zU?uYLqnM>%4*42>Px03x^W?1o&tmG(mdG@sH4-+sb`C4=Xr7yFA^V7l{F2OQodb!fm%E~l-zaaKG^s=h$9@Q?&@=BEOx2n2nSF?H9sFjs#7O+tR zv#+kSdAUoqO_VOHNwE$pw%k-3lCp8SN~V}oLMk(g!{YE%lwFx`g-yJ0xF8$N&5x=T zTxzCYf{uZP-UVz@nSW@`@$IIHr3ED#dr^Do zDv^WgZ0ysqxRQZ-ekmBc98G18JCE=FRAY-{?N2+8 z3Il!~Uf)~|%PjWXap z8QaZo)GlcK8&zG~P!Q!~cc1|QP79r!sE=w~u70~2b?$qM8Q-#cOx)PFN;{?Dr z?6^WiiXQ}*fEo42ddHj?gEzA)9mMN3*iX9AD9Y*b{`$E6bfJKNZ-DQF8GSTirOlOy zh=p9f73|N!ed9-e&8bP|%<02c|BjuAQeus!`Y!fua%fvZ4Fs{rcpbQk9NWY%vExmy zpx0BIHuEF#!m<3mj1jVEZ4b+))hUJhFo+oL0fCXUZ70EL$zrp}$s`Ycuk#TR%^Ubw ztfsqSvyWbret}D#kcE{%l4xXcIvxIGwbrWJ_L2J_RL!T`2Em|nYkf5s0%D}Z>ZaB~ zVJu=hJ1!RusR*mD~NHPc>N;z)X{k1)4K#T<-}|;l`G5NJNr!5yge7iZ&@U>Krh?(_ zVx|z4$U|0Ei*-9zfGeP>6cAB-Es%5VHEHnqI+nt`!g&e*X+N_0!8_XIK~Dts3vx0N ziqFjXdkY~i9N71ZxIvsQyTMVBtiZ=9Fxz$x3#(M7t5%yKE!sP~5nQ3+s|+xy!5e}c zOl0mDnR?iMS5FNKE4!7|PL(;n#{|s5qUSb~9@BPU_*BDabDym6;8QkyzxaIdIcSF# z$iOu+ij?Qj_~>v@;!10aFPjTVGZJ*rBlG^D(q^dIq>mZnL18l$gDy5=E}aNJS$d$d z*x*w#?c(boiu`O}9kf-+&9m4N>>QWEFY>c$4Sn=_nH)$SS38fX#_uuNv)Q2#^Hms5 zf3pL`jVn@kC^^3s|KKP*&%)5$ekPUE7mH6YIBXUEXe_tI!SJw;?|eEyxw6+Al&!!l ztE}*@$2MZB)T2W*$Y^b~V%u%t2QO%@-~B$8?EQ9LhZUGDSBc1*!mi7KvO)xVd*-Pc zXJM3jCasxKg1(u`wn4Ig_+Dl2q&je63)p#goS!xO?-&0)CfvUz1nxVBF(k$LEoBYA z?^UqAUV9?p>2?7{7%cMB(9Gd-ges;4vB>3~!{U=7WP2lS9&Z%sBA^U8b0M*tHl12>s-@pFf@Ss?aJzS_4@IVlbhq(=xY48dFg^r;B ziG{&lxf*TNFowBHeW&?Y#ME}cJ*u>&pNFkzm}KXggKbF*VE};1eBu|eI>;T$26h-R z@uU;W$fp0*#$o49b$y=Gg_G04BnNicO-jCw_1q&3e%@}Z}cAF@X!k#}> z@uxSvY`YNNF@M&G(V_)`iX$-iGib=A+!N;&(ZEe8CqK?%KIdRrbEk`6%n-0@Et#tY z^3C{>Uwdf!B9mHzn~Q>6H9(*ET5`XKO*hXJT&7I(B@YUDF+1O{MJ)EkMSGUun&GQ} zI+#!lI`gy2@Sk3fPtV+haat)7zpl!>wd`Mb9ePkk>3YM?WitfkZs*8#E~;E3`D=Bq z{LZP&l{Xs^ztXv77g+V-7nzM5|8b5?g(zTlF?8}h_5C&136H78R-5xaPNYv?V&FqW zgUNq#7s&qCDE?Pg_4hSI3jXFNQy2c`!~bSJgdTLBKlRyc>QWQRNHiZAl7J&^yxwC{ z-_h*ck7aL)?rbbaeay(L+{?FH%VZ z5qcDsU?s+rLQj=UO1noUXM|vpg<$~AqtCk zp)`X->1moN8nBvegU7m(VnHg^>*-DuZ;YYv6lGXnP$jL7I-a*j2hd<6Ki(q+OR_Q3 z+x*n2P)13g4{GSc>2n=cs%`{pI^_>Kk*fU%vHXB z&l#$ADHEl){JyA|#*!9aqcTX7gkaSuOh>C+sGs4>0=p|KQBe`N6=i;%u^vRE zD^cFp-rlaEp>Z&4{j;7qqFB#)&@*m2eLZ zbnH}Og_s95zJI@i_!c+h8r9)C&uoVkWe9&?cY#z z$GPBsBY>j@bvIB`>tZf2 z1%1JKr~rCBs5DM4E#6Bj_>m-OkM=_vP$wnPaR zDn|ox|HK!W!q%PGD%8M3g-|Pn6<@!8oir?{B@}t1pt8UDbjtuA>C_|tBB->{@xp0W zEhDslpojDD+O=y((Th4p>fj*sD77ao5{CJv*32PDap=HMjY2S*g$|+C46SISDWbPm zEUBupk~BeLN&8U@84sRTQBjs4aZ-XcJ1wP^cNbRO#TML!@s6UY)-V@*Jw8=lBhkaAMeX=J2zXVPyi;G!mZftMY1xK(XbQ9a7kIV*K2Yx5N z6^YF#D5&nPPcJ8p0RRA0QDNWar^OB-wg$!<|tzQ_U#07UvLek)498E zG%zNHo76eWGkQ+LscatOSsoQOpp>*<65_REi2h0X{nP1R&=ABgG7{ z6qBUs$&r5|=`h3P=me~hZYN;-7Yp=Gqm!BJ50&PLoC^A_NR4#>DP2cn3MmbSF>})K z3%Yw(7${qgIq>k+8Vx2LiAhOgflxEleP5!=D^s>^-AWX!!8-OA1rz92CNAm(D(SEZ(Iyhn!_oOpu?7H!e({42_QgPcymzU z2>*yi2lNpC2xDr%ciAUGiUeuF!NFw9P{T|5Bsm3mPyV@R$%l z@jTw<zF2wue%D*Ae4161M^ZK0VcXrxn7C`$VO(5(^ycaf|Dwle&6 z_m46`T9FHtrj%CSjWk6J(14UYll8%O`fGjAKC-?8qNKBntPju=1it@TAGm<^$w){% zvw@%zO-tFI0s{t{5Twl1HB=gZLCZ36L{s<6-8B{)!sZ0I{`hlQ4m=o%ty|UCmXukd zsbU~WVbT{K8{YQxh+0@!6f>&uA@Be=NmylAEXMkvYL3u6cmjb`Hh?**;GNJmgqAzf zT76@i3xsH+5ez!~xDJ3RaVcpO7$T6^+-xEVro()qV^7w`(UFc)e4=Eq@Q3`|R8bp_ zH8(-slhD~gz%R`(RT9Ds1)-y}_+ENCTIS30P`eLs#U2P<^YBnVpp{{@x^CFst%nrL3z z>3sThIhjc$RF-rp6B&bk-@A9uz7~eJuCC5){96`kr-RYIzU|!4kYE_j>oGBcS-@uE zwE^1J3JK+i5Qn+(8(lcO!fotxIA+m`jES*?M@|A2-0OGk+Fl5K0H**TACz*6>tlU$bb?BMx`hEu=+qWVq1h3fC$rG+#ZkW)g;0%-+@bP}La zOHj%&#&+ZE4BPFC0#)~&92Om2 zbxFkT;9P-rNI3R2r~&<1z+CcBbd?Iq>~U^F(D>VQ_ZR=L81%W9F&CqCcOSog>VC`w z5P)-r8-VrRJ-xm3sO#5(Dh{=1y$3JW%AnihpBB?sFz!zl16g((c(Ec{T2c}zzXdrc zL`UdWj)PP-!ui(=EUpL_$58->0XVQ<3C3bhwYUr{K<5S>ZP?asZqW$Mss&2QR+zb= zsJlHL@C3OphY&_!G&EoON;ocoABdZpaIf;C_>SI*4cVZuH|22E!K; zAR_$_^uoLNHwNFh@#R}%)?u7+z+mtr!w!Uwvj4xnmb2zAj~#m)U02b!#1VnHn_E8TYXyH7B-7hywd;)&zO1Amc)ZT&?S z`euQ!vEb(D^`Ib*|3DVnN?d@Wzqkb`XhPG0H5wZ%fNdIR@jwfEFo1_>THW!@Xx8T| zDI?v9aB2|lz#&T74m#2ceqMot0Ow-}2ViL7)FKipe!yntz-a&sSd*v$MzsRNy>Bd8=UA;LP_BB(!U34y$zaras8WuFG_x3*d3=oo_MC<@(bf=_|SE*L|? zRv!j@5pNf=f0Zf;z=SSqsnfjx)d@Q0@NF_-&C!PLR0ntlpNVvih9Ce3=H_6_(v%(? zpw{<|%;2Umq#o{m7_tPt$ZjAIqQPqh@=7vnS(OdZRemJBb|I8~c<6y@g3c|Sy9jMx z8XWSAmgZcLZ3Eh1>={v=@barTa>)_&8DGM+wi`JQT5a}2uU8KC5<#*x!h;UT0`gVS z`^3VzR;?1KW0;m`2&p$!Qdd{^|7$t0iep%gD$cv8x6R6#2Y0^-*!=`;sN|#x$Jlej zT*R4N1@I(iyg=$*5SNNs00E5)TRO4GtFrR)i8BC=?bm>N4{*?#0Uj4L5WsIuUm~e6 zInmNcU*$HhWddCEo1>4)G&MCHOcCS3Wkc@|`j>q*K-y!>Obv4V{*|LsV)JGds3yFv zr%5pJC^N$2B4Ol(z~1UOY#8au?SLrY55tAVrUk=AC-}ldreH?S0a>KK=CRz!2|uU| zh+%7#RHsPEAwg@LVQMW1f+sR04C!)1K@F+jK}_q-kK?IFR){3LOFX zY63|+AekN$?L0Y*@!{!uu?H#x03bG;0uew*hy+qTNQOm&c{BZG*tXnc5Vt;54Vo69 zb5}VHM;i&#==S>1=Yr`eSD5e!h#hhm&RNv!&3mz8(r_6aMrDIz5B!D9lOtAeJ{tb) zq`+t8LTFftNQlINK>H3QR^rBsF87t7LjVy;+Ug>QqrYycY&u*xWE4#Rh%%fDWJ#+Q z5|#(8oJj_W*kIWWGz#PqQi=uO%q?tzMsBmpU$Y=@Oj`H;m07$aB4W_Q*)B;oS&)V^ zX25T>f*}eb?hJF-t}dGy;{R<};45;_d@M5{asu&q2LP^fnFSSRg=C9EaLL6u)r%xH zM<<3z0orMGINZyWc;Tp#wlRK40gog+0pcIw%%Rl%0zl((sLp@{eH3RtkfR`U#lnHl zxAv#NNsNb(^m$CX+Ug=l41|+Q2XDk^l-@|CTRYN#h--jU$R9tg?Ad~{A-xnma+Zh> zY=rz_c&+HjMK~`ZFRz6^K~d4s9TwC9v_m?cIim`+7=oI^+##J1jsD58ERS)Se?Ji( zGPoV`>wslJ1DtU&++IRIng*#*eNG-8A^a)R)Y2N103kd$&W$9?p}4TA|1k1%o~frN zu1L_y89&G<@FGJpf-}k(&4d6iVwkUr7x0$&G;c?|ybowD0|ykbvOd_bciqyjIGPY9 z9xba>bXS%$O&t$dhsPScx+0;YKfBYRGPxo&3ei4jC(Qjz5``o6XMzjL07KQ}I0C3? z5qJgkbcEb$0JE0C_`xA_FRa0)AOTLiIEMcYdl&#;6Wx}9FmDq->kCN|Ngp!Pi|$D5 zgI|y~66kC7MM$;N5aw@!J;JEQm!P{44S*){)h}PpBdHDIL?eA3fRMM9EE!Hnec{w5 zqGJCvBK++RSe4T;RML$O$1(znjpLhWbe7yGeyh`OzJ6Vo14vF&^9zEGNkS13p5-cCNC$)f!C>w^W3eSlydy}68oC2`EB&QA=f?=VbNDu8~y%5mQ+$<=Aa2qLUvGw55N+ z;5^>`{>FR%q@&679uXmq!NsRHyB?kNEMI-xnjT^<%EDUy`>G31>c=&O%(PiKw%pV` z)>V*(oP;bI`>Ez6mg;$d5Qi%wGV)MUbG~ah!u-qCFPP&?W|9^_r*|0~{PrF^r9;Xo;1>K7`HB9WuywD`q%fBc>GX3O zs*>sXLULoU3C&o}Yvin-po1GW#`*~6M-oAc@Qys+cwZi~_4NAy9HSKJZo!uv!l43}Ve29NJ>b&DLDF&^jMyN92d&yVYOVK;3)~`ta5xuv zHl#(8ood1hViY`X0II1pSCYhp@(F+@OBtMSvmJ`uLmohum(wnjGuUugBxht~Bzf2v zj7=^hrwM5Fe$20Mr<%uy6q)0EtHXzpf6JtZjMr}+ZCq+1QE<(@y zz_UMi?58GNq^CsUB|^OrdPoi8z`KI6FRLOG&9_3f+K~P3h_WkaB{u$j6%O9nnXnY3 z;*i3ODA1}xh{3ZhaX{h3K!8U_>vQkCJ2oqw9ebPPR7eha5eX)+o&}*gB$3|$R&T{> z$T4k>lRr8)ppQvyqF)aRs|H>+T0TbyiCZ z5|eR&Cb&qds$65M2GXq$u3GRQCPwQB*ptPfWhPeDENJ5Z=G~cM^lcIA31zr zbr{hWZ1Eo9OE_CH5}WiGr@I!x_u_KtPR-)fCq9P9=yM*gd<~GT2wTLNC!jGA^lJ^F|&e7=r7kW z#jC=7MBH%_*7un)p=mp3+UunklHKef1{VWfM##sB$O$Ux@a@B4(`9GkH?H$}Ue4 zaU`5UfSU?wJCBG^tZf)X>KTd93U_i3RJR+)ihP20cjC~n1xR8B06j?P>@l^Cc4oMT z3rQc6k|$YUXDQ?aaEZ%n%$rLB>cZ*qLg3wkbI7MxR#y{OF=0FgLQWm>G1lDYUJ6k|1cY>J{{-r}<=qIV zaKit?==`*#X4EoNVe)YYh&Ga}=@!6Ey2(7;W7>QJW2SfvbZ6Ys|<1C!Xa-e%V$#JqF1hvUA zr_hp)Q-ZBAr$4qTOtmYJBmEHIk_R~LwF&A3?UA4!>SP?8NE|!?IP8|r&S4H@aQEr) z7AZ;iD$GZ1Jw!RLM@A|M#a(=;jS#q}6p1T2pVJ>*yn)6>a;I4f+T(_=~qj@2#fA<@nTWQr=V&I%;07$aewc`q^NDAHaC zK#90)9Q+bxNB64#QL@Ue|MhO30m#PyNCiLv-vG>yogkJU&vtJpX%1blPecOnvVa_F z3&v;0K-C8E26>N;)yw*TBT-;4&UGv$(h8s>>~+8@{yll% z_Al~qHg#u8dch%(_nkaaCI2$WMgh{uv*cIc@%wV5Q3!W_|Lrn?InYLJJw@DI98D82 zF*Q=y3D-kf^Er@+oPqKedF_9qi~ygPVURO8nPnUglrCy%U6TGnw{I_5C_mP*1m=-e zRDrx#w&Uk{IH6S-4tCF5sEa_jn8~4ZlH$OV&>Vmy?F>1~Lt(t3CfjWcFev2*w7efI z^YP3@n6W^ZIDaJ^?Ha5t-wMl>h{!F2O3png7mDqFXJqGKNRWYC3H$RHxhxm53wW?~ zH+ddy%OYAfu$$-HcMd2Owbc^tg>jDKrP#?HYaFQYKp&4s{gBhUuMY`z8!Q(xhQ*-f zk%N=8<;T1L=CImaL`~n9W7Bxt`e(z`uf7BzLYBAk+A0~uqyAi0vEMw~=07;JzAz-wMMaY#%%Oc8lZN=zv{f+z{Kh;_^_oK)3 zxyZy;Y$DuLIu6y6B{2Cu9f@zJu|Z4IQh@F=*S`GHt$lgVAzE%@cru4ie{Mri_o`4GzK!IDy$!FTH$skd#T-!kRGMi{yvHCIj-BS-EM-~orfH{QE zO2Y%DXgEaFo_Yuowk^*el41KXuN-H6RsC1A<3ySe;!Pm7#<4tFT6C{)6Ntci{j~e= zz8rr1sh4J&{}Lm>f=O%Q3}EnC5};^mGP5du!sOD=vD0I*K_{IBTRRn|<-EU<-wYez}Y|rS3SK3}8l72|@zX`&xP-wg?OWn!28vS%T^0 z_aueS_hEVlhhnE!$Cz@*>n6g}H_m>Vjnw|9qD%8vCsK{G?JvZkf(yRr!*Za7?CIXs zbZJ|nsrIdN+7IFB==>F8_Sfn55Fmd;#!+Pav@K_e=HONb1XtLKe;!Cx=oacK$SE&6 z$MhKI4N+-FQ|HYb`;w|R^S>v!`$%NwOqfUenMXa+tUF^Fxy^M*V@y=a0xtCFGCcI9B6s2Gu3~9|g zKi9^UjZTemUiNd9B0WCtNB_GGYQn1Y5_RFZG`d!l&b-{avM)TTG22@MsetNlyYYGL z8R3NcQS&BacxhYaDGDTDy!Hf}mETvGyE0#g6xoWD=oKBK1;#&~cl2taO(6AJxXwJx zvpHcY{r=;;%9MRaj1)18?3&i|l!w>6R)p#>ulewCGC>d_F(Cm_Z=w=|D=SIb03YoX zMws=%gh9iR$jgMfSN@pCJF=gPHd7Yq z2F3?-@ZL#{OjM*xufcCuT{Y$_J~j+?gN3%mRPn^fK^tF`QBb=M;{e<>q8o0-2%5*+ ztfbO}j^XTQHFI&15`!XBuM^bOk7p^;{r8`@_oA2ze$C#bc@g()(tQ4y@?AfraBLxi zIpn55uUn5kTRQ99Iyax4+GRhNbxT!|7{zq>uZiGQW1@jAMGe7TL4;#5esDpAFXbo8 zTD2Y_QzbBZ6X_36lNQBNYOAVXp4ux?%0pP=uP;o32FyFM-(zT%N@U`#5Kn5?8PI~F zH3bnvYINS;y^a5RgQwTPl11wj(>q&Jjo=JZX{9MB>4kE@Sw|X)9^d{J|F;>nqE{aV zC3Ej`o@V=lj-!%z*n|YXdI%m*3Q;O-*-byW4bEA@(#N6qqwF_(#f0h{iTs^bJAnLs zh|c@;D`9N(c#H6j)n`vtWxE0&H0$6O22#0Gv5$BhfSLW`OiiS!d&M_M(7h6E7OHwQ$)X1$Qm^3puQ{N!(+NVl*{Cjlq*ZvhlN|8Qm9=TYDa=G`J0qukLyy7X~2-q$+jtFYR_ zWsBCe>J>FCU1W8_B?9xp{U?a=hpw7A5-0coSO39Lop?W!D*CaYYO-bGa;Vwl6+lP) zMfm@rHS%#bD^(Z>;(khY17+Q%NmejmP6972H4I#4rDz$Zr*Z9`Jug@F=F-QRV9~20 zI}bEHm>)WX6H}(3&LI6*MMaNDtMu2mn}qmwwAwYB8MY06YxE;izRJgZ>!%0B$?@Vg z)3|sfJnX<|+kED%-FIa9T3G}GF<oTFd`jTVY3pn z?;J97d#1`1g)Fb2Mb^rrSButD_spZ8JWB1++p`KZN@esnwn*;NTc)QMe zIcMo2UKq)}vQ)MtMW$G9%`JRb{JAkpIH5m->PKLNiq!Z4j79BwIDdD_bDPi|!mBU$ zub4~Qvb{(`?Y*X~d;XIz(yV*ld$VB3qL%flwOt(kszvTBCxmvGTSL0Rkxce;;uS^LUMJ?;#=*UxhcE6Cv>~TvMDSA?E zcqr8wAT+w@m>PEG;chl+UYdO#06Zd$m-ZpfYciQrs+FAzc=)gjG7}Vlyl(5UR>?~aS{hVcJr;?gJD;&rN`}z5}YuAA)ne^WX`(9XV#_P)NTSA#c8s4 zZq_fmX+Mk2BM$GU1zLGUhVSavuYLrdhuT%CE_-Lzt#cUjD*o-A?+v=XdlIot*RRjJ zqhJ4!c77H}Qmu^$x8JkOLS%IY3%QNP+xigrw=@5V6}d=HmIdV1MuhDsQoJ+_%4WWZ zUdi|vSZ99c%tA<#td~IGjyY`fH(SuMjThd656ysZkC=`1)Vra~7g{N%CUwpbAaV^= zRi_&l7nvt>I<>MA@Juqqr>jHlx6RP~iyx(Yt8bwrJTP8&1A6uS)nwOT%3b)EjXhZL zvjHAYaebi>51RxeO&z;Tj-PqE)I%UaV# zv?5@B)n*qBfZ6TI*v~BTzI7Cfba)Gq(LK+2Z>KjA03jm=7Ery8<=RzzJWsKmA1)U*A^`X#rW>w>71wRX1=5UjM|f%N>lvqyc*W@r%!ASseqho6y2nap zWQ_3li~lUpDe59XY)CN;^NOLi-XvSH>~DVkzmgTNx)eazJ_@~Ggm%V&;!O9t2=z(Y z``>blIv+RSNoHVUqZ$9oU~KXj5Zt%`=Fyg_ZEP97N;2P^H zdzMgr5i^~!<)K-3R-2O>+{g_s34?;6c6(i}zT_YmmY!^jxrbARV@o4jP4DFG`pn80 z?}3%9=S!n~?qM@mIkj=8;;I_ED*L6O;&=0O#@2{rJ+xA#Z!6sNe8XM0#h8ovK5R+f zaZKi7dhBu>8E>7)ZUZSQ?M8iM>pBs;y>eGx?q$sD(8i-9_cD@?Hb}@K^t|5ZpFu{9 z-Sm9#zK^#Zr98cW1RFzRvLwDhPfV z#Q5eBzS*`URDh5jaIDIn8fu+^kEpcXdS9NKj`5qGlerIIZe14@2I~x@wh4sBk?Tjg zF7d=?jC@f&cDZ6qgWge)%4Mtg+4N3NzFci&>z|JD!PFePW0#HgymHi~T z1|yfwS5UO5-xfAh`+4XD%ap({tCoF3MQGtVhL85|HRe#tD+a37K)j(<@iLtiEcMEtFKO0~#T*QxEo<7N7U~^<^+?{Rn zL-S?&EUWq%8#MNK)ANxttvo+Jk1Sc-o~1ye=l!2Oa$O!FDcpz(rFP_k**b9oe#`8 zuBrc zu&;8&+k2TzUtxR0MAKJX0BB6 z{B$M+7-#QYAfx1ymX|_qw^liM*$R5Y`;*MM@c8qCPAOJKsY5l`tQCgNJkGn;36=GK cjm5ZM;{5wuR{hG=NMHa0Pgg&ebxsLQ01d}|qyPW_ literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/android-gross-t0.1.png b/example/visual/evidence/diff-images/android-gross-t0.1.png new file mode 100644 index 0000000000000000000000000000000000000000..23d7ed31845dc48cb4de9e13d6bf396406fef745 GIT binary patch literal 32694 zcmeEv2{e`K+qcu{oTE9CCa1F7AxVXlA}0}BBvUe<%1}ZmMH%X(GL*8llZeQe5VB2` zI_k)jN=T9hl8_LYeZOnd`Jey)oxb;5?^@q_*E*JAxA*hh_jO;_@A_TCb3adhTeqlB znK*YMA0OWomWHYxAKwpnIqo<9AMqz}-GOU-eBPcc)eQ!2-?iRra-7$4DfvmCmy}+N zhIPrFbt$(8jOs^X?XS$+?%0%|rMXkGN^#-TiP|@2N`$31cFJx#UASu!2Ex}bix+=4 z`YPc%bMyrthckZk)s=Mi*jonM1V>*TEiPuL7^Nj!E@q4!^wO2vouulM!fu``AUbw< zNC1DGA#3a(l1nFyzWT-bzdM)axY0AW8vnl!7Pn6NPf-oIt|8WcN?9+?I1uvxL!>`- z`9HC~|Ixw3q)NF{r%f{~PS=_@Z{F{byVi(&{PM*h_F!JJO~w+b@|v2^+`5z>k01Nv zT^d8>%%+WB+v|;zDo16=4%NyIT5fqK;aT&6n`vpHg9;}LqV9O~ML&I4c(&4B{=|Zi zrkwR2y;m|aWXtBA+4SPoD`B2}vvag&y12O|6clXKo^ooVcJlS>AC4$`_8Tl+x^$e= zfPeJkmg>}1bI%+IHAxoZo#C`URMJW&boUw&yDFzO&%R3dtMGXR?yJAEM{aJSkid%< zFP?tJl31|c+%qS6=iDu`9_RHN=Dr*eaqVViX6&Y`qIbE0fq`-@4+3VHn48b! z9oFj{DrxWPYPfFQy8iiC;r57ozg`&{^5m?&9EhQgc6IHasTTFLs_McvBO~%kKE4Z! z^iMcAIPCHCH0S%2qFBBvsm^iKzoc{o`36;ji&QhxrDpJs-5$Z@>pfvV`ti#Mt=>ea z^3kJ5=bLi;qqknLwv(G{msRV}ZyqNx@l4?^4%Uz^Rl$G`+!VJZZcAEHB4ZvaF|m8V z6PjvtPx0NFyiNb=ldXAm+f+YDx<~Al2~Bv`{&m&f6|*HuWH{+k`pMfW81^l#ty))~ zXt+l#jg65ixtW`LZPV4Lc5Bo4`1rYJHeJ#ZyH;s;t-9sofwh`Tnr+jQv1YIQ)FLZJ zEuheS*gPpI2}hXtIGowEXiO$o=(bbQDA6JnW4f#9?pBX7w(X{Gv;+w%GL_Sm!%)dI(T1|y4w?!?E!bh&)YJsA zio49X9P3az7y|n~{+gZ)^Facv`#c+JfsMaex7Q-{vwnDFWDB6OR#~}PO-~c}s`~UP zMNjjRt!b*oZMK7Ua!Sg_#*z?|`)}Sv-SHZ__Oz?1yt4VgfuIhz>$h(!{k&j730In} z_w@byxKH)@sV2#B0V4C~+wI$@6Vlh&7+|C1HMrf>)HGL9SLj83ef7P2$6yyVljIBY z*Lx&XRvIoV=JtI3nwg)U8Z9BWoIxNP_}bpWt*OF<_yjAJ78EcsHLW=Q)3j&1p zB|X`lV3E4_V|)Hcl{LAT`$%8pNMaI*y{)aSxwm&a*EQ%oTYmLw*O6h*O1o8cs=7k` zJ#ArtyMfRNX}zS%n;98bk9_^KgmE(=TH+=|K7Rar06XBO$ug1z2IrCQ>o}P=Rh~or zh64iw-_~7J*egG2kL3fFO(dvD#KBVRk>s_$El$n#0h}G()R#)`& za8qRFo{^h9+2F;?mjH{D zo;FjEMHvo*a~WS)QojH4<;(aDav`&3-Q&KxeIy>vuBW=&!GWAmAPVb%;J~o8=>lah zgA3N+h1^MGN44vzsY!&ueIUC4((Hfn+6p7nC?GtAO_~(fF`~)6wQEz%bdvcrSDXZh86s z+ukDE;kP73J}4WgM((VzK^e}pS=lu_--xY2A)0J-PdJX zQ{}K`?OMJ3dZRrEKRS`?4S}KV4^I|(4i6d^78Xj<-;s_5BT;!Vm3Gar8qf!2q$m4s zZEmiJ|2JY4K@00WpI$FKy8sB;+yz*HjaVBKFnzu6dj zUT&}A{1$}lwd>YZ5S7D^zIY)eu%m%aRqsSiRVuqFhxkbkybv&J`7?X@Rm)3cl-xU2lecY-h1uXdW&ZpQ_Vx(} zAedsgD~DVL0WGQW=`DOtu@)0#f=UCdjN>4SB*S3s`t?-~HMO-BPHPOBhld7oy+`ga zRJs5bLIB5pFBp3ktOB%L>Ta!(MQ~oikXyjNM$JbP z=E*HaI6%Uqi2y+`LfA1%ttQUNG+D+O&6=dsv$EpfI3+wC8u&^)r{?oMIXStxC|F#w zrs~zJh*8BE#7!Ld(i}|g7UtH|NW6#Be>&Xt{*0!$xcG~@ zy2|Tk&P@4v{`_n3%}gLW0FmHwWMmRyEa1z4XY6?cN{S4zT-XTG#36cbx*7yGys$?m z^uy=RTVri95@Afm?KR3=!gabU`sOGOE5E*#TusDQuoM6L+i%)qRX)SV1aH z5fq?57WrPudReuG88y$Y7g{4 z>i1-F9wZ}sK}6MivM6ssHbmJg9P(1;XvTwZOO)K!=3pLE-Lj|Zk3UXIcfy2q&x(uv zZM4N^EHh25*4Gu11bOZjfUlDe80ZRp{5k-(zl0#NYA>J>@EjTkkX*x%yrpDdYzk>0 zD%V*zYaNE9;JlTT#qO@Ml6j)`sJt8mMz}z3wHASOR5ZI4vv*tkC$o))-?gmmxzMp< zxuJ=rWpy-i0z(Lsp6nhL7A85$nhwcF(pVECFOV#FTbOX_%SyV;s{Q!OC{;+cV6-rNj3ilFTIeW6)UMw+y zQZPg4WEF_sT$~}dS8nbokkqWM-GI*E3X#jo_m}necPCMz*uFAU3(?4C)!ZrYX2er% z*F1AtYE^S{qD^vY>Ry3@H(S-!)z>O0=tea4bFilCBg5?@RaBZ}z}IXlTU>|ipqj&< zUmv3(LG;yN=2exuRiO9qd%#fg8q7rMg3{&%wmzSpu5sFX_b?_YM(MJAf5(f&bzJc#}(5PIVPch&OP7;AzkJi!pbkJtvfe**pREc*y~0{K3w^Uj?V zSRK(7={h1|ZPq@Dy@tF2d9ZvLr?oxzJlp2BN1q0Hfpjm5Zlcw9J4ANvnWba7C7Juk4&s? zL3+gjvB7|pRw|dlo}gU9tWJcY?$sxctx+=|O-j*Esx*KxN>FoK%4fcv%{Sr_){c=dYZhDqX|8hM=0rEu)EYCX6FMlcsI-(SatKRw+or-x{9QmO=A zL|cWQ-zE-9kmGuL90`77SFI*OD1ft zw#z)Pr$-eJD$p8+3eh68g&Mz@8;2N`S65|7&IoX*A?i1CvE(vBQaYHL1Nuf*NxX2= zo^qumqtq`SE0^9r+^wmm`(Z6IbDmS6l;Q=4Xha=pa1l9=uru;bHAqCMp2@R%?~!Eh zk%9XDulXa%l)qX4OV^RWjMfcd>>CFJqM&gOP%}JyN7xmq1o0w_%R$t1b#l5wWoJq- zkN^g3X>gaW&2@kP{`{QL%27C|DF>`@AQY#Ry+HEA=;`UXX)h3kgn9HE6wspT!%#tb zsfML%vSPuV=7n6W-~7T~#x+qza)p4W3Bp3ETs>#%DY6-ut<2QY(nvLd%0Uti>6nWP zgQsgp#)K@&ir}(fQj+5`3P#VtUR{*d#AU7&no_F`Q3o3B0mE0r47 z;m&pCz!JtN`RH@1g(&+#Is`8;nsc_0QW~m@$|IFaxbI;rFfNUO^v9J$Bz6)x0FRcT zM?*N3eG($yflw6RWK6t~(%D!ttIicY3xOzB%KR zYEg*Pd#a%K_n>E#k=IaBeHk7)f~=EjX{uN#vxi?=n~sIJ#NV+V1h)UnZ!ol%Dm)$q zzg!C_i((bTxdn@%ch&;ty#y1$5GMCY3?vN+Amp_IQOU{6$_@|oB%?Z@cn6Jvf%^yA z^DEIb*$1UbVu=~>U5I?(@=w#|qalz)IkZu#MKk!U3kvG!NVB+oI2L$Hq*S|bS6Ki* zCH)!ey@#(u#Ypt`QjA0#>h5kasyhh|B28k2uWq?trO2DX;|!$z8Hfm@*z51@xC%wT z2i@I1@^#CpQ>SuU7%E6_E>W?GCQ1^j2^a&g?fzQtomAhx_Z3LQ8r=wRrQup7rAn$@ z5sTYV3sKSD*O#M-ej8;cYDDh{;ZN}%$zD;RU$)d=1@wQo`y&VWbsQ9e9Dvt(Lku*0 zj@Am$(XBLJ+3Px#Hsp(53OWlvBgH=euL4Q|Y?v1|Mf!(t3FA(Dte}xXl*V?Ew}j3h9cFi!!7y4o589e9XQ3;PjwZyfNR_G zh~~E1EEtp+80|=uaCY)x2$@jy8j)+z3qyq}I{-orX+1?)$j2dcBk*F`7z8O0@}Jrs zq@_dUBZFt5$v7B<(qgF+6i{feA*Vr^s4H|SGcPX*A-crg-hQ{Ywh5h29hEr}15mjQwROL5eWMtkJLs9A=9Y6FP?7qCB$g0;WZoM`ZIkbO|D*@d-WMbLsKl8}+X zCS})oh81p^npbc@%ZJ`+|-wkzza#0jU{tyUd#j|M>z&b7$@QRx)Xy_0f?AW}pdPHyLn8 zPBqCMo@%E!zl4h*525kOgIVFZ6UJNsw)kg+O4$TdU}c~u`2>RxEI zP^bJtG6DopA^k92%lN_`aZ1fTQr8tBv+xiA>!|jEgA1OI&Vf{l8y%`yahB z_4i=^pRc3-ZGiv%29O!rfh&*0;{`+qL-FF8G{Z+Z*x|dokqa3&r9veia`|5C*qVm; z@xS?seD`yFMl!DKe;!C*#@Aa>Q)SIiSsm28+SZisXjodZv4H4HbM6m(*>h?y%@p{( z4ksLaP*a7AFV-?cHW>Ye8F$rEhL2?-myfT++BAcq((C%?+Xls7=G|Dvcei|(X{_&b z$4H0o_`K%VN~-xd4d9s1UC*~IsrcCjLt2(_H3dYa&e8!&bifToOxoKmQ@4^P53}DZ z$?$0>nevLbahSu4-d-nDCqRcOJ+CrQ`>;ajfarm1szxI+p|4re6E#p9gkz|;Z)zpGS<0jqaXk3Ow*f)kvxWe z4nq@Z<(8!UFBvshe}blci~MuQ=7NiYxQhDlz$E(?qcn(eHZ2)feT-?UAGqDJnCjP+ zTtlo%i#t=`+PGSb2_a|Gz;&u|i!+if?~yTWO%VaDZzTIZZZG9}{Wy9IOoNv=_mTZx z<1sr!Dx8*1r=d;7_xjK*0TX$i+9c@6Kzq70dKOAa$n|}!O|pLA*5Eq!AuH38Urn=k zrw9v}(6Hv>73}9#slS>k|IX#RVu#d0b@v>e_7?Ge=iNxIwJ}}21F#iGcN7ttO#eZi zH{1>yuEffeZ|f?aT5e;-2RK@re>Khj&B1e8?YN`LXB?I>7&rMzERwCxmFo&@>5?k* z?URtE1v+S}`8Wo^3ZK^2LL^)Zhao~7kkPNU##QSQtNsn#ZYUh<(1x}LA0f^c0K8F2 zJW14_V`0+i$+cFd0XLG>=!glttu%VLZchfxox=MaVBex%Q{`&EcMg>3Wh4;Q^1SN0 z?_&n7Qf_(0v>VBJrQDQVSPR-XScX0s%=`~7Lj{@vt|rz(R22PiWh>JzhRUoop!hM` zVE|hEjpPN^rnuyT-+WtV^59@itLvX1dMB8W<2sYKu)C4>xhXRQa!=EurFW9Ou~|SM zD(`m!AbN@^8VYSr&}-do8Z*x8S-8 z)aGu{MB0Q)PLL^mSuOS-pd}+kC@$p6)E&hY0&b=Ry$vJ)4}4BDxUNtTUXnTi1z(JI z=M)Y3134iqidDNWS&ZfJ%?jYxMqygB4VNi+?rlZN<$;Xn%3qc~ufk4=fag_)3>Chk zC2CM2*P8S>CWH7M0_yXsX#2epWJ~)Jc+^Dv9{t8eT;2zNaP3=;U=aJ3ID1@f&(z|& z{!B7w=xO4DjX(c)e8MvX@Cw!K1riTV4m-majM9?ZcbM|@prtASy=}*z*cehSO(FfJA8k&?V`Gx{*a$7PfybNU2twbQ@S(gvHw$AIZ0fzHXk7F^; zKnPRw5#BL2FHi*B@bT3zX9x+PtJF0*Faeb{iANIunA>S(Ef4^@E=x}aE#C=oFuzYs zg~2jtM$IKlAb#&kfvEFrhRWhvYEj-uw&uwW6ab5=gsRABJ$kzgV+Rv*L>90)9s1|AkfOkS3 z-d${dj|;l2`w=QGd49oxg5ocRqc4^ncUbm2*GsrIcS3FMX8XMth((uRE1n}3EfB>f zIOW~vdI9-+3P0cH{V|ve4u}sDVGVe&hM4FWlf%uWA^wS@MwK!0$a}ISNxfzO0p9UHIw7 z&w)4c_HqmaAIu!D@!KQ~zP?9R_ZudczLC^p^4~6Bv{H(>QbX`~v;@QFXlSTX%Jgxf z<5L#-?O^zwW=8lkRroK4*1Ve}I$h-#!C5R7!Q)JU4h^QW5j$H0|9&gOULl)Ng7*(C zp1^u}k}18&Pj``D?YaAEqT@?TTlc8y-dAI1Php*&%QD*}cwB|wXF5)Z7f=&e!qRxl zU`_VV{zY(_Hct23z{XiLEDagPdaJL2(cLuJv&GoiTZGggMumU0Z;QrTNw(WWwwoj! z7C%c(pgKrZ%!Z%!R-V=|O-<0ora;W+Zqq_P1O8)q=T!NR?O5bj$n?{hsdBfpG-4b7 zu>pFskl`0Eq_U8==H%()=CFLGXKR-7u@vQ4FHbO~WqZ7ZF#emTeUY{hTy(r1n_tu^ z2K4Pn(Z@PgY7eY9Bj&etb_!>5dq8{Ha6wQu~4(c zHX3yJdJa?O%;BG9GnN}(wGdx5P%tfqhD@Pfcj#A6@O?vCr;Sa|Et=7Re(e_n#xzb4 z0N)6zycQFfrbW0r#qiU*YEf8PdPO(2BB7ea1G8T_0m-IEjyJav|FQE}m`R! z!aLJE`5)7XLJM#8S-(RAvjGXw2{5JS%4w=3UWvxr6y}qJYWLmyM_Rmh*z|}1sR5V0 z`^9a%dm)wz|MPC9vn6@M8*$i}hvZ3s^9otnBX$Cde!)5{*RnKJ1hXm=s`or=iGhgB z9U;L!p`mAfWGNn^GoOh08QlN=+2-#`?eNFyjI*ZAT!{k1?Vzu9qlTM*uv_3a! z(rr&7&)(;-8l~mrqnwLJ*!Rsf$WV9gx8cOn()qPK{N2AYeH;`zecWnjp>+83_k`fA zMOfI8VGOd6KH>pSmlk`(i{6{jRl4e<>-rPfJagCRV|)Rf~9@$&1Jqi~VR(pEe4XbAbN0Vo--{ULaoX zoJ}~`q;vlqj}Et7wP=!tIzH@v)`Amc*qHBS49_yV$b_Mu^Ld(tBdID1vJ{!DmlybU z*vMak-T}??OlHScyj;RklqbtgnaBIRlw~INb_Ng443^^fjtR_jzx-a>nln0y9^1{1 z?e>Y(YdN3gF_jJSC=`QE20B$0$MNPknZ0NNm?a_uZc1Fpm{L3jqh%_qCZTKhj(UI)Xj*wD^bxEY;Hs zoi__=Tns%EjgjHx@Y99lB~h%miSQMQ9f$~Bi-~KvJRm$~I$!qHS?E{GhVO&k2$VVg z*^B)KrZ4>EDBpMEC`$hQ;=iMW`%NGo7VGVL*zTY*L3AFFz#uB{WM@n4MAVgJXRr3l z6NF+{$POryisz4-3x+jhc9^l=?kC?QpV0U3eX8;D1kl+dhXbeSyfg>6*N-{Pl;vd5 z-M(%Nw%Y+z07CAF2t)=E>k^@vshMs3z0_XFSErh! zWh};Vt!V_LR-i>v;1JW#RvibN=bs)Kr<=Ne0bmEzi1LnDLc_Hxuvp>&z%Ojievv6}Wp_Qr>TQ+VUH|925;5~Q^mdM+5`_Zm* z_g#5_6e0iGIh!Wfbc!hhDmL5jb_0v&0k)#Y#tR-2{iN0neqUjuC;G5XIGi`%R2i(J|g{Qm1*!b?+wxt&pAP zE?6y4u#w(D6vZkcQhjZ=jExH7$$`W1gD4}IDU0TxBI}T@+|-_P;Ns_kAu4_4oo4C@ z99#mU5BlZJz*zW_*JMEH?tdPl=`%Efkuq9%CLzxbof772s|7%a^A6ffA8a!68Cs21 z&mk@FhStK$&d6aEHj$bC8Wg^=)_?`ShKwPj2_tkIa*uXTD&#aAa&A`|YZKYP{y5|Jcf*tDt`p z?!Q%~ zy+o&3*!}1;{l=;4<^yhB@2Au`hTt+UoTOK8G3)nNujc>s(@)_M5l`C=7B#w@*Iaz9 zQnI3=qM^&Zw6$cRAGVCJv2SjZAV>2=-gaYSQJ?n>SUZLki}l$eQ!lmtQ5BsR7tc3|hjOqNw~qs)VyL5^9Q^XfJUve=*Bm(63YR8~HVupf?{ zf4Ozii8VFGII7w&+E+_DK3Jaawx_xTd*lo@IQp=Q#B zA)5rTt79p)kXc1b?DX&m_gG)v*QWqvpn?QOpf6)n(}D<#(=|Wea_jgFCi#RazV#sX z7~(D;(N!x~ZpblvzqX{LL?gPoCGEzIyBKoct6Lic6E$Oh$E`}*i3W^{mhRr6ul2YI zGls02X<}_}KUsFb1zM0%QYtf7)%B^{l2OwDtvTG4yL%{h-0$-8ikLpm zl8v2T*l$)uGp$~&E>dWPjo~DV!kRS;v3sSgp@FHdum8Nle`VfrAk+T=LtfpwnD4ub*sXX+6^_>3?J8sG**$ar z{{3b^!5^#ZJqpe$4?pbaSeb~8HF0rqH{y{4^k`wfqs->bn<0ht43%Hu9HoyQO{E;^ zh^DhhMt1f?_v;kf(q7avoz!2JV6Za?Aq5G#J!pV+Kv2e%y~I zr~nVYeECV+LCmuzaL&AW5ZiGx^%|`JQH6EuuKraRNsi_%uc1ptMXYEEWXTt?nQ86i zsaP>qCNxoK;twf{Xx`d$s_<%8HZ!WC`7wrud7nR@?JTl?2Fr?)|HSFzjDmO#EzlAa zGvpNs_ZU577B!h>V_)SXpaCE7bavmlbfd!h^m4BkqJtPN_A3-Par+nO%w-3ybli3H=S@MzEj&ZdR82*H1quCMGVq zGt^`1$YxHct*r%M_a8j?hgzn|84hPAsA6@^ix+RP6;nJjJ^lBOA0@Hf6!-D%cXGO` z20&uhq(I@yuh`l?+dz_&y@mgnpWg&*Nn~L&+^AWb4tjW${_)3;$=d<~BsmlRv8IuM zeE7VE=RjK)R+*BKmsf&#z~Yox-x(P`B3;pZ;Q5Oe(NA`tV@`kxwY0UA7k29Efsx?!E(Z?W$EHnq`|IeO90lw}E^6vh^Z_!^kFA4A;HItZ?fZ3O z^>%@thhz^w~#I~{HT)WaUsIFn?T%bTv=`zHRtr*&iE@7%ZVER!``Nac!2a{8F~ z;L*X(lI1+{7r{BaN4|QOt3ma*yhkFQJ$ojE9h7gySnL}a83piPu$r0Ns#OmN|zEB`U97}1A?O_+$;)z}efMPyL=>60|}psERm1YyHBHqm!%Ud&G$wMYuCPwkM!EPXOG{keD1ckN@43>449Rmju@8R@d>3I^C%K~eb62@C0F$lBlNCTIEiRrYI^J;+Po_Qyl2eQoAyT*B835AQQZtxd&_Gu=Z zss=GSDfP}yN5{bUs^$Z|jUkpF4y-k^_V$hh$B}x?%^SIF=8hvr!mwF;Kkhx)kXQFU zul){K>C?M?!|(TH2Vj%5jINNbgb)aPmwW?u*FNm;UyCOd{83su*;%Bb?I3Pc+=U^Z zy?-wT`hD;~?MH1Loea1-ZY)0=vfNToO&|ok33vu4R@#|ii?2JfvrvRp1jPqC1z4ch z^vq1P_zKZ(5Qb(f;eP}8Sb6ZxG^A*q8ax%YK0{tCi+2(ojy z@2nM9-Gca}fIBsB+_|$QZd=kyB_(Z6g1F)`n0Us&NE%iF+ag43Mm0fAPa5iltua2LV{4DqhF_o6|3#T(oJ z0MP_xGjzFWY4@<)B9POcD*{|VP%*g26A?^GN@~UK!-p>soXTv15z(V1-pU}zAnW4A zK{D7t&oVL?pbYoWhz6D4zO79L`&75?9|lXk)9+u3I}sk9K6_SHSy>0yQ0R`Kj(2C3 zk#*y8?|lp~W5x_zXhU*#X47%tS`Qd!vVMQ@Vs2I%Kwx8M=Wmy(`KRI$g$$nJ^yK!uIvY>V%e-U;BOgcJ`7IK3gFEBm;}IsU01(g&l7#&F_&P^C zFCwS(-o5Wa5mS&b9A`7%U`xBz7}-2V9+i=iG1&X=EK=4WY&UMGOfs50ciuco#7cX5 zcDOxOjMI+3nvSj5{e-?zXo- z4V1|sEQN=MpEI$rumKj(z6MmuW-|lSurpsfZM)TDaNZ~%1>@$oojZ5_1`cq5DREO# z!nUNzCfm2ah9PM1>gQn~`v@NDS_T`6YSV)vXfe5)CAU z0@UClNI?$fX=j==QV1n<1EG^O**>`c=yK`rzmHpPaciN^FE&WcLPO_x^*4*-b_o{l zaqB2sUB7}BgIMwBVoXeS{+q?zKCDKI0bIT<=G7}24sdW>MxeIzL#mPNic9wp6jV#)F$BtvQKtr6F^!^28G$83>SlBz6fPess z$WBg2nP8CZkmWJ>j%8U`$S4z$ej;}XLB)iC-w8XhK`?Y# zaaS#f{PX8?xVW@0f9S%_w1?IgLPC%%?y|K#^$c786DsXq{(%RB(5ONxukpASvH}~0 zO_W~Z=R~IS0v7vM8_U3YuYogQOvhbtGI+BmVoR_w1Uq=}LWz{Lv?lP~b&5o&Dj%2VaX+b;*#DwA@@=_X=>y5kVnCAveY(Sr}KUK0n8e zJ8O`o&s2Ghnggblo+x?)ArEd3aKzxga}>TJ@sH2DvO#Z-fXUFClj zc6U~7j0*p)!`=Qo^w6!z4>*T{e|2@`U zcokA0csvgpSL)j{z`PD9T;QjXA5jwGPH!1xb7r3INSM2Z|@rK{)$KqHCRn{e01PMeOX)-p|LLp=|=gtA5e+kpENFjvQOxXVLW z32d122pJBU8#e&rj&-dqTU>&Xtr&vMXV07WuC?{FL00VpT>iif{7AKO&g@LnK=Q1A zIXwKaV-}g(l{B>fo( zVUq9Oy_<|XXi+B3uSH@NilI=IRT~={?;yiAH!lG-A%k{A7L}tJwe`wY2`8k1&{XGa zcr4l@qMVXOH{=QOB8<|L26=T<5TWR8F_4@ogVqAV))k-yCdb{$<>1~~cyh)^EY49ua6m$l(4mMIVp#I&t;wyKLnB zLH$UsHm#3rT8lKO6bTE9y&_?|lngo)xNQbEkz05l0m7A&|t^{R1R8NT955AHE>7H{$Lc3Xei)HmoJn7pEH?Z-H>^YnNhlqx_8yvbD2O>>7Pe<1Z#_kEjobqpju5v0%`B)5|D#zV%K`Q4 ze^~-bzTwW0e5Y9~w$l@2(W2v-Prf<%e=zvQ_=+9d;r}uyI*@{&QHlB`uC~o37;P0{ zbfhA^heHvha2p_+slQDLnVlgD=wzeR&6Wt-P{n~7UT9rU#1>vIP8%q zMvzh-`Z5EVo|Ote2povk6$-*_(2z0$_X3Ltmo#Q4OZY#8Voqucsae6@k!r6aodm=s7%6gC{$iX@yvwH4}-ZMQY*xC+%N(2d`VV2o2DC)aB&=Zl3f? zn~jn_zo3A*fqtAh1#h@v0U`nN3k2)Mpx+{-l1?*O6h$d*L^Xqo1UMffpeE&!(D?Hu zjSs=>RCLQYi^$qz=1{nm1G?X0=y#&n@|pe+R4ObioE?yswvuMq2xrD!ZWqJD>CZ!; zeLrUDZ%G}Sh0;n;HikNmP&U$^I#R4(+~{J3e`Il(6GEwM&Zwo%G1^ur)$%CN5R1r# zX;ZO`bLmg%moIWg=)72Z4{`8}1ZqRzQUP>{tbxCJR+a z7@i;(4422X>NeE8G$KOK{NGXa0Bv6RIvF)qG$I-rG$NXFh6t~J9Z{rka?+Z>A{vJ| z0rhw=>K`#QR9l%HCeSUe59%?ORC8*m9Y>?5PW`dem^ZJpJ9C9%5Mkt^^AKhSd zkJ+P+iBVyzXGqPlB@~(LFE$t*ZO#=-g#&;y^cY;`p)W{P6E-KT`-@npuvq^j7Kpor zx)q_3k>dZpSdOSVDFZ|tLtz(O-jw!c<_`H70uYP=a-U|628~um4ceqZ)bwaVvI7j6 z!HYYdMN1&?uwlJ{{O1K3%hpYnO?&!sV4=o%Z9b-0k>F3PCGl39OK&Yp{b*r$I5oHD z$cEd+w~MQ{OpAV+XvWlb;+vom^N??P)1YBt&6B{%4^H1ba3lY0Fqqv1HxBohB^SC^Bkx{ zO7ZX)-vF0)e@y9lneQEm8}@HB^>??3GFNz&V8NMJsw}4sE0S` zc=yjho2`*a3qckWI=Fqwm8zZs>cIeTahNzQSYU&fFm|113FQIo>PkS z?3shCRHP|bXZ;SF?E|w$-dZ}fy;xz3vKtPhnCJb0%QiJ# zMdFc8Y-*jqynQ4j*eu881R{Dy57@mEKj{Y>i)W&TpzsKmJ~E73z4wQcY#Cc?WM$3H zqtBbsgpMQHWvAYG^f$+sPTsrkR>zOkDdz9gP-a+mbQCVg;BJ@deX!i?9-+d*V-kDT z`Qjt(w+kci+?I>3LlGpH>EA3ui*RAjWuxPl}dthI9Lr+`n^|Hyb1uszVD-^+a zHC-gt>wDi%#k0B^r+N2&k4FaV%CEG0FlvfHT)BN8eQT(vmcW@A`sPsnz|UlZ_fVq8 za9>lad;9ILZn|~3uB4_HbP=d4wsuQQpZq4z41@^l1;PL{NKpu@wM)d*?9sckd`Jd>(Tq>RBLOi)8kU7 zub<3$0^Iug>PP~UwMD)0@}XBdc-LFi7kJ*c%Y3_nu$(_K)J|sZJ>}i|(-xP39)~KM zlc77>s*+8^8;UtgTXPPz&j;3DU%@lTco#P)FCN;KG_%mXEwlQ0SKXm{XWdtaTb7ai zUzC0xs2_U0) zL!{vF2RdGzGYA-G(P-+7S03`?xdz&D#13Ack1zQA$Gm+vdhkpiD8G>SA!6QYM<+IZ zeI`)UqhePmDhpdp>%o)2tlP+1=sd_1vK;^@5*@bPfTtFSG+}Y%@R^t(oeSqf>(RaG z@*y`t<&nPfzP$W_b;LZt`bdZJu)1UYoiYH12m#M}Yd{)FZra-S_libWP#W9n0}$_C4`P zkKes$mEt+>U1B3c`6GwWay1_KTrkZYBIdX>PTUK~dJJ_}U*EQr2lO@j?(~VFb8g$l z;{x(8w7TA_EB6aXHbr%2L=K%E8H^l}#hVB+r}78#^4|fQ1zlX&OE7hBNzTeX+%35mJvAkg9$xeq9~ROQiH_Sc%Gd9* zaf7PdK+rUm!g3C@89x{@(rHQWK@WrRBVQu3U0W#1ya7iN{S$3a>ZgRmhBv?R8gQ^s zrAc^~k0QWc`+-1;9ec>pml~y$07XBSvk(#e)aSz56x~w|EbwN`-8$q5<(hnl&G6l?UcTdi5^>)T{`& z4buO!azjYJt~7Tudy7YlA?EM4MK$-|Cu* z%QDi-a~BMMKBefUZ5j!HTogsJEwfpK+e^yB||;_skWi7WSe{zUhg?^3 z`+O9jcY0jz)g!xp=!-s{JopgLhMP(;S)IU2NABSUSF;*h;p&O zMWXkXxM85Ieq^YgF3Dw>B=^1zSWZ7{N-@^1SME(eTNscTGfmQ(-V~hjK;aVpAaif^ z!>){l?)MUJjSLTXe7^V7%WUWGIme~VbMGSxZ5-~|H*$d{H9OBm z`&XV{%`JrSkmB|ExF(eYpE^bOB-GIx#!|w}qKqq@@Zydn%OQWbsXh2qId%`%O;wZ7~}R~j*|D_y9El5kQ($+$i`pyxuE$z zTrDcYuBmcdoA@cwEZ^(0ON-^mB}9#Am&b?!yph3~w5}uMQqGhBS&npDcA+5alA|lsv@D=25gSC#$?sh-v|wb?k&_!soh%A0 z+2XQ;v0sN%M*_m@;c{3CSbi1_}UFHYbO8-%7FtNa6qw@ze`{3YI`u zyb)BdbSi>=AO)gkBRq+A)_|LWFV4Ax>+KXxq=YG{MdE!qfD4%rD~*%4QKASU05CM9 ze@8;Tl{c}MEeH=d!Y`t7Una@hua$4+t3Pel#&3a<^l}T{o~b0hd&8 zRr|j;F{RZ|C?>|)x|mqqI-p^3#&#(;EB?1IidsYt zMWw}~uIn!RPZXzfnTO|24=El6irCp`up6wi7V2=0GTk{W`6s34m_-|8H?o<_FD>iT z8so{%)_-M8i#<5TYX85!&1U`+k@k%Qk5O)hebBBctj@PVh}P#tNwm&uqkODzzIZ-| z$+Flqsk0oiFcKS2WS|F>}KM8N{;d8$r|iivvFGLT295qIWWP=O1l%qEa3(NEOVKAM`FXE&B;a=NYZB_ z9a1`3A)+{<(oXH$KL-*;Z0=3cYLsi3UaU6b9Me5_e8UpGK*lWf#aCRy#|}*1CbDVq zsW6OQUhR^j+9)A;MEI7KV_i-`m)Jsua!p)==G;pNXBny?SPcPrB=p3BD|M%CJ1|9~eN1WDt zv=99XlmK{)WyyR__?cq6Oa>H+|5^av022suy0+HnSSxd6b=l03X^o7Rx%*EA!-Q<_ zXqStjbeS4wk6LUtCpf`g5@0M0ox=mDEp1N-eX~aLr)6%eI-FPlCp6Y~52dUzSg!^( z6skwyF9mrjpm4TWZL51_0(uv`)8qHzbbNBD*h{j|__Ls%LZHYMX3DQWi`A$WhgV*b02mLe&D1nPJsJmp zDv)xUY7j_?^bCD=11H9e$+?=)aDcLF+D(fDp2ZFz{ooZjTR@BpuC(r?sdDIv>^3=O z80B4p)S5+{S;vY=Fnhl)&Ca``-H(^#Ln%wB^R3At7_Cn@(g zlSW?avQ08|9J2bUddP9*$wSDegOPnx;{wgB`IPb}h*;m#kAV}AA+A0YJevp zcYMPEINEWnRv{d};IC@dHf~=&2*5L#MSU2JnlN^mDvfLKq2d(D<%@_2pemlz^&wZM zwzLRywsC{gWSK>qbhm8W(q46WT|&5OBO{@7a(OTg znJXz2}yYAj<#3(yb7EfA}2S2VgfcjY9g2`F5!qrbxP`Ey*>IsIDP`7q4*F@_AOs< z28_5t5)l>EH%vfi{3)?Dbj~A9YX_S(%Q2~Lf(RDE$$0*D&Q`p?8Lva%tbiWD64_tF z>YW7p#9=1IhMl9l3cp%GEHHY|4h%ZiQkO3PJ zu7dOmYp7Y53+w!1ZL?+>CS>uDg9}#BOCEXaSFf&lY^z|3nFy!g7+6`J!X2mt2ag?KBu#=hysiYvVjB;aZO-x1Y(Ybfn}~Jz{ZZ_ISb$57oT-$$a^7$1hkjx=#C~m8SOxhT-ogm#x_}%35PS>^ z&j&DNb{${fj(Sg8yNXI zb=D5dXsg!9NQ5iiq>RIl=ZWdIqw5!erfwPZAboBy)^pb*T6`ot3p1h>^%vrOv>7Is zhYdSXjgSimVU!A}d#WCMO8PfYlRX&0#RRCf)`y04$ZUa7&gU2d)MHUlym-x91=0jO z1VIF9L+%Z`*b5RZP9k-1ip4;7(qwJK3`AC_Fh15L$Ur_6Z&CEn#k9Z>u(hf23RD1i z?nw-<5}rknBCD?%(|LRp^bLSeOnIcan3(4T#-PmNCb1T>Nm!}DIu;NEEJQdNdJ}-# z_*k44u4-LQ1h$luu~i{pS%mDL;{tgYxSl?gK~}}HP&h|(n7~Zp@%WG3pcd~kAEP2$ z9h;W4O!2aUs0vK4g~$WG22^<*Q}Io_ZIVBsR0Mw^xL|lc)Ej?UmvI8-w~ayu4BM}w zxHX^bwUlE-^N-Gfr9tRYNLYRei7h_NTxP)s(a1A1w!&BuK0IR~EHLR}+%=v_Xw@gk zT1>LmRSXPM(?^h!>^SCr!CR4$oGErsXf<}aXYgoaqa1#zsV!#7U-rkll%XjaSR5qJ zor_=5(QIazmYN#g+_Le{PXuRTZMrPBc6@X+CK_1Q>z#n~7wesZz{fjB1?SwtIg6X% zyOKI8G=rZ%Ir$V$_}St;3E?6B{+ew2i3qadQ7(^#mlKsRi6MgNIzJ4r0>}eq?uqsj z@zJ+P30US69SKu<4&gUj>%;04Qebo&H$lk((trBa90^JFnztkByhu&V4QSvXn1vT$ z6cZG+37Hm>VVj_zY2PM?!g;C>D6WWsFEqub?}6I8{!d?5AJfzo#pjG8(TTyYM1?X( zJGSS9WNPOJ0#(c7fmRD|BRWz{HqxjRM>oaBMxsu)iKS`T6Y-A^H>Jyq< zs4LO??;-H7uY`fgC>FnMBA9f5kBL(FE7>I)Vb#pQ3^HPfm0Jjj6feHPDbaCiVJk%_`vAhzb<@IJA2~m6E4*LJbKn%WPeN3e`=c3_UlJ(^-!U-HPx<@ zHn2Gi;z_QjsFp748Y)sGxd~SqzzT*+92YeLZpcPKjjHtCEUvWN2wslh^(Gr&q}5Uu z7vb$)Rv((S_y}WiXF#d%9c}^VWb->^m)I&U5-N`%KI7UblJ3nO7IDjpwe6zB7HOjW3Puz(uq)uNZ9Vp~lX5g~Q}Ci+XId5ZOBOY8{2 zC8b{{eN0eylD|*%_`vhZ|DK2I?;T}p84Y7Cps1l$N#)_r4)ij#3huKO(4$je5}OtL z<7n+lNyQGj0D@b6wp|VY(^BAF?2hdh!@Hj~izkUs1GFA$s(s>e{*`ZkUY&xm-%>zN zEa7&R*%qRQ6yh^xSCKTxsvM&BiB9@#4&!bsPyFJ_1pMdtV?aw@PB{xDBT)2U>MnIc z#nC5Z9^=SWd~0`#chmb`<1Ddev75+qIl4oB1o>9#{GB4g6lali1MLTs-RE*cORaOM zfgRHoc_@pcz4H68{r9`^} z4auIz_|RluZuUZ>u)puePq#AB_KVG+F0A}-9Ylh;|*cDgy32P7Zw+Znc#aLes7dxcr z-}YL!$HV+F3yjR7Y;P(pD)*PD_A26*b~&5&92RLf#=b@q(Mg@)SijHx@PvE=-Bpz* zDrnO|B@hQ4B_`)fPvY7P+cdx&0_KdV75G0*O`goFZR=CUZazcbj~~1FG~L=gCe3|Z xI3{h`_WUCC+S0L$)OdBq^9zFDtIRzcH}~4sOU`e!kH}ANFnYtPz>1A~{sq5nr102OhuAPCCNS# zLNTo>Bng8=tE5mec7Bi7rTKh6_wRSy_x(GL`=9&x{$`G=ak;Md`?Z|Q^L(D?>wNQD zx_I6f14a&zNF-k@n6Gavk@V$l?_K>q<%j=Fk7$WxRm}qZ*``~2y}8=zvSRJYQ%{=P zx6VIU7JU1N%}SFZ-zLR==fBSVWsuUnhl)e*e{tijVv7BWnaP`G>SXo$*Ef43j@T<6 z+)#3-U1z<{n9mN4TOeMJDr2QT$3>+~`TL{s|9tdOIR9NFF~GxF=IYg}y-W<2{eI!X zt}d-lf9e$(8EG^@P3^u*YC)d%%$eckZy(e*e|=!?*}!$lR*%x$cQ20oNh*dm&jBA| zF8g+$jJkQ#z}(#YzI^r%ld3w~n~f^6e8V6`agdb{$ zJ-oeD$6=D}B&SKT4J%B|emOhw*|Y3`fxG9NGd7Hki<_*cw*4CSC_T& z#}9pvpE%*Vef!;qWo0Ad%s*FA(9+RaQ+)VeOOA$xeO!u9-)Wk9dil3*eVSzuQ}q4x z$jbVp)YR;UPoFAqM@>h^@#yHIRx4K6`S^^HuEj%Rfa3;d=L0WZ*pKthxO-tu@wIEc zrQ51`xn^9=_>lqGxvG16_gw2f< z^ffm0GBh*WKX>f8kq16CShi`jnc3u#2aY;U9XZtCs#$dOnUdPcvICWK4h0TAF!v|( zn43(fq8M*{MDf|XqfsjpvSWR+mMj};G|XUjctO<+ghNwQ0iD5@y3$G^ATF-GQUYpXVkx}fIQZ||8O zTwMHHTele-iq)2uel7jtj<(6rzKxBI7p*4rSY6zJ4+h7>!Wy4k|Lk6Vewxv}kftV2 z&FRzcXuB`dZ|G=sSJ>spC?|Ej?|RC~$u)4@xiNY^xo9*PGk#N7=jP#|ufHkexJFD& zj4v+!)Z==^Y*YbjpdvyW`>}Af2@M zJwNdAl`FIO_)OqnCnqN{O8IaZru#iLb)MxBYo&-A4;~EOQvW!j$k8?E$)?*&^g3@m z#L8BzSmAXK!l+pweaR@YaFvtOK7`aG(c}RhwYpv{e>{FX z#v&?uFB|g@2-x=id4CjTiOEGoD5h7a52>!M#z>FlDTTRvdF7hoZmU-Pm?I}I-&j{M z6H%y|nYnJ-^j&KCi+9hmFP1yIlmiDvF&5ku|Dd*M>$|6YLqkJ_sPdU5c%m&Iwgm2} zs;b&~`0$Y8l9IFu_LlG4nw+*@8Drtsk17B4uYWxPN{WiiGKcZi)0>}TT_Yj_FMW}n zoqc&nvp<``brAdgx0|rqa741m5SHW`-&Xh3$A*y?K zA$uflZ;7nfn94{iWDMltebkK{H-zTkhxl(x>05CF0ebZZ~fyd&t@D64i0&} zIm7zm<;%IALai_JMmZ!~P2h8`+jFY2-rddZdowemK>ItjB?+xv?e%;f^P$~)Wv15x zK7VoC(#q;gk>lio`etoy?N!kwweL_To@fX#nY4B4PPENjqccW>6)#-45VW{^;cQ8* z*h5)GMMS~6-xCvml$vCT*{K!oTesdWD3CF6cX!v>+OTtTMqca%wbIhk)8%icpo^A< zC!hGX6^0#62FRq)ui=VWwzbW$5OWvby*pq;ko}#EE%iq|ySu!Li;FLvS6k@Q)w&kc z2m!&~ynUOPoP0AjC}u6bJWwnT1v$nne8Bo@Zj8=VodE0fOj-$K#;k>*>#)i2w zw6&k)g-*x2ZV;}POE>Ep0zQZ#4OLw0AI~zkuvnlnd6*0~l$ew>M}O0(F9!{(L34Te z`Hc-v<_M)<+0p!GY3Y+!ul7WpI5E2GZDrSijSC_RpJdc$h8Nb{UpIA6KVw6qSzax_ zMKQKOq=&?;<;#~>x!=9;ydq;uZn|%`F0f;5dPGqG2cBt!m;LqEUw@XBJ;gGnZ+wic znQ#fA>Y%$r@w%x`F>K6ZGNEK^bKPhR}0N%5O(S-v(^ereST+1*;~yK!wjze^x2?S9y5$a<2VG3Ami2c z_P<0mHj3q{R=5O5na3EgzcXMKkm?BbBqvW(2iIA}xQH7MQFE$2n0EDtKOUZ#x#g03 z^_MD&>Q+`(PZ`7>h3Ft4tmraf7fPAg}i_MQ+TPDM7|h zpIqNf#5B-e+w~z*FY(f)+YdKsJ^%0_aN|vYSNJWihS9m*11#O{Jv#gUupEoh%F4CS zjby?ARv}_bQt5MW&11&sb08BwnnNU+B0KPCI;#ajzQyk`YGJBTdw$rmWkiqAVou$9 zd}T*AX4o=q%&hGqDrA*_{{TvIa{fmX?fZftZkJbp={p_>P1S$wr z%td+dkSJhK9dEv^tsz!rh9#|E?*|6mz(#=|$K*>3AOt`C^vOB2f z@%5-Hrd?#&kf{6V{K`Y@uG;1+;R>v0yp_sl7^g-VN; zERhPPqeBNw1(Nks%k90rPviiqlbkTN938yH)(HY($)Z9x_W+eM8yO8R5q7`KY}l2R z0gUK?SRJI_Afq>L-fRk;8!i*30SP2lgg9!3dVS97T8zi&dfiSC{3Z6?)?9l$TqWm_ z5S!aQuY0URDzzcl!M??d7oSI>2M&A@Z^u$#UrJKamiYVcJEdqAcDUfcsDYmXn-AZ= zpHec7sZ0^4!liWtktnXmO{NGpA>bg)b7upO4wHFwv9Qp@VS>84+h~}Fpi}z<$~Y!l z<>uwNj)o_Wf{TPeDBslAy9XWD*tc(=nz}l)?lwWCQm81?UPaNtpieOHlWS#d{XD&{ zGAkczP6IulKGq&6ITrkn2X!XJRMtz=y9b^_AN~o7f*l=@=6#iXp%J4zfHls*9%?Et%t8)t7ZWm;D}$BZ}#!IXF%lBWv}*8!!XBSK#H00iw!C<7F>>frqfyP_&8Y~sUNj?i<9VUTN+mcBHM*D9Y+M3Na5FBgu_Ibs57q_n?m97zT_KRs~cM{grTI zLU- z)Qy!>3LKM{TU)QeQ&_m$y;t&Z6pWYvYH~y|%fj*q>AWMU2NNOUheU#j6U!=i!!%7zkfv znk)-LKk%5?uv$w_L8@ryoL9H<^71Cv5>3i~hY{Wji9*y+_vg=l7U4zYlqBS0d3(=D z$wrDN@lKjdx(xw}l?R-IoOi2YUkM3~k$RnemT+B>?Zob>ngK+tF#n%Nm@(tTmq}2+ z=@Ed;G`TNTat2Eyql?Mh>G6d%zqvcSh6q9A*Q+REXo7(rKY4Pnj1jxR&@6=Ykb~3; z*GvHpr_^$J=!M^Z|KlNC7LAPt8bkjg1v#nbd#|xNe_L0FHpE67Th1N%RjQz zo*o%Cnf53)reNKs(Kx8}JklURcS@QHm*~A~&gwpq)!kWt*{k)?K0;%Nr-#SSQb$cy z2_F?~yjozjG>dwc?(gqU%3HhK(sI>n_yr`b$49VHoIeb|m$~Y^V&zKY@{ptoY#hx$ z*l8qgImrn`tQE=TxrjiKe7Ace9>64jfyzPS)v6IUM8-g@B{dEkB16q44GSfQ;c@Z6?0WHtru%K+`FtwKB4oM5R7~??QVOT|iZPv>(d#Y5?ge91qzg{ym zHa>pJv@rp#t<_-weGL4QG~iC?^o?-aZ;5RHBDD&UAi-sgeUnGdskUHC@jWFmF_P%0ECDi(|cRSz!h&>fl zn3U_q8K9ZSV**}<`F4e1OeD!qU*rUfEDVaR&{K{P3>G<4Ey=2+&Qn<5T=Td1v7!Iv zV|a1aJmN9nkh`5S7PL1~ZK3+>=Jt+`#(Yuu@Tqn`&ec5qboatS-ntpewbc0*0hg}VdB;KB3nJm zAgia2bX{iXNAbbo?VC5hCna4cz!sBR!|1(Q8h$MQ9Z&-oML;5PbQ7^w=IWCt-@@ai zc~IDe3m2}%5~~2?wDUbl8GNjzIO6|xtzLJLE7_&diIXPs$qy6SP}o-?e3r9-SqZJ)$V$6uW!>*V`2oJZwd)|R@6)uO}9j1z*JBNnwbBb@1<(DI#0zZcFG!S(8a2KTw6P1W+K?3bc!lXZxz2sQxKOC&Zkx72MaAh4p12QI1G+CHcVE(;cJ-)@*%9#K*YD>ngn z{j71fWHBuHc1tl?DuEx|vYt97z^|W!vy01na!H4#?X%(umrKHQ?J2!k zA}3G}N>7C#7xS(n1Eqdu2$7;%NA~w$)2~dJhXetulRDe35&flH#m3@C7huXe8|mQo z1RZonkq~w+$QtFoMyI%VQ4c#hU!`D!X6rOeLeM1<5O8~tdmU*TMgXE?*MWlx_kwC9 zWoF(JRR@gHHoVC3U1xKpD8u1Nf&-(03tRwi*Ipa{jEqxl!i2<(j2vKP1SK2{7r7!( z_Z9fSl9M{3_&^B2WPuckf%A42~T`udYxVT0Ag?!w3=T=KM`;WvVcdJ@P_sSWMdlEHX& zcQ!-a+&Keafx#k}BqXrG#rM9Jas!_O=;#ygWuWo}wXXxRpC5-4W8!24pDXMFDAr9? zP*^v0B-9s&pZ=|amYyEaY-~t&k2oogJ7GJr14&i%`{1KQGjO~amEtwPy7pS6fY&6P zR$EBGM$CJ@sWwU~T?3W{4$d;uzb`%UFoKbCA@=EOFLM=wJ$0mv44*LtgNBlKNGsGK za4r_dO0r6N4k?6z@hdl)$NVDY5LsqFW?n*gscI4W85QR$T--+)8>*?PHSAzKQBz*e z#l(SBC>GR9FawVnSljDye_tOerC%;{poo7TMYtGC!~3`e#?JQASq_aWGXLizsR{if ziGOV3A6NMQ>W(1qTh8#U-IXo zndRkPh7I|3x;uUy*D2%GQfnI$)N*l$Z~Lg=1uCwinXRBnzYjS?5{H9gJGT{f1r9b* zQIxJJY_NqJ|DGSr^(PIJG1BidL`9M8C9PxkyW47jr~N7kcQ!yd%b|IpfjS|4J+*$=Fc38ucM!dxl~{ifCfO zH07Nc`6mw=D^%|vSK}sK?}pBnu`*YCw)SSjMh(~cjlOo~`o9@}pS4(j(s%_{BVE3V z;2iLDIoGa)fP6R99#@E<`xj(2pX{+1ea!jl`yB0TA5m z?st0gttTkVS2iEyH9YG%NEViUg^Kb?Yb{r1s-QnPO_RkEZj zdHRxGkG%ide_TU*?YIS5i|&O`_G9D%C`&JykQ=qc*WSW&CEz^h0*S^gv@*}Ko3I2f0jOWP-wZy zfQQ`Y9`ZXFR?hc&|4RV)KDj7aw$m%r|>nx-~XxJAg z?>kOtZ}aoxr7T-%mv0KviQV&E_gBI$q?(a#{OxV+!^R(VrEnA}Vl+aa#W;g7g;!YK z^Wz7{Rm30H*b+9&PN8Kj`+U_X9Oa|z-ri*hg&q@#qAZ8D5uA&e{v;Fwp`% zslN*6TJRv4VkZWOAzKF?WH5t^ zean!-rMYQ*buOHD7}g|AY41$Ej_=^G4@!dEU)~#}*PtzPRephfgNk&m7WYD=tHCmu zg5XqfiSoFRz}1P;C4Zr!_;CucXi)D#DrYXZm4UD%GwCu$VK`l3-9Le~oE#yW)NiF` zE&Lso?FU?!VJeT<=HFw+k5y<1$JHVNe;elw?F7ZJrdTd*TfNH`pc?1B0>|rGKrYHvwZW_ylp*O`a%-7WLX zREPCy$<*rYl9-wr$x&IzQ!Vod$a<&g&F;yP=bNh9f zO+RV*dv4lvDu)(^rpeUd*6f$j&03idS>q9XV`5gv8S@xLyZxEd3u{a%*B7i#yl%Kj$xoxr>%-?-Mjcv=;t>?uc$b~cQHTw&ibDO=n zjV2u0R;~TEUs0D-hA~slxxy&jTV-X(8tkd*InFqt`i@FDb<3~qKFsoaw*1P7ASgab9^Wwu5)+l7NRmc3U zRSaeL7meE{4FCKDnw7~;r0MD6aMeBn1#;01vNN!km;@}`d0~#-lqfCue`}OW@t4*NIYneD(qJK?w z_`co^omio1Owohv--`!q(UAMn)5j-XKiSGG&ANCIy+}i|6R%C8v*W`4$!#ZdtKCP- z%X3CKfA&}XB)V(d-KlSz$d3)q>HqIrBaD|xZ!IYa>bL7V>h)7@z1qRC_4#*OV;{bJ zNqEJQp1Cw6mV&sLhhr zZbNGA(?)*rr2Infot5IqFanw237(_v_G9mXGiJ;%mdnQ7SGdW|)x=6p_?}XXBlR2u)$fox6j&L-~3j+ZNRSY{GXj)s?6)v zioMU4_jo-!ex4rhmUdisu3WYuHaIb_QKvOCVbZ`LJW*}<3oU=$&nlZ=Y&&^vQs6T! z)gVJWr_K6|@&jxsx?tTarDQACz>Sjz3J*p)z5XZ}+~-G~e3P&Gu-sq1pUrDJ2B>1U zzfQs5E@J=W^aXO+>6b43R^M)@6BG3a)$$KwRZ&|07?klXSsQ++YutJjkCl1p z2G_R(SFC@z+Fe(<3N!A{l?{K0uY2iQ$o|SaU>EKXW)fxkfU^*6ZB5)T$)mNizq;M1 z(|7ha*{+}oFOS2_gR!WCj(26lL-m)9%Wo78^Y5{hSR!-U_8vFC)x$@x2 z|0ES5FIhW}(*IaPd@YOfRu>ut8!FCOtJhAcY(|Q|Y|NHvm`P{EIgaa`rjD$M#-RYy zqFPU}Ptnz4GW#p#cf0jEW`n@fId&GV6{H-Tv;E!EU*ex_JGuSJNsd&88XQC@=L^=Y zv$LCngO^a+-`@H@B3^Ww(hf3LSn$N|_Y>2jE9+}cLHPnA>DG>Wm&U=JoUE`pbsaOtITP^1!cj>Y0ITC+@5{!y)YJ8Cf0g_xZHG7@^1- z^tv1MYNKg46zC$|)VBBfA2&r)%(49HbowbBaR{&|l|yOTVa-;1d)v^Vb}Y|fdw16r zrNe&lL;`TxR5z@odTC5iA4zisfs%t<4of`Eh?Z?_>93p85{c}G) za-l`%4CmmAcVApMIcvwc+N~!e>1iS887w=Svwt!`XJu<^0VsLidX~5{%O|e3<9*IV zLv8TL;c;km;C(aE&$V=cI5VjEnxZ>4ne6qS` zPR|!8hEB_f48+1V=yWa=y;)8(PP}eytj71kRwpi3evuxJXD>=zZVK#vF3G$|+@ufQ z`!?|{CwL+am*+Ttw{h6NEV8hGT@JqfWT~)q9w;zmjW*RSEz23&1lL|HmrYY1ueK+< zLt@$g+WeDuT;+Ow zSIoZO*4Nk0L5eG{Y>%Kl$JyDrW{Oi>+1r%1&dkB#1@omV_;R-)O*%H!7~_AeARwDg zgY7L1r$N=sY59#GXvAh6gK#;%;DMGx{H0EHuR>G1w;&pG@K1P5)0WhAts)aH+G>kZwM~5lCb+EpDR? zX)sL%z;JnadHOyUL0i<)q*8$2N^LkXy#Q|+j9owrw>MP%sB7?5A7SAcgwd#P`t_06 zKDc`INAM$v9#9S`F^$Z69yeMyB}ADMeIixsx)TpjE*mVxhuF?7dh^D}5B35f5mz`#mm~=5&l_`O zHU%t-G{H5-i(YWye8n{$*wA_5MSk=*ao)}DA}}QDk|3zV^`$UUT%{zWXJdS6Gu+@H z01_ztfPJgS6gj^3n9)Wr#P zkxRnvdfM2eT)rI3O5eVHtAe4J#+esw(DWQpY{jDl`pg?F1Wm7wpp`H=z-?i%Rj2u~ zp(^%qMK;TwfAODt z{pnLV@ESVF1L=q=DlR^ zhTtu03Or^M(a04f1weFT*@KxPGVl7`4fjiYXR+5kzD22MM%Sd1n@r!dyj zOYhqgR^h&8j`sEjJTW!pmaSKv>*xIFYG_er)@#-uzdztKm-kW9*}Y#2snm+ z>h9L^#}A>cL7QwW=uaUpNsldmi-E28^|kfG;H~25%Q~I$d-3bYFdyS9D@*L5;lNG7 z50jSCeKnuJd!hKX6ZD+WL^tkuX>!p3PZ7#gXA(lG?#-^QOk?yZjY+RxM-x1W)9^3Q zkEN*70$5yE7ymI>lzjaWs$TZKSEfIQn2iX@UV86crb%Wo5d!8+)8HD7zEsjM*?!m4y zirX*TAR#2>7BAeiX`*>eo1GyH{-&!Md29+g6clU!Xoc_+5l(p!imU`K z?G$RHbZl`XZ1_XVJ3I2AS{^4|PwquT7wbjBV!guJ@MVjy?F5gx`opPzueYG2p{sKT z{F?6FrO8&qGH1>EV_v`OONmA4`#^kB&&t=}2Mabt6tzl3Gl6GxZN|mL)m(5$5>1(k zpZ@eCPaG)Q?N|T&I=DW+zm!$R(_iy|Cn*AdFDCaLqyotz%Ll={odIGY5>_l8-Jywg zzTdumpVOxoZ5~sj$y()&NgC9K6IOy6ylo{7$v>|;4@_13QkyO{5xU3lydVJ=;&BUT zb0ASoK%zb7Me~waBJi7I6_Z1POAx;%8;;k+5T!*?=jUYeVk__4K)(74wc%vSZDshO zfFD9%`W*xJwmeCX$Dw>; zD8&G55j0eK9wtp^H>z|)3;LA<>kz@2CBhAlB%24r&qFrb7+Vb3JX$V$2kg4XzrGPBBQo#gXCITMP+& znzcDEQo2RNRkeY0yq$^OkO}Hno}n;dKv&$TyPNl>vcLA;sV3}@?1l`!;;eC$vL`8* z@?MV+^kp7ni1t`>j1*wZ&s4aK56-EH=2q;B7lszP+{x2&s6ks9ae$(MU|gEy`RFnV zm-POU_fg7w`$#O|c_QB4t!_*w?KBt0Dbg4+pE&a%ESGR;Atdi_r-&DkUdI!c$=7(1 zs8W`BePPnTCLUfoD-fH)h%E-PbmlF$Yir;P)2Kf^lS%30Nu{@)^r|Ey7kXreg19rIa6uc>81kI4iXvfz97YFFdBS>m zD9JRb^r6l3#%TU2M7{Fcy zVLquZx1A)V$17{pp)KSsgOOe;kIkhYm^_!NLX#p(;bBhdSBg|u9y%tA+G2wYo(RU4 zRJCUsi`rnVZ8s}3I2aFuC1(2D(L?=;21efVDZxb)3P1-X)D66WAk zZL63J<)H%%k#xl^DghKmya(9rmw4%YoaL)NKT2mQuk1Sa_bh_L_QX5E_V+JS7&wRL zd&qg0;qZ$vM2NWv&Ny5<)wPHLzwE*p_Q6&}`9s(ZWnk(uuo~N+AXPYjXJ@@{Nj9;| zLK-Sa@>qCEYN~yl+5gSxsI4xB&_tp_&{k&-V``b2{?A@z0(=Q8uNcGhX$_=m(64#l z*s7BRg)oJ^3O4vNksRdhabfUja8Fp_vAXeg`*qh4wg_(`E>Uj5+`M!rI>im1{S{h$ zy#itxg{x;=C{`WT=f}EH)HIQ+`Wa55t8i&p5crmf<2oNG%J)T)b0c<+VCyI*O2poXw8JX8Etenh96lV9YPCQ>r zW2Z199KkX9n8P<4G^z(YMY@pc9YY1<;oU6(-S<-ib6y0Zl`WJQjQyYW zlWdw^Y!yLVA)GW#-h1;*e4$G!Ihqt z#jVOi$>w6c7OWSO@fn0tMd==g7ZnwswwixgI{ng~EwgC}&@F}pHg$KyL@*ENt?a-L zJc&e=k^C0{q0YA7cq?wlRtcr**{&Y8q@wu5(xC>}u;#v--$&sj?dO&%D^tF#TTQ?u znjxz1!Bp?`^I^2Lj12f;R_te=W0S!Fn`RyRJ|HIRIg ze52T^!hy1fbjVAi_?U#3SDPI2MqBtpPezDlAxhUgZGv*_z4;Ry#Uh6W&V4(c$s>yY z>xj3Sy(7dl82}df;Uc9WB9$Ol;L1&Umc5!ysj*|LHSUSU(dBPdW%~SxBk;n;SCf%U z7YQ2t`ZhMQmU1LD(wjGbsap+%QZn$U9JT8! z(-M4zBrJlCaL-U^234zybJEmKQQ*FZ$5~EF1Rq?0-3r|+K`h&3@k>mrng>(PJfxh) z@!lfHoj@-NBA9o2fLI^pU2IyOzpN01aboJdcTPObLCA77RdFCu&VyozkMq5Xv)1Y{ zeCo=4lxhWtVR?%PLxNvS=V9&=4sTQ$UpE+4Mo@9Ut6caaG^Ysg%0Y$@EMW<8<|d*9 zNGg%4J!=+8X`wSZ1~~@vm>Xpn^E1+|Rorluix5=cFv|BH2u5<+=*|;OhE&st)S>)E z3Zkzffm7%+hID~qA~h?K6!GDvZkz#BCbcyrM6cVj1!$?6fnxas2@lB_Md7&OoN$rs z#GXL$T9fQMioNkHwGH9sW7;ip{zaIcF=hKUYs%09FIfyxi&{+y51#P2lA$OZW>VlF zQn>=sti@)nmK=4B@jT9{CTTI=KUox(MLnA`Ebt&w)$L8MgGd7}Qnw0~wWE+3M0&}& z0!MgK3iOcBPQn{cFooxd`kKhvl?2O##e1v6%E4zpuz=@k5K0UiNhmSNsvJpz|1{BDO{BL&fntFfWWy9IMsEfCQrcD4zF&Jod{P#DQT0B?X9v_kJGj zgoJhuC&WPlM50Z>1n*i8G66My_!oy;B0Iq}U3g;WB1hFCD{&#J2y+zmc1|-;0_I1d zas4D&Wk?3f5=p~UXeNavBFuP>(-IR;_taPud^=;jDub)HwS{%J%2UfAqagMWiG^Wk zhN_6%hoq}rH7wr=`YcMkVqHZ1!WvG)l!1+GI{-u^yeMDdWh>HK?g&Wa$gjk+X$8R) zHvd}WvlRZgnpvpbeQh_D(`(s*(riF8G<^|7o_dBlCp_tkGAfFx;IQ<;fg8C3$m|i!oK@P@HU*BjHN0O5Ueswr_WPCFk{cwrzKth1i(tFg7L* zZvS&*-%47p?123sHQig3F>u?B1w?6%)TxK_6i^ANjI@|)NHv;$<~eAH0<=rv22COK z9Bvc}5NGT{0SpC=6AFOZf^`_P1&Ly)sp>Fxu889U0=S@8WeHVyA6On)_jwV{fNF}h z8-3eDi6fXAVQ~1qUnr}1kcRPKdo(lEg_B|nt`G%Fq1eDH1HXc}UrT+`uSKA#ydBmZ zCjJ%$ct!Edkh2!@dz);l7m!;jftq!5zGBZYI()@ zv^@E2w4B^Jkt%OHDb1aUM$~{;$*PKaG$%H}ljmlck+~+V&HsRt*;rd+a6k|*o3)&= ziSklCwI3AC$$H??#gQVWET-JWGg^JB+BrC)Ct>>ZCKXY7$aa0mMGZPjKv7SQ32;7!+t$Im_75d=xn$?Xa-FR9BE=GBv#(@iF-J_ z?5~Ej9jFRBUb0MWcvH4s*D@X_Ehe(T2Y~~0>?sau5);3b+}_L919(Ia_kc5DFoYdd z_74(yjCP6>r#ytKa(Ehik&2W))kHEqXHMB58UkuygE!VpDd1(sqkAM?oDW#QpK6s@ zKISUKM?j&@aaf3t!)*DkhR=jju^7zd?C7o^;wTit85u82n;B3=me5~Q^@?Ooy zC(ng)i33jHfU_gG#CocgzFm!Bv}1T!RJd61_Z-4AM5(1QtUGpbskDi%49lECK8y z?WcN?z5rQ><7bqlh=6$lRUi&)qDqG$h?+9QJJOyNiW1=DyTvn zTv^A%_tG+luyY=3waBQTs3{I^XZdznBN-9PP;@AaZWafM5K7x!wdtZWfJBe8xOfsF z7EVEjNASLCPz;$g(5_e3SmF!RjZ<;iu}~z{AevrMzxoySz-c|+MiNQRXTqU30f=PD zDUQeu!`7WHJtaS*%pnNZu+*%z(k2^&W#gRUxPZ%cCMa@re%v=tC9&DJd!pj%PWcnQ zofcHup0p4CIK`A(FjFaVewgs{D$cB^;(`*KGCb328%orrkiz1uVgLuodwx$dg7V(y zTK?AJaCk_Awp>Sj_k^#*e=g`wZ0hdFGVIfBaULRINtUa=kE(<6UfwZggExgS>iqqB ze{IL@02WMkIJk=~|8MV=k{n6mAJvn>^6le-CeOVk`?Vc8`Zd|H^ZuycpKMM&r`dpB z9?pHM`J5lYFVo{$>Jj28nM|)gybtHR5dAu~6vIRYu=tj&_^}>x?rGCYl6e_2Nb#xt znyVc2I3M`uw~2Y4HZ+-3t@!<)-p7AhJpXBnrM36JfA?=yx6>e(L(jExoql{AdSk$w zWeE|VwY)37tnO$kv+-YhPAxdl-_+j6XThbj#xcF78l38-n6HgsB^dr@Se9X@@@YT^y!} zVJB%kS?{1E@sdw*&WTIemOEHdWjWQixiQAVvSb<`7klRAC#-xCy{bfWkeEbwL-~=& z<*Y72GsC%@Ay?Uybe#L5JJvZq#rbndBkw5-cM zqjlq)%N$ajS4dh?)PonEbnGu_$cwEVDank>c`^88yt8zS;`I15$Iul1tyn18Iq{sc zZbYk|^JcxQ?GzLTOEM4Syf|dLGV9*PvIdXZ^iOwgeCC$6#^HgcvwM+dfMsuqmq~59 zLwSm%;WC?g;dWdAdl2)WC_7d%UGB&TM`?6O^W2>AbGoDeyR%Yf_UQBb` zYE-WCP%|Usj*wUFjIjLDlnKtrQiyYD`6H=Cyqp^vBd%}t`ch(>-RgC3$wb?8ttA)p z!e*Cy88L4>;w?{+O4OgRrOIFc1e4LD+?e#4C*GSbdQan%c36I|svP>yynVK}PRTo< zY4JtYyq@K!IHy^wfBdr8lMRVI#XFC242|hg?4^{}<6<#Ntu-%l_+y>wM^x= z-`)7y?AR#h_+!}>Cl;ecy~ASr7Gf3b27C0^3vlik0^fBQIZoDE8S(Sfn?`eSC;>_(|e5L zp*sgOL++Rz?s)%l(dO>fX92A=KfQ#6Y zX@Vc;8f|vg&{!WDvY`CYu@J8Cv`JE1c*OqB1+`vP_1G|zmrS!@_6&?NM*6Sy_=sMT zlX(?2fvL^S+s-dgnqJo7pp^0QCo%d)hxcK=tvw^G54E?v;52II*wBzS!X4I>r=Sab zYH`_{WAiSi6*UZH^46m%At4v@a?c7m02de}j+Lsmu*|{o2>OzAe4T6Lpu`rWw__T~ z7|CX5L}62IE#AkMy*$m5GNT#DYw=;DG3yS8SWoMY%$vCJ@$-!iZcXxfU9vmJw%3ME zZ~crr8_#PFnkJ9xe_7%biqwz-Ge6Kw<^OIt>}KYluFKs^TF=2 zmqPfSABA5y?(k3e5=rMYT2)6o%vo2U!s`tqkcpE&zy91d77nI9UkUbn8!<8EBa zlX@|B43k)V99B9Y_oc865KgRJIRZH0Y1$mLe?4{IZwk<&T79_+R$LyrO+T{W&o^cRqexS#5W0kdl1Cr#l0j zbnAN-`0T$HNN~BB=i+d|DKrMNlQhg0h{WPzgbY$w5>m|BM4Et*zq)k89(YaaRi$z) zGHvDwcGz;6g)?hK?(=9S%t&Eb@nxUx%udcT6XOJ|58W+>5N0igxUho_E?M7I&}XMj zWBVgEeBOC$I%9CH5RY_M?$ZcTKc(;$*ux0fm-|T?7Gaami$7X<^rt&3YuU*h=j-)C zAG^!25KJK^j)Q*Wz=XbIzMJ4lh|hN}{_iG=F_)T5Oxu%e zMc>=L-C2@`&pH%!gk=HHc(PQgX5}4Y7+4~)onQXOK`E?IQ_`X9+_>WkyEBX3nBvu+ z(A{-3<;k{W^wIkd`9e+K8>q4}Su9e5n4XjiCH0pqDbcjO#y8!=aW#IIzxYLEYD!v< x*jlX+cuQ)Lrlg@h8ez2kL&W}nOgg(pTs!4vu~Aj^SHXlA7%bM0|Ne(v{{swbftmmS literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/android-realistic-2-t0.02.png b/example/visual/evidence/diff-images/android-realistic-2-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6290efe898e4c6efcc1b44ddb0c18c844c4d4c GIT binary patch literal 25122 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/android-realistic-3-t0.02.png b/example/visual/evidence/diff-images/android-realistic-3-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6290efe898e4c6efcc1b44ddb0c18c844c4d4c GIT binary patch literal 25122 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/ios-gross-t0.02.png b/example/visual/evidence/diff-images/ios-gross-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..79e8aa86581049ba354599f7301cbfe0c5d70ca4 GIT binary patch literal 109657 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

    @Zb#QWEQuo5fu|k*yhy& zDQbKvYSFN{$qMTx;;ecO0EMY!fmhYg6&(%gkp?DwdhJ8odPczV@f!XGtRY4C2*TXS zc^K$eyGU@L=#0iet99h=;oCp-VStn+6~_t%?E4G+*#LyJ; zsEXO1gK?@h_1wGPo%H?;_+IAck{@dDY>M$?dX9z7`*v;%U_XJ?uYRTewbwE%EB8s5 z7`kyog$vVgcpq}dSFuO{=PNtO5($%J1LpAtCP2B7`C9l=^RB4@&6nt^h8 z9w={LDotpkO87_#UgeST@qG_IdGu?X z=mBpWU*{)$(HJtOwr3C0Z|7dzc25df1HPx-5Ubs|8B^3!@#hSV|1D$p_MvQa_`!D4 zi_(>R!2J+FstJ3qWTO0f!`Z&F)9vw`f`3c#w<7=6rN}~?NCL?^`7RKwcF<%~ zgbgN!BU{zlBO9}`7Z4lyZi7L!l7Ataw9+FbO{qYbig6Er2m6uk!1NRrDO(m7D2if$ zojZ3Xf`vjh!DXK}F7O-@QXuQ5ZR+cHRg4^I;%dOn8=h`B99N ziaZe#&%_mpLUJ$aM3E8f_Ty%%ftY&G5yofB%#4Dbv`mbH!lp8?g;*%@hF{vXR%Xjg zsCH;9Z3Ggg>IA$@nMflPfonm17@K6%y4GCYuGp%@M2UrgeFDd51<@z1-4gz%4U=kW zxdeXli>FjA{vwgFnmCj!ip76qx3^PD;qk1of_R?aQBYt~cqxGQN(S58X|H_c@@&bT zMN1F(v$DcZ`Q~Cob%(jp!@DV-@8uC96?5d)W-bVoCsU$Ol7xcVZj>L97a(ySWVI%~ zjMBRbAbS4mp`MX7Wab1&J|t)Z8Js(_jNOHGGOx4}8htO*JQZjhjb6+32sV2+1r^%pRi%iaA#9#jGQ?l05LCNkP;?oR;^gYj-{hS+CiTnWRM7 z?o>Xc&exeJht}ZjY>8aHlOoj4{qH`hjeh7U+>C92N-hyC<1e$5jkyezGvkT8>z8#WY>J$O zgcb)>flaEQ)4MVcTwFCarg|DM*CL{xP5-Jdz6)h1D@zud_gyi7y&-DF|<^c4?m!o zA~H@gq$0)T8jiA{gZ)(Gdo@$zc9yA1MHE%K$8n_9;`rj=V$b}mJpsgbnr9mc?$ezQrZWr}GRd3}f>Whw*n)Jb>5^GFt7PQw^0~6Lv zdGYQ+kchaXB9YG(97TKR1%)t-%U}j~ zL>v6sC%YAk`y*Vm3JPRkA4bFfwZQW9hdoi12uS1+JgEv(W*?AnpyyM)_H+N1xc48v zQP%w9;y?Z3KVN?`H6yt;ZpF#s{x9_H+IZLh{g>M=)`nj=@sDp`cl+{h&8hm);h0qs zKX;r?b{0-d`Rwo6SNb^8%4L6Vvge{szOug>)vw=$_4jT~8$EmWto`=J@!Rb$uD1Vl z>e5B~m<|K-o$Q$^YM+{%^4Lc!tLt)H(axl?x;%a_T`&#(PjrYpr!aoRbr zkW2E4zn&SCHyZcijW0ImIFow&itf)`{Q5wtV_R}N-}45o>~r)LISc3HjgFQ3`uoDX zO?3-B8ObZ$EtOkb*z?BYtgt@y2|8lbgKm;H!C=_h;H)arCt$I6Y6~ z)m1$hQam#+B+|*S@w=+M97px@^JeBZbp3o`e^haUZEf>YPdzoY!4<2Ydfw58d#5g) zw0Wj3+kIOjUCSAG?$A6>=*qrQN5$T}CGG|J4~};6@AAHszGEzPXdt8S=#5&@!l8LX z1I*D;UAH*#q~>$9IUw@>Ok2pXqhgCS!=vVYi%O;!P`)=W&N&ZpIkr9cKxVI_tvN5! z*-@8Wx;M`oRUW@9eitu(^2zTK8;-(U6iN*f+5qnj?$F|y7)?T;XM<~jCm3re4R;^wTkei1H{;~UqJrX*16TI-@?pl@ z!pd-WCiIkFQ@5ehqc<}C{h3_Sp66{uB{_9@c_H2)Pf$`#q9$Q`_oXAgCRdgF+0_zS z?!MJ5bnE)&wQoP*xtn*28&))?MTs2iCs*xNmgTk*1!jhUX?NPGqHdnSn{pm5%X6 z9XJuL;EBx}P3T3^7085_wz4g*%D$Yr2(x;LJ0d^X7J`TaJC?ZhjikV&75TM!OOS7* zb7)>tcH)Zi@bWFL1ZNT#t#q{ASl(T>B`7jzSk{cZ^D(-h;+ey9SI+HV{1EAHaKJIw z6Wp;R|N8voKn7t}N1Kr@H*+PpD#KsAvE2AIV@5NV(!MY$fmz(o+{e5FKQX^X_({ug z4dN7zy;wEYgLWdENw`K0u2gr?v8^_s_#ZOSGOsJb-KXE|Sh?u6e)}@d-CNU|(xe|u zcFo&Ajq2KPV9b5HC33yOsP*28Ce-DM?OM~k_K;px$vc|dU*FgL%Y~M5^$N#0$a|*` zOOJdRUF#LDqxYUk=WdqP)AT9@eLs_4cuWfB%NT)P;Uj!H^7d4XulKEovb?_YnN_2| zwqEr1Ek`0aXm+Bra4P`!fR+vrRgQC zjXB5yG~&@4xfs~YB}%C|TR9RM&Q z4)ZRr<#QR{^7}J;`@-t5JkP&6!rh^Hqm^?#M3_=(!8tD}C=Xz=mHC=#Yf9sHZE^J` z*aC`Y4foZQmdx^mcGTGdyrBSFvVE3k0db(x7YgL%aEAr1ocE@!oKabQeA(W-ywO46 zk@&O1-P_t6(AD0&kZ36UA6w#n`sB84MPJRpWOjTt|0KZV@aMI=Kw}jcTvuW>1efclWZ@5flGLuH=4p)rTJ(A zY{KG1g2+Nokm6P^`U@+bQ9LWsm4j_m#+SwK3TG+H^OF}R)+7e9x&<9|RkgiPbfm*s_4tU@Y0bj(pCz- zEG)2{K#L_)6U|Obn{Re_LJQ{<&j3=&Pdf*~Fu|JF2g15``(D>--4B8zD_9d|4HzA5 zZn?f(=m5aAJQ$KUy4;y0yA)=D^d``QTCXeo7-f`zC<%cWNR_dKqs@z7pC`D?8(qp( zaxu^p1Vg4lG9&B*uJ9>`SlToGuKAVP+T4rl%kc%W_NVedLi@ZVR&)$KRU=qjYdImU z1)zTuL&gXuCfm1K`qmh|gsCmO8|_+9I0uhedOx@^TrzpSy|2i%G>CVyH;X2P70+B^ zLSv9O3Lym*&)`-;^3cJ712G*C*!z)APYbn-F&KwXHq ztcy=V1Oqz+|8)UN${pLTF9+pc#D^IL?gDg_&Lu1{x+u<3tg>{AR;%0RMQRG@WpJR# zmC#P`xjz5;a-oA@O~eIQ6G|=N4bAV0v>DCZu^>Y{q}@Y#p5hOslhh56+hjotLZ+JY?zdQdC|MCeVjm35b$ zPF9EucNYx8+(bQvA4#}BC<+~u3_VT6Mlc=jAw+c!6d4{eHwidqaa&xD=8K{uS}4$* z0G8&-%|&;Dgv+J4f)k+{)?+{!3I$E++HJ_s5+QORqXArV3!&e2>AG0o&4UNEbnd;9^vk^S-3Oo0^?p&5$SJgi{YArLmFj z@t2Os6)il{XLxIO8HyrWfS4=X3yl9k^9n2DcOe~unkPd4CAEVxaz18owaf#0UDs0E z6D-PrJ**_Q846rgo9DgZ#b)p`OGfM%&#CSC2}f-YIDpWC%jerih6ZX%eK9@WiA<+w zdEdxc&KyMVvpk*ealj(nzwCW}9PVD~go|KB)pb2TQPgqg)MjIXM8omrePKY8fedjy zEld`mWm!vQ&8$!M^3oAwC52zjz>3EA@n4f+qGy|LBkmjk^!-T+iq0{ptat&XwVOA)J_jBq3P!OVY#l1+>%5mi^ z!39k?7nuUL10sWD5^#Z10~Nw?84^(~Ke-o6Q=rB(%_S@upr|yC-BCvxwZa|BpyCHI z&}uo1@aA_8qWf$K0z>;QOjBy}T}3kk5cUYLF&oC71kOMxTcB#Q$fclaeG(J?hd@Ad z&yNuGHn5F1ufUpL+G2AbRD@B%hu$Qz7ys&m!bU-ezsr9ID`rl-bR_;ijT&_yOBGxI zT`c4yD{?Bl%G?RAx&c}@H!B=to_r+jTI`|seHcc)M%7&xtx@DW7M$c*Ltr@mmA!Q2 zw11TMZDcu@TNa`_GMTStj3E<^^1As+mZr$h9j}le-ZE4Bpjl2&R))ssNKrvzsm!<+ zz$EwS>m3BMJwL*W;A$_%NRN8h;dF_{NK>OA1(|kmmSfB=h*E5D#9PW1!KQ z)bsb6Dom202_+eZb=SPk)QOwWAMt3w(V4XP@-$H*8y&5*@|BEg%;n z_X13$TE|9y`EquZ%rH3;D-fYH=^kw0S!5;3m!Q`=yV ziX_pZ`Ym8Wgc5-aNFYIQxx0z)&m@WPq`Sz#VZ+|2e4w42qa;EG6;S-EX@)eEokJk>{fc27@f84(!cB*IW;fckzd^Q40` ziLgU;WKW)VK~V91gpvp*24^K1fII@A1Z1&UqMtp?y-1S=X7Ls$;Rn5tq7Z$KHuqld zjwW8$w3#{ax1sXhbcJN@QALoa(vg!#u11zHIFO@&4(C%H;;o7+nb9(mBB&E}AW@|u zn2jw2Wk>gw`a;X&%T(Ra-S`x0URa40El$MK;*v>3EM6yW9!>&);>I5N6fauj)Ny{! zr6_QJrV1b>;5IqDE5(}cf}w$y!GRVy9F$u^;BO@by$SXRFh*4#fy1@XI1JB?mTW+5yX$AGXOq106wjzv*d z*{CUlna{aPRc#f3hh~&!@G*rxRmpzOj~Se5!1R}UDc)dE6w{zwkey!cr5o8_g_D)c zAT1Fn=7Bp(qRbplS}$zMkOW>!py>du zx>AJg7T*4rkKePuzU!$s?s(xg=eO^=>ei_xJz0MfHuKMB)h~P2o%-)LM%0CLn5jM` znXGU{<|ocK3wePXPR;7t72~2hQ5TTKQr!z&ml{sKd11#Y-y?afX})o)1bq`@dw*Wgt1yebVgl4AGp}0cOB#Du1NO= zrzgrC?m3)S98nlpJmBaK?%L&B=nfXe<%SIN6Gx1zhw^yItGpnj#85@>JeD^M$JG5b zmn?EZ6~bLFG`HvtV5^Gng}a;T^0JhkE&Sa#jDH|AyW(^rfZmccR@>t7FZoZ(`|it} zpWl9CetYvz9CJII11(6VIFPK+v2Ax>%3M!GU(SQ0Wpg|DD?C53#Vj-^ggD|fuOox3u`1boHtMPO%*YiI5#}nJO+`onF665 z%_NY?WCYd463=DONh1~A!Nv0tVV0|@ub{5w!*2}R3s)_wI{D@t68MuWKr(rerSMnC z&_F?Lc9?1$OSzwY*G5@iEGvl2uZ_)Tk7Z+Br{X!;n~I1TfD4m~boDz>0B&goM1BN< znO-4!=S`ppFBqK1k3bS{Y|I-qVVs;#)QTT*XRgXXv!8AFERBM3m6pt8Ii65RLv(G3 zheV3%igL>ka5x;*F%cp1eH1xrO5b4>Q?s%xX2L&WDH*yn<-c+2zo%qaf{8t>z`a9? z-3lu=QOUJMp^U97DKP=L7a#;vd&wX^63*l?goqUh1xPHigM0uak(%)N*!$38!vc3xBa~T&LmBo?@8oK?7LnoEuwL3jgjdRbcg`dj&z*XSh3>ECa3wpt{O7%1}=_HrB-wp^ybLf_O(0 znG@#cC)Sk4@D+k>aNMG*sZ8J71hhp}BcUj)j5rIGBEGQYAwuAaCQDVADH}@z`2XpZhaMN=tV0${Xw=9?F{`e56E}K`g#M!f@WOkA0!g z6lq*1(DNkpVq4-!X^g9re=!t(tfi{00AK>>e5FM9XZ8eRP6f5GFE(e-%)+Mu4ax9p znf3sLwSq-`{EKauuP82waBDQ>dO>om#TXbte|HD7oSx$jky~QDGpPW;5e3jhlIQ31 zxANPBF>_bZ9qYw?Cgkuu0A&b6xG@a9P@!D8KgdMLvADQiC=O^b2whve<|Ffh7>4k* ztFL8!mK%uTI18aeu?$y${hKwnP>+^CW1UI1fG!FlnxiqZCM_&O8>oipb=JnZbJ_9q zXBGd$i}^356@mdwO}of2TtoVLDsPyLJh5|`jLZ_HMxgY3%Do$0W$%EH{4V)IK6pa_ zft*Omf1Dp?D^|D)R7_b3>%lO>tr%Z=I#EI1Fj%ZlwTKw2EYWk7tlM(8k`;=0OgXY6 zIgon7ANU8~FGZLaP5m$NXb~n^VcuwgESQ=@->{=35dNk>EqXRGo6^I4ceIw#Ih`yh zOPyK#sslH8KzxdyycnUtu_VGBj(0-Ir{401t4E2h5HtsNIy4Z;zrMeA#{$x>f+WB@ zzZSwToDCEq_suAW7aNxVLcMhB${Rf&1haHI7FK z3qPOhd6r4#O2+G`RhUGW)FRmx(E+8<4U4cHc81*H0)N2HejPj{OHdxJ@a9aSssr|X zEfc}8FNDnmYnQ`L0Sdrg!if4d3mx_&wv8G9faw_j88RIvC5B3lH`I-MZVBNI=M2yd zdCB%4#XRC3c0m|&CA9QK7P5NGQl`QTlgA*?V$r~hsYQBHj$NNV{ibbh*cs!m}eyQ14&&pAF&W*PqU@_N4Q9iiL}GrTVaF2-f+ne z^mac%zLZWign}AD8JU+FkHDEM&-OT_vf2mM(Xx_TxTLIa%sdS-*OOgFNkc2=my*(HXj&P363B^B8anhir#>D_N!F7Co>m7Hd%YjF~F1Ip@Es=#t*;=O-!Qh0HpVubk80PP{9xSO7*Rg zS&(0+^Lt*UVy?hYwrTBa;hH-$|TYUpDH1-=IMp z*$`nQMzHs0Voj2R@hZk7e!u`oYqF3Pv=}ef4$8=kE-DR7j|p4Mzd-+zJSwj+T>gJ( zaTOE+zyfi3Z7GmT_@$|dWP3#lZ{%%uQq1Fh8+gKN(5PnqN^MXPz&JCl8<$KU9{zAuCB`}86K>)?#c}mw|H~wPZ z?;HjR8zO$3Ru*Io_>OBCm4{Swx^wF4e4y$ z%(au{S$uJJEI(9a_21038kKj7jvwinDD2wU^4iw4^NkZX_BTfMS2t$e)0UgkR)5|0 z^rr2b1J|F=I8@174Y^ad4fd=%Zx5L$FK*nPKDl7<;-=KWhTM#{n$qGqpX|-4KR-8n zGVT1-pPoCozWKWCX_Hy40ZkKW=MUZ6HdW3@J@rGQQ*(-r$EQzrwvPRk_rJGM3Vp0i{YM``i#k{R1K+Zp!w&F6|*r$$>xkbHL7 zNB>NwdR{Yg@toK+vMvlQ+;hvhgWESTu@lI9Z*J;6ZP{Urji#C^(~C6msivV)@13nu z!_b=ZvzyRt_+ehHYtt;2om+Ry;i1v-LT|%+Z7i~|%a_2S&>jmyd4cPjhZ=GNC(yVz zroVA>N?S;5YlsG(dbE|h<=Xe;rVcJUd~X}VXU?`Sw;}swhlf~`W}4%DK(Z_JmU62@ z7!*sshnYxdk%McRhsG-7HmCNtHVswqj^=AWCev)J^lm-TSRArGtZDnEjJA-b%DD6s zM{)zTP;ahGG8W_8zA2?GSK}Y^X$@T)?X9`lKRlAl3XpD7<>vnC*4+M>(AZX6*!E2$ zYtO$NbIwew;N|YX*w%nfl+hTMUUa;qf>l)Tq7g&ggivRn2tRjdDBXO)w}KBe4yz2| zeF^DV`+423#rC(i9LBokPo-J?t!PwM!rvK^-T9FpHhRMc)3HxoqIJkedXn@ajis>~ z)Nw9)u%#@0a`i3TplN7LSSPw{&7F@mv`S}(u0sjw=k3=_M6hH=uD_0t8gXxF%>G)o z(evn>U6IHIlZ@k%fF{0Efv6Fg?r^*sakr$MpUpI+(+YXx%Ox`y66F+}=q~eq@!ZRp zqq+KJR_mM5&&2wxZ|3dvSa1ci2U?hKYd}%s#O%purGU*Dx12+$jSMDR`#Zl_?EjoQ zzcLGh)Lpo4J?19m#bR0#Y>WJU)BMWKOt1zYY6oE&a%~}#&tmx>`m4pLt-7&z4mgp9 zL=bV-wG+z@O~lE38gjucX>ENN=D`i8?rsa19B$1`y>|O1>=lSQG<0!OO>4`hsqhI~ zh4=2kvGNc6l{NTFzxWov=c5O!UasaYAm?Q8#8Rw1S_p|;gBT=OYWoD2hvWUJ%=zV3ZWoFvUW@!% z0~oOZ6{TA?KUj)$MqUf*Ridv=LZ0;VsgD%Tsg%C;PU+@rEBzN=i-yfQKIs%b*^JR& zW!AK^4+1U$7;~rb9$pKK8q+7|okPhfZMJj+Qn-Q4P5~fbvKmYgl;T-2vOD4xVPpGd zf&h-lIs%F?*(`h)rGqOBPlQ;9dsJ+$!NTXG-Eg7~(WCR`bL-j&W}sTBu;d7)SKK&3 zpen^~K^=VOI8v={1-f+GI5bpg(4;aFSqdp8h#JN|Z$8(EsN-=hj9inq)h_0*uthmnHGTuGoFL52Ly(&X{ZZI<8-5Xf z7!w(+C{Ar_x=u)%-ib#X$+fSK`W z12_S7Kt~2q>;x*{8ePwSmFZ1b8AB3(h$g~z{=-#@XA0DYuK6s(W^x;pZRSK+L+Due z{E4wNP%Sk>i{dTRLof>9RfZ;c{$-3omSn=<7a!n$v$=+wBQp(;r+rs1iF$&{dPRFe0s(weKgybD_+iYsOhGXkzGnNT8dQ&Y%A3MrWz+BRy-wM^ z0u!bmiGLC2V0_5qWd*G`-ad34xCX=HDoCFktyJzUSr(d`4J`B0Fik~Q@Qb{n!I0r)9zW*} z0L0{O&}}7SLVuA*)Ga(ecbwpuvPtyWGY)f+PXgUa28$1fh_)-wIdq)~m4g*fAh3fw zgLC>$!zKS+PNc=QZUu~FMo{fWa?12(@`1^6>?M8j>VD+`bgo+xbm0J{g3kN}%gGdGX zBo19~LO=9L^26^?u~UHr>ltSzI77 z?htv+OhdQr8)cWE=Xz+1c*5iw;vEbIyMYtWHqkgzbH;lVN49U8y2gm&{o9b!kTwGe z0Vjm>a>IHdh#?h#Jo*ylHuAIWR^Cqbs2GPoE7p=nk)fbBmd z?Rl`wqDL|bTeW^C)?3hxcdlH$Ggx4b3S=Ttu4|0n#q^UHVNb|h(2+5ZQ| C*bg)S literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/ios-realistic-1-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-1-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..02219e89f4a5993c6b06e689981910067e9544d5 GIT binary patch literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/ios-realistic-2-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-2-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..02219e89f4a5993c6b06e689981910067e9544d5 GIT binary patch literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/ios-realistic-3-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-3-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..02219e89f4a5993c6b06e689981910067e9544d5 GIT binary patch literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/ios-realistic-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-t0.02.png new file mode 100644 index 0000000000000000000000000000000000000000..02219e89f4a5993c6b06e689981910067e9544d5 GIT binary patch literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/ios/26-diff.json b/example/visual/evidence/ios/26-diff.json new file mode 100644 index 0000000000..0553f9663b --- /dev/null +++ b/example/visual/evidence/ios/26-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 86028, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/30-diff.json b/example/visual/evidence/ios/30-diff.json new file mode 100644 index 0000000000..0553f9663b --- /dev/null +++ b/example/visual/evidence/ios/30-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 86028, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/37-diff.json b/example/visual/evidence/ios/37-diff.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/37-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/40-diff.json b/example/visual/evidence/ios/40-diff.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/40-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/43-diff.json b/example/visual/evidence/ios/43-diff.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/43-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/53-diff.json b/example/visual/evidence/ios/53-diff.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/53-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/59-diff.json b/example/visual/evidence/ios/59-diff.json new file mode 100644 index 0000000000..af93e20798 --- /dev/null +++ b/example/visual/evidence/ios/59-diff.json @@ -0,0 +1,38 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 502, + "y": 573, + "width": 316, + "height": 17 + }, + "normalizedRect": { + "x": 41.63, + "y": 89.25, + "width": 26.2, + "height": 2.65 + }, + "differentPixels": 4277, + "shareOfDiffPercentage": 100, + "densityPercentage": 79.62, + "shape": "horizontal-band", + "size": "small", + "location": "bottom-center", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#dfd9e0", + "baselineLuminance": 248, + "currentLuminance": 219, + "dominantChange": "darker" + } + ], + "totalPixels": 774252, + "differentPixels": 4277, + "mismatchPercentage": 0.55, + "match": false + } +} diff --git a/example/visual/evidence/ios/60-diff.json b/example/visual/evidence/ios/60-diff.json new file mode 100644 index 0000000000..592e479f6c --- /dev/null +++ b/example/visual/evidence/ios/60-diff.json @@ -0,0 +1,90 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t002.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 443, + "y": 223, + "width": 763, + "height": 404 + }, + "normalizedRect": { + "x": 36.73, + "y": 34.74, + "width": 63.27, + "height": 62.93 + }, + "differentPixels": 70986, + "shareOfDiffPercentage": 61.04, + "densityPercentage": 23.03, + "shape": "large-area", + "size": "large", + "location": "middle-right", + "averageBaselineColorHex": "#fcf5fd", + "averageCurrentColorHex": "#eee7ef", + "baselineLuminance": 247, + "currentLuminance": 233, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 0, + "y": 0, + "width": 1206, + "height": 33 + }, + "normalizedRect": { + "x": 0, + "y": 0, + "width": 100, + "height": 5.14 + }, + "differentPixels": 36741, + "shareOfDiffPercentage": 31.59, + "densityPercentage": 92.32, + "shape": "horizontal-band", + "size": "large", + "location": "top-center", + "averageBaselineColorHex": "#fef7ff", + "averageCurrentColorHex": "#f2ebf3", + "baselineLuminance": 249, + "currentLuminance": 237, + "dominantChange": "darker" + }, + { + "index": 3, + "rect": { + "x": 463, + "y": 190, + "width": 743, + "height": 33 + }, + "normalizedRect": { + "x": 38.39, + "y": 29.6, + "width": 61.61, + "height": 5.14 + }, + "differentPixels": 8565, + "shareOfDiffPercentage": 7.37, + "densityPercentage": 34.93, + "shape": "horizontal-band", + "size": "medium", + "location": "top-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f5eef6", + "baselineLuminance": 248, + "currentLuminance": 240, + "dominantChange": "mixed" + } + ], + "totalPixels": 774252, + "differentPixels": 116292, + "mismatchPercentage": 15.02, + "match": false + } +} diff --git a/example/visual/evidence/ios/63-diff.json b/example/visual/evidence/ios/63-diff.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/63-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/66-diff-t0.02.json b/example/visual/evidence/ios/66-diff-t0.02.json new file mode 100644 index 0000000000..0f9ff78f90 --- /dev/null +++ b/example/visual/evidence/ios/66-diff-t0.02.json @@ -0,0 +1,90 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 471, + "y": 206, + "width": 378, + "height": 378 + }, + "normalizedRect": { + "x": 39.05, + "y": 32.09, + "width": 31.34, + "height": 58.88 + }, + "differentPixels": 10175, + "shareOfDiffPercentage": 99.96, + "densityPercentage": 7.12, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#faf3fb", + "averageCurrentColorHex": "#efe8f0", + "baselineLuminance": 245, + "currentLuminance": 234, + "dominantChange": "mixed" + }, + { + "index": 2, + "rect": { + "x": 483, + "y": 215, + "width": 2, + "height": 2 + }, + "normalizedRect": { + "x": 40.05, + "y": 33.49, + "width": 0.17, + "height": 0.31 + }, + "differentPixels": 3, + "shareOfDiffPercentage": 0.03, + "densityPercentage": 75, + "shape": "compact", + "size": "small", + "location": "center", + "averageBaselineColorHex": "#fbf4fc", + "averageCurrentColorHex": "#f6eff6", + "baselineLuminance": 246, + "currentLuminance": 241, + "dominantChange": "mixed" + }, + { + "index": 3, + "rect": { + "x": 835, + "y": 213, + "width": 1, + "height": 1 + }, + "normalizedRect": { + "x": 69.24, + "y": 33.18, + "width": 0.08, + "height": 0.16 + }, + "differentPixels": 1, + "shareOfDiffPercentage": 0.01, + "densityPercentage": 100, + "shape": "compact", + "size": "small", + "location": "middle-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f7f0f8", + "baselineLuminance": 248, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "totalPixels": 774252, + "differentPixels": 10179, + "mismatchPercentage": 1.31, + "match": false + } +} diff --git a/example/visual/evidence/ios/66-diff-t0.1.json b/example/visual/evidence/ios/66-diff-t0.1.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/66-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/69-diff.json b/example/visual/evidence/ios/69-diff.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/69-diff.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/6x-diff-relaunch-1-t002.json b/example/visual/evidence/ios/6x-diff-relaunch-1-t002.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/6x-diff-relaunch-1-t002.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/6x-diff-warm-1-t002.json b/example/visual/evidence/ios/6x-diff-warm-1-t002.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/6x-diff-warm-1-t002.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/6x-diff-warm-2-t002.json b/example/visual/evidence/ios/6x-diff-warm-2-t002.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/6x-diff-warm-2-t002.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/ios/6x-diff-warm-3-t002.json b/example/visual/evidence/ios/6x-diff-warm-3-t002.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/ios/6x-diff-warm-3-t002.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md new file mode 100644 index 0000000000..f407089a00 --- /dev/null +++ b/example/visual/evidence/issues.md @@ -0,0 +1,301 @@ +# agent-device dogfooding issues + +Tool: `agent-device` 0.21.0 (run as `npx agent-device@0.21.0`), Node v24.18. +Device: iPhone 17 Pro, iOS 26.5, UDID `2464A356-C17C-4B0D-99DB-CDFBDB98826C`. +Session state dir (for runner/request logs): `/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/`. + +--- + +## 1. `find` taps the match instead of just locating it + +`find` is documented/named as a query, but a successful match performs a tap, so +navigation happens as a side effect. There is no way to locate an element without +acting on it (you have to fall back to `snapshot`). + +Command: + +``` +npx agent-device@0.21.0 find 'label="Surface"' --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C --json +``` + +Output (note `"Tapped …"`): + +```json +{ "success": true, "data": { "ref": "@e13", "locator": "any", "query": "label=\"Surface\"", + "x": 201, "y": 501, "message": "Tapped @e13 (201, 501)" } } +``` + +Artifact: `19-find-surface.json` (also `16-find.json`, `17-find.json`). + +Related: when the label is not on screen, `find` fails with a generic +`find did not match any element` and no indication that the element may simply be +below the fold — artifact `17-find.json`. + +--- + +## 2. `scroll bottom` hits a safety limit and leaves the Expo dev menu open + +`scroll bottom` on the example-list screen never reports reaching the edge, aborts +on a safety limit, and the repeated scrolling gesture is interpreted by the Expo +dev client as the "open dev menu" gesture. The app is then left with the dev-menu +sheet on top, which silently poisons any screenshot taken afterwards. + +Command: + +``` +npx agent-device@0.21.0 scroll bottom --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C --json +``` + +Output: + +```json +{ "success": false, "error": { "code": "COMMAND_FAILED", + "message": "scroll bottom reached the safety limit before the snapshot showed the edge", + "hint": "The scoped scroll container still reports hidden content. Use a smaller manual scroll + snapshot loop to inspect the current state." } } +``` + +Artifact: `16-scroll.json`. Recovery: `press 'label="Close"'` (artifact `18-press-close.json`). +Workaround used for the PoC: `scroll down 6 --settle` twice instead of `scroll bottom`. + +--- + +## 3. `open --relaunch` leaves the Expo dev menu open on the restarted app + +New in Task B. After `open … --relaunch` the app process is genuinely restarted +(PID 27223 -> 37870) and React Navigation restores the previous screen, but the +Expo dev-client menu sheet is on screen. A capture taken right after the relaunch +would include it. There is no signal in the `open --json` payload that the app is +not in a clean state; only a `snapshot` reveals it. + +Command: + +``` +npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --platform ios \ + --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C --relaunch --json +``` + +`open` reports success (`startup.durationMs: 1032`), artifact `45-open-relaunch.json`. +The following snapshot shows the dev menu nodes (`Runtime version: exposdk:56.0.0`, +`Close`, `Reload`, `Go home`) — artifact `47-snapshot.json`. +Recovery: `press 'label="Close"'` — artifact `48-press-close.json`. + +--- + +## 4. Default `diff screenshot --threshold 0.1` misses real soft-shadow regressions + +New in Task B, and the most consequential finding for using this tool as a visual +regression guard for Material elevation. + +A realistic regression — Surface elevation level 1 rendering the level 2 spot and +ambient shadow, one step off — is reported as a **perfect match** at the default +threshold: + +``` +npx agent-device@0.21.0 diff screenshot \ + --baseline example/visual/__baselines__/ios/surface-elevated.png \ + example/visual/artifacts/realistic-elevated@3x.png \ + --out example/visual/artifacts/diff-realistic-t0.1.png --threshold 0.1 --json +``` + +```json +{ "success": true, "data": { "totalPixels": 774252, "differentPixels": 0, + "mismatchPercentage": 0, "match": true } } +``` + +The same pair at `--threshold 0.02` reports 10179 different pixels (1.31%) in a +single 378x378 region exactly around the affected surface — artifacts +`66-diff-t0.1.json`, `66-diff-t0.02.json`, `diff-realistic-t0.02.png`. + +The gross break (every elevated surface forced to the level 5 shadow) is also +badly under-reported at the default threshold: 4277 px / 0.55% in one 316x17 band +(`59-diff.json`, `diff-gross.png`) versus 116292 px / 15.02% in 3 regions at 0.02 +(`60-diff.json`, `diff-gross-t002.png`). At the default threshold, a change that is +plainly visible to the eye across the whole screen registers as a thin sliver. + +Suggestion: either lower the default, or document that the default threshold is +unsuitable for low-contrast/anti-aliased content such as shadows and gradients, +and surface the threshold actually used in the JSON output (it is not echoed today). + +--- + +## 5. Minor: no way to time a capture from the JSON output + +`screenshot --json` returns path and dimensions but no timing, so wall-clock has to +be measured around the process. Measured externally for the record: single +`screenshot --crop-on … --pixel-density 3` = 673-737 ms; `open --relaunch` = 1539 ms +round-trip (`startup.durationMs` 1032). Artifacts `44-screenshot.json`, +`45-open-relaunch.json`. + +--- + +# Android (Fri 2026-09-10, agent-device 0.21.0, Pixel_10_Pro API 37) + +## 6. A cwd whose session is bound to one platform cannot target another device + +`boot --platform android --device Pixel_10_Pro` from a cwd whose default session was +bound to an iOS simulator fails with `INVALID_ARGS` ("already bound to apple device +… but this request selected --platform=android"). Artifact `74-boot.json`. The hint is +good (pass a different `--session`), and `--session android` worked (`75-boot.json`), +but a session keyed only by cwd means one checkout cannot drive iOS and Android +without inventing session names by hand. Worth documenting in the multi-platform +guide, or keying sessions by cwd+platform. + +## 7. The same `find` selector is not portable across platforms + +`find 'label="Surface"'` resolves to exactly one node on iOS, but on Android it fails +with `AMBIGUOUS_MATCH` — the accessibility tree exposes both the row `ViewGroup` and +its child `TextView` with the same label (`83-find-surface.json`, +candidates `@e21 [group] "Surface"`, `@e22 [text] "Surface"`). Any cross-platform +script has to carry two selectors for one row. A role-defaulting rule (prefer the +tappable ancestor) or a documented `role=` qualifier for the common case would fix it. + +## 8. Refs from an earlier snapshot are rejected with a confusing message + +`press '@e21'`, with the ref taken from the immediately preceding `snapshot --json`, +failed: "Ref @e21 needs a complete snapshot — the current frame only authorizes its +emitted refs" (`84-press-surface.json`). Re-snapshotting and using the new ref for the +same element (`@e55`) worked (`86-press-surface.json`). The message does not say what +invalidated the ref or that a fresh snapshot renumbers every element. + +## 9. Android relaunch lands in the Expo dev launcher, not the app + +Android version of issue 3. `open com.callstack.reactnativepaperexample --platform +android` on an app whose process is alive shows the Expo **dev menu** overlay — two +presses ("Continue", then "Close") were needed to reach the app (`77-`/`79-`/ +`81-snapshot.json`). After `open --relaunch` (pid 9944 → 10860, `95-open-relaunch.json`) +the app starts on the Expo dev launcher screen and must be reconnected by pressing the +"RECENTLY OPENED" entry (`97-press-recent.json`), then the JS bundle takes several +seconds to load — `wait stable` returns immediately on the "nearly-empty tree" and only +`wait text` (or a retry) reveals the app is still on "Connecting to the development +server…" (`98-wait.json`). A dev-client aware `open` (or a documented recipe) would +remove three commands from every relaunch. + +## 10. `logs` reports success on an empty log unless `logs start` ran first + +`logs --json` returned `success: true` with `sizeBytes: 0`, `active: false`, +`state: "inactive"` (`104-logs.json`) — no indication that nothing was being captured. +Confirming the Fast Refresh probe had to be done with `adb logcat -d | grep` +(19 hits). `logs start` (`105-logs-start.json`) arms capture, but a success response +for a log that is not running is misleading. + +## 11. Recorded, not a bug: `--pixel-density` is iOS-only + +`screenshot --crop-on … --pixel-density 3` on Android → `UNSUPPORTED_OPERATION`, +"currently supported only on iOS-family simulators" (`91-screenshot-pd3.json`). +Android already returns native device pixels (1280x642 for the crop at 480 dpi), so +nothing is lost — but the iOS default of 1x logical points remains an easy trap. + +## Threshold data point for issue 4 (Android) + +Android repeats the iOS finding for the realistic break: 0 changed pixels and +`match: true` at the default 0.1, 9,336 px at 0.02 (`114-diff-realistic-*.json`). +Unlike iOS, the gross break is caught at the default (65,051 px / 7.92 %). + +## 12. The typed Node client is exported but unreachable without a dependency + +`agent-device@0.21.0`'s `package.json` does export the client +(`exports["."] → dist/src/index.js`, which exports `createAgentDeviceClient`), so +the plan's "one Node file on `createAgentDeviceClient()`" is supported in +principle. In practice the package only exists in the `npx` cache +(`~/.npm/_npx//node_modules/agent-device`); `import('agent-device')` from +`example/` fails with `ERR_MODULE_NOT_FOUND`. Reaching the typed API therefore +means adding a devDependency, which the PoC forbade, so `example/visual/run.mjs` +spawns the CLI with `--json` instead. Worth a documented "run the client without +installing" story (or a `npx agent-device init`-style scaffold), since the CLI +path costs an `npx` resolution per command and loses all the result types. + +## 13. `snapshot` returns an empty `nodes` array when the tree is unchanged + +A plain `snapshot` only reports nodes that changed since the previous snapshot in +the same session. When nothing changed it returns `data.nodes: []` with +`success: true`, which is indistinguishable from "the screen is empty" or "the +node is gone" for any caller that greps the result for an identifier. This cost +real time in the review round: the a11y JSONs +(`evidence/a11y/03-testid-only-ios-snapshot.json`, +`03-testid-only-and-snapshot.json`) look like the `testID` never reached the +tree, when in fact the ids were there the whole time — `--force-full` returns +them. Anything that asks "is this node on screen?" must pass `--force-full`, and +`run.mjs` does so in `onSurfaceScreen()` (via `--raw`) for exactly this reason. +An empty diff-mode result would be much less of a trap if the payload said so — +e.g. a `mode: "diff"` / `unchanged: true` field alongside the empty array. + +## 14. `open --relaunch` restores the app's previous route + +`example/visual/run.mjs` assumed a relaunch puts the example list back at the +top, so it could scroll down a fixed number of rows to reach "Surface". It does +not. The example app persists its navigation state in AsyncStorage +(`PERSISTENCE_KEY = 'NAVIGATION_STATE'` in `example/src/index.tsx`), so after +`open --relaunch` (iOS) or `am force-stop` + `open` (Android) the app comes back +on whatever screen it was on. Reproduced on both platforms in this pass: + +- iOS, from the Button example: `evidence/runs/ios/pass-2-from-other-screen.log` + and `pass-2b-from-other-screen-no-devmenu.log` — the six `snapshot-list` + captures all show the *Button* screen (88 nodes, `Back` / `Button` / + `Text button (text)`), the scrolls are no-ops on that screen, and the run dies + with `could not find the "Surface" row after 6 scrolls`. +- Android, from the Switch example: + `evidence/runs/android/pass-2-from-other-screen.log`. + +This is a `run.mjs` bug, not an agent-device bug: navigation has to be driven +back to the list explicitly (press `Back` until no `Back` control is left, then +scroll for the row), not implied by a relaunch. Related trap: because +`navigateToSurface()` matches on `label === 'Surface'` and picks the largest +match, on the restored *Surface* screen it presses the nav header title instead +of a list row — visible in `evidence/runs/ios/guard.log`, which reports +`pressing "Surface" row (@e3)` where `@e3` is the header +`RCTParagraphComponentView "Surface"`. + +## 15. The dev-menu check runs before the app finishes loading + +`dismissDevMenu()` snapshots once, immediately after the relaunch. On iOS that +snapshot came back with three nodes — `UIApplication`, `SplashScreenLogo`, +`Downloading 100%…` — so it found none of the `Close` / `Continue` labels and +returned "clean" (`evidence/runs/ios/pass-2-from-other-screen/cmds/004-snapshot-devmenu.json`). +The Expo dev menu then appeared *after* the bundle finished downloading and was +still on screen for the whole navigation loop (`007-snapshot-list.json` has +`SwiftUI.AccessibilityNode "Close" id="xmark"` plus +`Runtime version: exposdk:56.0.0`), swallowing every scroll. The check has to +wait for the app to be ready first, and be repeated inside the navigation loop +rather than run once. + +On Android the same step fails differently and confirms issue 9: after +`am force-stop` + `open`, the app is the Expo **dev launcher** +(`DEVELOPMENT SERVERS` / `Fetch development servers` / `RECENTLY OPENED`), whose +labels are not in `DEV_MENU_LABELS`. Recovery is to press the recently-opened +entry (`http://192.168.1.151:8081`), which reloads the bundle in ~20 s. + +## 16. Fast Refresh did not reach the Android app; a manual Reload was required + +On iOS every edit to `src/components/Surface.tsx` was picked up within a few +seconds (first realistic-break capture already differed: 10,179 px). On Android +the same edits produced **zero** changed pixels — including the gross break, +every elevation level forced to 5 — even though Metro was serving the new code +(`curl .../.expo/.virtual-metro-entry.bundle?platform=android` contained the +probe added alongside the break) and `adb reverse --list` showed +`tcp:8081 tcp:8081`. `adb logcat` carried no React Native output at all, so it +is useless as a "did the edit land" probe here. Pressing **Reload** in the dev +menu (`adb shell input keyevent 82`, then press the `Reload` node) made the +break appear immediately at the expected magnitude (gross: 65,051 px at 0.1). +Consequence for the loop: on Android, an edit must be followed by an explicit +reload — a device-runner that relies on Fast Refresh will silently compare stale +pixels and report PASS. + +## 17. Minor: an agent-device command occasionally exits non-zero with no output + +Twice in this pass (`press '@e2'`, `press 'label="Close"'`, both on iOS) the CLI +exited 1 with completely empty stdout *and* stderr. Re-running the identical +command immediately afterwards succeeded. Nothing to act on beyond noting that a +caller cannot distinguish this from a crash, and that `run.mjs`'s "parse the +first `{`..`}` out of stdout" fallback turns it into a `null` response rather +than a clear error. + +## 18. Minor: `diff screenshot --out` writes nothing when the images match + +`--out` is silently ignored on a `match: true` diff, and the response omits +`diffPath` as well. That is defensible (there is nothing to draw), but it means +"the diff image exists" cannot be used as evidence that a diff ran, and a +per-threshold sweep produces a gappy set of files: this pass has +`evidence/diff-images/-realistic--t0.02.png` for all six failing +diffs but no `-t0.1.png` counterparts, because at 0.1 the realistic break +matches. The `-diff-t0.1.json` files under `evidence/sensitivity//` +are the record for those. diff --git a/example/visual/evidence/runs/android/fix-fail/summary.json b/example/visual/evidence/runs/android/fix-fail/summary.json new file mode 100644 index 0000000000..20fa1228a2 --- /dev/null +++ b/example/visual/evidence/runs/android/fix-fail/summary.json @@ -0,0 +1,106 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-10T13:49:25.784Z", + "wallClockMs": 22960, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 9336, + "mismatchPercentage": 1.14, + "regions": [ + { + "index": 1, + "rect": { + "x": 473, + "y": 207, + "width": 374, + "height": 375 + }, + "normalizedRect": { + "x": 36.95, + "y": 32.24, + "width": 29.22, + "height": 58.41 + }, + "differentPixels": 9336, + "shareOfDiffPercentage": 100, + "densityPercentage": 6.66, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#eceaf0", + "baselineLuminance": 245, + "currentLuminance": 235, + "dominantChange": "mixed" + } + ], + "threshold": 0.02, + "pass": false + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "fail", + "exitCode": 1, + "error": null, + "pass": false +} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png b/example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6290efe898e4c6efcc1b44ddb0c18c844c4d4c GIT binary patch literal 25122 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/android/fix-pass-after-revert/summary.json b/example/visual/evidence/runs/android/fix-pass-after-revert/summary.json new file mode 100644 index 0000000000..d2abf96d49 --- /dev/null +++ b/example/visual/evidence/runs/android/fix-pass-after-revert/summary.json @@ -0,0 +1,79 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-10T13:49:54.800Z", + "wallClockMs": 22644, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json b/example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json new file mode 100644 index 0000000000..148b8221d1 --- /dev/null +++ b/example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json @@ -0,0 +1,79 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-10T13:56:22.891Z", + "wallClockMs": 33634, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/fix-pass-from-surface/summary.json b/example/visual/evidence/runs/android/fix-pass-from-surface/summary.json new file mode 100644 index 0000000000..6768bd5f7d --- /dev/null +++ b/example/visual/evidence/runs/android/fix-pass-from-surface/summary.json @@ -0,0 +1,79 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-10T13:47:33.184Z", + "wallClockMs": 24928, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-fail/summary.json b/example/visual/evidence/runs/ios/fix-fail/summary.json new file mode 100644 index 0000000000..72239cf470 --- /dev/null +++ b/example/visual/evidence/runs/ios/fix-fail/summary.json @@ -0,0 +1,185 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "commit": "cbcd52f7e", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-10T13:52:19.623Z", + "wallClockMs": 12776, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 10179, + "mismatchPercentage": 1.31, + "regions": [ + { + "index": 1, + "rect": { + "x": 471, + "y": 206, + "width": 378, + "height": 378 + }, + "normalizedRect": { + "x": 39.05, + "y": 32.09, + "width": 31.34, + "height": 58.88 + }, + "differentPixels": 10175, + "shareOfDiffPercentage": 99.96, + "densityPercentage": 7.12, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#faf3fb", + "averageCurrentColorHex": "#efe8f0", + "baselineLuminance": 245, + "currentLuminance": 234, + "dominantChange": "mixed" + }, + { + "index": 2, + "rect": { + "x": 483, + "y": 215, + "width": 2, + "height": 2 + }, + "normalizedRect": { + "x": 40.05, + "y": 33.49, + "width": 0.17, + "height": 0.31 + }, + "differentPixels": 3, + "shareOfDiffPercentage": 0.03, + "densityPercentage": 75, + "shape": "compact", + "size": "small", + "location": "center", + "averageBaselineColorHex": "#fbf4fc", + "averageCurrentColorHex": "#f6eff6", + "baselineLuminance": 246, + "currentLuminance": 241, + "dominantChange": "mixed" + }, + { + "index": 3, + "rect": { + "x": 835, + "y": 213, + "width": 1, + "height": 1 + }, + "normalizedRect": { + "x": 69.24, + "y": 33.18, + "width": 0.08, + "height": 0.16 + }, + "differentPixels": 1, + "shareOfDiffPercentage": 0.01, + "densityPercentage": 100, + "shape": "compact", + "size": "small", + "location": "middle-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f7f0f8", + "baselineLuminance": 248, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "threshold": 0.02, + "pass": false + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "fail", + "exitCode": 1, + "error": null, + "pass": false +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png b/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..02219e89f4a5993c6b06e689981910067e9544d5 GIT binary patch literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json b/example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json new file mode 100644 index 0000000000..d5288cd225 --- /dev/null +++ b/example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json @@ -0,0 +1,106 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "commit": "cbcd52f7e", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-10T13:52:37.539Z", + "wallClockMs": 12478, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json b/example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json new file mode 100644 index 0000000000..d12c1e8718 --- /dev/null +++ b/example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json @@ -0,0 +1,106 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "commit": "cbcd52f7e", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-10T13:54:59.239Z", + "wallClockMs": 35643, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json b/example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json new file mode 100644 index 0000000000..035b3171e9 --- /dev/null +++ b/example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json @@ -0,0 +1,106 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "commit": "cbcd52f7e", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-10T13:50:31.703Z", + "wallClockMs": 12712, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json b/example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json new file mode 100644 index 0000000000..e554ad7846 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json @@ -0,0 +1,4341 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e1" + }, + { + "index": 1, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_launch_animation_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e2" + }, + { + "index": 2, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e3" + }, + { + "index": 3, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 2, + "ref": "e4" + }, + { + "index": 4, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 3, + "ref": "e5" + }, + { + "index": 5, + "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 4, + "ref": "e6" + }, + { + "index": 6, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 5, + "ref": "e7" + }, + { + "index": 7, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_contents", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1220, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 6, + "ref": "e8" + }, + { + "index": 8, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 525, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e9" + }, + { + "index": 9, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_content", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 196, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 8, + "ref": "e10" + }, + { + "index": 10, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_start_side_except_heads_up", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 0, + "width": 196, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 9, + "ref": "e11" + }, + { + "index": 11, + "type": "android.widget.TextView", + "label": "3:24", + "value": "3:24", + "identifier": "com.android.systemui:id/clock", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 45, + "width": 130, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 10, + "ref": "e12" + }, + { + "index": 12, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/start_side_notif_and_chip_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 10, + "ref": "e13" + }, + { + "index": 13, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/notification_icon_area", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 12, + "ref": "e14" + }, + { + "index": 14, + "type": "android.view.ViewGroup", + "identifier": "com.android.systemui:id/notificationIcons", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 13, + "ref": "e15" + }, + { + "index": 15, + "type": "android.widget.ImageView", + "label": "Security & privacy notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 14, + "ref": "e16" + }, + { + "index": 16, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 0, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 10, + "parentIndex": 10, + "ref": "e17" + }, + { + "index": 17, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 178, + "y": 0, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 16, + "ref": "e18" + }, + { + "index": 18, + "type": "android.view.View", + "identifier": "com.android.systemui:id/cutout_space_view", + "bundleId": "com.android.systemui", + "rect": { + "x": 573, + "y": 0, + "width": 109, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e19" + }, + { + "index": 19, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/status_bar_end_side_container", + "bundleId": "com.android.systemui", + "rect": { + "x": 682, + "y": 0, + "width": 526, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 7, + "ref": "e20" + }, + { + "index": 20, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/status_bar_end_side_content", + "bundleId": "com.android.systemui", + "rect": { + "x": 963, + "y": 0, + "width": 245, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 19, + "ref": "e21" + }, + { + "index": 21, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/system_icons", + "bundleId": "com.android.systemui", + "rect": { + "x": 963, + "y": 45, + "width": 245, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 20, + "ref": "e22" + }, + { + "index": 22, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/statusIcons", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 144, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e23" + }, + { + "index": 23, + "type": "android.widget.FrameLayout", + "label": "T-Mobile, one bar.", + "identifier": "com.android.systemui:id/mobile_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 69, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e24" + }, + { + "index": 24, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/mobile_group", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 45, + "width": 51, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 23, + "ref": "e25" + }, + { + "index": 25, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 24, + "ref": "e26" + }, + { + "index": 26, + "type": "android.widget.ImageView", + "identifier": "com.android.systemui:id/mobile_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 25, + "ref": "e27" + }, + { + "index": 27, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 78, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 22, + "ref": "e28" + }, + { + "index": 28, + "type": "android.widget.FrameLayout", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 78, + "width": 0, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 22, + "ref": "e29" + }, + { + "index": 29, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/wifi_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 1041, + "y": 45, + "width": 66, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e30" + }, + { + "index": 30, + "type": "android.widget.LinearLayout", + "identifier": "com.android.systemui:id/wifi_group", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 45, + "width": 48, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 29, + "ref": "e31" + }, + { + "index": 31, + "type": "android.widget.FrameLayout", + "identifier": "com.android.systemui:id/wifi_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 30, + "ref": "e32" + }, + { + "index": 32, + "type": "android.widget.ImageView", + "label": "Wifi signal full.", + "identifier": "com.android.systemui:id/wifi_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 31, + "ref": "e33" + }, + { + "index": 33, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e34" + }, + { + "index": 34, + "type": "android.view.View", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 33, + "ref": "e35" + }, + { + "index": 35, + "type": "android.view.View", + "identifier": "com.android.systemui:id/battery", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 34, + "ref": "e36" + }, + { + "index": 36, + "type": "android.view.View", + "label": "Battery 100 percent.", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 72, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 35, + "ref": "e37" + }, + { + "index": 37, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e38" + }, + { + "index": 38, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 37, + "ref": "e39" + }, + { + "index": 39, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 38, + "ref": "e40" + }, + { + "index": 40, + "type": "android.widget.LinearLayout", + "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 39, + "ref": "e41" + }, + { + "index": 41, + "type": "android.widget.FrameLayout", + "identifier": "android:id/content", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 40, + "ref": "e42" + }, + { + "index": 42, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 41, + "ref": "e43" + }, + { + "index": 43, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 42, + "ref": "e44" + }, + { + "index": 44, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 43, + "ref": "e45" + }, + { + "index": 45, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 44, + "ref": "e46" + }, + { + "index": 46, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 156, + "width": 252, + "height": 252 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 45, + "ref": "e47" + }, + { + "index": 47, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1076, + "y": 204, + "width": 156, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 46, + "ref": "e48" + }, + { + "index": 48, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1082, + "y": 210, + "width": 144, + "height": 144 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 47, + "ref": "e49" + }, + { + "index": 49, + "type": "android.widget.ImageView", + "label": "Tools", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1115, + "y": 243, + "width": 78, + "height": 78 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 48, + "ref": "e50" + }, + { + "index": 50, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 42, + "ref": "e51" + }, + { + "index": 51, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 50, + "ref": "e52" + }, + { + "index": 52, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 51, + "ref": "e53" + }, + { + "index": 53, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 50, + "ref": "e54" + }, + { + "index": 54, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 53, + "ref": "e55" + }, + { + "index": 55, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 53, + "ref": "e56" + }, + { + "index": 56, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 55, + "ref": "e57" + }, + { + "index": 57, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 56, + "ref": "e58" + }, + { + "index": 58, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 57, + "ref": "e59" + }, + { + "index": 59, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 12, + "parentIndex": 58, + "ref": "e60" + }, + { + "index": 60, + "type": "android.widget.Button", + "label": "Close drawer", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 13, + "parentIndex": 59, + "ref": "e61" + }, + { + "index": 61, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 58, + "ref": "e62" + }, + { + "index": 62, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 61, + "ref": "e63" + }, + { + "index": 63, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 62, + "ref": "e64" + }, + { + "index": 64, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 15, + "parentIndex": 63, + "ref": "e65" + }, + { + "index": 65, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 16, + "parentIndex": 64, + "ref": "e66" + }, + { + "index": 66, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 65, + "ref": "e67" + }, + { + "index": 67, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 17, + "parentIndex": 65, + "ref": "e68" + }, + { + "index": 68, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 18, + "parentIndex": 67, + "ref": "e69" + }, + { + "index": 69, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 19, + "parentIndex": 68, + "ref": "e70" + }, + { + "index": 70, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 20, + "parentIndex": 69, + "ref": "e71" + }, + { + "index": 71, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 70, + "ref": "e72" + }, + { + "index": 72, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 71, + "ref": "e73" + }, + { + "index": 73, + "type": "android.widget.Button", + "label": "Back", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 72, + "ref": "e74" + }, + { + "index": 74, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 73, + "ref": "e75" + }, + { + "index": 75, + "type": "android.widget.TextView", + "label": "󰁍", + "value": "󰁍", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 74, + "ref": "e76" + }, + { + "index": 76, + "type": "android.view.View", + "label": "Surface", + "value": "Surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 210, + "width": 1064, + "height": 84 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 71, + "ref": "e77" + }, + { + "index": 77, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 20, + "parentIndex": 69, + "hiddenContentBelow": true, + "ref": "e78" + }, + { + "index": 78, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 77, + "ref": "e79" + }, + { + "index": 79, + "type": "android.view.ViewGroup", + "identifier": "surface-example-elevated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e80" + }, + { + "index": 80, + "type": "android.widget.TextView", + "label": "Elevated surface", + "value": "Elevated surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e81" + }, + { + "index": 81, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 78, + "ref": "e82" + }, + { + "index": 82, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 81, + "ref": "e83" + }, + { + "index": 83, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 82, + "ref": "e84" + }, + { + "index": 84, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 83, + "ref": "e85" + }, + { + "index": 85, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 480, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 82, + "ref": "e86" + }, + { + "index": 86, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 85, + "ref": "e87" + }, + { + "index": 87, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 912, + "y": 582, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 82, + "ref": "e88" + }, + { + "index": 88, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 87, + "ref": "e89" + }, + { + "index": 89, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1344, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 82, + "ref": "e90" + }, + { + "index": 90, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1430, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 89, + "ref": "e91" + }, + { + "index": 91, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1776, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 82, + "ref": "e92" + }, + { + "index": 92, + "type": "android.widget.TextView", + "label": "Elevation 4", + "value": "Elevation 4", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1862, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 91, + "ref": "e93" + }, + { + "index": 93, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2208, + "y": 582, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 82, + "ref": "e94" + }, + { + "index": 94, + "type": "android.widget.TextView", + "label": "Elevation 5", + "value": "Elevation 5", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2294, + "y": 738, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 93, + "ref": "e95" + }, + { + "index": 95, + "type": "android.view.ViewGroup", + "identifier": "surface-example-flat", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e96" + }, + { + "index": 96, + "type": "android.widget.TextView", + "label": "Flat surface", + "value": "Flat surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e97" + }, + { + "index": 97, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 78, + "ref": "e98" + }, + { + "index": 98, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 97, + "ref": "e99" + }, + { + "index": 99, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 98, + "ref": "e100" + }, + { + "index": 100, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 99, + "ref": "e101" + }, + { + "index": 101, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 480, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 98, + "ref": "e102" + }, + { + "index": 102, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 101, + "ref": "e103" + }, + { + "index": 103, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 912, + "y": 1272, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 98, + "ref": "e104" + }, + { + "index": 104, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 25, + "parentIndex": 103, + "ref": "e105" + }, + { + "index": 105, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1344, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 98, + "ref": "e106" + }, + { + "index": 106, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1430, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 105, + "ref": "e107" + }, + { + "index": 107, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1776, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 98, + "ref": "e108" + }, + { + "index": 108, + "type": "android.widget.TextView", + "label": "Elevation 4", + "value": "Elevation 4", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1862, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 107, + "ref": "e109" + }, + { + "index": 109, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2208, + "y": 1272, + "width": 0, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 24, + "parentIndex": 98, + "ref": "e110" + }, + { + "index": 110, + "type": "android.widget.TextView", + "label": "Elevation 5", + "value": "Elevation 5", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 2294, + "y": 1428, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 25, + "parentIndex": 109, + "ref": "e111" + }, + { + "index": 111, + "type": "android.widget.TextView", + "label": "Animated elevation", + "value": "Animated elevation", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1752, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e112" + }, + { + "index": 112, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 48, + "y": 1962, + "width": 360, + "height": 360 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e113" + }, + { + "index": 113, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 2118, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 112, + "ref": "e114" + }, + { + "index": 114, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e115" + }, + { + "index": 115, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 114, + "ref": "e116" + }, + { + "index": 116, + "type": "android.widget.TextView", + "label": "󰍴", + "value": "󰍴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 90, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 115, + "ref": "e117" + }, + { + "index": 117, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e118" + }, + { + "index": 118, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 117, + "ref": "e119" + }, + { + "index": 119, + "type": "android.widget.TextView", + "label": "󰐕", + "value": "󰐕", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 294, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 118, + "ref": "e120" + }, + { + "index": 120, + "type": "android.widget.TextView", + "label": "Layout", + "value": "Layout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2670, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 78, + "ref": "e121" + }, + { + "index": 121, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2880, + "width": 1136, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e122" + }, + { + "index": 122, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e123" + }, + { + "index": 123, + "type": "android.widget.TextView", + "label": "Left", + "value": "Left", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 122, + "ref": "e124" + }, + { + "index": 124, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 661, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e125" + }, + { + "index": 125, + "type": "android.widget.TextView", + "label": "Right", + "value": "Right", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 661, + "y": 2913, + "width": 514, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 124, + "ref": "e126" + }, + { + "index": 126, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 3063, + "width": 1136, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e127" + }, + { + "index": 127, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3096, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e128" + }, + { + "index": 128, + "type": "android.widget.TextView", + "label": "Top", + "value": "Top", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3339, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 127, + "ref": "e129" + }, + { + "index": 129, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3686, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 22, + "parentIndex": 78, + "ref": "e130" + }, + { + "index": 130, + "type": "android.widget.TextView", + "label": "Bottom", + "value": "Bottom", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 105, + "y": 3929, + "width": 1070, + "height": 0 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 23, + "parentIndex": 129, + "ref": "e131" + }, + { + "index": 131, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 18, + "parentIndex": 67, + "ref": "e132" + }, + { + "index": 132, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 11, + "parentIndex": 57, + "ref": "e133" + }, + { + "index": 133, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 12, + "parentIndex": 132, + "ref": "e134" + }, + { + "index": 134, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 2706 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 13, + "parentIndex": 133, + "ref": "e135" + }, + { + "index": 135, + "type": "android.widget.TextView", + "label": "Example items", + "value": "Example items", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 246, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e136" + }, + { + "index": 136, + "type": "android.widget.Button", + "label": "Inbox, 44", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 360, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e137" + }, + { + "index": 137, + "type": "android.widget.TextView", + "label": "󰚇", + "value": "󰚇", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 408, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e138" + }, + { + "index": 138, + "type": "android.widget.TextView", + "label": "Inbox", + "value": "Inbox", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 414, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e139" + }, + { + "index": 139, + "type": "android.widget.TextView", + "label": "44", + "value": "44", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 414, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 136, + "ref": "e140" + }, + { + "index": 140, + "type": "android.widget.Button", + "label": "Starred", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 528, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e141" + }, + { + "index": 141, + "type": "android.widget.TextView", + "label": "󰓎", + "value": "󰓎", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 576, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e142" + }, + { + "index": 142, + "type": "android.widget.TextView", + "label": "Starred", + "value": "Starred", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 582, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e143" + }, + { + "index": 143, + "type": "android.widget.TextView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 603, + "width": 0, + "height": 18 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 140, + "ref": "e144" + }, + { + "index": 144, + "type": "android.widget.Button", + "label": "Sent mail", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 696, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e145" + }, + { + "index": 145, + "type": "android.widget.TextView", + "label": "󰒊", + "value": "󰒊", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 744, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 144, + "ref": "e146" + }, + { + "index": 146, + "type": "android.widget.TextView", + "label": "Sent mail", + "value": "Sent mail", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 750, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 144, + "ref": "e147" + }, + { + "index": 147, + "type": "android.widget.Button", + "label": "Colored label", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 864, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e148" + }, + { + "index": 148, + "type": "android.widget.TextView", + "label": "󰏘", + "value": "󰏘", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 912, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 147, + "ref": "e149" + }, + { + "index": 149, + "type": "android.widget.TextView", + "label": "Colored label", + "value": "Colored label", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 918, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 147, + "ref": "e150" + }, + { + "index": 150, + "type": "android.widget.Button", + "label": "A very long title that will be truncated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1032, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e151" + }, + { + "index": 151, + "type": "android.widget.TextView", + "label": "󰆴", + "value": "󰆴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1080, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e152" + }, + { + "index": 152, + "type": "android.widget.TextView", + "label": "A very long title that will be truncated", + "value": "A very long title that will be truncated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1086, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e153" + }, + { + "index": 153, + "type": "android.widget.TextView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1107, + "width": 0, + "height": 18 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 150, + "ref": "e154" + }, + { + "index": 154, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1212, + "width": 0, + "height": 3 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e155" + }, + { + "index": 155, + "type": "android.widget.TextView", + "label": "Preferences", + "value": "Preferences", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1281, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e156" + }, + { + "index": 156, + "type": "android.view.ViewGroup", + "label": "Use Dynamic Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1395, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e157" + }, + { + "index": 157, + "type": "android.widget.TextView", + "label": "Use Dynamic Theme", + "value": "Use Dynamic Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1449, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 156, + "ref": "e158" + }, + { + "index": 158, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 156, + "ref": "e159" + }, + { + "index": 159, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e160" + }, + { + "index": 160, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 158, + "ref": "e161" + }, + { + "index": 161, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1431, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 160, + "ref": "e162" + }, + { + "index": 162, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1419, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e163" + }, + { + "index": 163, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1443, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 158, + "ref": "e164" + }, + { + "index": 164, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1443, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 163, + "ref": "e165" + }, + { + "index": 165, + "type": "android.view.ViewGroup", + "label": "Dark Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1563, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e166" + }, + { + "index": 166, + "type": "android.widget.TextView", + "label": "Dark Theme", + "value": "Dark Theme", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1617, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 165, + "ref": "e167" + }, + { + "index": 167, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 165, + "ref": "e168" + }, + { + "index": 168, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e169" + }, + { + "index": 169, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 167, + "ref": "e170" + }, + { + "index": 170, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1599, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 169, + "ref": "e171" + }, + { + "index": 171, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1599, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 169, + "ref": "e172" + }, + { + "index": 172, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1587, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e173" + }, + { + "index": 173, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1623, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 167, + "ref": "e174" + }, + { + "index": 174, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1623, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 173, + "ref": "e175" + }, + { + "index": 175, + "type": "android.view.ViewGroup", + "label": "RTL", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1731, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e176" + }, + { + "index": 176, + "type": "android.widget.TextView", + "label": "RTL", + "value": "RTL", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1785, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 175, + "ref": "e177" + }, + { + "index": 177, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 175, + "ref": "e178" + }, + { + "index": 178, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e179" + }, + { + "index": 179, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 177, + "ref": "e180" + }, + { + "index": 180, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1767, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 179, + "ref": "e181" + }, + { + "index": 181, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1767, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 179, + "ref": "e182" + }, + { + "index": 182, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1755, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e183" + }, + { + "index": 183, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1791, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 177, + "ref": "e184" + }, + { + "index": 184, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1791, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 183, + "ref": "e185" + }, + { + "index": 185, + "type": "android.view.ViewGroup", + "label": "Collapsed drawer *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1899, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e186" + }, + { + "index": 186, + "type": "android.widget.TextView", + "label": "Collapsed drawer *", + "value": "Collapsed drawer *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1953, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 185, + "ref": "e187" + }, + { + "index": 187, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 185, + "ref": "e188" + }, + { + "index": 188, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e189" + }, + { + "index": 189, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 187, + "ref": "e190" + }, + { + "index": 190, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1935, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 189, + "ref": "e191" + }, + { + "index": 191, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1935, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 189, + "ref": "e192" + }, + { + "index": 192, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1923, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e193" + }, + { + "index": 193, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1959, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 187, + "ref": "e194" + }, + { + "index": 194, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1959, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 193, + "ref": "e195" + }, + { + "index": 195, + "type": "android.view.ViewGroup", + "label": "Custom font *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2067, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e196" + }, + { + "index": 196, + "type": "android.widget.TextView", + "label": "Custom font *", + "value": "Custom font *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2121, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 195, + "ref": "e197" + }, + { + "index": 197, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 195, + "ref": "e198" + }, + { + "index": 198, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e199" + }, + { + "index": 199, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 197, + "ref": "e200" + }, + { + "index": 200, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2103, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 199, + "ref": "e201" + }, + { + "index": 201, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2103, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 199, + "ref": "e202" + }, + { + "index": 202, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2091, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e203" + }, + { + "index": 203, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2127, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 197, + "ref": "e204" + }, + { + "index": 204, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2127, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 203, + "ref": "e205" + }, + { + "index": 205, + "type": "android.view.ViewGroup", + "label": "Ripple effect *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2235, + "width": 0, + "height": 168 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 14, + "parentIndex": 134, + "ref": "e206" + }, + { + "index": 206, + "type": "android.widget.TextView", + "label": "Ripple effect *", + "value": "Ripple effect *", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2289, + "width": 0, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 205, + "ref": "e207" + }, + { + "index": 207, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 15, + "parentIndex": 205, + "ref": "e208" + }, + { + "index": 208, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e209" + }, + { + "index": 209, + "type": "android.widget.Switch", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "hittable": true, + "depth": 16, + "parentIndex": 207, + "ref": "e210" + }, + { + "index": 210, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2271, + "width": 0, + "height": 96 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 209, + "ref": "e211" + }, + { + "index": 211, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2259, + "width": 0, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e212" + }, + { + "index": 212, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2283, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 16, + "parentIndex": 207, + "ref": "e213" + }, + { + "index": 213, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2283, + "width": 0, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 17, + "parentIndex": 212, + "ref": "e214" + }, + { + "index": 214, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2415, + "width": 0, + "height": 3 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e215" + }, + { + "index": 215, + "type": "android.widget.TextView", + "label": "* - optional example toggles", + "value": "* - optional example toggles", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2448, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e216" + }, + { + "index": 216, + "type": "android.widget.TextView", + "label": "React Native Paper Version 6.0.0-alpha.0", + "value": "React Native Paper Version 6.0.0-alpha.0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2532, + "width": 0, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": false, + "depth": 14, + "parentIndex": 134, + "ref": "e217" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 217, + "totalNodeCount": 217, + "reasons": [] + }, + "androidSnapshot": { + "backend": "android-helper", + "helperVersion": "0.21.0", + "helperApiVersion": "2", + "helperTransport": "persistent-session", + "helperSessionReused": true, + "installReason": "current", + "waitForIdleTimeoutMs": 500, + "waitForIdleQuietMs": 100, + "timeoutMs": 2000, + "maxDepth": 128, + "maxNodes": 5000, + "rootPresent": true, + "captureMode": "interactive-windows", + "windowCount": 2, + "nodeCount": 217, + "helperTruncated": false, + "elapsedMs": 97 + }, + "snapshotQuality": { + "state": "healthy", + "backend": "android-helper" + }, + "snapshotDiagnostics": { + "stats": { + "count": 104, + "p50Ms": 52, + "p95Ms": 206, + "maxMs": 609, + "slowThresholdMs": 1500, + "platform": "android", + "backends": { + "android": 104 + } + } + }, + "refsGeneration": 835372 + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-diff-t0.02.json b/example/visual/evidence/sensitivity/android/gross-diff-t0.02.json new file mode 100644 index 0000000000..008f28ef86 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-diff-t0.02.json @@ -0,0 +1,116 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/android-gross-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 8, + "y": 196, + "width": 438, + "height": 423 + }, + "normalizedRect": { + "x": 0.63, + "y": 30.53, + "width": 34.22, + "height": 65.89 + }, + "differentPixels": 115861, + "shareOfDiffPercentage": 55.57, + "densityPercentage": 62.53, + "shape": "compact", + "size": "large", + "location": "middle-left", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#dfdde2", + "baselineLuminance": 249, + "currentLuminance": 222, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 447, + "y": 196, + "width": 442, + "height": 423 + }, + "normalizedRect": { + "x": 34.92, + "y": 30.53, + "width": 34.53, + "height": 65.89 + }, + "differentPixels": 48994, + "shareOfDiffPercentage": 23.5, + "densityPercentage": 26.2, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#edebf1", + "baselineLuminance": 248, + "currentLuminance": 236, + "dominantChange": "darker" + }, + { + "index": 3, + "rect": { + "x": 890, + "y": 196, + "width": 390, + "height": 423 + }, + "normalizedRect": { + "x": 69.53, + "y": 30.53, + "width": 30.47, + "height": 65.89 + }, + "differentPixels": 30792, + "shareOfDiffPercentage": 14.77, + "densityPercentage": 18.67, + "shape": "compact", + "size": "large", + "location": "middle-right", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#eceaef", + "baselineLuminance": 245, + "currentLuminance": 235, + "dominantChange": "mixed" + }, + { + "index": 4, + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 11 + }, + "normalizedRect": { + "x": 0, + "y": 0, + "width": 100, + "height": 1.71 + }, + "differentPixels": 12858, + "shareOfDiffPercentage": 6.17, + "densityPercentage": 91.32, + "shape": "horizontal-band", + "size": "medium", + "location": "top-center", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#f3f1f7", + "baselineLuminance": 249, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "totalPixels": 821760, + "differentPixels": 208505, + "mismatchPercentage": 25.37, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-diff-t0.1.json b/example/visual/evidence/sensitivity/android/gross-diff-t0.1.json new file mode 100644 index 0000000000..81c21af27a --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-diff-t0.1.json @@ -0,0 +1,64 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/android-gross-t0.1.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 42, + "y": 225, + "width": 359, + "height": 356 + }, + "normalizedRect": { + "x": 3.28, + "y": 35.05, + "width": 28.05, + "height": 55.45 + }, + "differentPixels": 62597, + "shareOfDiffPercentage": 96.23, + "densityPercentage": 48.98, + "shape": "compact", + "size": "large", + "location": "middle-left", + "averageBaselineColorHex": "#faf8fe", + "averageCurrentColorHex": "#d3d1d7", + "baselineLuminance": 249, + "currentLuminance": 210, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 500, + "y": 573, + "width": 321, + "height": 8 + }, + "normalizedRect": { + "x": 39.06, + "y": 89.25, + "width": 25.08, + "height": 1.25 + }, + "differentPixels": 2454, + "shareOfDiffPercentage": 3.77, + "densityPercentage": 95.56, + "shape": "horizontal-band", + "size": "small", + "location": "bottom-center", + "averageBaselineColorHex": "#f9f7fd", + "averageCurrentColorHex": "#dcdbe0", + "baselineLuminance": 248, + "currentLuminance": 220, + "dominantChange": "darker" + } + ], + "totalPixels": 821760, + "differentPixels": 65051, + "mismatchPercentage": 7.92, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json b/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json b/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-shot.json b/example/visual/evidence/sensitivity/android/gross-probe-shot.json new file mode 100644 index 0000000000..de0774fea4 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-probe-shot.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/gross-probe.png", + "width": 1280, + "height": 642 + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-wait.json b/example/visual/evidence/sensitivity/android/gross-probe-wait.json new file mode 100644 index 0000000000..42a3d78bf7 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-probe-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 728, + "captures": 3, + "nodeCount": 24 + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-probe.png b/example/visual/evidence/sensitivity/android/gross-probe.png new file mode 100644 index 0000000000000000000000000000000000000000..c94e2bc1b130d2115e61ca8d2451db373b1ba6fc GIT binary patch literal 31693 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/android/gross-shot.json b/example/visual/evidence/sensitivity/android/gross-shot.json new file mode 100644 index 0000000000..2ea78df8d2 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-shot.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/gross.png", + "width": 1280, + "height": 642 + } +} diff --git a/example/visual/evidence/sensitivity/android/gross-wait.json b/example/visual/evidence/sensitivity/android/gross-wait.json new file mode 100644 index 0000000000..1a1dffb6de --- /dev/null +++ b/example/visual/evidence/sensitivity/android/gross-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 709, + "captures": 3, + "nodeCount": 24 + } +} diff --git a/example/visual/evidence/sensitivity/android/gross.png b/example/visual/evidence/sensitivity/android/gross.png new file mode 100644 index 0000000000000000000000000000000000000000..331812d66017a6ac1a21a3fe88a6beb34757fae9 GIT binary patch literal 63721 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json b/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json new file mode 100644 index 0000000000..8a5f54ddec --- /dev/null +++ b/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json @@ -0,0 +1,38 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/android-realistic-1-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 473, + "y": 207, + "width": 374, + "height": 375 + }, + "normalizedRect": { + "x": 36.95, + "y": 32.24, + "width": 29.22, + "height": 58.41 + }, + "differentPixels": 9336, + "shareOfDiffPercentage": 100, + "densityPercentage": 6.66, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#f6f4fa", + "averageCurrentColorHex": "#eceaf0", + "baselineLuminance": 245, + "currentLuminance": 235, + "dominantChange": "mixed" + } + ], + "totalPixels": 821760, + "differentPixels": 9336, + "mismatchPercentage": 1.14, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json b/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/android/realistic-1-shot.json b/example/visual/evidence/sensitivity/android/realistic-1-shot.json new file mode 100644 index 0000000000..89eaf9108a --- /dev/null +++ b/example/visual/evidence/sensitivity/android/realistic-1-shot.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/realistic-1.png", + "width": 1280, + "height": 642 + } +} diff --git a/example/visual/evidence/sensitivity/android/realistic-1-wait.json b/example/visual/evidence/sensitivity/android/realistic-1-wait.json new file mode 100644 index 0000000000..a3fa3081b6 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/realistic-1-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 732, + "captures": 3, + "nodeCount": 24 + } +} diff --git a/example/visual/evidence/sensitivity/android/realistic-1.png b/example/visual/evidence/sensitivity/android/realistic-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac136bebae1c3c21588c9b9e3b2f95bcfb67d15 GIT binary patch literal 33878 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json b/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json b/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json new file mode 100644 index 0000000000..ba308f54ca --- /dev/null +++ b/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 821760, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-shot.json b/example/visual/evidence/sensitivity/android/sanity-before-break-shot.json new file mode 100644 index 0000000000..074489c977 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/sanity-before-break-shot.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/sanity-before-break.png", + "width": 1280, + "height": 642 + } +} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-wait.json b/example/visual/evidence/sensitivity/android/sanity-before-break-wait.json new file mode 100644 index 0000000000..d35e9e31a1 --- /dev/null +++ b/example/visual/evidence/sensitivity/android/sanity-before-break-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 706, + "captures": 3, + "nodeCount": 24 + } +} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break.png b/example/visual/evidence/sensitivity/android/sanity-before-break.png new file mode 100644 index 0000000000000000000000000000000000000000..c94e2bc1b130d2115e61ca8d2451db373b1ba6fc GIT binary patch literal 31693 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json b/example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json new file mode 100644 index 0000000000..c7e10289da --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json @@ -0,0 +1,2821 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "Application", + "role": "UIApplication", + "label": "React Native Paper Example", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 0, + "pid": 37870, + "ref": "e1" + }, + { + "index": 1, + "parentIndex": 0, + "type": "Window", + "role": "UIWindow", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 1, + "pid": 37870, + "ref": "e2" + }, + { + "index": 2, + "parentIndex": 1, + "type": "Other", + "role": "UITransitionView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 2, + "pid": 37870, + "ref": "e3" + }, + { + "index": 3, + "parentIndex": 2, + "type": "Other", + "role": "UIDropShadowView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 3, + "pid": 37870, + "ref": "e4" + }, + { + "index": 4, + "parentIndex": 3, + "type": "Other", + "role": "_TtC13EXDevLauncherP33_867A144D7C8F5D750D0BFA9E58EDAFE322DevLauncherWrapperView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 4, + "pid": 37870, + "ref": "e5" + }, + { + "index": 5, + "parentIndex": 4, + "type": "Other", + "role": "RCTSurfaceHostingProxyRootView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 5, + "pid": 37870, + "ref": "e6" + }, + { + "index": 6, + "parentIndex": 5, + "type": "Other", + "role": "RCTSurfaceView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 6, + "pid": 37870, + "ref": "e7" + }, + { + "index": 7, + "parentIndex": 6, + "type": "Other", + "role": "RCTRootComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 7, + "pid": 37870, + "ref": "e8" + }, + { + "index": 8, + "parentIndex": 7, + "type": "Other", + "role": "RNCSafeAreaProviderComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 8, + "pid": 37870, + "ref": "e9" + }, + { + "index": 9, + "parentIndex": 8, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e10" + }, + { + "index": 10, + "parentIndex": 9, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 10, + "pid": 37870, + "ref": "e11" + }, + { + "index": 11, + "parentIndex": 10, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 11, + "pid": 37870, + "ref": "e12" + }, + { + "index": 12, + "parentIndex": 11, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 12, + "pid": 37870, + "ref": "e13" + }, + { + "index": 13, + "parentIndex": 12, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 874 + }, + "depth": 13, + "pid": 37870, + "ref": "e14" + }, + { + "index": 14, + "parentIndex": 13, + "type": "Other", + "role": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 770 + }, + "depth": 14, + "pid": 37870, + "ref": "e15" + }, + { + "index": 15, + "parentIndex": 14, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -346, + "y": 0, + "width": 346, + "height": 770 + }, + "depth": 15, + "pid": 37870, + "ref": "e16" + }, + { + "index": 16, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Example items", + "rect": { + "x": -306, + "y": 30, + "width": 294, + "height": 20 + }, + "depth": 16, + "pid": 37870, + "ref": "e17" + }, + { + "index": 17, + "parentIndex": 16, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Example items", + "rect": { + "x": -306, + "y": 30, + "width": 294, + "height": 20 + }, + "depth": 17, + "pid": 37870, + "ref": "e18" + }, + { + "index": 18, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Inbox, 44", + "rect": { + "x": -322, + "y": 68, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e19" + }, + { + "index": 19, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Starred", + "rect": { + "x": -322, + "y": 124, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e20" + }, + { + "index": 20, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Sent mail", + "rect": { + "x": -322, + "y": 180, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e21" + }, + { + "index": 21, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Colored label", + "rect": { + "x": -322, + "y": 236, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e22" + }, + { + "index": 22, + "parentIndex": 15, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "A very long title that will be truncated", + "rect": { + "x": -322, + "y": 292, + "width": 298, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e23" + }, + { + "index": 23, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -318, + "y": 352, + "width": 290, + "height": 1 + }, + "depth": 16, + "pid": 37870, + "ref": "e24" + }, + { + "index": 24, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Preferences", + "rect": { + "x": -306, + "y": 375, + "width": 294, + "height": 20 + }, + "depth": 16, + "pid": 37870, + "ref": "e25" + }, + { + "index": 25, + "parentIndex": 24, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Preferences", + "rect": { + "x": -306, + "y": 375, + "width": 294, + "height": 20 + }, + "depth": 17, + "pid": 37870, + "ref": "e26" + }, + { + "index": 26, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Dark Theme", + "rect": { + "x": -334, + "y": 413, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e27" + }, + { + "index": 27, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "RTL", + "rect": { + "x": -334, + "y": 469, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e28" + }, + { + "index": 28, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Collapsed drawer *", + "rect": { + "x": -334, + "y": 525, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e29" + }, + { + "index": 29, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Custom font *", + "rect": { + "x": -334, + "y": 581, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e30" + }, + { + "index": 30, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Highlight effect *", + "rect": { + "x": -334, + "y": 637, + "width": 322, + "height": 56 + }, + "depth": 16, + "pid": 37870, + "ref": "e31" + }, + { + "index": 31, + "parentIndex": 15, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": -318, + "y": 697, + "width": 290, + "height": 1 + }, + "depth": 16, + "pid": 37870, + "ref": "e32" + }, + { + "index": 32, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "* - optional example toggles", + "rect": { + "x": -310, + "y": 708, + "width": 274, + "height": 16 + }, + "depth": 16, + "pid": 37870, + "ref": "e33" + }, + { + "index": 33, + "parentIndex": 32, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "* - optional example toggles", + "rect": { + "x": -310, + "y": 708, + "width": 274, + "height": 16 + }, + "depth": 17, + "pid": 37870, + "ref": "e34" + }, + { + "index": 34, + "parentIndex": 15, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "React Native Paper Version 6.0.0-alpha.0", + "rect": { + "x": -310, + "y": 736, + "width": 274, + "height": 16 + }, + "depth": 16, + "pid": 37870, + "ref": "e35" + }, + { + "index": 35, + "parentIndex": 34, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "React Native Paper Version 6.0.0-alpha.0", + "rect": { + "x": -310, + "y": 736, + "width": 274, + "height": 16 + }, + "depth": 17, + "pid": 37870, + "ref": "e36" + }, + { + "index": 36, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -33, + "y": 62, + "width": 30, + "height": 778 + }, + "depth": 14, + "pid": 37870, + "ref": "e37" + }, + { + "index": 37, + "parentIndex": 36, + "type": "Other", + "role": "UIView", + "rect": { + "x": -6, + "y": 169, + "width": 3, + "height": 668 + }, + "depth": 15, + "pid": 37870, + "ref": "e38" + }, + { + "index": 38, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -346, + "y": 807, + "width": 346, + "height": 30 + }, + "depth": 14, + "pid": 37870, + "ref": "e39" + }, + { + "index": 39, + "parentIndex": 38, + "type": "Other", + "role": "UIView", + "rect": { + "x": -343, + "y": 834, + "width": 340, + "height": 3 + }, + "depth": 15, + "pid": 37870, + "ref": "e40" + }, + { + "index": 40, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -33, + "y": 62, + "width": 30, + "height": 778 + }, + "depth": 14, + "pid": 37870, + "ref": "e41" + }, + { + "index": 41, + "parentIndex": 40, + "type": "Other", + "role": "UIView", + "rect": { + "x": -6, + "y": 169, + "width": 3, + "height": 668 + }, + "depth": 15, + "pid": 37870, + "ref": "e42" + }, + { + "index": 42, + "parentIndex": 13, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": -346, + "y": 807, + "width": 346, + "height": 30 + }, + "depth": 14, + "pid": 37870, + "ref": "e43" + }, + { + "index": 43, + "parentIndex": 42, + "type": "Other", + "role": "UIView", + "rect": { + "x": -343, + "y": 834, + "width": 340, + "height": 3 + }, + "depth": 15, + "pid": 37870, + "ref": "e44" + }, + { + "index": 44, + "parentIndex": 10, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 11, + "pid": 37870, + "ref": "e45" + }, + { + "index": 45, + "parentIndex": 44, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 12, + "pid": 37870, + "ref": "e46" + }, + { + "index": 46, + "parentIndex": 45, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 13, + "pid": 37870, + "ref": "e47" + }, + { + "index": 47, + "parentIndex": 46, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 14, + "pid": 37870, + "ref": "e48" + }, + { + "index": 48, + "parentIndex": 47, + "type": "Other", + "role": "RNSScreenStackView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 15, + "pid": 37870, + "ref": "e49" + }, + { + "index": 49, + "parentIndex": 48, + "type": "Other", + "role": "UILayoutContainerView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 16, + "pid": 37870, + "ref": "e50" + }, + { + "index": 50, + "parentIndex": 49, + "type": "Other", + "role": "UINavigationTransitionView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 17, + "pid": 37870, + "ref": "e51" + }, + { + "index": 51, + "parentIndex": 50, + "type": "Other", + "role": "UIViewControllerWrapperView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 18, + "pid": 37870, + "ref": "e52" + }, + { + "index": 52, + "parentIndex": 51, + "type": "Other", + "role": "RNSScreenView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 19, + "pid": 37870, + "ref": "e53" + }, + { + "index": 53, + "parentIndex": 52, + "type": "Other", + "role": "RNSScreenContentWrapper", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 20, + "pid": 37870, + "ref": "e54" + }, + { + "index": 54, + "parentIndex": 53, + "type": "Other", + "role": "RNSSafeAreaViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 21, + "pid": 37870, + "ref": "e55" + }, + { + "index": 55, + "parentIndex": 54, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 22, + "pid": 37870, + "ref": "e56" + }, + { + "index": 56, + "parentIndex": 55, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 23, + "pid": 37870, + "ref": "e57" + }, + { + "index": 57, + "parentIndex": 56, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 24, + "pid": 37870, + "ref": "e58" + }, + { + "index": 58, + "parentIndex": 57, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 126 + }, + "depth": 25, + "pid": 37870, + "ref": "e59" + }, + { + "index": 59, + "parentIndex": 57, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 25, + "pid": 37870, + "ref": "e60" + }, + { + "index": 60, + "parentIndex": 59, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Back", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 26, + "pid": 37870, + "ref": "e61" + }, + { + "index": 61, + "parentIndex": 57, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 25, + "pid": 37870, + "ref": "e62" + }, + { + "index": 62, + "parentIndex": 61, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 26, + "pid": 37870, + "ref": "e63" + }, + { + "index": 63, + "parentIndex": 55, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 23, + "pid": 37870, + "ref": "e64" + }, + { + "index": 64, + "parentIndex": 63, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 24, + "pid": 37870, + "ref": "e65" + }, + { + "index": 65, + "parentIndex": 64, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 1435 + }, + "depth": 25, + "pid": 37870, + "ref": "e66" + }, + { + "index": 66, + "parentIndex": 65, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 1435 + }, + "depth": 26, + "pid": 37870, + "ref": "e67" + }, + { + "index": 67, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevated surface", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e68" + }, + { + "index": 68, + "parentIndex": 67, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevated surface", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e69" + }, + { + "index": 69, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "identifier": "surface-example-elevated", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 214 + }, + "depth": 27, + "pid": 37870, + "ref": "e70" + }, + { + "index": 70, + "parentIndex": 66, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 180, + "width": 402, + "height": 168 + }, + "depth": 27, + "pid": 37870, + "ref": "e71" + }, + { + "index": 71, + "parentIndex": 70, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 180, + "width": 402, + "height": 168 + }, + "depth": 28, + "pid": 37870, + "ref": "e72" + }, + { + "index": 72, + "parentIndex": 71, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 180, + "width": 872, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e73" + }, + { + "index": 73, + "parentIndex": 72, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 180, + "width": 872, + "height": 168 + }, + "depth": 30, + "pid": 37870, + "ref": "e74" + }, + { + "index": 74, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e75" + }, + { + "index": 75, + "parentIndex": 74, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e76" + }, + { + "index": 76, + "parentIndex": 74, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 256, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e77" + }, + { + "index": 77, + "parentIndex": 76, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 256, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e78" + }, + { + "index": 78, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 160, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e79" + }, + { + "index": 79, + "parentIndex": 78, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 160, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e80" + }, + { + "index": 80, + "parentIndex": 78, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 256, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e81" + }, + { + "index": 81, + "parentIndex": 80, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 256, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e82" + }, + { + "index": 82, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 304, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e83" + }, + { + "index": 83, + "parentIndex": 82, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 304, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e84" + }, + { + "index": 84, + "parentIndex": 82, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 256, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e85" + }, + { + "index": 85, + "parentIndex": 84, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 256, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e86" + }, + { + "index": 86, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 448, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e87" + }, + { + "index": 87, + "parentIndex": 86, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 448, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e88" + }, + { + "index": 88, + "parentIndex": 86, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 256, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e89" + }, + { + "index": 89, + "parentIndex": 88, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 256, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e90" + }, + { + "index": 90, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 592, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e91" + }, + { + "index": 91, + "parentIndex": 90, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 592, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e92" + }, + { + "index": 92, + "parentIndex": 90, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 256, + "width": 67, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e93" + }, + { + "index": 93, + "parentIndex": 92, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 256, + "width": 67, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e94" + }, + { + "index": 94, + "parentIndex": 73, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 736, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e95" + }, + { + "index": 95, + "parentIndex": 94, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 736, + "y": 204, + "width": 120, + "height": 120 + }, + "depth": 32, + "pid": 37870, + "ref": "e96" + }, + { + "index": 96, + "parentIndex": 94, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 256, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e97" + }, + { + "index": 97, + "parentIndex": 96, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 256, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e98" + }, + { + "index": 98, + "parentIndex": 71, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 180, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e99" + }, + { + "index": 99, + "parentIndex": 98, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 183, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e100" + }, + { + "index": 100, + "parentIndex": 71, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 180, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e101" + }, + { + "index": 101, + "parentIndex": 100, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 183, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e102" + }, + { + "index": 102, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Flat surface", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e103" + }, + { + "index": 103, + "parentIndex": 102, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Flat surface", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e104" + }, + { + "index": 104, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "identifier": "surface-example-flat", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 214 + }, + "depth": 27, + "pid": 37870, + "ref": "e105" + }, + { + "index": 105, + "parentIndex": 66, + "type": "Other", + "role": "RCTScrollViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 410, + "width": 402, + "height": 168 + }, + "depth": 27, + "pid": 37870, + "ref": "e106" + }, + { + "index": 106, + "parentIndex": 105, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 410, + "width": 402, + "height": 168 + }, + "depth": 28, + "pid": 37870, + "ref": "e107" + }, + { + "index": 107, + "parentIndex": 106, + "type": "Other", + "role": "UIView", + "rect": { + "x": 0, + "y": 410, + "width": 872, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e108" + }, + { + "index": 108, + "parentIndex": 107, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 410, + "width": 872, + "height": 168 + }, + "depth": 30, + "pid": 37870, + "ref": "e109" + }, + { + "index": 109, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e110" + }, + { + "index": 110, + "parentIndex": 109, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 486, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e111" + }, + { + "index": 111, + "parentIndex": 110, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 486, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e112" + }, + { + "index": 112, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 160, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e113" + }, + { + "index": 113, + "parentIndex": 112, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 486, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e114" + }, + { + "index": 114, + "parentIndex": 113, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 486, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e115" + }, + { + "index": 115, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 304, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e116" + }, + { + "index": 116, + "parentIndex": 115, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 486, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e117" + }, + { + "index": 117, + "parentIndex": 116, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 486, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e118" + }, + { + "index": 118, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 448, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e119" + }, + { + "index": 119, + "parentIndex": 118, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 486, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e120" + }, + { + "index": 120, + "parentIndex": 119, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 474.6666660308838, + "y": 486, + "width": 66.66665649414062, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e121" + }, + { + "index": 121, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 592, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e122" + }, + { + "index": 122, + "parentIndex": 121, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 486, + "width": 67, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e123" + }, + { + "index": 123, + "parentIndex": 122, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 4", + "rect": { + "x": 618.3333339691162, + "y": 486, + "width": 67, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e124" + }, + { + "index": 124, + "parentIndex": 108, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 736, + "y": 434, + "width": 120, + "height": 120 + }, + "depth": 31, + "pid": 37870, + "ref": "e125" + }, + { + "index": 125, + "parentIndex": 124, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 486, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 32, + "pid": 37870, + "ref": "e126" + }, + { + "index": 126, + "parentIndex": 125, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 5", + "rect": { + "x": 762.6666660308838, + "y": 486, + "width": 66.6666259765625, + "height": 16 + }, + "depth": 33, + "pid": 37870, + "ref": "e127" + }, + { + "index": 127, + "parentIndex": 106, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 410, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e128" + }, + { + "index": 128, + "parentIndex": 127, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 413, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e129" + }, + { + "index": 129, + "parentIndex": 106, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 410, + "width": 30, + "height": 168 + }, + "depth": 29, + "pid": 37870, + "ref": "e130" + }, + { + "index": 130, + "parentIndex": 129, + "type": "Other", + "role": "UIView", + "rect": { + "x": 396, + "y": 413, + "width": 3, + "height": 162 + }, + "depth": 30, + "pid": 37870, + "ref": "e131" + }, + { + "index": 131, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e132" + }, + { + "index": 132, + "parentIndex": 131, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e133" + }, + { + "index": 133, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 664, + "width": 120, + "height": 120 + }, + "depth": 27, + "pid": 37870, + "ref": "e134" + }, + { + "index": 134, + "parentIndex": 133, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 16, + "y": 664, + "width": 120, + "height": 120 + }, + "depth": 28, + "pid": 37870, + "ref": "e135" + }, + { + "index": 135, + "parentIndex": 133, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 28, + "pid": 37870, + "ref": "e136" + }, + { + "index": 136, + "parentIndex": 135, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 29, + "pid": 37870, + "ref": "e137" + }, + { + "index": 137, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 27, + "pid": 37870, + "ref": "e138" + }, + { + "index": 138, + "parentIndex": 137, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 28, + "pid": 37870, + "ref": "e139" + }, + { + "index": 139, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 27, + "pid": 37870, + "ref": "e140" + }, + { + "index": 140, + "parentIndex": 139, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 28, + "pid": 37870, + "ref": "e141" + }, + { + "index": 141, + "parentIndex": 66, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Layout", + "rect": { + "x": 0, + "y": 900, + "width": 402, + "height": 46 + }, + "depth": 27, + "pid": 37870, + "ref": "e142" + }, + { + "index": 142, + "parentIndex": 141, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Layout", + "rect": { + "x": 0, + "y": 900, + "width": 402, + "height": 46 + }, + "depth": 28, + "pid": 37870, + "ref": "e143" + }, + { + "index": 143, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 24, + "y": 970, + "width": 354, + "height": 39 + }, + "depth": 27, + "pid": 37870, + "ref": "e144" + }, + { + "index": 144, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 27, + "pid": 37870, + "ref": "e145" + }, + { + "index": 145, + "parentIndex": 144, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e146" + }, + { + "index": 146, + "parentIndex": 144, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Left", + "rect": { + "x": 35, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e147" + }, + { + "index": 147, + "parentIndex": 146, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Left", + "rect": { + "x": 35, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e148" + }, + { + "index": 148, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 27, + "pid": 37870, + "ref": "e149" + }, + { + "index": 149, + "parentIndex": 148, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.3333282470703, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e150" + }, + { + "index": 150, + "parentIndex": 148, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Right", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e151" + }, + { + "index": 151, + "parentIndex": 150, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Right", + "rect": { + "x": 207.6666717529297, + "y": 981, + "width": 159.6666717529297, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e152" + }, + { + "index": 152, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 24, + "y": 1029, + "width": 354, + "height": 400 + }, + "depth": 27, + "pid": 37870, + "ref": "e153" + }, + { + "index": 153, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1040, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 27, + "pid": 37870, + "ref": "e154" + }, + { + "index": 154, + "parentIndex": 153, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1040, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 28, + "pid": 37870, + "ref": "e155" + }, + { + "index": 155, + "parentIndex": 153, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Top", + "rect": { + "x": 35, + "y": 1122, + "width": 332, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e156" + }, + { + "index": 156, + "parentIndex": 155, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Top", + "rect": { + "x": 35, + "y": 1122, + "width": 332, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e157" + }, + { + "index": 157, + "parentIndex": 66, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1236.6666717529297, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 27, + "pid": 37870, + "ref": "e158" + }, + { + "index": 158, + "parentIndex": 157, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 35, + "y": 1236.6666717529297, + "width": 332, + "height": 181.3333740234375 + }, + "depth": 28, + "pid": 37870, + "ref": "e159" + }, + { + "index": 159, + "parentIndex": 157, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Bottom", + "rect": { + "x": 35, + "y": 1318.6666717529297, + "width": 332, + "height": 17 + }, + "depth": 28, + "pid": 37870, + "ref": "e160" + }, + { + "index": 160, + "parentIndex": 159, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Bottom", + "rect": { + "x": 35, + "y": 1318.6666717529297, + "width": 332, + "height": 17 + }, + "depth": 29, + "pid": 37870, + "ref": "e161" + }, + { + "index": 161, + "parentIndex": 64, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 25, + "pid": 37870, + "ref": "e162" + }, + { + "index": 162, + "parentIndex": 161, + "type": "Other", + "role": "UIView", + "rect": { + "x": 65, + "y": 868, + "width": 272, + "height": 3 + }, + "depth": 26, + "pid": 37870, + "ref": "e163" + }, + { + "index": 163, + "parentIndex": 64, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 25, + "pid": 37870, + "ref": "e164" + }, + { + "index": 164, + "parentIndex": 163, + "type": "Other", + "role": "UIView", + "rect": { + "x": 65, + "y": 868, + "width": 272, + "height": 3 + }, + "depth": 26, + "pid": 37870, + "ref": "e165" + }, + { + "index": 165, + "parentIndex": 49, + "type": "Other", + "role": "_UIFloatingBarContainerView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 17, + "pid": 37870, + "ref": "e166" + }, + { + "index": 166, + "parentIndex": 165, + "type": "Other", + "role": "_TtGC5UIKitP10$186ecd81022FloatingBarHostingViewVS_20FloatingBarContainer_", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 18, + "pid": 37870, + "ref": "e167" + }, + { + "index": 167, + "parentIndex": 8, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e168" + }, + { + "index": 168, + "parentIndex": 7, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 8, + "pid": 37870, + "ref": "e169" + }, + { + "index": 169, + "parentIndex": 168, + "type": "Other", + "role": "RCTDebuggingOverlayComponentView", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 9, + "pid": 37870, + "ref": "e170" + }, + { + "index": 170, + "parentIndex": 169, + "type": "Other", + "role": "RCTDebuggingOverlay", + "subrole": "UIView", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 10, + "pid": 37870, + "ref": "e171" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 171, + "totalNodeCount": 171, + "reasons": [] + }, + "warnings": [ + "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." + ], + "snapshotDiagnostics": { + "stats": { + "count": 123, + "p50Ms": 68, + "p95Ms": 122, + "maxMs": 677, + "slowThresholdMs": 1500, + "platform": "ios", + "backends": { + "xctest": 123 + } + } + }, + "refsGeneration": 835197 + } +} diff --git a/example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json new file mode 100644 index 0000000000..c288695213 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json @@ -0,0 +1,90 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-gross-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 443, + "y": 223, + "width": 763, + "height": 404 + }, + "normalizedRect": { + "x": 36.73, + "y": 34.74, + "width": 63.27, + "height": 62.93 + }, + "differentPixels": 70986, + "shareOfDiffPercentage": 61.04, + "densityPercentage": 23.03, + "shape": "large-area", + "size": "large", + "location": "middle-right", + "averageBaselineColorHex": "#fcf5fd", + "averageCurrentColorHex": "#eee7ef", + "baselineLuminance": 247, + "currentLuminance": 233, + "dominantChange": "darker" + }, + { + "index": 2, + "rect": { + "x": 0, + "y": 0, + "width": 1206, + "height": 33 + }, + "normalizedRect": { + "x": 0, + "y": 0, + "width": 100, + "height": 5.14 + }, + "differentPixels": 36741, + "shareOfDiffPercentage": 31.59, + "densityPercentage": 92.32, + "shape": "horizontal-band", + "size": "large", + "location": "top-center", + "averageBaselineColorHex": "#fef7ff", + "averageCurrentColorHex": "#f2ebf3", + "baselineLuminance": 249, + "currentLuminance": 237, + "dominantChange": "darker" + }, + { + "index": 3, + "rect": { + "x": 463, + "y": 190, + "width": 743, + "height": 33 + }, + "normalizedRect": { + "x": 38.39, + "y": 29.6, + "width": 61.61, + "height": 5.14 + }, + "differentPixels": 8565, + "shareOfDiffPercentage": 7.37, + "densityPercentage": 34.93, + "shape": "horizontal-band", + "size": "medium", + "location": "top-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f5eef6", + "baselineLuminance": 248, + "currentLuminance": 240, + "dominantChange": "mixed" + } + ], + "totalPixels": 774252, + "differentPixels": 116292, + "mismatchPercentage": 15.02, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json new file mode 100644 index 0000000000..0040206830 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json @@ -0,0 +1,38 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-gross-t0.1.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 502, + "y": 573, + "width": 316, + "height": 17 + }, + "normalizedRect": { + "x": 41.63, + "y": 89.25, + "width": 26.2, + "height": 2.65 + }, + "differentPixels": 4277, + "shareOfDiffPercentage": 100, + "densityPercentage": 79.62, + "shape": "horizontal-band", + "size": "small", + "location": "bottom-center", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#dfd9e0", + "baselineLuminance": 248, + "currentLuminance": 219, + "dominantChange": "darker" + } + ], + "totalPixels": 774252, + "differentPixels": 4277, + "mismatchPercentage": 0.55, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/ios/gross-shot.json b/example/visual/evidence/sensitivity/ios/gross-shot.json new file mode 100644 index 0000000000..1c4418110b --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/gross-shot.json @@ -0,0 +1,11 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/gross.png", + "width": 1206, + "height": 642, + "logicalWidth": 402, + "logicalHeight": 214, + "pixelDensity": 3 + } +} diff --git a/example/visual/evidence/sensitivity/ios/gross-wait.json b/example/visual/evidence/sensitivity/ios/gross-wait.json new file mode 100644 index 0000000000..b7edafb5b6 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/gross-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 634, + "captures": 3, + "nodeCount": 18 + } +} diff --git a/example/visual/evidence/sensitivity/ios/gross.png b/example/visual/evidence/sensitivity/ios/gross.png new file mode 100644 index 0000000000000000000000000000000000000000..58161c85ed46f7a36ec7a1063c2d2064d7101fc5 GIT binary patch literal 259444 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 z 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 a1_N$p_;$^3ZD9_>k0|k6(E;I`vi}G6DxP@& literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json new file mode 100644 index 0000000000..ad13e82847 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json @@ -0,0 +1,90 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-realistic-2-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 471, + "y": 206, + "width": 378, + "height": 378 + }, + "normalizedRect": { + "x": 39.05, + "y": 32.09, + "width": 31.34, + "height": 58.88 + }, + "differentPixels": 10175, + "shareOfDiffPercentage": 99.96, + "densityPercentage": 7.12, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#faf3fb", + "averageCurrentColorHex": "#efe8f0", + "baselineLuminance": 245, + "currentLuminance": 234, + "dominantChange": "mixed" + }, + { + "index": 2, + "rect": { + "x": 483, + "y": 215, + "width": 2, + "height": 2 + }, + "normalizedRect": { + "x": 40.05, + "y": 33.49, + "width": 0.17, + "height": 0.31 + }, + "differentPixels": 3, + "shareOfDiffPercentage": 0.03, + "densityPercentage": 75, + "shape": "compact", + "size": "small", + "location": "center", + "averageBaselineColorHex": "#fbf4fc", + "averageCurrentColorHex": "#f6eff6", + "baselineLuminance": 246, + "currentLuminance": 241, + "dominantChange": "mixed" + }, + { + "index": 3, + "rect": { + "x": 835, + "y": 213, + "width": 1, + "height": 1 + }, + "normalizedRect": { + "x": 69.24, + "y": 33.18, + "width": 0.08, + "height": 0.16 + }, + "differentPixels": 1, + "shareOfDiffPercentage": 0.01, + "densityPercentage": 100, + "shape": "compact", + "size": "small", + "location": "middle-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f7f0f8", + "baselineLuminance": 248, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "totalPixels": 774252, + "differentPixels": 10179, + "mismatchPercentage": 1.31, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-shot.json b/example/visual/evidence/sensitivity/ios/realistic-2-shot.json new file mode 100644 index 0000000000..34513b5109 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-2-shot.json @@ -0,0 +1,11 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/realistic-2.png", + "width": 1206, + "height": 642, + "logicalWidth": 402, + "logicalHeight": 214, + "pixelDensity": 3 + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-wait.json b/example/visual/evidence/sensitivity/ios/realistic-2-wait.json new file mode 100644 index 0000000000..00a016d76d --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-2-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 632, + "captures": 3, + "nodeCount": 18 + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2.png b/example/visual/evidence/sensitivity/ios/realistic-2.png new file mode 100644 index 0000000000000000000000000000000000000000..38ab27c684caf74c931fe75aa5e5b7362b788ada GIT binary patch literal 81121 zcmeFZ3p|u<+b`Tk*(7GvB&9G$o9RZ(T`1X$A=!;oln8Ak*@dzx*^VMKBuWS~*%eXR zaEFPQsJpVO$S@?zF4>!PoI}s^erv7ox8CP{zxA#6dDh+UajUtm>%7kM*!++G|2WTi zBF*+1EEifMv|z!4?D{Q z=}AXAU@sCZ;D@Tu7q>|ce^rkNKbz-2Fhn1&!WyPui_j8dz)z;$+y{6Ze7GMTx41^#*ovfp3k`YXEr^Leu5B8DkO*5iAI#oi&r#_Da3`x42^ zU3_p`gn&g{jbZvq@((>;qGGk(^!PTD9SP=C!Z~~-%F2k_D)``Q1m(C*`eM6cd3mn) zdM#GlNKAr!4Ig=n7o~Xomn#v{a*>w_MzMOPybQ)-f9%$~8mG5gEYmQ3V;sVS2!V65 zctbK?HqwIdW(5xb{+iZb*82Cx7ABK0%|($ZL{3*Ee5j-$aNkBSc<9kt##}AxFOR*O33XEo}sy zfBkXV^qe*SCs$bRdeZzKS{ff|{!fwewIjdo-WMkJ>uy%9S@5sB4@eko{dM~m-Mfx?edyell`B^XK<(cf3cOm2aNkdH>SUp*T7J-rAfR zj>k%>fJdq1T(JIZN{iDqJb!-YnC8~Rvcd1m6mMr`EhSCW6?*k<`E~yqW#6rfmx|mD z;?DkBOSlnhmX+}IhjKeNhD#W^kwx9cPe0TKf=TaGW?+Wcy^(g)H`!<#MmitHfou3suFpZQA_N3HQb9<$(hRi=T z3QwKwmdGBdA8EUov~JCgojXq)ev-g?aKbY7*FD~lSX)-~*&M9t8F35~l?wayEbsG) zeDzS`7NQa__ln97)0$Hc)rBp8@Zi*u&KFm_&Yo3vs1iVvs)}4;7#A|r`{j#tVqGjF zFDIigJ-Drwr+%(m`Sr_}BXtS#EAQszWfm63wViCacQGMh`KgbOV(aVo?!LVGc@0+f zx~lska@=4xm@M~jQP}dehcol?u7rgxT~ocT{>z&Ta$E>k-sQ%P<0nsM!G*hbi7!;P zD+l_^Zrir)$37dIwVytHx-&W2*YNrIr7u@@o&R~yvuCezv9~v6AH}RTdfm?6{*Ssu zve?(YzL#G8txPsEs^wj4ZT_Jr65G8t6&-tZ#|)f5;eU%VRpPp`^}Z*+P06XW*SEDV zeQ7V(oLYf>`q*98#Ka`muD#;I!o~EQoTKb2!OJI)e>N>XVY#Kxrm+ZqeR$}WT~d-T zIe9MnmeeVlO{d)4;@DI|+_)niQ)3E>*EQv``>~!4H!CHwZ|*jo{nlR4otbEt zbYxD%0Z|>DH{f>GO#hmv}hqT1RELXMKxXXD+GX_T$Gl z7T-TwEfN^e@C=eRpuhQkyhCN!a?T~G@dcz~dkn;a6v`*Q4UA8?J}l~ZZ@t;6`Cc09 zmRkH++1M^H{yoLSfJxGWl9IS{Z`WoIO*G6bdp6X(!t~6HPnkjY`KF*`!4)qoYkkVb z0&WF%OIV`0BN(=M7Cz-3zOtcoN$$oHKJ~h zVs)gr)j^+Gq`lc2>#TD>hplyUU{Y!QEk)rL5FsAlOFdOPAG}q?V4pvoXz*xwHZ~M4 zZg=NeEmbIMk6Lt;#t&_Dn>0SyZzPpd|Kz*FOJhaL+QE)WwVwWm?u|*u%nlv8!b_u; zv|O>BUm)#DyIb9q-DdrNW)>II*1DC2mWuAGqS;O2GuEux#JLu4%GTueg`+9FTVbm4 zs{cUImn;4n4WtH^Ea}9b=9ky+y5VqWLS2(P;rcPKTJdGiNPpdptPT0x`Y~U2l~-up4h`cvE1f z`Ez4po%=VHa^};Ck(R`K|64sl(?x2lL z=}@=L^{LmowiB6(%6HQi&Y_R4Rq#5>x+iCcS{edw`Hl2g()079U&hDS*Sc3L-A%iw z)7SKHkg-KW*V2=eDJ-da6~^AJyv)w`V)UUWU#^IY%R5X(uXEg+ye-NBQs4jkh~4L7 z4?peINX<6Wtu)NK<-5qBtb3dAdi4mMWvj~mc$m*s$P|{+xP1TUi>+r_s{vt*(jGtF z@giEHvRUcq>YdKQN2@QV1#ts^+&S8$pfOe2Kmr#Fy?_5+$!}O`kJ@)tu(;XrnaNce z-ppgiPo8!Tx^W}9l%2{AZG4ry`FF<}OtjkMarENOwQCuLjwTl3Z z^2d9E?7!=Z#!9FjSx{YeR@t*YaIN^$5r5}Bnlzb9{P8G#rONv~_T?XB+Qsopox2{Y z_*5%x;o_wbf+m|Yc5g!yM-z^~R&Ms%AFvB%Y~O!f>GC>K7%a=o(o*;S_wT1Q#wHX8 zi$0v*nA%`TPqQajnyO!vwHsNpRCK*w+LC2)Y)qZ)X+VK2v>ePtj*oU| zeYYZMtG)W-rNYwjb)50Bf`FUcSxrq@d~+h0eZ0R%qXGQBnF86^^|E>^=TYbC_pi0m zpa6`&!=H< zC)E5W{v)j}P;ndphr418q-4SB%%^@MNxNJ&OpSEKo5nNl-etd2N!7V;*B&5hobXi7 z`Nx+xwjOWz)z1C-=3S$ROngJn#4ER;YI)5v+P9r&ub!KZ+^9O`>gF`8WMKJ)lsdaI zsahOV*%dF=6M@xUOMcpgbwp}17Z?Vo}C)fm4 z1TR@ecKuLt)6I^1sLb!%HUe2^Gxj-32>|+yB>(X<3X`APhr2EJZXk;(ySlngf31J= zXr#$!q|4H@C@^3df895q={U}oeOLWH-LD?*twr)e6}M%gij#`> zd=suwlbb|pPW_LV2 z^AG9qX--YJ3QKLjOlnZQdF$gp>eD%0P^4=Tyzcj?Rf-+Y!=*ML5VZCAwk^fCLeMb% zHFm{D4~}^GA18{A#U3c}R~u{d(ab~%hjO(0W%ezHpy3I1(}rY&?kjJzEKrp5O9fuv zbI4V`>ClvSo2u)Y;$q!R6m#?ENyk#^ol>XyLf89$u@_0uk4hZ;Tqzo#^n357{3k!x z>{ajJBba}Qh+I)R9A)?UK}%81Z#HEq=Lepo-ctWD=;rIxqO6Q?acz_TmEP>KBm#L8 z#m=rlPTa04TVaYoj=Oj6)f$n6Qco!Ysz}xakK@vG!!2^{$^)Nr0|uO+Xv&V%7CJq6 z@L(`eI<*0kNR`tS|7bGDdMKf&-mzkQ$PmBn$R7(t!v0-LIH$~QIp){(rn&}*LyAj5 z>5aFh$tF(vOF}2d1{!uYoaeU&pcj_hdV!V4ow0=4wAtwmTTXp^u+kBQPGA1Buob4N z3&|^YII#8dr`h7Fu0MZMu1iqtX`A|9&EwGhW|WsQ{qWD8B)<_=vw@(2^QwWhD`zPW zKg}+~2UEDSGo|d|ItGK0why?}QOOS7mnEjz(ROhM z$19}1G#5wR0Mb%;e8{21t$nZa&)lSyeP6$_^N!urcLv&oP&pv!99!`B=(Pp_@C>V* zeeU-@o}E&J9@Wg$SP!*MF*_?O>=uDs(H_(_;OqVdzuonuocF-Ym}h-T(Pqx~^WWuU zBTenjN&sJQvU9G#USDUN=+QnSdS>e>SCvZqrO%U16?xiTnnuWx1F zME|jTEwLbxLx&DM9nCGOL6r6RCI0)02qs^+cLK6+C_ed~cn&Fw^w*r!X#$k>=ERI> z^*B**^7NpAO58~|w;oZ&vYN<^DO&eGoaQdUYTpG>VCz1?dH3$!>v#frd@5#ooub0Q zsw|VdJKvvi1M8DKx6et9@Eb-V_IY`Ez==F=gMFT-o~(|(`Sj6oY!b?`u&~(v2B4U# zKJ}8P9}R7=fJ*rK-Mc+UJ5{N#fLGal95S|m%I-8feJp94=h9t%?3dX!@7}*3n(U0p z-tXij*TYgvUi`jUH9D)?*#fA6=T=18pk(4bK|j2Gy)|w|0{D7QeNyFel{USTP}6SQ zxN+i?q(R!1wJL>Kj7U~;o9Y$W82{zZhAxghOGLFOKVM<8^}_5-te)Q0lP+$@g1&zJ zs(P%xWm@h=;8%try8&@~&+e307f-@K$f>9-I`uW?J^k@#og<{)a>=RImp@)eWT(FP z(>ekB#^i3sQE}$k{^plaQLAFrMlQcSaeVd5S>e@NFL?H_I)KUHivdGTOkVxIJ-Tu} zR^yKFBkBR1$#Jh*FX5a^>jTEhbKfU=Hgg6mt3A404(lSwNZ$ygK%L~aJ}HTmWod4% zZ71>jaZD0m?encr@BmMeEcfn+Y`d}Dl^A;K{Hz~!*VM<6l{dWJng3`638CiSzh5K_ znD>hqH^NB2XTwNyr>R+fmgLxu+UFn&YPvksjQpJ2{PDporD{nNx8*=lg38#I{y$09 zgDnlV&oB38Tbu&o)-~d%oSot&_H3JLD@AD6*!0MpbX<3ms1{(3>I<*k*-eY64lL;Dh zcN!E=SS|eLH>v4ArVczjy{E=!r(K}ux5 z4%eJi5~;ei>wL|F;^L#cY(Gn9REbbaO129Xmy`@wx0dAHyan)gow4y&&D#cb-LH`w zQvp1CSAPBey}S3=Eg8?&+ynil(7X8PH4@|Zy|kzKX5A3t1y^(cGp6sCxVmKTw>iHv z2@n04boK^IJ{F`V$rDyk3jFH0tskdyvVU{FsH6mA;YD zrhTylXy1U932$sB{Kfe#0ohW=$2C2M^rfI8uJ2JPpINtMU;drupX+u$f_jF25NK-n z_c9IH1ub!MibKpTG*5ulP6E^2ckV?X?1{{1yTiKD~^y>pf|{+ z1IN_r|MVmgnhO>dbKT08v@Efmo1ke>L!nU4Of>`=l?TqKuHLKK!51bhQStNJhZeBI zNNPYd;7q*VFeCfr(~i+>VttRSNWt*rIN|pT^+h=Vt+K=*k&@Vh9U>G z1<=pWpJ!Jo`bEkqKC6;~)|m;U;^gSAv8x~AJ5y&nj)Dc=B*@!58onDO3r(C8k}A=p z2KAdz;Z|=uxl(tjsPpGPF0P!M4Vt}x1Y_B|rl$Db{{B0enW4bf|Fr(^);!m+E#jI- zu3I@eI_d}rn$wiqL6?o`IzrFo`M7lI)_F1{?ps!h(oKqwkBX`0jBpb4Dhd^SJ_U$E z;>7w*sd+y75f>F(1uX}Dn}C2_Ng#~BZgWxnS|i)LWz^eyhGp` zOeFEJhf-W~V#JZ4uYF%PJve8w;%IerW&v6%6cE&Bf~qdY!z$90l;Bx2NsY6=h3?DU z|MIz4Yi^R`s^4sDAkoS4hYLe~x_&TRzUKFc6PDS9isg3qF6@EXC))aBc`gaW|WWG*kMs3c#dzZ@Umbdwm z2aT|6QJ_q;5Dzz2C=(#}H#FwC_BV_Vb#8tDY;*F@j-%BU$DyY&-*V*ApaeqG4?1G3 zKdldU9NEE+kUb9Wr5ro95k=y=cvB7iZlsp1tZ-9>(3VPyT(RLQL2&9Vt)a+&!ee$n zp#6^*e;*@F(d6bid|b_M2OnH-YlS|6yuAE$rf=VYV@UEVD?WR0&Eo4xmzSs7o+h;& zEOy?;ad?}xPkF`0JcpV?bdk4+47`WqfFHlo~h?x+xl-9N;^%6^WzOpFyAsI1&yUN^G;>t9ciS7b!%HZkJLQz8Q4(lRJZEf(eEGm zTUr};yNwRCr|Q_0oX%8%CHQ^odWo18!(e^D5k?AWICS&ZhvX6ls>vj($=f>ax5ON9g!7N>lItmO{>+8^1@kU03s5N{+iaITIYJ4wUG@!-w%}NY1~< zNAIA{NbEYdGO4@R#m}$T;wPucr@c}%(04Jv14VanXdriL32gAXcP#0Nj}$0#|Mc*{ zQ%Aw6!s5IuIpsgSSN*oX2ITaCl2dB&8%)x#`P}kZADTbaI0|j=B1NC+uY1>@pB5BJ z0JDtLWW)@ipFy|4I>o?=EkAoY!h>`*Qa5^5RYhL&n7+1oH?zzBKNylRE4lyED*xV-jjs z?T(ftZx%m%Mk6WW^V+6>WTtV#Jw=-jt&b*M?2bJT4*hNay{k@j2_RSrbNdY<+i-T1 z(~0FQ8HbT>d88R@-Zj0CJ^1AGI+v!rqu(BT=N@_(UEJ4r|Lmt7jrlg!t=@h6|A&i8 z9$kh|12_Hr(^zq&Lh3NVvu$Tv{T~+>Z*~GxCfleKdAuiD%rRIE8jS`Go&?}=a8_o! zTT8`aQ5NT`OMYg+hwaJ(flZ+xmA!wwfTs^U{(;+ms#yzqdLZQh;qJ7#e^+~YcG&Uf zMuF~zpahB@kl!NVUHx0vRA12*V?g^oK_MXY!@#3UNW_ri%s}iSz>_0aoNx1%*(ITR zMjH7B(4GPHX8Y-roWc7?p;edlT>n`<$Vvqkk7ZJJ$Uw8*~74qy8)p z(zL)n2axmqe6iFv;8pPhw-39!KMg#-y1DvUw8e{cfvSK4q0s4>czKs^@6nj^~4 z%;|wN>TEANw+(>83F(8#f()mIr5&^PtVp+vEpO4R7A98~UWO_ltv9a%;P$KUF zLs+0&QNsoL@*7aktJ742+|%}KPs-L?;P3boATy)wW~toi0;xY+TFBk;spA{Nmaj9~ zj3nvD$4RuDeX)o*g1dnMI`&_`|6`y%hN5@RuWr?P-y;gvcAoOzK9t1zjXhCttaUH= zrJ^iB@uL-^pBVSPS1QV0U(9AHiHFZAK^S*(GL6aJUS5M4$)~$tB)g@R5dzhP%Sdnx6Z58LesrA65>z4)j#=Zl3Gy!cF?d-&N6=oz!Z6-%!}lDKmhd-g6Tr+9Zue1z=<$H1v4?L!~hXQEk6vokqJ zE?)EK%@i+!TsnOC@imHp0l((sUgy(KCssj0U#;%Ab*;*2UTZARO)Y9!yPw9?@KDhB z>eQL0hLNv1Ysue0_a>j7P(s@sh%A5BzSQ#Wapbz4XXDfc*17d~SC=KA;%nyu$}=<3 zmL)pd7w+Zb6aToc$;T6Q6W+xdDEp6Zef;?G@zaOvV1uc*w&x{f-@f6OFJbvJA$IijYp+qurQrL#}kGbC9l8aJ!g zpHD#>o{VoF9*$h;D`O%c%`muv$M1i3ZX0Y4B#GL2@O&}L-~H!W)RZ}X`gC_o&#jHc zpymPtKYT;&lGU(xRa{(rs^u{a(i0!NM_+$QqU{fv=pDm`KRJLd&VWb=5*g9aB7t6S zUw!l)kq5w1@~t@nS`l_uGMa7LJywaAjrh+4oIcQ?_Y`Z-QR@PpE};sPloY>#{sY`= z1~u-{=bJqv_hSP2$dVB%&)nC54OX6m<|bI_%sJT1q;4snmP4DKLf<}?#v}a!{QmK< zAFsBeCJ6smw|1_^?wB=9sf?`0H*(6);b0pn+f45sl!~k@X9%%Suygg20rk|FfFH7k z4t8iaOeKF}4T1+VAePD7iwglEp>;rZ2JK|~<9Rvf$hi+T_3T!ceCHo@bH|_GKh?42 zjD3Mi_(FRGnmSoqpngEl9BpJMxqhYmq3N1OFl5ZmDI{%55Hv2hg^g`pgfK7iVN;4ufG2?KImnvwo6io9(BSkg1YQ)sj$; zh6T$}#n5m#e|9IgW?b-!`fOEv?!n?40Q5rZJbysPd?@@n^f;!KmWoK$jFq3?CCUo8 z%D>+KDl~rHKo;+INWFXa?)VQ*BI;MNp)1(go1L1rB{h3LY^$U8eDFv^=e>yO9AdGn$&6O#LXdUky{C zZrdK+`Ob20$4Acw`_C5^_M65LY-eAZp841pjXHZrnYA=nXnyx0@xyae;>g$?LQ}vg3t#XiDd97q1^-4}WC<47pN>@y(tjodqRm$^SV{O$(V>Gn^ zf|(%su0ykN`rA}{18kl2=7GS|2$*ns%E>KyG*&j{JK1~eOKs2QeU_G$V8PPQ(<7?= z_bTVTagA}_hwtYxS{^wA|O)o&!bamdmd_xLV19 z5ADf-u>DaC>i6yaoJ*~(2T$J3QNw@=ypp{AP3z+%NJX^C4myyYx2__Uh;M%CM_PM0 zfL2m+76{4nN0p-4P-(a(*yn&*Xu})K54&Tqu`axJ`!!8wPQmG}_gB_Jm}S6bv(nMs zB!}@c1a~^D;eRrbOt3iW3uQH$oN6z-1iem6J8R?4@gdlp9n6MJ{Zk(wL^d|Qf|9q@ z1NQ%~tkHM>-5i@Y9ak~Zt1V%T=RMH|L-Zc7H;)=N$Hj} z`Ed8#HD|axcPD0~sWv1Y-AXXLqhB?^@~l_uN%5?oSQg+u_cz`@?Y>0KUqJty)v<$H zco*P5BjS_nfAi1s*Wze^`K!~RWvc(?pNc=2zaE2Ig3=U!-S^ikkzM}NhMoODA76pX zVOuiq!tbDT2P^-(`{6g+l#)v|g$t&X=}4;85W~R=eruZFCu&&b!tbGt#C^P0xRCn47<8Ij@c-#}|HC93c_B67rpxgm-l7^fF>1^>d_7kcQj%LsWw?dFJ)Nz2b zlxaN0-`YGaeKCX6y0I;0;;t(6@H zlg^b~fKOr|mROcUH#7IsTTjchxDTZlQU@|aQHSY+!x4!wHFIGIX$H_tAJ?ak=cnuF zbFhAt1S6)!zjyN7L^MkseWyruSmkfDkyPC-OJ>j=2L{Y8`#&(?e@Sahs2~nJVn@)L zmBkTLp$Jm&di$7)!G>UXpfnKa4#0P)Lf|U~1z;Bp57CSRj6$gn8{}qw!~`g)*~sD4 zOo(vCzrZ5`SQKz*fo8B;<1`1xbfge1$O=c~Zs9H5a)|7N%Kg8lLAWn?df=@U-QPM5 zQQgep0X_j7R{+0HKcogypGc~-NRmiE$c8h{OxMZOadP%W{E2lBA_(&C|N5(tI_Wx2 zYao}hAuH}vt_48?`QJ73qs-DMbakR>s8J|H7cY52gf1HC11DwB%@}4$5&&@jcUp2z ztOxC&ag(S9`c9x8fmjn~vE03(MoWf`Lyh$GnXG$2wUg|va+5j`Lq`xletHeucJjK! zKBlD-DVMs9geW~wrTw^elS^RP<)q5HzC`CRtNYGjNCSYd%waz{0qTHm@4O!v84TLU z8bk~n6)Jy~0$7GbsP-3pHzuBJ}Os3pMD28 zc()bapX~sHx;XPh0Tn7%S@Kel3v1y0LlhX);gv8_5x`ydF@4_NwlFuZ{C6!1pk~}) z+SCfv0+nYTSS8nJj#L_RG}F`5fx!z1pmhS%;2C0hjNyOaMgJt$o4tbiJkyD&0wHCU z23ZD)W5m2`b^v@z#enn5%F5_w*9B=pIN%sO0&bO72mv&Z)luCfN^Jan6NP?+;-8Hq z1&BIu5IA46EYR$JmUf!Xk_`4vP*s@@$mZD)G2=s{m#Ev83*m^XaqT>+o}=Rgq0nwp z8B-ud$vt64H+xPW-$t9goq1{X$o=%yYpwHXE&OUye%bJx$ z%2r~TB}h}G10Yh%lEb9zH0k@_-Zo1MHXpi)`2T$(2u(|fvgz?jZRU-op+dOJ|H~z9 zTFIsR!g8&KMn{ouRR_^YB&Grc(futZ?m)ayh*#~bW zFbE1DxPAgJ$of!(*oU`k^%}vxWDC;L#1vVG-~$gp()e*CmL7v(sdK0J2-a zbDG=()va<}Izmus*>wd7^Z3u#rvf|E_6tPHJ+exU+WAovP8D1H=)>?9v1>1hUCeU#}A8@pud(7(&Wj8 z6)|_@iSX+fxfyO9kh3?2zaBS6&k?2#|D_&#CEU)Z)2y5(9}f#3cZs_iA}>fJ`w}|N zlbhoP2lmJbwi{QdTqMv5+MFW7w4AFsc@ggxunZrqLHS?UG=Fn@8-x@5&kiq`$~Z+# zu1yG$=Zg(D5<8hB>>^(#n5zK!Q@ee|K|jY}9Ibd&4B-@B=7HRb$3hoh-jUPXp9gO7#{gQ>L#qYT8h$6{LJ1P_J&;rKdE*fmMwq_#As;$Rfvfj)d>=10)h zcgkbR3MLy0xV{X@*EynmoE%od5-yg;2=Jmf9X_I~LwFZ9vSUL`2q7hoI@U57a(!)8+^fz_`|G#+Fj!zC;WArS2Im@LS2l+k>ET4Xc8D1tgAZm`{)Tu~lR znBFEsKSgYJsT-p>FU8SH{7nhyKAR1X2!ekZ|34YCDsz|{ZqX7a9egz;9J$`c2GFE< zm5o?QNyMI|AsqH4f4PVU`cBCb-_PH73a0%|r=Rj%PFx8Q6;^Tz;Pz9pyd{RR9k)p4 zRL-)lO4gb4m$s4sc;FEiv$Wd~?GK!cb;Q26ok|M6UC4keusI|x0_HTOPC0G(9*qzvI&K|YYWWqiHc2@ zG(-l#;6Cx1@T88POYNP_$dIGkn{Ml9Ln&vP6*;%*QSI(==lCBVY2`+S?D6BUDoYyKN~8zi3_zii+J+Una)Joi zOq@`y8}~_r5($6JDwMOgoG_-e7QPZDLY4qopp+y*dJ}Cn{IFV2s_YBAcvbMf+Xx|g&>U_M;VaRN=)9USs zr@)bAVgfOH?iD`Py2_3#fmD!MG!{UTK(38q>SkWEZ?***=sa#Dt*-pM_Uj^Ts&OkA z)nDM_*el0o=dhCBR*BLq!t6a?HYOx>Y`HjC!?z`88Q*4w6U#2X9F#fJt`h$*FtKHa z{4tkv6Zb5=T3peX(D!(J!&aV&h{;qV8#onsicFUaApoclQyGK~5{)pulUyMyC<^%r zh36i_e>;gzk2nQ2u!KNAH5M=;bCqvP0IlJB(HwGmYHIINmmpXZUP7?9Bv&+ADcgJBKLD!30=|=vmjN=8DXa@ofTT7B36|c15cEx_rfpj=D)5fhOArnb$1BI${N7 za?7rl`i?GH*p*zOZX}3Vx<~+W$T{r&+6|X06GuZa`K8B=H)jf0%C6AaAE4wp^mW;y z8WmT+Yhu#Ed>CMW&>U0QvpQU{Z<&m(=bHoz$X0_5A@?R7y4ml=`L4RP4sVjvS}h!ExER>_L60} ziXmrS>Dw4VcCSyuRD6v}in6xDXqBC)%ec0{UitzA8gv7n*;lCgAFvbXxDi!y&7yXz zy0T2jdvTI@L7DUg|F;PSn-^ASEdWXgJ-c(2A@1XaWtfU>;;x$k4SXGS1acIe6%Gez zFPO-ZkFi)3a&dtUfK8J9XqaHJq2h0*4Jw_!II3s)X>hLYQ4`_x~1!Nora zxy91AgRct8u!KK+W#5QON;|}|#T>6Ydq`Y>4-q{<;0Y!?J#vg_BQ|>(sNF8eG=erN zSy0OFF;F=>Tp*rwVes5DXi$KX<>+cTDWA%TdO0|}G`J?CKxaYPe_4zC^M{%nFENM0 z<&b(r07$Se8V2@LQUXr0DF`(}D${l1>Q#ySWqSm!hHSAn9vAH>8q*TctaF>TEg$ln zdC@SsRA-AEbMF(2x+UffMnQCD>;>SRfa@B3zGVF1r4Y=n}#MnzyPGT>?J}!3Y$pp zdhGi|0nN{S+MDcq{=9Cci}^B_H`g9MT((@gpef3>qn5crtRf3V0Z?Bvaz*M*BeA$a z!-@fOtah1sOWfc=Ma;>IGM=$$)HXIR+yvGct3MVBN0&SMAeS|d@=fSw;0k^ zn$FI?K|#mz#1H8^c01&S)_Na0MfQ!LgBT~AB0{eQ45TSblNXd)RKrg*u!*}3jNO&| zx%e>D6yq?KJ{n~f7dB^41!8-Ms34G(_51W14?ciy;6go$UiY^v565^ucb`5===k>S zW~oAJVdF9^h6cDx6acASgxp0QFCteYgm85Xf$Z3bY1p`={VAkl(`sR#ufmI%0_8a% z@F7>I40A(GIByc%LXzxPm>1J<+vAuQlBvQ(i3pAum>fuJnDo!eY8SdtDfM@9}<@A&_(1!2_V4 zz!@g`ob%9OJ;g}Jr`vb4VZ37!Xw1&>WI1hpPTH`U9~>{qrPF^CFMbMv#7iAJSwXj^ z(2A4he$Ni?S&GHtupFMmgmJ@bbvef@CiZYhI2u}VGHjLAvTiTx@Gjr)@}_pq!GQ_$ z6OTj_r~4~{Ig<@-Aggnt-iI2uwQ zIJS1q+&Pd6p|{~q63qno!NHc+^z=Wi^xE2ZZN0$!zHiGHyU-k^Wdw=w&uev2G(poC z3{arMNrT6V2oVItGmBRV5Obmc0uVNr2mdky8W=nRZb7~B>GD9jkpQ9(( z%HOU6n0yerpu(HSeW%xK&=o6LMY$?UB)TGd-iGxj)fQ|J3?hr2gb%a{f&v1EIHTvV zl{6HpfjH!JcgY}HZ2~yPKn&u47zk2H2^zF-l>Hd_A=<7I0LSIo{zDiHx#Hk5@I7h- z7eNAyTOmOMJr{ZiJgKdbTimP%4M0Z(Cw9!aM6{zpX@Pr+Ik6!Jw{L;ihsl@Z7C*|5 z+Jmww5caCKiMz;SD9}0X(p=IC@EUg;Lc$8s_F(83g}6cUhbDRvqZen75M-J-4_5{h zN?9V5b^+9sFF{Ez?|CSMhr&CQ7cT_A+8lbIzhq*AAZlQq5-fi}I90sAg;FN?E-nNr z;lX9{Nf+Vvp}N&`F(F0P0S}mTLEr!rASS(D6$>&B0Y-sSzD&s3H&%Lj$n;K@6MOVI znxS@~kWb-MLkM)Tv|zCpE~F$xYr$d<7}EG}SuG<74Mr5~kga(+&_`8JMnN)O9P-*q zn$U6S!n8D+AECoKYxsab>SlV#RuUkR)Jl2J9dY<2d z*h2C0=l3^IYhNsAu^W`J=++4@Zaf!npI6*?uv}lCV~tBRVjA4`*pVXAIp|$BJ~^qw z1RCJ-?6L*c+}#Ru88&zH^z@hol>CT?bd0&VADn+&Db*t>P_L#(HMEzJ>$PR2v+qKJ*Q=>h z>eVn2svbhIf16einX?l|OYO?IjZbH%C=w%r;tL8CDR_uDmuFFMRH8~1BZW&e)DIOJ z(xf~kht_7M4;LxmRJZ#>wS z7aY--qFbfL9}Jswl=X154(pZ%PvhXgCmf#;3icGi+Vw=igp%j%6vfL(El-mGl? z+m1ee^R!&JDtqzvio`$Qc!gOh?7$O=i8VHQa1(4jOGb|88UXjwceW;VYwy77oSNR>r>V zkkvZilBa^)k~jL0NK~MSYIDl@aGJOtNeaF`5?nbj>Mg>ZoD^?T^}h*6Sk;Lb3Wh?- zr*b2xK^DvccqHaF8;I; zN>!F{j1XH?o2kpu)Z?Vy@vx%U5{bCPTGkmWTcXs$U?V=TXaNbcj22FXYY0o*fcm6J8TLoX3K~TVWqG{>nd-^vMN|-{oFe79t?Dv_~dR4 zzOJ>fX%42ckd1-hP_@Ndht~QKtHNuODHO=49!UkLjRh~Xogkl%&rQWL@(~~yPOx5#yD%H z0oo#`+v4zvLPH$_6{xKM!>GjOj6=BCVsD-yEJ{mfH_++RmJr*NGRsKSo<{t1$&5Odk>&-Dh$~_+FMUavyzKn@9mP znRnUH&01NuIabD_zQfB5=C)Nh5f(5tmv%NpIL~5x^ASZ=Evr24qs}3z~n_hb?<9I zz^sD<-aEWRqNOoX+2b*0*itZb4%>vd9xF9uu6;XQ%)Nf$!ih^~>a`)&+nnb;2XH}L z4+s_-QQNEaIYJg$De;DcmIiwx&6txy_l2|aFc4&J<}e0s*67M`kPM`1@{ty!V4Tmk z%yhOzDY&B)@4PgmzQcc=BxLodL$JW2;cz(X0oYC?iqeAOYOT!E00rr`csL{z9U;9* z3XA)@&j7X|{NZ2((VE%mzixf~1?2tvo+5a__y|n_xQG>{Ay`^P4B8DD=NCaq@%(au ziW2q>FObXc!0;4XKm{vz#x#M8l|s0Gc#np2*jw#TY4%-dvr-7uhZYm>)xzPMAw%Oz znitF>z!)lP<}eM8R^~%Iq*)AoVrluOh`{4*uFe?uF0XN=N;Nxmcsd-8;_7nbiGi8v z2&$u{rS(|TpZma>zv3nnP7SR`-o{BST=blE=B6jSVRUbg)!l{5?&anfN67iI>sBu#E;^!ErD57#RB5vb0phG1 zvF#3`olp|!(wbK)RWGCftiVKEe+95{=xrU21vU~A4-?1|&G!_^UL4Fzt87mZ0X(U) zX=0J~opiVd;ox3a79}6Pd1C;l0Wa2sBb@7qKs9XMzK~Vsj7Rlq(h>0e5I!hPE`Y6l zDZI3}d&v+|-yOn)vNt@34FkgIKi_3Ebdn$V&25W|(=x01QFYCkD`s%a4=(6T-?6y3 zRisIcze^O=#7wV8k`PSw;ysem3P3@4IcP(fmY_iz>uZNDTByTh0YUhJ)_G+fS%LFX zb96X&0iy*d`AHoqmo7kj_GQ8eA5RhMDkvV(fG-*ByT0_N7mXm8!+q(1X3~Jr`ERuy zoy{O%AI_Db@+=QVib!IuoQ^+5I>qzRBFMT%o130+YIOE;Z6;u;2jl4hrqms_H4aPE zbT*UFmz&K42hTrm1IOp(JglY(P`#?EV7ma6k?NaYL%a0UxrRONP`e z3pnntOtJ+|QR9=nxT1FfY)StcRBgAKZikgh1=p%6k#5fg^p+#eP(2tBL$n(3sNZ55 zz%hsn4=eQ-X)6+C5zPJa_?=<+28u4HA;oi?tlAT0jtW^hoEC!bB7|4g0=&d&8%V6CUZ~sn_DH}NVjFml{^;u& zhQ9y~A47$B@~;1TBDk4DK}AQN^M$Z9J8vLjV5@^}nbKat2(LpT<^l}70x!!vUv;>%n!6AIlm&!;_-&mF2;YG=K{lrIGTOQ-(}Mw) z&_PH!SL51YeiUB9uM7gdd0Cg)3xL!2Y;Sl$P=Nat$Rf6vG-iSX-pxpd;yncB(C5eo z-W~rMCE5XTi;C^99D=d~j3W)yF0dRkb0r?g)L{(}XXqTHk6-0#gOY@b4Lm{tB|t4M zZL2U)9F&Ofc|gbAMl+VfLkT@oCXy)hoCUOIu9!g0O!2%fA#gR7q7Vz;6Zsp(QAlUY z&YDp6^3#k_={`AE0N_BRy50+I4s}72L_RgCgKCC6MClnEEl_k0^MtGnH(=^IIRk7` zDBvat{`w9j5n_A5O}LKuDWuuJ?+|bY`yPTcLp8@@f`n?L7ak2|HJ$uAGO1%ysZtlx z9qNQ1RFqjVpnMFRE;e^(*b@1OO)(OSkgexyTO=L$DWdlnu8G!l31{dGxjbu8wau=y zI#b_)m==X%i$&Z|lMKRv=Ncwv(2HIjE9Vll3pBJ|oae^?; zVa8B8CiaGooB74V=|u2OCFH<_Vz4YCLvHhHVd&XHjY>4)(;l+y(K=I~h8EhFN5lul zaW_!tkexxG98%$AF)RVc2c^kcf5{L(VzX;ux_P6Cz|CTSH3B6k>M3wG9)p#np!|Lk z>0ec?7QQ8YMYNtYkS+-vEePl~6<8Lclf)X+n*gw2QJZ;UL`;PIOQ{TsjS;#UF7R9} zJO@=13z9Bh6-#TYi0J=}$#f`@Y@zgx?&Fzab{}k|>Tq;5^w#5m$1E8RKN5&YNn3A< z?ndXpGe8E3zyXAYu>ecHl<9alD(k1GPQ>fgtEG7In9ScpuRPNNc+UIC9JYtvl8M#f z?q~SGgb3r-@Iwd#Q}NdNe`PW(Gi?;07_ifP#kHZp%gpE4iaQV(G_7x5sy&|t77e*s z3`wN{HwAEGCR5b$8tjZY1Iy7K9qgMd z5fSs27kjUS@zE(Fn$Cda2Jkd0(DbMJps7*jR$%!;B9f&1Z^8icI8#mmU!x=1Ic!-i z>FW}}ALil)fXjUc-xqi@9{7@eCfgN87$DAu-wytqQrRml&8tEm=BTeRG0{jrq}B%; z)a?a>2nZmn+Q3|zwno@u`Je_exhCLY=tF`dg>YTj?yLE)zU770ylcu~DHtR`@K{`; zP({qdb10@>T4zxGAMmPQ2sIouf^-B=qyUL*hiU-p2ObAs_yA9#YKbK7aRD!kxdEnm2}l>KGoFI4VU98=Pl7)xK?^tH;^&QmJ;Ykbc0F42XD@s!_V?3hF zVnlH?<0S-;u--f1$TUj(c@@+I)_mJxQK}aaBNPHWh?f*Oo+9woqEtvZfOG|#O3wHt z%Jf~l4yRg}m_e^9|2rdx>dh?B%crJ>0C^qme zmDSB4ISu79&sh%RF#S4eyYk^P0_gaTm!8a=)we>0f zRppVjy|+CWu&ntqDGzZLUZYC4#Y&SZt)Tp2k$)4vN|w#Si3Q*dJ9-8I>>xj^;cJ&R zXj;&n0_yVwggulc5XRt&oAY|&SEnYZJEaoZ8AujCqz0|n0pn^q`$De-7zi;2ii#!! zNR1MF8wya`I8=)R9R?&@=QY1P7Rgz-QHWhGC_t*bjG{(mZFry8BcXaVU>IkL#z_%<{~is%L^U>Lju zl7h(9KT`!Y2P}pXgy<21321}*Lup~)z`ap z=~>iIJvUcLESOe9SoA#zFkMaNbeAxkH{?l3mDm{I`)BmMDq;mfsDNugTFv3l#9pY; zmAXqN7%PB4LJH3bK4_;}_|ZW~C=Q!19LC7NqX0I=hfg|3T!5 zXceA_2kE8`jP37?wH*{3h3;PyUX#Hd@-73W!HPjaxAUgwmnxR%-tf2D95IHOwgw)? zi9wAEA5b3#@RdqXQ6h+8?FJBg_&2o=O^Y2MVxsBNQm7{bf)A0ay`7(HpedV_CQ>7{ z2p9ZT`wqxifR1=DFRt7|Tbd4PkSKrx6c4x0RouWR5E;;WMLjp{kzXRXN~G0lhQkM#Zwl`^vvB|~Z(GLusZ5geb+kA*is?8`wEcsQg{OD1R2)dj8nR43V?{s$wq_u{CfI^dhA4V^AgpgIPKY%aQF}SI|aJ zh@VF6zKklsXUHO_pjx1cqEc3*W0B^PfS_cv8^8sxy26t&fO1i72o5?#jV$=+g)t7` ztRAmN3c0Gf1vv?PgL`w545N32*8V2RjLc7@4q5M@2)*rol4 zz5K!Epm4te=v)u6i^`ve>$mpEb0YKqr}%;g;t>k+1O1AS&f7|$pO?hS)dC@1Pd(-e z+CuvR39%%7E$S)KznIr!I^jj{9JHJNZ1!^mYT-FFU|h&3$V7HaOk_6@xGwqafsn0S zi$dL%@*sd_w>}eqxQ>T^B!fqA;C{OVJTl=7f9-XF-z^X&Avk#=Suz1<9w!ew4GZB; zU#rS^6agv44{-%vTjywo_drjBD9A3dD}kcUiz-U}A_mGKIY_IJBI0Q%Q1vmDfT)#k z)P`dR$ie_V075zE(@{HVk zax47Zs<`{Jb@Srhgk-V;@`26Nd`$(0ep!a%49q-#d#DfQlEBk1x*D$*5n02 z!r>NCUYMsac*)-V2ENG$|539n?W)6iQ|fe^3CoFvlBK@BdV>OPl2LYSSct+Woy)5l z1OLX+``|#YO0qF?@0D;1Chhec>{EXO6V><8TOc`Jr~eX)ddiyus_IWC>MJF@RyI6TQGr1rfa1s@#X>#?7|`2sfsjn;ktC_yT)e0LyRwi(pah%-lHk-nI=IY-=WE>U^fYhp zYj>wIm~e0&FAnpu{@{xQO3jBYVkPONXwB6;On(KA9_D)(Cl5=DjDCgz)haQd@1E+V z;0&l{;YmJ7+{19$UqUg#m#J7uaHo1zYOrvCI&5S~Zjd!Ja!C|TnN^LR@POo;pr|R( z7GKKJ(FoY%{2+`3UV_Y@=5XuXgQRF1)hTt~93B@J)qwTxhIt{3#5a>-%Q8(r4zAoF;s0_$klr}X6W<<6Mxv;!!^r}>bP*X% zzxu^=fB%<}@;a}K<7np1F|8ojH6GO~#d$C{quPaxgo%>MmxdG$k_LlC8=*EK$OG0; z$ApV}^4Ma36h7NS<7v}|8V>knz zSmV9dbxFul7}e;xV82A+?Gr;U^EtWFk>#TO_{s#T3$Oi(0Ye6H;eym=%%Ic^u0U=f z*cP|leHM^Mg9g@kk(j4@L}KW$;LB?LY78Dq+G?-Dk&RJfC^h^r9|ElL;P7&a+N#N% z0WzH0^rv9&CY8_z@|_V?Wzt193=@mg3UzQ_+odMjtwLGxkEgvQ%ijSn^~%GxI#b3~VqgE!^nWfc&*-)CHi zm0r#?@KZVkjt(@Z5C*n#gg7I^q{2|ANOn+_;57;i^wmjp zti^j<=|~h5wNd1oyqv-qxK~$guY%62S6nRQ-gMy>aL@iPSXhS+CCnq7!ab!5x=a;? z0T(jZjYJy7mf(ru<8-X@=kV}5r@#Ic2R|-Rp$!tsdNf56eCh* zuUyflr{DYJGL^&QN6~T&Oc4J;I@o{YAz(gn)fmq`-qsi$wQ4Mr8lNJWJX~0m=pvS- zASo$~YD5v;+|q|s88nm!0Bpo9hiaCW-AeNh$B3nd3FbdX62|2Ax=^}-vtS=3Y1!Cm~O_W~L)J;K=oDeeVu*G4pDy2g2 zCu)090DN|lOkRErZo#Ad>#3Qahy_S;T~?!{}%X&mVAo1 zU7l)uMiRSm^qQI+#bJ7y8!2?H5PH-Y4kEb^szQpT=AlGa#lPmF;}A-XJTgP^9|MF` zsKRg%S=3i7D>)hLIWe20%resZkoNkJl3oV4{S@;RVhUKtJ#P3KY4>Og6W*JXi()^C z&u%i@1rI6Vim*sX zYfUctCX@Kzr=v$!Ox#V&SiG((2{J@gc?ul*yIf`=;D-B;Wl{FcxNwn-0`C1i7z>YV zK?H-ZF%;)D$%c;~L0g5w1KLz@LRPPfGZ)h-P-y4S-u)zMe#85K=21xuzqa%Y3RI)B%uJ?vIJQ0KPV5>{XZ!0 ze^B24puGP9;8NlJ`E|qf6hE|%lt8<&~==dDx*`68fSb_&z z=iq&*3$wZ0x;$E(DN$LGUcyF@!XcAs)6)Rb<~ULig!vGLDzan-l2+qD;fual>$jJw zT4^w0JF8+Ng}N3cy;n9XZ48wv?_efMt(4;y1;vt*c9zHoHh!|kl-J+6?8u~~Mwm&H zAsmA<4M%f?@m)d=ZkrdFzQTEMpK5#$WUO>svF}QiUAl6-^1-;rz~tZp6x*29<75u1pu^3Plve zcMR(D?hnboZE(3{_D5X__I4_#D)Cc@WZ-07+`T(}UAFj&j-TaS7s*Nn98SwrPAhLs zc2=4Ej3`L2dw1apoDw$Qd~2{_Gy*%eel9R_ruUi*&beWFbQt`L|#{dhG z_InVv@de9R%=?jO1F>HpNgpjVoV2{@+WPrj>FA3$V|qGr7Zu6Q6!B(xv8ES}3#C)^ zlF8{*0|W#1;yMuzStHyW$oUZ)&YMC0=&;5UY39{eG?Jh94Cy=h%@BCQoGS6{atC1tf@%fH@ z5`vn{IIW~AsIpS}?VQ`D%hvYk+tqCvv68XvEfU`Ai(`w9uL;5Z1EtJ@4l-5qO43Vt zA-NW``W(a#ZKM59E}w#!5~wV8Yno)L{q%c(d#ETD((_f^pDrFN z8=snbEiv0Q-2EUzQ~!mOLvMn8i;N$vO2m1|0^BdVJf`1vjMeoIjy*M}D#Y`rp@-XO zQ=GDv7H!a?fLI7p+Yh~}W`BC_>#a}1+UOh}H5$a8vt($rs{Kp=#Nw^Im?%DVl{eR;}oKF?#D>DiGp$Xz=>!oXa$8O2;`63m{!J1miL;ANr`O%(~5*0CTep6EN{BE_^KK@2@9{7BksNLpLZ@1Z$HIujuIlMWg}D8Bjb90go3GqnIl&dsde(G-@v@`A!;Y)nvj=@K!b9P<^L?C?Hj0bq-p>~y$DR%kfpfP|u zn^BhaVe%~;vuX3|^K4|hmT7aJ_?4;b0)ez7XY%2?;Mc9E&hX%|o|JK#Mt{Cs6`P6| z$$)cCdG1xrTr2K&X1?|YD57n_)sNn^_m_)0wN-x`)F*sI$8vt1y1jWrdSfW$yVz{+ zNhsP1&!HlcNc#Zs3VA^Bf<-zb9q@-IgQZ6;q&>cmO-xL@>alA)vtFGdW7O$5t;Xm3 z1k<)C$VJD+_3^P&v@H6$@ImzBu2cgR6JVN=Ptz3#P_S@Na>BKamR9aa3zROI9QWH9 zdwxvRfkoZ!`xvcB|HJz4YYijM^O6s8rwIJ)?QMhuZR)1Q?XNo~JY1KV%7MddxW}qvigPEN?6%siQv)H22@Tl@u~U}xi9UfuC`yeR!ShDg=v zYRP<-u&N5o8?F<6*YSJ({zj~M+oOIf!^SrOhxA{BxQ}zkyH4`Kfsp=#Tce^|TSrCn z`=8sVh&zRNEMOvKfcI*9rfg#<7$UPHW# z=D!IBWJbrc+Dvr#6-jVy2Mi4j*>{C&CJI*}JSA*WOYuR|#zwGey-6YPrs-j9-+hG} zDM+|EqHxPUbWxUhS2eKlu5x2?S9|k=GR^H;GEF^JIZa&$>)P%XU2ipOj&Fd&RTVl; zow;2!l6gHk>vqLqlwPlhc&uKyR%ra@hbi8EX1UY04bC!cv@SWTo!MdHS2FuiS$d6= z_>&jjRcreMwyRUFxXcxa8gA4a)sODBAIzbs?jxV7%_a<kmGDTviw@?v zvfDE6K;@zU^*P6Zo3}Tgbm|;r7xpSkYcbO2^2&tME?|XNq$gr*@yUf%7R}8MIT6`>_vCqlg5;99500_JB=QPHP zsu9=2?p2PM9S1N;+X#a+R(Zn)j=%C7J>(y@H;Lx$ni4nBl!!K@2CSoO3S%1HHT>^c(7-}Ibjok3=+l{O=FTHM#0RwBkU zR>Yjfrhg)Xqh%{v6G z=@xavjmy!09`;rQLq5}8URh~-)Ur9?{nUcRwu^pxt2p791z@&v+fC8S2ic|Ldu>V+ zOamygD`syrOU>OxQ3X_`#B5z#w(2fgHdlP%wNj9YKAY1L{Xo%XS^Cf0F4ozl3&**< zY}g2z%~ii#QDVe(at3ixI|&jZW3)c4U@tW!+3+^wFjtGP<65 zQ8DhC6;l+E#zqde+tk326Dhtc#X9sf-oUIBUeCS1cfz+3E4npJeo1Ed+`T0C3#3JA z&t?Y8rRD}#Nz3h?>E)mEa~+{`ckK>IU+HtxqS@+`<8O>FwSUwraG^CA8~%Q+M!oA7 z;T}@j5`FN6Au+Z`zue(WPNX!~1{G}g9bF!L@iBHnr`F%LDi=QWg}Rv%+>Xd%hO>){ z<#gHLCLk-Z>F=MqEbB{zzn42LK5D$wtBbT2=iz>!k%9iEk|4%^#KNJzrbQjsaQes#e$_wU_P;w+)y0e!*B41QZN(KV zOL}j*e;z>}*U1P%U7E}~U-X@^1c%Z1#pV=<`yRC(EKB>;`1qTm^lml4vC8}3>fM`H ztGg!@U5&TzIhM9q^g1LNqHFcW#>V@p*|Jjjtak^=41a5HHUj8EJrbK}{wOuguNt&+ zEWN^l-n;v+h8AtdU*7}z(dLOxPqf@O2H%fqJN>H;PL9CPQ;rz8*7AXfOiMV^ViZq|16?)^)U<&|FVgH`J$hC)6JLw$-n3y!T$g zna1Jsy_HWI1qhTKXG#X-)zl$fA<`Q-O-QK46G9vSKRCJkDcTO`d3ea|ciq{O{eFS! zN!z`W(uKFD(Wjd*yjegvxni#B&|`ZN+3MRyce`Wz-FIY>LOMEcHW3wa20Q3=5Zm<_ z6f&xBZuc#({(EOiE-JbYGbL!%1I{Gf9$Iv}(JD?6KNs?Jxy!miBiaLeWI{U-u zDfE%v5o8}5CM-}!->EN|{qp00;LDAM!!kqmN!yYsjL}fQl_4~Y`ekPeNyPN^?TItew(9~2_U?)k%V?d?^)nO71ER?7FA zoyLT^k}p1cznNIpJyx-qOE@Xrpe(bcbIs?BVd)9oma@>QS~!#Q60ThnYkHAcN$r-2 zPFd5Ybgp2@fID+ghn`_V=T5s-_nqOOQu{jU)Is3{K+)VUZDE-YiYM94m6`NTKlx>|o4&}#wh4mdsZnd4kZ{|_8bEde<>kN2%mrsXez_kXt`8YInByWf6{H_hx;SdLDz$nal8KI##G=kXY5l#M&aI#E z`SU#dAr>X;E31{Ckn;dU>M~huLLlDX;cuoP;px=9_lXW=nq~c?<2EdxmY)%>uF8&A?QL)?|5g-H7`V$i;`GNh=P^eAbh(x2;yW`$%S!l zI7+vJs7iC`uaR!4_nTwKgxt3tk;k2NqT1fxzA|QbUm7I3o5t#hM#+-%h8jixlwQv@ z+B@eo=tdR4f%02K!%dkI@BzSmR?y)6cpVP7Ak71<7+ zICqV`NTT;%*_mO{o|v-P#OlB@v+sk0TFWzY?s1?*>BWhbvys-t15X}yvVMxtYW`id zGgbB8zAmAB<7$qXWp?=_)$zHW73@jhnNp(rjBJ z-siAA_qlf_l5RJ~JnS?@)DE1}+2`DQ=1SFOzs8FD+(5kJ&-FldnZyzLnO~bHJ(BF3 zFZj`OD+$@wD8hdKR4iOyR-m0PNZO8cD6~|L8?JiDlH<`oweD9%*njOw*=(%b@SNd1 z6%jz5xFkJt=U&A&_PDa^$o-YX{G(ado++VN4tVY6gZXoB=aO6*YsQG)w-0Ik zO>`Ulgm5O%TtgQIHw6aQHiW5H*!Qz)3@2M2%}a;mWGKBN2nr25Jkm8>)v!(5r#1Y{ zaE(@a$&;2Vz;ia<_T=2aYQ@sZ%2|&cSLw}l()W)h&p~a{c-Ezv1(l!Wc8h1kHUkTo zp!6i|cWaSyT{4uedw0^Dp5Ar+@2B^_;ujxfC%SJ~9*+wgj2S6v;9+jR{^OnqAlIL_ z%x_)3!O)9Bx-fAdgg+2XK;Qtpm-X{N_m1KU)r9ZFk9Mt*m5Gw}wFOQ?vxUS6%c2|S zHa0ic+c*t>hpP*|k^s)J%hrz-aS`58mmiH?7-$GMnV|A;{qXYwfMO=9qsh`?&Kqa`y3n~&1T#jFCPD>Er4aY<2BRt z#}-zV;os^4sX!`BzGmOyJ;bA7bWwcB;N)MZJim*LfAn7aSjjHSK-%=)ik!V`j&x~d z8EK0~a!po1Y?XwlEpyP8_zDv?sZcyE!R|PMmoHuBDxQ1v6AYbz3k#qK-kJ=He^{sg z=4iA(R7ISMd@yiw434{&2ihZrk;q9v68v}n5IXUqRs^%GVqE^e{_`PN(9Lg&QgOHt0#A^Z+rr?Z7U{Xvj=RF&)o(8_R65k^IW-mM zyn0FzEIFCU-;h`~BR9NoI){Vndid#_58)7CmJv<*!YaGLNOaIn1oxBm6L3=95bA#U z=djdi|1`9bq9H68p94H{_geHIVP_RgY}FFTMPJ&vRZfg>S9DHa`0L=U<3VM!m2sd% zzDBEvAkm>E-Agzq+^CD!->9kx{717_Fe${-g zV&&h8p&@)7LiF7g`s&V*bqV$S-ZF>Rwj);o^Yb?V(uC}s>bw{?@a=`wy9T3@0q4_G z*<}KUuyG#+F3i=u@?-g`{gb(X&2Xnhu>JiCfN6a|!*k-mCRk3F)+bJ{?rewF8s+r; zj$*N0qdzxWI>zR{_L@Dv9LrWEeA0t(2Tr;DY;@@4r9Xo*%X8-t;_*FjH2n7UX?TgN zBH2YqTdFEtENEZ>C~HK%P8>nJ4PwAJDJg*kgJ~A{R@;TYhNu>ypN@Pj{^vn=X}Xo;{s;er}+Ow@l=h6)4H>{s;7xdVcg*v^Fuy3IE-9^sE~nW-vE$UY9CNN;ESHmo|G_>xk*d-Wvk#MFGNn&FNy-1( zX(meeKAid)#^U^i^QLR{MZ6juku9^aLwn3^oC&{(Vro~{m+Z1xHRVrF4&wgE?H6_& zkc3mJoyLd!#Fs)9x?)r#PU?sa7m9Sn;DV)}piefF)ZKHOWF~>C`ZOLsJm1^< zhR;!3;JK<2HGA`O!s1y8k)1!f2sf>D6m^F7?UeP34;QviJoVW8xIaBJ6Q|3QDB;=S zHY9Vs%;C(4U95SMTeR_~Cwb>zym-NTMNhBb#M?}(>#c=ecP_S5<>T$~x}l0(0kznD zs+IR1B0#T_Ed)=sa9~+hK0yV2qD!VA$xW*^9WijO=VPmpF-sr$F>OYXhH3mlmJ5#YWU6 z)OyoOeSt=n^4W=CRgHL|uxxY^Yqc}Q}DTANGObxfiOSV_A z_cmv&A9RFNdhFZYr2RGWLK-JAb^E6BS+gak=It*|#N8g;s4Ec%2%OubKr2(5Z`wHC zo<_@h&~00rM)KD|{_A2%Po9vEeoOci(~9eg$!Jg2juCPvVYdGfh7+IslK0@V-2R~5 zm3K6q%ej~OK@WEO$Am6l{n>^Amzkz9nN24Nky#&G$))cKefQg!F^(FQ-ju^9zaO5H znPRzXWz`+2dr8_?(0xKizvLe4$aS;U-xsOj{>6R|1+#}=kGc7bG(Hbw$tCQKx9vGr z&OoAnZ7+{jg2qs;0xizoVWK~d(|dnJEmP?fZI!w1C7GEAR1rK{Cb(ok^TSe?k40+5!lB3VBz7#TzACEb9W>yUCp%zGHcYDK zYAFn5GsVolRZ^Rx#XmnhoZ@{j^)u*9YnFj1)zr@{?nW%UGYLk505oysX_`=zP=~9? zQ`9oibA(lpYbIc$AgHo^9bKC3kE`}3M*?onmUTx0T)rG5X?m8q{l|}5cEXZ!xU}1b z&`Nq9K5MqWti8Zoi>fIzuA4r!DMo21{dKTOT7rX#{eWGc0dJop!R_7ciWk`k=!|P* zTrv4|kCaccY+OITGn$U1I6yd@=@26Y=bjpDfHhUID)NdGNJ7=}T1J@LQ)J)>gzqRS z`%rLl1WXqh_XJup(ul8VW78aO*^nPRuE>D{9*lK`n325XK_j)uQH#|4#s88 z*G6bv?y?#e`k8&JadcYzj@HgbNmUsCjdFj@V;*gMuJh{8Tie=d{_yES7?swd@LWl~ z6sKfWs&UqME8|L(S~<&9XHHsaX>3&HwN?m1Xv=#=2cd1<~;@z#1;H;~7r7k2G6N}3FI!!LSa9oWrS_|cYc?3pNJ~r>T3S}nFS~apPUOxPx}BBj zL6swdx4)&vOU~Y@TP&zQ6DC?K_M-@Gzp*;if@t%6hnX8-6inP#Q%=cK-~%xXs%W55 z1w{?$#6Ql}R7N;Ig^u?E1D#IImbd20SFw4YL&qL|=lyUur((s#N^*HDjTano3b|#R z$fNIciEbHAe@49qmd*X)N*s-m^?+H=y3M2$VSufi24M@j4QuK zu2;EBW$K9*ye*CGXhP8etzmFS%^2a9(<=imHdI+zS^WARe9)%Eg87TU^Z_=_u*zL> z@wvIm&n$z+mA}h`4T*MhjgwCOQ@86KtCpp}P`{l{K`D)U-~rj3`&d~Qn@J$QVP$-c zFMCzYnGVQVsbF8WeR=i5rjv|`IUb3AFxwF7O`BSw>Zp-?zs@qPKpbxUEm6b|Xb%K( zN6*A);c(o7m1|saCUG-aHw6kzK2uR4Lpcpf)v~reb6PJOV`+gmGF*8jQsKOueC1T0 zcnV!t^yK6u@41}YntGp^0F58?{qSMnPWNaRPne>MJj{q6BokJ`$i30zi@blXdu2ZL z(_rm|fgPG+KPGNS)MA?pW@2#v~9UWR$z^;lmmrY?80{m6`TJd`Z%d z1Csl6bk58B4dw#I>Sqj!12r?UvPNQFhZt`JPW%x40p%o%Qpj-y7u__?S3<^HirBQG zq9~`uF=3A#NlO|e~v+Sie@2Dp*0 zQ4dA~+b@}a{lSNUOz<1+dv3DjzSVvY_J+#M=}+#Pv&!axV%GmUv5yRO)9OxK%f4|j zFs$a6ocF|A2-XEgBP8L6PhZo{n7lj1dk%|jyW03%upSFrdjrr0MkiOZ8XJHy2`m&Q z+h-Ek#Y5KGcA2N{teod`k!i=x~BNpp+yx~tq#4!;wYTwjUo>{{1 zHU?2YgKjG+A_os1jQ1E?2TP1oE4kZo$|R5x1!BE}$Itmkg}lR9-o4A!_(AQlaDX+2 zUYuyf3X{Oc6r2FJ8g6f2%erws|B2cmm~hMXwALE}5%KOl6A#R)YxcSR z@+Qac4i%OxjTORfT>!{v*-K>;bvbi zeyEeM*QGiUF6T|&8vDAQtx2G4x@KXdF;>F*RMPf0^DxD; z+szXw)V1@(E14gW&JU&aSo-v%voj)6?SxVg%V$82$ApabobNdQ=9Q}& z4sTw(I1YEZ(-3~*$Il;ahtUGG4Gh$yA4YjzrZB=ny1w&@LxKSypBzIJJcE^|DaTN( z3guBRqZbL_Nkus_l5Q)7oZA)f)o^J;xPEx5*H1j^2LcS+zAHhkQpF&R#s!-Ma@^+fA2}<>}Z*?7Bu*t1wbIIlF=;(m*Cql)<<#d!9 zf`EWwBT#F8x@68BgvOC-YHBiW%=SFz@4d`PMpaD7$w7(p;br1R$Q~jw6^g`hEBFW% zk^(sj&#vRDCV^!8^7X1flc0SR7MwnL?zaOR-W~n+?OP_%Sq#kQ=}8(AB<)9=jX@d= z1Yk}+Uxt$*7h;=lZhRKh9@N%4d-o4-sN4dR327i zFVuu`x?FzryW!;c)02s=;qq5AYN53(monMPD->(lH%;gTi^ibfr6|1qTfnk_Bm6aZ$N8gR8LL@gR za(tl9(T;(j(eO3ubSXh=HG;*qmL5%#;lH+}s5|{>Rpxb_s;d0VRyJ3i3c0hr{6nml zwS!N!_kP_+lPy|phqboX`KZ9w`W*%n^qxT$wXOa<*51}8Z#T4l)ULUEELUn@{yUQL znJk;vhy?wsCT2t+WfFE3Yxu(#k=F!R!s5(x)n>7o2NDI3CK#x;H3KH5A0+2OPvf4N=9p{KZVznp1!Y<8t9?eScH>s&l zhC^HqBxGb}y(VI#>jh6V^(&mA_3ClPAo;_G7d2qG-PbNj*s^evg+qu5gn}7pl!rZ6 z+~)_Y-U#iy(M^9a=hC8&6ou-fO!swrY|2dm`)<8TMdLoolV=}{Yv<$Dp?5t4kIPx( zdno9v83Cv7<8nDDF_d+ZPM#z7;T(VV)xoAw5E&U8zQKYJhQwWp!L_41zaQa(jCz!YUlf zXVyv>dYQVFt3crt7rQR{%isq&4bTA^M_OtJ$A%Lo8uZIEp=7j zW@b7q3fH&A_VnDKYJ7giyy?Yx{MX5j%+jGw(fkttTXfep?LEv5oO%tkIDBLmY7d1h z7ByC>nIjI*Dtr5|ukFde;SM9neOpueWj=yCt2R3ks_s`i9nIw?0|%r&Ch1eq;>_;b zSha50w>HHbAl%ma`}4E)U&_+8eNKxOz#nzqavTBHsr~Swx+JxXD_raITG@Agx~+yo zNr(Z0LCJiDOn*jmR2NcmB}x?pYB$Zsw8_?o?&>>n*58mDAtWDLa@3~CKoJ@-g(F>8AB z8m>y%YCDQJJQa*BtRU3%7QhQk_&Chvso-&o3<`l^FCSYcb9Y;{|El(OnsXUYA2Jx+ zIZ{=*-dW2uVFBR9b*VfAbykiaXC5!GVpj@b)6@%;F_nZ+^~YRqJ8*NhD&$Y?A+0wC zCHEefefh-+cp?-KlfdSJDf}UE*TUl0w}R$7&@aRXaC-Y`zu$Q>rH@>%1_D#_W{bOw zuT@S}H1oZ3&mgDi`TF;N+MjE8c~otq=%N4fYHOICRV;>AJJ>Xto5`n(3356gbZ0Jv zTTA3?a#5-l3Nv@5PM@`g>I;tph$n3E-Kg1h)rHq}%w=$N)ZiXZorbgSzEF6oYP23I5YH}l{QkIZ_v*7(~5$JvHA zgwlj8+Xfg!=ogtAiZxHH#y*GH6(q+ZY8Gn*antt9@&tdcVrf(l1h$)#73CKfk;uO6|2S z#fgRKa4XN-x&8hfV!JBkxcEm`D|~Cy!!;TW35c@0QInEW8v$zzQ(N^3RaMWJxEq?K z97dT934(y{ZXcB1coiaK|C1j$M+Jzza~H<&1M4e}_oszzQVj_^lFNT0wkAJV#UMzh zYD~n03SEWFOS)zkqf3B^4 zW;Y*w7YpFfqZ*sE-Dh69wa_U3Csct+#F<+2bljtjiL_X8D;~rJr~>*lES*06;Obzd zoA_@{<@=DSVr<8#sScggxML4aTi0!#)U@jH*DXBGrZg4`8e6~`3sB`Ny17X~x7Td8 zytMpp&4GCP6>$_75JhlH*!hPAo9nn-_wttmv{eCW! zmWjHt?)Jk?_@HNk?_*r%59)r4w~)>4)`o0MepZN-POUm#7JIlwhE0P2P(D{-zWC|1yR6-mb%_wJ?!mxP zD!15HkYD?E?H1@-#)x{bAsaJKdWc0a1|^bgrt@};v{GAi4G2g8BWVVZcDj7AIZ$Tg z3XSt8x$>K1NsfC(%$xqSXc1!nv^5Hhqz?Ag>L>@B$`W?YW#LVBy!Q3EwXg$Vg;51> zLBo~9!0ATeA-8Q!`4OT}Q=tZK#pL)k;6cZTVMRPCjaaBPky)y%Q##JfJn=SB$|b+Z zVKz^sq;H8?daE_$Z~guq#eBOFwbV;Vbw4KB$J4cvq;EbP(L!iE{{*6+k@qp)t{O`W zJSO!d`~A4r0U*N%H>+1w0cXaZTc<%Of2A(rK3CG_YKvWaQ&lQQKy&ryb zVTjXBytTyN00qr4(1W1f>TG}MdY$27>w#v|(Rcb7C~Us~k&-W5c97-ERhji;o3jP9 zIY*?Nmwp|UDSO&JU`yU2xkz1HI+V(cKHV{^Rde{}%`c^Qx*LhpA`&LlW~6&Z>@Z(;*#Q=+Nr!GMR*}udj z(CT_yf2pATw5PZhc#cx@Q7Oh1mi&{im4i}GH_NQLnussJrmM8|^?d^@8VjWNOv2yd zLu*TE(oIbzeHwBM3G09Tq`wjRc4Q=1`|L4jDi0bT7}S#gBggGj`oVFodAajei!bzz zD*%iwe0d%67e2Ydr2DD=)az}@hH@$v71Aa883tft=R(#}}OkpG(=rpEEVyv>iE&0p=b! z0xHCORg|z1umbC~Y41mh4R}?OMcB7GY3F+f`CFMBxF zlbJL8TkB>mDp?lBaUtlFFAM?mm-1kl7m%dd6Vd#)Y7S{hUUC_^KAPjPdHPn7L%&3E z%BlQ!UQ5|iO+|W!pRx${%zB3Q=NFIizkH4Qe1da?qs`7OE)%dygUKu#@x;l=yI_l| zmy#Yy82lbS>K6DahyAPI&gN0cjV>GjZ*Ac0Wu@oyw1nn=P^y@yqqd1^RYGk@_8NVO z)&}drpo6tcs*EHCnSfjgm6Ol6Rvb(0m(N!b@mC=X8qFsIWOLAFUuA! z8C;Or8n4&8-y!JH41sgp0_w)KA17r#zdv*d(^wp7jS1^Y6JpiWAjCWYtq zU?%RciYJiB<{Og;;e!J^2HB;v$BziyR8dBXnJ#D^{U*}#MtPMDpD`RP75vZAc;Y2I z&)5#_JDLxO)o%H`-s0MD2&$Wme?9g@4?7{S65hoi<+AdpIL>DHYtqezHw_UMcs$f_ z4Dv=+9alR479?#24r*?&cHZ(}g`)b^>wfaty0U?Ffq~^_M;$#qt2%Br-~1Npk=qHDZ1F6wC&TN%hL`H4bR!bny%{U*^j`mW$*e+FC?aSR; zI@_x}JTQ4@3X6-|zIVxn%u1oYvVlRK$vyymuYj-tN|1aO8@jW-aY&w{@pg9I6KCL2 z(obET|Ik@MqZ+BUmk&xJA6dYX=)Dc-(M4_|<*I}FYMgZ{@B}{wdTy74O<97hZ@{Iw z&tzp478hz8boxyfS*<@E;lK4E5;Dog%1k5R=#1H`nklF!5+XA%X7%&k(6Y;{YL)wT zSZy)%qSSzF=`V9kgDtSO27DAPa7)ciL8|C{(KPnHC~Sc;g(rTBH@m1IpT995Ul3T0 z2LcojZ!s`KT>xeS!^Tyhfm8?f7zK6w#?p*(w5k3zr{m0%-4hQl(96HPay6Mz&4*3} zmKmx@u~!uX{h(GQIGz@xV~LLds|BbW(FLFur@^mGR6P*tSy^WaqZ@y8EOR#IzY8Zr zH|L*X;ADW~TwsJlMegy03I($Ux)Z!D%7a3l0*TETc)atEk^j#QF^IOh}T98cAZgf_eWtb&N_cqdVRQBN`8t{s!AljSw@)lrU$QK#H;KuVL=oirsze3xyhY5d39v(~t85FtlJmvSuQS9}VMdEe) zSm1gfY6aS!qpD#dgBL*5!MOtd;@Z`4fOaoq9zR4egg;Lt%<& zK~#5;l*RhRe4x2-3+^5YXd{57bKEweNFhoXYZ55-f=*3QIhi|Lh4>m5>p+yn_VrGy z6kBRR4x@smoj-C6jIl;w7zbK>#_r;+;kem$XyhnIbn)oWh07LFQjzUrB=ch8Mt3!( zqT+?$G09VO(buX|hkvAFrH3Xl1gX&4U<_;xzC8>>X9UWIZ;&gXTq+OZUQI@FMFa0b z*$Wy%27?TQj@330Ehg%W1OrY{4qoTt4X<-K8%_tBGKs6jM!_Hkt|tatT+IQUibFWE z`6}p7_=C#69{Peb_pT8WhRlZ#_%!IFLO<0@j+0J)PXycyUPVqK55*fw(}8ucb~J8R zi|RTCRYo7wz{Dm8S$mNXY9Dj@>|sD+@Pr~EyN|%zi5Nge3oV8KVNNnSF(ni6WDep^ z5uc1ZvHMaNRORxjm?(!UBI87@a=;7d89XK6S!F%3bz(0-M74h;)kTW`*VAfHV%FNd zc}XXWR)3hk&Yw{5rNY~+XByyer2$0ON)Bf;;p)dm@n7I!onH%jM@?`W%G{gnN-}gbLAb}Uj z%rhux%OZPMJG^V}>L5)oj9^fHBZn8pdA*cn0HI*J%Y3UtYR zs8=6VgJp(|uk*LY=LV56(RK0o$cjf39q+%mCHgut;4U6v^1bA$@Dd@DK#EXw(^FR{ z_JaMX2EyDB-5z6bORxlpJ;@B{Cz#tNRG@AyO1e7uPBOQ=4_zoRN>T1csn4KfH08iW zPtsn8g^nVId^g6M1gdcPe1v$8Mv%}*Nz^y2Abs(~7c9JSijgFo0^V>$FhW*p`A<}a zmv^;?(FIsz=@gYADL`M%hbUj1a4@+i9aN;j2=__#?zTJ-4+UM204#YNLAeWX3lDh4 z!oSiE(Rfko6}E?t5i~Ck9%#aUh`5EPp6|gi^nwZ)z&H>gEW8g$q3%}HJA+6M|39Ls zlPkt4yv8Z~>5zC)yu{F{`HNskd; z00rU_-|hqU*<()GwpPy8SA>hSHSyP*;P?EiyGM)GNc zFqv&?RxluL=-(5+6DWDn@*}(iS^}NWcQ&=FsVJ zG|&JO2^5C3v^S4M730b2BdZPIh8P~?DSYVsg&E}ckeZOHV&qYfcY$nxHW|Rn3XIb; zFVf00w9-RZ0td*vvYQY-Ajf3%p`cRX5+(;CycUuG>>Dv{jWF?*M8gBkI1IqdTv!Gt z88M87r!x`-7FGgYT(wXS)fJGop{zi0>R*0`N)MtV)Pf-f2>-U&_26$Z6f96!yNVi z5GSEO2BLzAq1wk97J+~rC>7#FEx=S{>L^kLw2J*d?R^VelUJI)V9c79wO)M`rdZMp?@^>9`wB4)w)zb0s@Io zjiW0s;RueW}^^wn3Wal@CtdrBTzrB{P6 zB&;*St~0yPTRL)? zOccTYV_{;;PnWtP7vyoIX!JHPzO0paDUMR0XhQAk{d5jE90(x{h^e@)po@84vfN)q zssg~vLdNHyl=~P+3k+RS10hoYBM0F=@@6vGfnftg3C}GDEF35% zy#eZp$m357d``C(BEO>UUCaCoJ%dGKhca4w6D@!yDL`O{diYlad@E_dvpU*4P(NSE zR6XJicHKuKEEcJMedPVIq614=$9PP7woGZMR?ch!DGe-v1NIh_5$86dX#5{l0~3z( zBFu~;9x6W) zVAef}RHEkRfvXRtrmX@WVrT$~C!YHNrK%4w8MdmGAQ|D-4*9zp<={EfQOrLQuA(`L z>d~uftYBkf;B#8!64KNk6?(*&U3*#oj9B! zRuYeNkbr_st5oT1N<>k4%HjiVG{R-K5zG<}9go>uQoQ~d=R`BG8{F8=`QNTPN+Wut z2M_sR%4RUofrBUy0A2)Ahdc8?Mxz96;089w)36#8MZgMx{17`+&KwZadChR57BD(N zX4>Vrpnz~qHOwO1V$(qYgZl8`_n`tefzPJS=my?-Ri;yEy2SMGK{g08QKcS&{B@%> zUbYi9K#;QS(A5yK74>K8b$jY$1F^QC;`AnCx&W9Ne*mmsghK;FXG%~95Oxou64dtpkihmV-&t}*uqQ*s z?h^ENbpIxkcN7L7NwXdhIW zJZ{PeS^CD{%l5Wx72@hS*k8J`v1P7hb3mjWOPEZJayNn2A?mdrL z;3~L+;CM{*SLj4{Zi)s-N}+;h)TI6@a7-SU3q^ZVu;4A5ydgru>+wfA(cwlpzwpbo zEXWT-haH1Hp_yheDNyV<$OuIuk<)Y5A#i#rb%eN>Q+h>BiunJ26@u8v2o^Yxl@>O| zv(j3eh|+rZde24x2itE5*YZC@T_OK->Iy`3!diprDXMJLnZb!8Bgn)mxiZiy5oS0O zI35T=Do9~K#Ks}iWzmJ+Jf@Q;dlyFjJaQwDN~K^`K|q>t@4@3WBdlCryE0iJ_xOCX z08H^kaB5^%N5BS8%rU&acW3xWT132Q*HHEug@A^5MR+^nOi_bB7wQU^7t|F$3Uvi2 zqtwO`go)4-Or{x4d01~8#p85vI{QixDc?5%qbYq@IiTFXC)Jwb+2|tAUI9u zG=RS~F6(1uSR}}?d2~)!?F?nKIpI$fEJr}j6W#v-*f+=1ic-&Shg-RR-9EQxfY-PK zZ0HDMx53^i1>s954+&|n#dlrspAjK~5`}Q2P_t#}8ciig=)itu<#C$>O5CFM=kiYiw_o8 zL9KC088UN71f=2cCs0Uj3HO~E@qHREE2X-eM5o8wkjn2tH2p(v2ca&P77a|rIINVm zRyuf{mF)$|EMV^$p)Fx2Ax!CPu-X{51rn;IUk8|u3k-yx#E6)9xR+vUjU z1ou$qJSli_5q#Cb?#K)WUOBLq($WRe6e z5Q`${VNb7mMj&vPqCgoWk-`q#N2(ry1urlh>n}p;xM7H$DFI=NB!W$Zu?;a2+=hp5 zQ-d+!d0O+dvIh%5tI2~F2UJK(+d=Au zsHw?r6lQBqM8W9gpc=!<)jaYPo6wm)Au@I48c=v z-KI>B<=li5ehb&Xv2gvaOp}exM=_Tzxydsz7*8Sb;kFjCkJ+Hb1)Xqy^*rHFSz6g zh37ra8Dg7KsaOynFX&hMb7Og~DVz7}gG>50?kSfzRQN~~J->-;l;CC5uZndEzun%N zN>yVIXMVI}Y}9qSq%ZjP2c%z*bM3#~?yG9mgm!M~j8E7qe`nR!8cxe;(m~J#$6e(w z@9kJCxgqMVlZ95)8GpOIvDIAGZG2xBKRGsSvUoYNX*#-UY|?-@1YO6I@1=WK%A*sO z#NU{eyz+dCNI!YA`xc~jX?P&`_V(5@Z!S-%-CEG<7dAyBsdVC{-Jt2+^k5|Bl4kl> z4#Oc0Ts;YXK1)+rH=;?SbA}piFD8vjZ_ur+scBj7JMH3S5VxBM;+R9RvB`{|)gs=vpuic_^~jd8!B8$VRpGbs{Q_H(iP{gx~XF7{i!r5 zTOhd+z2ZEcP8e++*gzvht5ilObYFJE!?8~stMkf6s{M(c#$CBQnF<_UxV^?6yORx} zO_0K`&L^mi36O{;wCGSne0P#aTmY#U_7;$71`keFL00H+I}yxYqYp2xjb&BCZrg^? zz!MUlxj!Bn^s2cp!vf{F)bdy;pB(N|jfnBsq%4W=&NG)neYBj$) zzmkeg%Zf>!QYgd}d{P6$CzE;Jyu5vGl~c#G@j)C0r(a!xu|XiWe}O?ZAJz-n{0>Qo zdcY<~d|{H+hONE;bJQogbjL-zL{HW-t*)@CoXe{-7Nh+M4r!+CttTd?Nu^nFH$=1G zT_}`Uu)flX*yVE@v&1C?abSQq=-u5dMGCwiA3ICzQ&3e+#F5fYq!N4ChP7ZcL=;z^m&dOi55?Xt zAM)Ktm$$bb(no0{(QS8Kl4yAfKj-tY#FUOCKOE=XaOR_?F2`LhMX5Zhx#^HtzyIy? ztED$!`UDLk6UwIrN+zV}i2b-B~1-IpiF zMn%d_cYSnN-{hZ=u$#VZ3mc=bNe{hW5hTyTA*$)O0&2c5)TI=YO1ptIYmSs(>6DP* zmpy2%vP#rsHU%cQl;?4cg&GY6gze3&^W8APJFtIMVYH*Oam}5X6?k^0_mCuy6KI5s z!m@VjYK?0bLyorsWt&&b^nwW~ zBTP45ok=WFJY2B z#!@no)gAXP)l`k$!rfOe7x)*ApE&mSmmENO&L|TPup1PS!Gpx*wro+)qUr{1L5*3A6>OIi5)587)K82 z{Z|z0_SP8}B?NglPaIX|-o13cc>aL-zIR{;u>jUH3xN9dhoMqlY*Z~*w)JIttNh~Q z`&WF)$6;3+V`~&G69u9M*D^rM4RG=yz|2XYZ@Ym12Ji+T&#qe9L z^tn<`GJ-+(n%O!1SMJ4f_q~iav%i(q!pSv<^y=D{rW47;rdpw}ma))=h!(Y+{tu(E z=u%A>v4rPc%mJM4ZNVPA2EK`~Xymp_)ZCA*_I`1^=4j#)YcD4s?iiEvhx?CGsf7R# zp+s$N*Jy|_9D>i}*0-9W0*)1Puevc*_X*PF`}h<;d2}cJ4l&H!`e%_DMoR)N{9-z~ zKh_@^}sVUY_qpy|!08(SBD?hy01PnbK$e?;LMB95=y%N)srSCagTz@^*3L z{AuN!+wI>KVR*#H%1ZCvk490L|aaH-R+ zV=uzr7wgpJ3~$fbZG9c*o{%=AQ=c0ffljf0jD8B`s(Z6wGPO_ubDw0NcC78YlA6K6 znJ%UtxhKFRc<=$~x83qhz`k|qi^ojg_ws~-xyKF^#}JDEthS!mYh2&C4Tk5-@$*kS zMr{@t*etHO!))jGG~G9@weLzn^l3yA`mGz@&s zD2fUj?Lcu?`m^Y(himh=La&vE!N!__0mE?X0LBa%>?#s!tock#p)qi2G7c1k`@1Ib zzoJ~b$p`{cHhWskZ;^DZ#FCkoWqCM0_q&^kQNsD1i&81dffps2fY8QlIP-WBuy{#4 z)D7#}O|lzbZ^uL8hVk9JINc|1Rk-2k_3u-e?AvWykt|wtn&;0%iaf?D7 z-*Wn}8}*AV+*)`Bk`b|KB$9v!NPgm?kv8l{_Apr&#w_4ejuloq!3GhpT3R+fdHAU7 zmiciE4cW&Yq_45-kW!2a1o@ep$Y9v5zdN-k-B#XA3f@q2u>`dFzDsAsR6Td2e+_QrJlFHz5i`Qj=3lI@za{Na|G5c z)HB7!TiebM7;#=0+#S!%dxys@6QdH4PYf3dz!M91;@trB3P5x8-Z&mdtK{yra}ITIHE* z4!mP|Jp9_aGKPvwJ$K5JS5IUQb^%MXEQ90I7Op%9Hy}e5MY%CwOOiy|8d)6#8DxCUDTOh*>>Xa{^ZH0{NA8(vPikBCzkK!-OiEigUc`F%-QCr>Pev!PW3uYNz;YS3<~M)&R{y?SdwRsQM2QR_Q1gI@7flwG<>lkH)((I zVUQ8KA$gBQHU`CnF2*mg`hX@gqWM)I4o z+23B0qT74fjo}bg>2xShG}-C___Hf=K_A1H;`-nCTZpQXg`TABY!LBz`D=3tHl1(_Z^mG#YG7n5xe>Y z3IR!kquxHh7fCj;UgEeWf2bUB=0qH-+OdONsXuim;1 z-)6ebe%Gupoq6|8mm`xWNr_IVdmYLQZ^UwV;II$h=7o}cez;jDAGb!6zOa4%6xEE? zfU}(n>9r!&tHMP%`L*rEtzC|{KRO`xJ!Gejzq+XFRrjdVYu_H_4HbkqT*)aEN@&BzvXu)uDm!Pns>+LG?vUi^AE1Mv`uCpK&KtMT9;?ugoLVM z%BYG~A3<__l&tfxn_W47>Ha*IP0BKN^4f9hNEJ2{uso&d!Q=5(n?{Byz3VU z!Kl|KZz{W;ytsJoiaGHI-hi?ezU03ac(7l)XjH-6s<8*=)E;8h`Y)Jz7VD3M?iTxs z=7~MU<()?g9(Q*kk)Bcr4PRUL`B>eNivHf8(FbFm5j%c6f4Y-{I>Ize|~Odi|Z5Q5)YM+v?{R*r7{G z0qo|5p5c$WrtNxD=$gNxD6Tee`Qp^T4mZ2xht>P+{Ox89S1QSh6=-t*#iRdi32ZM& zgV4j5&PtU^QZ_&Mr1G6khrmr`{+nYO0yS`nIWlwV{!!k$T(q2|N~b6Z(s!C}b;sI$ zdjZzW2?=lt>&^rAgAgGBNYl6DBN@ls|Uu=*ok;E-jv6?`&7#bK)+ti2eT8 z*0DQ+mlswE5TpG4qBbg*rtsnXABn39-0_VRYQTZK=k zc3L18iNW={*H4F|>*lP*2wdmaEj}~NY2nfo$%^ygqoQ4QCt;rmfh$!ysYi{jubr4m zws=07n&d9uH!YBCf7ng5kHxko6Nc65x9zb6U9Vg+CJh_BSZHqvpARW?8$Xkk7c{!3 zj3@v+Csagj^yB*U{A+VDc7d=8cR%Yj1^c3DS#JxXPRBb24i{p>*I(xo>dGpA{QfmD zHdYWg9sB;WxR%U0y>iExD}wq8RUun-*ex*JWtLr*#7iLdnX)!|z9No4aYO(%HI8QF z*OFHvEn@|>*s>v$-KNXkfNf-{>0is@kT7FAPUQFUrpSa}9XtB=`B!JU9(d5ZyBaMb zN*@~ul*Hb-G)1XfdmX8m0QWpoM%awTNH_oH$Dj32$Vkd97bbZ0>+%`D%vhUi$g+%H zaMXQa^as;E`{1pA8+Kvf{l43yP6s_a85;laY((Bi?^%rZxO%O^qkM5_a!# zM843*sG<3JTvqCfr+$DW^7wh#ntcMu>!X)UY0Jhr;<%wNhmkqp&E&i_Ql(7ut5pQE zrP3Q`5?;1Z00}tQ=UT(1Fx|hbWk>)Lyw&Q_$8G?e!^E9OEMlMkK>d&XkW_tW(=pa^G45{ z9#J+5&t+D;6L1sC@>}(IWxHmh=%Q01b+dLLylEq~J557}a%Sz`bL*WO zuW9!P(>Eo4C)RprtRINGF+%GZt&KONhBx#!eP-~`-##CNlZwi5=I#J$LfOY1J9I&Q zgA!`D@~v?cC$_NUp5K!ttx|(Va_h@$IZ}gS=lC|dRbY_E8R*cPxVuHI4UIVVq~$%_ z1?(Ns{vXB4i2ko1H?+K@466XR+}MoH)O{hklRMJrP|9`Yz~MwXl=qfAK$Rvjt1-$; zK{U17Vf-cO!;`7F{h>a3s`+VMFFWLw?55OBz0Mfr##S{t`|BccwIPl8@qgEQmdNBS zx#F#odl?~NBW*bx1{;2X6P9x)uvLl>dV+o?u65#A08r)jd4oi%?k)JV-*j)V!@x3py+zsh zPI_MxD`W!2uoXQ#X`a?S_x7?v5>#=Gdm*^+DLI6@&}nll4#ZWKAm z6^-NOiYS(d*M`2n-qNi2INYu;(PonkYB5-Doe!E&*5TEAfAi=v2S%A9pzNK1SAIUj z5t?Fn3|k=1&ZoWY7oFJ4xSqUo!;RDRx36zj;C_@bHGE={lPW?FU!dD)stxdDb%;?a z3zTNU-6l9T%~Ck4-U+~Uv?#6nk>b&ccZT<@c^hZ3JDe@IatD6@U<`xJcuVfke?*Zx zenezJ=Sj<#XT39mMWJ7;;l<^1T?`X}VQ*!NcaEprEe`IEtRmLHy(O&%g@+S6cIHk6 z%~go9i{Mma6WM6zY`g7<;UXSm@Ys&DP@X*e%$1jXc^oE>oydE#Wc}F%XKtuvhUUCe z!^)WXxet@am3H>93~M`zBJE_6XLfX++_B5RNnfvd(>&$PX?!2ymo@L)_$duX{w$yR z!vo7ATvA)0-Ghs(IP8!AvYE&GobyL9mt}u3l>yPvK{m%0qpIY*k2>N{{oR-g=NDk0+KgoK&MGS7Y>ZyP?EGOxxLnIdMAK9*8&%*?=A555oWWiudcA3wiM3O~&l71R zwF=toMRy&v6Bc&L`JdXz6w`To>AY;_ToISgqx~czYLG?Uy>6=(_J?!793}vdPdvq+ z&G6;1xNOSRkH^Vnaxzo%C0<4^)|xyN*;GvCaR1BcdvFq|Oc*$uVo(&!g+loWz8>c~ zvhE_|m72&ENdP`_9V2Zf*8?qXNQHQoMx_N;yeUewHO!jouwKVA(u1Qpyd%Z-MzwLd z0;*AP*Y?d(^OMIp9QkJ!`1h6r=O}v6f_oN7FeuC6_Z)x_Hx*yXB8wZv+Du&k4)vcf z-lowe&Jf(BaPMofWxMHiOB4U*ji7x7x)kZp?;_6pM-5l&rG~ zF29z~HZfUDKr?<)6?c4u^-~`{rnyK|S==pbK^{M!hxC&L^uSNruRW?Da`CO6CO%hE z#O1qt%ZBCKiu=9!$W`%oR+A)W8?)?_qaE@2{8|@5-n7>kHnw)kPTalET|tS5&cMEV4DqfwgQr9vWg^v zFKuPf+C9cwQ+bmBBQWc!p83(@0`q#zS!N^a%=|kB^pC8W@7psy!J4X*8#K+h38M($ zC?fRXU!9#aQ?v1|W+TOO*vrbLvo9EEq^ImGx@~8u?UCRKRNGw*><#c(YotSsH%0yH zLta5?w=B?h1nt}KKi5~d!dznRap$=(9oT0(`zk=&YalRy8^{$R zP&lY=92S}-wQ&Y7fN+-}TeR~%C00{Z8xrfxP()Mq7uR3YW-?StXFzC@Q?GY#DlO{5 zK-R6-RQ5@WSVdo*4Wf2?qi_m|1eq*P_FH>+$U&9OP_0L4bU~yD+Yts2K|?Q=%te)( z1{A^LIP6S(Vb^%-?nas?;(c=PJ>@+nDvJPx&v=}PICDdzsKhe%!PiJx_Mlki=kH;S z86jyJAi?A=cQ)_hYvMB=6esa5xe~?)6I=x!4gp5W5elY{G_ccyDBfLsVb&{jmqGJ4 zMBxN1FT1zC%DcC!&byagtX6)YSUhEEC?mS%Vv*1o* zD1mM&R-4-t%84z&M718c+8uc&{@{DSa$jNXm+P_Q;f3;K5|lE*sBDDVA9-RwSsgRN z%)h^unEMpJSQgNOxRY%CuP$jEn+H^g(BC-Q*T23B+Xm7VhIwPg$1)1XaXj<4%%6r3H5wG2xt;0{hiqAgC{BlJlsX*_LTSfX^`u-Q(YbMd4IYn@zsj>Y+%HF@4q z6_TjWo@#GdI`5w^r7JR&ze_0`X1})!yKOf$tfI<3%^IP44=y8%3W}?@Ij9`i97b=9 zMv^5OYJATh8=t!BdE+y&!@!2Z0fHqCzOJ*ZV>@~@wRjTLc`MfsmPA3W6z;zbZeJP7j__P;VD$1DXYoJ5x>!^Qm)m@bdr_?|p+GgDZ& z&B4x=v81-nxQ%J+%j?|X;LE8#u_T{s%jU^W*q;>YC;dB6q(;OFW((Tr;HK;Szjt7; z6)bjt%vT(0rh0)!WA>4KTEsLqoQ~2?YF@xq@Cy{&)xu`UF??OD_hmEYina!D=2Agf zCv61`o`{h(`qzaz@^vb#h`WX-%Whf|cknk4u(o1(@j9zNn?kR`*QKT?M*e7a|D3{Y z%9th1d{#b_Ex280)TF;*4%I-TPpz>3rq*HfRg z?b;NUh$|FrC1bsXum6py=0qZ}w-Cu)nfkhpb)aKQV z#>EVSSa10CNrV&BvB|*hD~e2MJeGxGKT(}Qdr)!*TLB_sE1vnWhW}I0)WFCg1H9I3 z`IoX9$jTx?MKh0^!6-};LOJ=?01@d`GVCXeA)@r)ob!k%=&Yf?b}5TML6hi$(Ex?1 z8u)(*RT6^CF0ASLL|!T2LdEojm%l**8RVPk!RF=09h`$o2l!X^T(o+$7Ko!j&j=^}+WN;?&)HvUxvQm3RyLW2yB;q>htt;_0I3 z!XGd(7DB>In`7@8qQrWXub)K~qkc&27yoEt`IEjaUtW8LWQlW$PEqDCyD<(a+MZqlVI>Zn!rnWK z&c-wtf~Zo&A}<^iN7tj2gFu6dNPerR)ixQZb#YCsMPO7hWq4=d!M-*XbsCr)2IZiQ z(fjj}AU^m+6O7Fp7r{q(?cv?qE!JYc9%~Bq(WVo2o$5H8BIle7f)O#{*6E@*j%zk5 zxHL=S=Q>k$WEhgv0}twYufJ9p%{YZO4JC?|V>r(20#q_6?A>d0<08#nw;0Ax7IW8; zAhXlIsq6KUNd&cZl3TbI(~mk&2a1)*kgZU5eub;T$Q+Pm4~=?ZJjh7 zv45iMO}sLRICHpIDQ61p@|8kFz)@Q%|>WPz%#i<9DKy5=8PHh+hKXt7N_WTrbld}fu9 zWAhR-oK#|}kGr+j1Gk!-RSveQkXFMN9?poztaKS`HRU{BuIs7qMdXlFEgN^|f*q-D=MhpaF}w3B5JF z-RoyJU~3RL;~9J5iKd_Ym&}`?@|&7qh)ITON-fw^U*dZRWRR?5Dra52gm*$Mht zcr$j?o~ofs(nKT%YX<5`qC(@EkOvPKFjJu4raSl^iogH{YG^0atV2Rx7S6yzd6FhO zE~J$W)Pv)1(^*|##?8QDpT5NaTAT~w0r1k05``eUq-d7NiH#+Cb*(W+z*=^#XJ*(a84r$2p5a{kCS)2P&CTTAqpFtVM++p z2;`bjdiDirI)N)vF_0IbB_O5HxOTR)|IRLdZt{HkCu>6WRLC0!1;Z$Xs7S)!(0d%v zj!JLiRB1$QN}zta#_Y!@a5eZE&H&7Ws?`}H4=T)oMHXf4QoPfT!3#Q#2V1TywPmRG z2=%M!Rw=Xx*+!gE8}|$oARzy!P0AJ9l;?sF^~L!M(|+vJP%}k1QdJv)pg-|UrHWb zm=TY9&SIpAQp{d_eX}kWPT`>6ONtpP;HYrGVx%)Q8YB<8n1 z{cd4@E}o6X;9%M8R<&`o3bH?jTBnUXGzRc6@lyZG0V5b5S61I59xcZ(Vu5B6+B>ud z$D*WQx_W3Y`-6dcW0Np>oZO*6hc14a6ZxBx_xz)3&yjT@sp8l<29+KuZ1R(RY5w4= zxGXDdNE*jkU3ZIKWov+A-URT$g&*;t4j6qJeWEBM{+Rt4oOA&oqkZuTcT) z8h{gwDh?2ZB_ln^L9DAG6Qy(FfbyYa#z^kTrUrZ*Q$!6yRAxhwKLh~CCZ?iV7sG8! z-2-{T!co2L4B~;BtR7}cS5Y(b2XLMU3kM4Jwtd1H9;%Ihc`FkZMn1K)f1NbbgYDDsL4tEsp#Ax; z>7B}NP1zf%lA&S3Y$YL_2z@ovn8<1DrFUMs*Abs?)ju_tj1#NmJEEWcWpLjBN97LI*3RBOpl<1_U+&bg_Ub2B6 zt0kU-q=Zbgu~(BlS}^z_y8W>RRic~8?r*2&V#qa@^sS@G3~Y@u4P_2J~d^} z4&_8xcc?LJTC-ER#~8!F8-e(A>f*g`dmt67DjP{?#I#rQI&4Xw70((hjH<62&YsBp@hIGVKych(r%o#LzfYH^z4BU+yFU! z7!28Ah;y}jG9daAyc~x8waxQTHTGgOjlIAqm=3C26OBC5dJh8(MFUv><9GZGW}AhxgL^VCTqqsA{@`I}BWPkC zWOSz71!RgtLxNTO?|1&cEHjgHU|`_4?J}IbiqR(&>S8G<6rMmPNseIwM{!!041)O4 zKk5hOddwb{Mty5}Nwu1IvIb7H#|V>#s;xWV1Udj3KlcwV%B!lXOr8r23#dUQd_@T_ zLP6bzI^v>Ac$o&W*k5P$JF*%eegr(j$qrvQoYkjE+M$7u*7d^8sIaE&56Qu7c%TyX z+F>`45;lXP^a*0CQxowKKhXr^&@Qnr%IbM>WK{?N5NpXPsGK;{d>rK^kc)*R@lx1Y zyxO>p43QuP*-Rn`AWg@aTotm(c~-anJBEG-UnFg>=6subpsqIo%|9PO?9XT#1Xcfn z1_rEt95z=^;t{-dE*3hF9!wZuUuTRj)Wwq^R-#M9(aH(LndzJlo;@fvO`%G4ka-E- zj^K?j!X)rJ7u(BOBq&NvO+qwl1%ze2 z>)5moG@;d<7NF;$z=557s1ZY=VTC_vkk4lWx13?Q2ZOOrBcEGmJ*xPl4&}co zuh3^<6d~>o1ftwyj3qG%^YFm0F?tg6EcGM;LK8oOhh|tT004w&XcGyEinyzJ8;SSO z3VzLw&mwU-jD+d`%ZG;Ko-yNu*{xA(O+xp|%QSVkhf810!`}xydW})Zv$5V3D1R92Zw14)Z`Jbh5 a1_N$p_;$^3ZD9_>k0|k6(E;I`vi}G6DxP@& literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json new file mode 100644 index 0000000000..83789d5afa --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json @@ -0,0 +1,90 @@ +{ + "success": true, + "data": { + "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-realistic-3-t0.02.png", + "regions": [ + { + "index": 1, + "rect": { + "x": 471, + "y": 206, + "width": 378, + "height": 378 + }, + "normalizedRect": { + "x": 39.05, + "y": 32.09, + "width": 31.34, + "height": 58.88 + }, + "differentPixels": 10175, + "shareOfDiffPercentage": 99.96, + "densityPercentage": 7.12, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#faf3fb", + "averageCurrentColorHex": "#efe8f0", + "baselineLuminance": 245, + "currentLuminance": 234, + "dominantChange": "mixed" + }, + { + "index": 2, + "rect": { + "x": 483, + "y": 215, + "width": 2, + "height": 2 + }, + "normalizedRect": { + "x": 40.05, + "y": 33.49, + "width": 0.17, + "height": 0.31 + }, + "differentPixels": 3, + "shareOfDiffPercentage": 0.03, + "densityPercentage": 75, + "shape": "compact", + "size": "small", + "location": "center", + "averageBaselineColorHex": "#fbf4fc", + "averageCurrentColorHex": "#f6eff6", + "baselineLuminance": 246, + "currentLuminance": 241, + "dominantChange": "mixed" + }, + { + "index": 3, + "rect": { + "x": 835, + "y": 213, + "width": 1, + "height": 1 + }, + "normalizedRect": { + "x": 69.24, + "y": 33.18, + "width": 0.08, + "height": 0.16 + }, + "differentPixels": 1, + "shareOfDiffPercentage": 0.01, + "densityPercentage": 100, + "shape": "compact", + "size": "small", + "location": "middle-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f7f0f8", + "baselineLuminance": 248, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "totalPixels": 774252, + "differentPixels": 10179, + "mismatchPercentage": 1.31, + "match": false + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-shot.json b/example/visual/evidence/sensitivity/ios/realistic-3-shot.json new file mode 100644 index 0000000000..d61a83c0ca --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-3-shot.json @@ -0,0 +1,11 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/realistic-3.png", + "width": 1206, + "height": 642, + "logicalWidth": 402, + "logicalHeight": 214, + "pixelDensity": 3 + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-wait.json b/example/visual/evidence/sensitivity/ios/realistic-3-wait.json new file mode 100644 index 0000000000..1246ce0693 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/realistic-3-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 608, + "captures": 3, + "nodeCount": 18 + } +} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3.png b/example/visual/evidence/sensitivity/ios/realistic-3.png new file mode 100644 index 0000000000000000000000000000000000000000..38ab27c684caf74c931fe75aa5e5b7362b788ada GIT binary patch literal 81121 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 a1_N$p_;$^3ZD9_>k0|k6(E;I`vi}G6DxP@& literal 0 HcmV?d00001 diff --git a/example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json new file mode 100644 index 0000000000..bc503fff86 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json @@ -0,0 +1,9 @@ +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} diff --git a/example/visual/evidence/sensitivity/ios/reverted-shot.json b/example/visual/evidence/sensitivity/ios/reverted-shot.json new file mode 100644 index 0000000000..acd05525ed --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/reverted-shot.json @@ -0,0 +1,11 @@ +{ + "success": true, + "data": { + "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/reverted.png", + "width": 1206, + "height": 642, + "logicalWidth": 402, + "logicalHeight": 214, + "pixelDensity": 3 + } +} diff --git a/example/visual/evidence/sensitivity/ios/reverted-wait.json b/example/visual/evidence/sensitivity/ios/reverted-wait.json new file mode 100644 index 0000000000..83b938e802 --- /dev/null +++ b/example/visual/evidence/sensitivity/ios/reverted-wait.json @@ -0,0 +1,8 @@ +{ + "success": true, + "data": { + "waitedMs": 635, + "captures": 3, + "nodeCount": 18 + } +} diff --git a/example/visual/evidence/sensitivity/ios/reverted.png b/example/visual/evidence/sensitivity/ios/reverted.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb2aa499f39cc1ceefbe56a14fa693154ee2259 GIT binary patch literal 62787 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 GGyXR] * * Drives agent-device 0.21.0 through `npx` and parses `--json` stdout. The * package does export `createAgentDeviceClient`, but it is not a dependency of @@ -14,6 +15,15 @@ * and installed on a device matching example/visual/env.json, Metro is running, * and the baselines in example/visual/__baselines__// were captured * on that same device. + * + * Every run relaunches the app: the example app persists its navigation state + * (PERSISTENCE_KEY in example/src/index.tsx), and only a relaunch makes the app + * fetch a fresh JS bundle from Metro — Fast Refresh alone was observed not to + * reach the Android app, which made captures silently stale. + * + * Exit codes: 0 pass, 1 a story FAILed the diff, 2 setup/environment error, + * 3 a capture came back with the wrong dimensions. `summary.json` is written in + * the output directory in every one of those cases. */ import { spawnSync } from 'node:child_process'; @@ -26,9 +36,45 @@ const BASELINE_DIR = path.join(VISUAL_DIR, '__baselines__'); const ENV_FILE = path.join(VISUAL_DIR, 'env.json'); const AGENT_DEVICE = 'agent-device@0.21.0'; const BUNDLE_ID = 'com.callstack.reactnativepaperexample'; -const DEFAULT_STORIES = ['surface-elevated', 'surface-flat']; +const DEFAULT_STORIES = ['surface-example-elevated', 'surface-example-flat']; const DEFAULT_THRESHOLD = 0.02; // PoC finding: the CLI default of 0.1 misses soft-shadow regressions. +const SCROLL_STEP = 6; // rows per `scroll down` in the example list +const MAX_SCROLL_STEPS = 6; // bound the search so a wrong screen fails instead of looping +const MAX_BACK_STEPS = 8; // deepest example nesting is 2; 8 leaves room and still terminates +const MAX_OVERLAY_STEPS = 5; // dev menu + dev launcher, each possibly twice + +// App-ready polling. Right after `open` the tree is just the splash screen +// (iOS: 3 nodes — Application, SplashScreenLogo, "Downloading 100%…"), and +// after leaving the Android dev launcher it is an 11-node "Connecting to the +// development server…" screen, so any check that snapshots immediately reads +// the wrong screen. Node count alone is not enough: the loading screens are +// matched by label too. +const READY_TIMEOUT_MS = 30000; +const READY_POLL_MS = 1000; +const READY_MIN_NODES = 10; +const NOT_READY_LABEL = + /^(Downloading|Connecting to|Loading|Building JavaScript bundle)/i; +const NOT_READY_IDENTIFIER = /SplashScreen/i; + +// Overlay detection. The dev-menu labels are generic, so they only count when +// a dev-menu-only marker is on screen too; the dev launcher is Expo's +// "DEVELOPMENT SERVERS / RECENTLY OPENED" screen, which no dev-menu label hits. const DEV_MENU_LABELS = ['Close', 'Continue']; +const DEV_MENU_MARKERS = [ + 'Reload', + 'Go home', + 'Fast refresh', + 'Fast Refresh', + 'TOOLS', + 'Toggle element inspector', + 'Open DevTools', +]; +const DEV_LAUNCHER_MARKERS = ['DEVELOPMENT SERVERS', 'RECENTLY OPENED']; +const METRO_PORT = '8081'; + +const LIST_ROOT_TITLE = 'Examples'; // Appbar title of the example-list root +const SURFACE_ROW_LABEL = 'Surface'; +const BACK_LABEL = 'Back'; // agent-device sessions are keyed by cwd. Point this at the directory whose // session is already bound to the intended device to reuse that binding; @@ -38,9 +84,20 @@ const SESSION_CWD = process.env.AGENT_DEVICE_SESSION_CWD || VISUAL_DIR; let commandSeq = 0; let cmdDir = VISUAL_DIR; -function fail(message) { - console.error(`error: ${message}`); - process.exit(2); +/** + * A failure with an exit code attached. Thrown rather than exiting on the spot + * so that main() can still write summary.json before the process ends. + */ +class RunFailure extends Error { + constructor(message, exitCode) { + super(message); + this.name = 'RunFailure'; + this.exitCode = exitCode; + } +} + +function fail(message, code = 2) { + throw new RunFailure(message, code); } function warn(message) { @@ -54,8 +111,10 @@ function sleepSync(ms) { function parseArgs(argv) { const out = { update: false, + force: false, threshold: DEFAULT_THRESHOLD, stories: DEFAULT_STORIES, + outDir: null, }; for (let i = 0; i < argv.length; i++) { @@ -73,9 +132,15 @@ function parseArgs(argv) { case '--update': out.update = true; break; + case '--force': + out.force = true; + break; case '--threshold': out.threshold = Number(next()); break; + case '--out': + out.outDir = path.resolve(next()); + break; case '--story': case '--stories': out.stories = next() @@ -86,7 +151,8 @@ function parseArgs(argv) { case '--help': case '-h': console.log( - 'usage: node example/visual/run.mjs --platform ios|android [--update] [--threshold <0-1>] [--story a,b]' + 'usage: node example/visual/run.mjs --platform ios|android [--update] [--force]\n' + + ' [--threshold <0-1>] [--story|--stories a,b] [--out

    ]' ); process.exit(0); break; @@ -105,6 +171,9 @@ function parseArgs(argv) { ) { fail('--threshold must be a number between 0 and 1'); } + if (out.outDir == null) { + out.outDir = path.join(VISUAL_DIR, 'artifacts', 'run', out.platform); + } return out; } @@ -171,6 +240,16 @@ function ad(label, args, { allowFail = false } = {}) { }; } +/** + * Snapshot helper. `--force-full` on every call: without it agent-device + * returns an empty `nodes` array whenever the tree is unchanged, which reads + * as "the element is gone" (PoC issue 13). + */ +function snapshot(label, globals, extra = []) { + const snap = ad(label, ['snapshot', ...extra, '--force-full', ...globals]); + return snap.data?.nodes || []; +} + function sh(command, args) { const proc = spawnSync(command, args, { encoding: 'utf8', @@ -193,24 +272,40 @@ function adbPath() { return fs.existsSync(candidate) ? candidate : 'adb'; } -/** Compares the connected device with env.json and warns (never refuses). */ +/** + * Compares the connected device with env.json. Returns the observed values and + * the list of mismatches; the caller decides what to do with them. A device + * that cannot be inspected counts as a mismatch: baselines are only meaningful + * on a device we could actually identify. + */ function checkEnvironment(platform, env) { const observed = {}; + const mismatches = []; + const mismatch = (what, expected, actual) => + mismatches.push(`${what}: expected ${expected}, observed ${actual}`); if (platform === 'ios') { const expectedUdid = env.udid; const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); if (res.status !== 0) { - warn(`could not run xcrun simctl list: ${res.stderr.trim()}`); - return observed; + mismatch( + 'device inspection', + `xcrun simctl list to succeed for udid ${expectedUdid}`, + `exit ${res.status} ${res.stderr.trim()}` + ); + return { observed, mismatches }; } let devices; try { devices = JSON.parse(res.stdout).devices || {}; } catch { - warn('could not parse xcrun simctl list output'); - return observed; + mismatch( + 'device inspection', + 'parseable xcrun simctl list output', + 'unparseable JSON' + ); + return { observed, mismatches }; } let match = null; @@ -221,8 +316,12 @@ function checkEnvironment(platform, env) { } if (!match) { - warn(`env.json udid ${expectedUdid} is not in xcrun simctl list`); - return observed; + mismatch( + 'udid', + expectedUdid, + 'not present in xcrun simctl list (no such simulator)' + ); + return { observed, mismatches }; } observed.udid = match.device.udid; @@ -231,37 +330,33 @@ function checkEnvironment(platform, env) { observed.state = match.device.state; if (env.runtime && match.runtime !== env.runtime) { - warn( - `runtime mismatch: env.json ${env.runtime}, device ${match.runtime}` - ); + mismatch('runtime', env.runtime, match.runtime); } if ( env.iosVersion && !match.runtime.endsWith(env.iosVersion.replace(/\./g, '-')) ) { - warn( - `iOS version mismatch: env.json ${env.iosVersion}, device runtime ${match.runtime}` - ); + mismatch('iOS version', env.iosVersion, `runtime ${match.runtime}`); } if (env.device && match.device.name !== env.device) { - warn( - `device name mismatch: env.json ${env.device}, device ${match.device.name}` - ); + mismatch('device name', env.device, match.device.name); } if (match.device.state !== 'Booted') { - warn(`device ${expectedUdid} is ${match.device.state}, not Booted`); + mismatch('device state', 'Booted', match.device.state); } - return observed; + return { observed, mismatches }; } const adb = adbPath(); const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); const sdkLevel = prop('ro.build.version.sdk'); if (!sdkLevel) { - warn( - `could not read Android properties via ${adb} (is an emulator connected?)` + mismatch( + 'device inspection', + `Android properties readable via ${adb}`, + 'no response (is an emulator connected?)' ); - return observed; + return { observed, mismatches }; } observed.apiLevel = Number(sdkLevel); @@ -271,110 +366,424 @@ function checkEnvironment(platform, env) { observed.density = densityMatch ? Number(densityMatch[1]) : null; if (env.apiLevel != null && observed.apiLevel !== env.apiLevel) { - warn( - `Android API mismatch: env.json ${env.apiLevel}, device ${observed.apiLevel}` - ); + mismatch('Android API level', env.apiLevel, observed.apiLevel); } - if ( - env.density != null && - observed.density != null && - observed.density !== env.density - ) { - warn( - `Android density mismatch: env.json ${env.density}, device ${observed.density}` + if (env.density != null && observed.density !== env.density) { + mismatch('Android density', env.density, observed.density ?? 'unreadable'); + } + return { observed, mismatches }; +} + +/** + * Throws unless the device matches env.json. `--force` downgrades the + * mismatches to warnings so a deliberate re-baseline on another device is + * still possible, but never by accident. + */ +function enforceEnvironment(platform, env, force) { + const { observed, mismatches } = checkEnvironment(platform, env); + if (mismatches.length === 0) return observed; + + const detail = mismatches.map((m) => ` - ${m}`).join('\n'); + if (force) { + warn(`device does not match ${ENV_FILE} (--force):\n${detail}`); + return observed; + } + fail( + `device does not match ${ENV_FILE}:\n${detail}\n` + + 'refusing to run: baselines are only comparable on the device they were captured on. ' + + 'Boot/point at the right device, or pass --force to continue anyway.' + ); + return observed; // unreachable; keeps the return type honest +} + +/** Canonical baseline path: __baselines__//.png */ +function baselinePath(platform, story) { + return path.join(BASELINE_DIR, platform, `${story}.png`); +} + +/** Normal mode: a missing baseline is a hard error naming the exact path. */ +function requireBaseline(platform, story) { + const baseline = baselinePath(platform, story); + if (!fs.existsSync(baseline)) { + fail( + `no baseline for ${story}: expected ${baseline} — ` + + 'run with --update to create it' ); } - return observed; + return baseline; +} + +/** `--update` mode: write the capture to the baseline, creating it if new. */ +function writeBaseline(platform, story, current) { + const baseline = baselinePath(platform, story); + const created = !fs.existsSync(baseline); + fs.mkdirSync(path.dirname(baseline), { recursive: true }); + fs.copyFileSync(current, baseline); + console.log( + `${platform} ${story} baseline ${created ? 'created' : 'updated'} → ${path.relative(VISUAL_DIR, baseline)}` + ); + return { baseline, created }; } -function resolveBaseline(platform, story) { - const dir = path.join(BASELINE_DIR, platform); - if (!fs.existsSync(dir)) fail(`no baseline directory ${dir}`); - const files = fs.readdirSync(dir).filter((f) => f.endsWith('.png')); - - const exact = files.find((f) => f === `${story}.png`); - if (exact) return path.join(dir, exact); - - // Baseline names differ per platform (ios: surface-elevated.png, - // android: android-base-elevated.png), so match on the story's last segment. - const suffix = story.split('-').pop(); - const bySuffix = files.filter((f) => f.endsWith(`-${suffix}.png`)); - if (bySuffix.length === 1) return path.join(dir, bySuffix[0]); - if (bySuffix.length > 1) { - fail(`ambiguous baseline for ${story} in ${dir}: ${bySuffix.join(', ')}`); +/** + * Fails unless the capture has the dimensions env.json pins for this platform. + * A wrong-sized capture would otherwise diff clean and read as PASS — and so + * would a capture whose size agent-device did not report at all, which is why a + * missing value is a failure rather than a warning. + */ +function checkCaptureSize(platform, env, story, shotData, force) { + const expected = env.baselines || {}; + const problems = []; + + const compare = (what, want, got) => { + if (want == null) { + // Nothing pinned in env.json: nothing to verify against. + warn(`${story}: env.json pins no ${what}, capture reports ${got}`); + return; + } + if (got == null) { + problems.push( + `${what}: expected ${want}, agent-device reported no ${what}` + ); + return; + } + if (Number(got) !== Number(want)) { + problems.push(`${what}: expected ${want}, actual ${got}`); + } + }; + + compare('width', expected.cropWidth, shotData?.width); + compare('height', expected.cropHeight, shotData?.height); + // pixelDensity is reported (and pinnable) on iOS only. Android screenshots + // are native device pixels and env.json pins no density there, so the check + // is skipped rather than warned about. + if (env.pixelDensity != null) { + compare('pixelDensity', env.pixelDensity, shotData?.pixelDensity); + } + + if (problems.length === 0) return; + + const detail = problems.map((p) => ` - ${p}`).join('\n'); + if (force) { + warn( + `${story}: capture dimensions do not match env.json (--force):\n${detail}` + ); + return; } fail( - `no baseline for ${story} in ${dir} (found: ${files.join(', ') || 'none'})` + `${story}: capture dimensions do not match ${ENV_FILE}:\n${detail}\n` + + 'a wrong-sized capture cannot be compared with the baseline. ' + + 'Check --crop-on/--pixel-density and the device, or pass --force to continue anyway.', + 3 + ); +} + +const labelOf = (node) => (node.label || '').trim(); +const hasLabel = (nodes, label) => nodes.some((n) => labelOf(n) === label); + +/** + * Nodes that belong to the app. On Android a snapshot also carries the system + * UI status bar (~10 nodes), which is present even while the app is still + * starting, so it must not count towards readiness. + */ +function appNodes(nodes) { + return nodes.filter((n) => !n.bundleId || n.bundleId === BUNDLE_ID); +} + +function looksReady(nodes) { + const own = appNodes(nodes); + if (own.length <= READY_MIN_NODES) return false; + return !own.some( + (n) => + NOT_READY_LABEL.test(labelOf(n)) || + NOT_READY_IDENTIFIER.test(n.identifier || '') ); } -function dismissDevMenu(globals) { - for (let attempt = 0; attempt < 3; attempt++) { - const snap = ad('snapshot-devmenu', ['snapshot', ...globals]); - const nodes = snap.data?.nodes || []; - const hit = nodes.find((n) => - DEV_MENU_LABELS.includes((n.label || '').trim()) +/** + * Polls the accessibility tree until the app has rendered something real: + * more than READY_MIN_NODES app nodes and no splash/"Downloading" node. Bounded + * so a stuck launch fails instead of hanging. + */ +function waitForAppReady(globals, timeoutMs = READY_TIMEOUT_MS) { + const deadline = Date.now() + timeoutMs; + let nodes = snapshot('snapshot-ready', globals); + while (!looksReady(nodes) && Date.now() < deadline) { + sleepSync(READY_POLL_MS); + nodes = snapshot('snapshot-ready', globals); + } + if (!looksReady(nodes)) { + fail( + `the app did not become ready within ${timeoutMs}ms — the last snapshot ` + + `had ${appNodes(nodes).length} app nodes ` + + `(${appNodes(nodes) + .slice(0, 3) + .map((n) => labelOf(n) || n.identifier || n.type) + .join(' / ')})` ); - if (!hit) return attempt > 0; - console.log(` dev menu: pressing "${hit.label}" (@${hit.ref})`); - ad('press-devmenu', ['press', `@${hit.ref}`, ...globals]); - sleepSync(1000); } - warn('dev-menu labels still present after 3 dismissal attempts'); - return true; + console.log(` app ready (${appNodes(nodes).length} app nodes)`); + return nodes; +} + +/** The RN dev menu: a Close/Continue control with a dev-menu-only marker next to it. */ +function findDevMenuNode(nodes) { + const marker = nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n))); + if (!marker) return null; + return nodes.find((n) => DEV_MENU_LABELS.includes(labelOf(n))) || null; +} + +/** + * The Expo dev launcher ("DEVELOPMENT SERVERS" / "RECENTLY OPENED"). It is left + * behind by an Android relaunch and none of the dev-menu labels match it. The + * way out is the recently-opened row that carries the Metro URL; if that row is + * missing, any labelled row under the "RECENTLY OPENED" header. + */ +function findDevLauncherNode(nodes) { + const header = nodes.find((n) => labelOf(n) === 'RECENTLY OPENED'); + if (!nodes.some((n) => DEV_LAUNCHER_MARKERS.includes(labelOf(n)))) { + return null; + } + + const metroRow = nodes.find( + (n) => labelOf(n).startsWith('http://') && labelOf(n).includes(METRO_PORT) + ); + if (metroRow) return metroRow; + + if (!header) return null; + const headerBottom = (header.rect?.y ?? 0) + (header.rect?.height ?? 0); + return ( + nodes.find( + (n) => + labelOf(n) && + !DEV_LAUNCHER_MARKERS.includes(labelOf(n)) && + (n.rect?.y ?? -1) >= headerBottom + ) || null + ); +} + +/** + * Clears the two dev overlays a relaunch can land in, handling them distinctly + * and re-checking after every press. Returns the settled tree. + */ +function dismissOverlays(globals) { + let nodes = waitForAppReady(globals); + + for (let step = 0; step < MAX_OVERLAY_STEPS; step++) { + const devMenu = findDevMenuNode(nodes); + if (devMenu) { + console.log( + ` dev menu: pressing "${labelOf(devMenu)}" (@${devMenu.ref})` + ); + ad('press-devmenu', ['press', `@${devMenu.ref}`, '--settle', ...globals]); + nodes = waitForAppReady(globals); + continue; + } + + const launcher = findDevLauncherNode(nodes); + if (launcher) { + console.log( + ` dev launcher: pressing "${labelOf(launcher)}" (@${launcher.ref})` + ); + ad('press-launcher', [ + 'press', + `@${launcher.ref}`, + '--settle', + ...globals, + ]); + nodes = waitForAppReady(globals); + continue; + } + + return nodes; + } + + fail( + `a dev overlay was still on screen after ${MAX_OVERLAY_STEPS} dismissal ` + + 'attempts (dev menu and/or Expo dev launcher)' + ); + return nodes; // unreachable } function onSurfaceScreen(globals, stories) { - const snap = ad('snapshot-raw', ['snapshot', '--raw', ...globals]); - const nodes = snap.data?.nodes || []; + const nodes = snapshot('snapshot-raw', globals, ['--raw']); return stories.every((story) => nodes.some((n) => n.identifier === story)); } +/** + * The example-list root is the only screen whose Appbar title is "Examples"; + * every example screen shows a "Back" action where the root shows the drawer + * button. Either signal on its own identifies the root. + */ +function atListRoot(nodes) { + return hasLabel(nodes, LIST_ROOT_TITLE) || !hasLabel(nodes, BACK_LABEL); +} + +/** + * Pops the navigation stack until the example list root is on screen. Uses the + * Appbar "Back" element when there is one (present on both platforms), and + * falls back to platform back navigation for a screen with no header. + */ +function goBackToListRoot(platform, globals, nodes) { + let current = nodes; + + for (let step = 0; step < MAX_BACK_STEPS; step++) { + if (atListRoot(current)) return current; + + const back = current.find((n) => labelOf(n) === BACK_LABEL); + if (back) { + console.log(` pressing "Back" (@${back.ref})`); + ad('press-back', ['press', `@${back.ref}`, '--settle', ...globals]); + } else if (platform === 'android') { + console.log(' no "Back" element — sending Android KEYCODE_BACK'); + const res = sh(adbPath(), ['shell', 'input', 'keyevent', '4']); + if (res.status !== 0) { + fail(`adb input keyevent 4 failed: ${res.stderr.trim()}`); + } + } else { + console.log(' no "Back" element — using system back'); + ad('back', ['back', '--system', '--settle', ...globals]); + } + + current = waitForAppReady(globals); + } + + fail( + `still not on the example list root after ${MAX_BACK_STEPS} back steps — ` + + `expected the "${LIST_ROOT_TITLE}" title` + ); + return current; // unreachable +} + +/** + * Picks the "Surface" LIST ROW out of a snapshot of the example list. + * + * Several nodes can carry that label, and pressing the wrong one is a no-op + * that reads as a navigation failure: the Appbar title of the Surface screen + * itself, and on Android both the row container and its inset text child. The + * row is the candidate that + * - sits below the Appbar — rect.y at or past the bottom of the + * "Examples" title node (iOS 108pt, Android 294px), which is what excludes + * any header/title node, and + * - spans the list — width at least 90% of the screen, which excludes the + * Android Appbar title (1100 of 1280px) a second way, and then the widest + * of what is left, i.e. the row container (iOS 402 of 402pt, Android 1280 + * of 1280px) rather than its inset text child (Android 1160px). + * + * With no "Examples" title in the tree this is not the list root, so there is + * no row to press and the function reports nothing rather than guessing. + */ +function findSurfaceRow(nodes) { + const titles = nodes.filter((n) => labelOf(n) === LIST_ROOT_TITLE); + if (titles.length === 0) return null; + const headerBottom = Math.max( + ...titles.map((n) => (n.rect?.y ?? 0) + (n.rect?.height ?? 0)) + ); + const screenWidth = Math.max(0, ...nodes.map((n) => n.rect?.width ?? 0)); + + const candidates = nodes.filter( + (n) => + labelOf(n) === SURFACE_ROW_LABEL && + (n.rect?.y ?? -1) >= headerBottom && + (n.rect?.width ?? 0) >= 0.9 * screenWidth + ); + if (candidates.length === 0) return null; + + return candidates.sort( + (a, b) => (b.rect?.width || 0) - (a.rect?.width || 0) + )[0]; +} + +/** + * Scrolls down the example list until the "Surface" row shows up, then opens + * it. The caller must have put the app on the list root first, since scrolling + * only ever goes down. + */ function navigateToSurface(globals, stories) { - if (onSurfaceScreen(globals, stories)) { - console.log(' already on the Surface screen'); - return; + for (let step = 0; step <= MAX_SCROLL_STEPS; step++) { + const nodes = snapshot('snapshot-list', globals); + const target = findSurfaceRow(nodes); + + if (target) { + // Press by ref off a fresh snapshot: `find 'label="Surface"'` is + // AMBIGUOUS_MATCH on Android and taps as a side effect on iOS. + console.log( + ` pressing the "Surface" row (@${target.ref}, ${target.type}, ` + + `y=${Math.round(target.rect?.y ?? -1)}, w=${Math.round(target.rect?.width ?? -1)})` + ); + ad('press-surface', ['press', `@${target.ref}`, '--settle', ...globals]); + + if (onSurfaceScreen(globals, stories)) return; + fail( + `pressed the "Surface" row but the example screen did not appear ` + + `(expected ids: ${stories.join(', ')})` + ); + } + + if (step < MAX_SCROLL_STEPS) { + ad('scroll', [ + 'scroll', + 'down', + String(SCROLL_STEP), + '--settle', + ...globals, + ]); + } } - for (let attempt = 1; attempt <= 2; attempt++) { - ad('scroll-1', ['scroll', 'down', '6', '--settle', ...globals]); - ad('scroll-2', ['scroll', 'down', '6', '--settle', ...globals]); + fail( + `could not find the "Surface" row after ${MAX_SCROLL_STEPS} scrolls of ` + + `${SCROLL_STEP} rows — is the example list on screen?` + ); +} - // `find 'label="Surface"'` is AMBIGUOUS_MATCH on Android (and taps as a - // side effect on iOS), so press by ref off a fresh snapshot instead. - const snap = ad('snapshot-list', ['snapshot', ...globals]); - const candidates = (snap.data?.nodes || []).filter( - (n) => (n.label || '').trim() === 'Surface' - ); - if (candidates.length === 0) { - if (attempt === 2) - fail('could not find the "Surface" row in the example list'); - continue; +/** + * Relaunches the app and leaves it on the Surface example screen. + * + * The relaunch is unconditional. The app persists its navigation state + * (PERSISTENCE_KEY in example/src/index.tsx), so "already on the Surface + * screen" says nothing about which screen a plain `open` will land on, and — + * more importantly — only a relaunch makes the app fetch the current JS bundle + * from Metro. Skipping it on the strength of the screen that happens to be up + * captured a stale bundle on Android. + */ +function openOnSurfaceScreen(platform, globals, stories) { + console.log(' relaunching the app (fresh bundle from Metro)'); + if (platform === 'ios') { + ad('open-relaunch', ['open', BUNDLE_ID, '--relaunch', ...globals]); + } else { + const stop = sh(adbPath(), ['shell', 'am', 'force-stop', BUNDLE_ID]); + if (stop.status !== 0) { + fail(`adb force-stop ${BUNDLE_ID} failed: ${stop.stderr.trim()}`); } + ad('open-after-force-stop', ['open', BUNDLE_ID, ...globals]); + } - // Prefer the largest match: the row container on Android, the label on iOS. - const area = (n) => (n.rect?.width || 0) * (n.rect?.height || 0); - const target = candidates.sort((a, b) => area(b) - area(a))[0]; - console.log(` pressing "Surface" row (@${target.ref})`); - ad('press-surface', ['press', `@${target.ref}`, '--settle', ...globals]); + const nodes = dismissOverlays(globals); - if (onSurfaceScreen(globals, stories)) return; - if (attempt === 2) - fail('pressed the "Surface" row but the example screen did not appear'); + if (onSurfaceScreen(globals, stories)) { + console.log(' restored onto the Surface screen'); + return; } + + console.log(' not on the Surface screen — going back to the example list'); + const rootNodes = goBackToListRoot(platform, globals, nodes); + console.log(` at the example list root (${rootNodes.length} nodes)`); + navigateToSurface(globals, stories); } -function main() { - const opts = parseArgs(process.argv.slice(2)); +/** + * The whole device pass. Mutates `state` as it goes so main() can write a + * summary whether this returns or throws. Returns the exit code (0 or 1). + */ +function runPass(state) { + const opts = state.opts; const { platform } = opts; if (!fs.existsSync(ENV_FILE)) fail(`missing ${ENV_FILE}`); const envFile = JSON.parse(fs.readFileSync(ENV_FILE, 'utf8')); const env = platform === 'ios' ? envFile : { ...envFile.android }; - - const outDir = path.join(VISUAL_DIR, 'artifacts', 'run', platform); - cmdDir = path.join(outDir, 'cmds'); - fs.mkdirSync(cmdDir, { recursive: true }); + state.env = env; const globals = platform === 'ios' @@ -386,23 +795,16 @@ function main() { env.agentDeviceSession || 'android', ]; - console.log( - `# ${platform} — threshold ${opts.threshold}${opts.update ? ' (update)' : ''}` - ); - const observed = checkEnvironment(platform, env); + state.observedEnv = enforceEnvironment(platform, env, opts.force); - const startedAt = Date.now(); - ad('open', ['open', BUNDLE_ID, ...globals]); - dismissDevMenu(globals); - navigateToSurface(globals, opts.stories); + openOnSurfaceScreen(platform, globals, opts.stories); ad('wait-stable', ['wait', 'stable', '500', '10000', ...globals]); sleepSync(2000); // covers the customFontLoaded theme swap, which has no node change - const results = []; let failed = false; for (const story of opts.stories) { - const current = path.join(outDir, `${story}.png`); + const current = path.join(opts.outDir, `${story}.png`); const shotArgs = [ 'screenshot', current, @@ -414,17 +816,14 @@ function main() { if (platform === 'ios') shotArgs.push('--pixel-density', String(env.pixelDensity || 3)); const shot = ad(`screenshot-${story}`, shotArgs); - - const baseline = resolveBaseline(platform, story); + checkCaptureSize(platform, env, story, shot.data, opts.force); if (opts.update) { - fs.copyFileSync(current, baseline); - console.log( - `${platform} ${story} baseline updated → ${path.relative(VISUAL_DIR, baseline)}` - ); - results.push({ + const { baseline, created } = writeBaseline(platform, story, current); + state.results.push({ story, - updated: true, + updated: !created, + created, baseline, current, width: shot.data?.width ?? null, @@ -433,7 +832,9 @@ function main() { continue; } - const diffOut = path.join(outDir, `${story}-diff.png`); + const baseline = requireBaseline(platform, story); + + const diffOut = path.join(opts.outDir, `${story}-diff.png`); const diff = ad(`diff-${story}`, [ 'diff', 'screenshot', @@ -457,7 +858,7 @@ function main() { `${platform} ${story} changed=${changed} (${pct}%) regions=${regions} threshold=${opts.threshold} → ${pass ? 'PASS' : 'FAIL'}` ); - results.push({ + state.results.push({ story, baseline, current, @@ -471,26 +872,108 @@ function main() { }); } + return failed ? 1 : 0; +} + +function writeSummary(state, exitCode, error) { + const { opts } = state; const summary = { - platform, + platform: opts.platform, threshold: opts.threshold, update: opts.update, + force: opts.force, stories: opts.stories, + outDir: opts.outDir, agentDeviceVersion: AGENT_DEVICE, sessionCwd: SESSION_CWD, - expectedEnv: env, - observedEnv: observed, - startedAt: new Date(startedAt).toISOString(), - wallClockMs: Date.now() - startedAt, - results, - pass: !failed, + expectedEnv: state.env, + observedEnv: state.observedEnv, + startedAt: new Date(state.startedAt).toISOString(), + wallClockMs: Date.now() - state.startedAt, + results: state.results, + status: exitCode === 0 ? 'pass' : exitCode === 1 ? 'fail' : 'error', + exitCode, + error, + pass: exitCode === 0, }; - fs.writeFileSync( - path.join(outDir, 'summary.json'), - JSON.stringify(summary, null, 2) + const file = path.join(opts.outDir, 'summary.json'); + fs.writeFileSync(file, JSON.stringify(summary, null, 2)); + return file; +} + +function main() { + // Argument errors are the one class of failure that cannot be summarised: + // there is no output directory to write into yet. + const opts = parseArgs(process.argv.slice(2)); + + const state = { + opts, + env: null, + observedEnv: {}, + results: [], + startedAt: Date.now(), + }; + + cmdDir = path.join(opts.outDir, 'cmds'); + fs.mkdirSync(cmdDir, { recursive: true }); + + console.log( + `# ${opts.platform} — threshold ${opts.threshold}${opts.update ? ' (update)' : ''}${opts.force ? ' (force)' : ''}` ); + console.log(`# output: ${opts.outDir}`); + + let exitCode = 0; + let error = null; + try { + exitCode = runPass(state); + } catch (thrown) { + if (thrown instanceof RunFailure) { + console.error(`error: ${thrown.message}`); + exitCode = thrown.exitCode; + error = { message: thrown.message, exitCode: thrown.exitCode }; + } else { + console.error(thrown?.stack || String(thrown)); + exitCode = 2; + error = { + message: thrown?.message || String(thrown), + stack: thrown?.stack, + exitCode: 2, + }; + } + } - process.exit(failed ? 1 : 0); + const summaryFile = writeSummary(state, exitCode, error); + console.log(`# summary: ${summaryFile} (exit ${exitCode})`); + process.exit(exitCode); +} + +if (import.meta.main) { + try { + main(); + } catch (thrown) { + // Only argument errors can reach here: runPass failures are caught (and + // summarised) inside main(). + if (!(thrown instanceof RunFailure)) throw thrown; + console.error(`error: ${thrown.message}`); + process.exit(thrown.exitCode); + } } -main(); +// Exported so the argument/path/environment logic can be exercised from a +// throwaway script without a device; the script itself only runs when +// executed directly. +export { + RunFailure, + parseArgs, + baselinePath, + requireBaseline, + writeBaseline, + checkEnvironment, + enforceEnvironment, + checkCaptureSize, + findSurfaceRow, + findDevMenuNode, + findDevLauncherNode, + atListRoot, + looksReady, +}; From 63e169905e5a7ab4832ae4808ac60b3472055d63 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Fri, 11 Sep 2026 10:58:19 +0200 Subject: [PATCH 03/18] test(example): address round-2 review on the visual regression PoC - Entry point: replace `import.meta.main` (Node >= 24.2 only) with a realpath comparison of argv[1] and the module URL. On Node 20/22 the script previously printed nothing and exited 0. Verified on 20.20.2. - `--update` skips the capture-size check and prints the captured dimensions, so a new story can get a baseline; regression test added. - `--force` covers the device check only; a size mismatch in diff mode has no override. - Remove the dev-launcher geometric fallback, the unreachable size-check branch, the duplicate iOS version comparison and unused exports. - List-root detection requires the "Examples" title; argument errors write a summary.json too. - Strip npm_config_* from the spawned environment so the nested `npx agent-device` works when the script itself runs under `npx -p`. - run.test.mjs (node:test, 6 cases) and evidence/summarize.mjs, the committed generator behind evidence/summary.md. - Evidence: drop the 12 wait.json files and two full-tree snapshots; add the round-2 runs on Node 24 and Node 20. - README: Android section no longer credits `accessible`; Node requirement, test and generator documented; env.json drops the parent-commit pin. --- example/visual/README.md | 45 +- example/visual/env.json | 1 - .../runs/android/round2-pass/stdout.log | 10 + .../runs/android/round2-pass/summary.json | 79 + .../runs/ios/round2-fail-node20/stdout.log | 11 + .../runs/ios/round2-fail-node20/summary.json | 184 + .../surface-example-elevated-diff.png | Bin 0 -> 52140 bytes .../ios/round2-pass-after-revert/stdout.log | 11 + .../ios/round2-pass-after-revert/summary.json | 105 + .../ios/round2-pass-node20-literal/stdout.log | 10 + .../round2-pass-node20-literal/summary.json | 105 + .../runs/ios/round2-pass-node20/stdout.log | 11 + .../runs/ios/round2-pass-node20/summary.json | 105 + .../evidence/runs/ios/round2-pass/stdout.log | 10 + .../runs/ios/round2-pass/summary.json | 105 + .../android/000-snapshot-raw-forcefull.json | 4341 ----------------- .../sensitivity/android/gross-probe-wait.json | 8 - .../sensitivity/android/gross-wait.json | 8 - .../sensitivity/android/realistic-1-wait.json | 8 - .../sensitivity/android/realistic-2-wait.json | 8 - .../sensitivity/android/realistic-3-wait.json | 8 - .../sensitivity/android/reverted-wait.json | 8 - .../android/sanity-before-break-wait.json | 8 - .../ios/000-snapshot-raw-forcefull.json | 2821 ----------- .../evidence/sensitivity/ios/gross-wait.json | 8 - .../sensitivity/ios/realistic-1-wait.json | 8 - .../sensitivity/ios/realistic-2-wait.json | 8 - .../sensitivity/ios/realistic-3-wait.json | 8 - .../sensitivity/ios/reverted-wait.json | 8 - example/visual/evidence/summarize.mjs | 135 + example/visual/evidence/summary.md | 318 +- example/visual/run.mjs | 238 +- example/visual/run.test.mjs | 123 + 33 files changed, 1398 insertions(+), 7466 deletions(-) create mode 100644 example/visual/evidence/runs/android/round2-pass/stdout.log create mode 100644 example/visual/evidence/runs/android/round2-pass/summary.json create mode 100644 example/visual/evidence/runs/ios/round2-fail-node20/stdout.log create mode 100644 example/visual/evidence/runs/ios/round2-fail-node20/summary.json create mode 100644 example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png create mode 100644 example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log create mode 100644 example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json create mode 100644 example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log create mode 100644 example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json create mode 100644 example/visual/evidence/runs/ios/round2-pass-node20/stdout.log create mode 100644 example/visual/evidence/runs/ios/round2-pass-node20/summary.json create mode 100644 example/visual/evidence/runs/ios/round2-pass/stdout.log create mode 100644 example/visual/evidence/runs/ios/round2-pass/summary.json delete mode 100644 example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-probe-wait.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-wait.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-1-wait.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-2-wait.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-3-wait.json delete mode 100644 example/visual/evidence/sensitivity/android/reverted-wait.json delete mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-wait.json delete mode 100644 example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json delete mode 100644 example/visual/evidence/sensitivity/ios/gross-wait.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-wait.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-wait.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-wait.json delete mode 100644 example/visual/evidence/sensitivity/ios/reverted-wait.json create mode 100644 example/visual/evidence/summarize.mjs create mode 100644 example/visual/run.test.mjs diff --git a/example/visual/README.md b/example/visual/README.md index 5f4b7d87fa..fbad6743d9 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -8,7 +8,7 @@ Every number below is backed by committed evidence in `evidence/`. The original ## Setup -- Branch `poc/agent-device-visual` @ `cbcd52f7e`, React Native 0.85.3, Expo 56, Debug dev-client. +- Branch `poc/agent-device-visual` (PR #5115), React Native 0.85.3, Expo 56, Debug dev-client. - iPhone 17 Pro simulator, iOS 26.5, 3x. Built with `yarn example ios --device "iPhone 17 Pro"` (63 s incremental). - agent-device 0.21.0 via `npx`, driven from the CLI. No Storybook, no extra screens. - Example-app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat`, named so they cannot be mistaken for the library defaults removed in #5088 and #5099), so `screenshot --crop-on 'id="surface-example-elevated"'` crops to exactly that section (402x214 logical, 1206x642 px at `--pixel-density 3`). @@ -81,7 +81,7 @@ Issues 13–18 came out of the review round: `snapshot` returns an empty `nodes` Emulator `Pixel_10_Pro`, API 37 (Android 17), arm64 `google_apis_playstore_ps16k`, 480 dpi, 1280x2856, emulator 36.6.11, `hw.gpu.mode=auto`. Wall-clock: emulator boot 8 s, `yarn example android` (incremental, build + install + launch) 119 s, `open` 668 ms, `open --relaunch` 1,688 ms, one cropped capture ≈ 2 s. -`--pixel-density` is rejected on Android (`UNSUPPORTED_OPERATION`, iOS-family only); Android screenshots already come back in native device pixels, so the `surface-example-elevated` crop is 1280x642 = 821,760 px. `--crop-on 'id="surface-example-elevated"'` and `'id="surface-example-flat"'` each resolve to exactly one node (`testID` + `accessible` exposes `resource-id`), so no fallback selector was needed. +`--pixel-density` is rejected on Android (`UNSUPPORTED_OPERATION`, iOS-family only); Android screenshots already come back in native device pixels, so the `surface-example-elevated` crop is 1280x642 = 821,760 px. `--crop-on 'id="surface-example-elevated"'` and `'id="surface-example-flat"'` each resolve to exactly one node from the `testID` alone (see "The only test hook" above), so no fallback selector was needed. ### Stability @@ -152,13 +152,26 @@ node example/visual/run.mjs --platform ios node example/visual/run.mjs --platform android ``` +Requires Node 20 or newer, matching `example/package.json`. The entry point is +guarded by comparing `process.argv[1]` with the module URL rather than +`import.meta.main`, which only exists from Node 24.2 — on Node 20 the earlier +version printed nothing and exited 0, the worst failure a tool whose contract is +its exit code can have. The pure helpers have a `node:test` file: + +```bash +node --test example/visual/run.test.mjs +``` + +`evidence/summary.md` is generated from the committed JSON by +`node example/visual/evidence/summarize.mjs`. + Flags: `--update` (write the current captures as baselines — creates a missing baseline, overwrites an existing one), `--threshold <0-1>` (default `0.02`, the PoC finding — the CLI default of `0.1` misses soft-shadow regressions), `--story surface-example-elevated,surface-example-flat`, `--out ` (where captures, diff images, per-command JSON and `summary.json` go; default -`example/visual/artifacts/run/`, gitignored), `--force` (downgrade the two -guardrails below to warnings). +`example/visual/artifacts/run/`, gitignored), `--force` (downgrade the device +check below to a warning — it does not touch the crop-size check). Prerequisites are documented, not automated: the app must already be built and installed on the device pinned in `env.json`, and Metro must be running. The @@ -187,18 +200,22 @@ Exit codes: `1` if any story fails; `2` if the connected device does not match `env.json`; `3` if a capture's dimensions do not match the crop pinned in `env.json`. A regression is the only thing that exits 1. -Two guardrails, both hard failures unless `--force`: +Two guardrails: - **Device pin.** Before any capture the script compares the connected device with `env.json` — UDID, iOS runtime and boot state via `xcrun simctl list -j devices`; API level and density via `adb getprop` and `adb shell wm density`. Any mismatch, or an inability to identify the device at all, exits 2 with an expected/observed list. This applies to `--update` too, so committed baselines cannot be - overwritten from the wrong simulator by accident. -- **Crop size.** After every capture the reported width, height and (on iOS) - pixel density are compared with the crop pinned in `env.json`. A mismatch exits - 3; a wrong-sized capture can never read as PASS. `env.json` is never rewritten - by the script. + overwritten from the wrong simulator by accident. `--force` downgrades this + check to a warning; that is the only thing `--force` does. +- **Crop size.** In diff mode, after every capture the reported width, height and + (on iOS) pixel density are compared with the crop pinned in `env.json`. A + mismatch exits 3 with no override — a wrong-sized capture can never read as + PASS, and a size mismatch on the right device means something a flag should + not paper over. In `--update` mode the check is skipped (a new story has no + pinned size yet) and the captured dimensions are printed on the `baseline +created` line instead. `env.json` is never rewritten by the script. Verified end to end on 2026-09-10 after review; `summary.json` and the diff images are in `evidence/runs//fix-*/`. From the Surface screen: PASS with `changed=0` @@ -209,3 +226,11 @@ reload: `ios surface-example-elevated changed=10179 (1.31%) regions=3 → FAIL`, `android surface-example-elevated changed=9336 (1.14%) regions=1 → FAIL`, exit 1 — the same counts as every hand-run capture. After `git checkout -- src/components/Surface.tsx`: PASS again on both. + +Round-2 verification (2026-09-11), `evidence/runs//round2-*/`: PASS on iOS +(15 s) and Android (31 s) on Node 24.18; on Node 20.20.2 via `npx -y -p node@20 node +example/visual/run.mjs --platform ios` the entry point fires and PASSes (19 s), the +realistic break FAILs with `changed=10179 (1.31%)`, exit 1, and the revert PASSes. +One thing that surfaced: `npx -p` leaks `npm_config_package` into the child, which +made the script's own nested `npx agent-device` install node instead — the script +now strips `npm_config_*` from the environment it spawns with. diff --git a/example/visual/env.json b/example/visual/env.json index ab10fdd3dc..56e0f34822 100644 --- a/example/visual/env.json +++ b/example/visual/env.json @@ -9,7 +9,6 @@ "agentDeviceVersion": "0.21.0", "reactNativeVersion": "0.85.3", "branch": "poc/agent-device-visual", - "commit": "cbcd52f7e", "date": "2026-09-10T09:30:58Z", "baselines": { "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", diff --git a/example/visual/evidence/runs/android/round2-pass/stdout.log b/example/visual/evidence/runs/android/round2-pass/stdout.log new file mode 100644 index 0000000000..a74104afc2 --- /dev/null +++ b/example/visual/evidence/runs/android/round2-pass/stdout.log @@ -0,0 +1,10 @@ +# android — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass + relaunching the app (fresh bundle from Metro) + app ready (55 app nodes) + dev launcher: pressing "http://192.168.1.151:8081" (@e53) + app ready (52 app nodes) + restored onto the Surface screen +android surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +android surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/summary.json (exit 0) diff --git a/example/visual/evidence/runs/android/round2-pass/summary.json b/example/visual/evidence/runs/android/round2-pass/summary.json new file mode 100644 index 0000000000..e01b2845e3 --- /dev/null +++ b/example/visual/evidence/runs/android/round2-pass/summary.json @@ -0,0 +1,79 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/Users/juliankobrynski/Projects/react-native-paper/example/visual", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-11T08:53:38.909Z", + "wallClockMs": 31013, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-fail-node20/stdout.log b/example/visual/evidence/runs/ios/round2-fail-node20/stdout.log new file mode 100644 index 0000000000..e64abd0f3b --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-fail-node20/stdout.log @@ -0,0 +1,11 @@ +v20.20.2 +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20 + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=10179 (1.31%) regions=3 threshold=0.02 → FAIL +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/summary.json (exit 1) diff --git a/example/visual/evidence/runs/ios/round2-fail-node20/summary.json b/example/visual/evidence/runs/ios/round2-fail-node20/summary.json new file mode 100644 index 0000000000..7ebd922c52 --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-fail-node20/summary.json @@ -0,0 +1,184 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T08:55:29.900Z", + "wallClockMs": 16599, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 10179, + "mismatchPercentage": 1.31, + "regions": [ + { + "index": 1, + "rect": { + "x": 471, + "y": 206, + "width": 378, + "height": 378 + }, + "normalizedRect": { + "x": 39.05, + "y": 32.09, + "width": 31.34, + "height": 58.88 + }, + "differentPixels": 10175, + "shareOfDiffPercentage": 99.96, + "densityPercentage": 7.12, + "shape": "compact", + "size": "large", + "location": "center", + "averageBaselineColorHex": "#faf3fb", + "averageCurrentColorHex": "#efe8f0", + "baselineLuminance": 245, + "currentLuminance": 234, + "dominantChange": "mixed" + }, + { + "index": 2, + "rect": { + "x": 483, + "y": 215, + "width": 2, + "height": 2 + }, + "normalizedRect": { + "x": 40.05, + "y": 33.49, + "width": 0.17, + "height": 0.31 + }, + "differentPixels": 3, + "shareOfDiffPercentage": 0.03, + "densityPercentage": 75, + "shape": "compact", + "size": "small", + "location": "center", + "averageBaselineColorHex": "#fbf4fc", + "averageCurrentColorHex": "#f6eff6", + "baselineLuminance": 246, + "currentLuminance": 241, + "dominantChange": "mixed" + }, + { + "index": 3, + "rect": { + "x": 835, + "y": 213, + "width": 1, + "height": 1 + }, + "normalizedRect": { + "x": 69.24, + "y": 33.18, + "width": 0.08, + "height": 0.16 + }, + "differentPixels": 1, + "shareOfDiffPercentage": 0.01, + "densityPercentage": 100, + "shape": "compact", + "size": "small", + "location": "middle-right", + "averageBaselineColorHex": "#fdf6fe", + "averageCurrentColorHex": "#f7f0f8", + "baselineLuminance": 248, + "currentLuminance": 242, + "dominantChange": "mixed" + } + ], + "threshold": 0.02, + "pass": false + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "fail", + "exitCode": 1, + "error": null, + "pass": false +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png b/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..02219e89f4a5993c6b06e689981910067e9544d5 GIT binary patch literal 52140 zcmeFa30Ra@w(g%!n?#LKA>xn_Q7jcJI3PyBAVdMBP#Ftxgb0e!7`4EGiU?^Z1W^=3 zKoKH{fT+aK1_%hPfHhXtXmW=CIrq8$bIv{IK5ajyrKsB9 z-fMW@cdZZB7vkhFHnvPXM6a)8=Q0UM(t;1aXnm)ygnlFZFAoh?s6+trPck(^?fgX{hghr`<}udK5E*q z>e|VZTc&+5ykx|gw^|m>oVS0Q?3hirh`IfA>=OIx*m*hI3<;6z{6*H2zyJ8gKTPtE zVEFHm1{!Z&g-y2&Iy(Ji&Ji|xiks7Qx9#{ySLf^^n{KZu_Q{-Wb+h)`3^m+iW3y&} z&eW;8!xhTCg`dfscXXHO=-jlmaoS^}&~=lk-c|H7eDxno{lixO#la9@f3DM!YnnLf zHYs#p6VYj*xH(cmJlpCv%2Ww5=RL%AS!Cg+2%D+@c;kPPdE7R~cKx}oYd_Ak>(7E| zJ$zpLnQ3&ktn1Ip9>Zf^ynXcHZZF=QIeg#8FW&vlR^1oxF5B<)kHx#}^8cn;7WnF% zT{&@Bg`d{t55tpoZ`yz5itFuyAjkU$SLYwT{K?1b*R3l$IBB)frl(ikkDoZPxR1A) zzOPDkc8%GR3GbL3ytJqA_U*xMyzz!Mu&zgEln+=kKK9Ao^KU#ppSi3e_38@alCQ%i z%r;rjPv^*T`%x8s4;SCOdGkqCxK+f`L5+r+EhG8!@+v zT3XEK?RWn9)~)LMS5hXt^VW;QC6^C4erwg0l@nWrN65|&o*rKtHhq|V=Jj5gx$pE2 z-Zy8?oaV-a&M?`F_otK(Sh-@4LU&-o`2B zl22KwFla31P(*CaJuquTSh4r_6NXp#9k?{&#GIWDDO+TLyNpW*?wUSp#M?fZgSeza zigo(cX}X;YSeA3JQiN>nV10tuG|9-DK_1e$r6bErR!&Uv$Y6=Nixwq&WHf&IubM`ibwS;kRxrT5-{j{n6?m z?@gNyg@<&1-flT^(bm{P6wv-&eM@)F$NQGKtS2`>s+-$F$2wI%x{;N) zsdc})BEf1I@p$83KUcu+9bZ<~`F;L*$WySMeh zgHMl5I5_*+vu8iux|KX9eX(TcXT#II`;4jZ^C$?MopG&-P^$jrmmQgzrXG3zQ`4^| zmT(9~1PQRMv~=eB_3N{D?)dWB1Lye*79`zTm1$(?-}Lysy2^r)hRrdTKPdz&vh(up zWdyaquZVc^_XdmFrw^|E_W2ac5wl&j9;zzZIpDAJM?dzm7~FWikJX-|qp}oN_9X;9 z57A!ptaWK)T-NGJ-}UP+6caJnH~ZUfHBX-GS)Y5UPGKXU!xvOqJ?h`Q^r(6J>#sOk zU4HPiImV*mep4$>U*qrp9jDo_x7Iwvv*75p2lXVS@7lG6SbnTW-j`QbbeSaC{;M~l zmJX^6>YQ@MBV0`aJbk)u;>3xcoSt9yZg_D()2$7F$1x!4o2;x+i^zw$HyM&SG_*{bm!HpZofXA+<5ZjN&m*0x7^6pN9zx+&z((7 zdn8@{5@cGHwLI$vksBeqJCV(|H&tGF@HFNcx#H=$%-eeld6ZZ0U$&ugQ}HJgGy)+i zH#NOSx@CA|WPbC_1x|LzAy}p`68Ktk>D|HKubf!bT31l}@L`zCi8&(3&zzYu*eY;V z)(vvc^_^a?w>|Le^fJ?L*eHxm;53q0M7$grVQaa!j$U11l5u_I_b;~g^P`D;+g9gn zAFH;%;g}uWYfjG}{mnPuXw%uW?$=*KC#}ByWK`z$u)2cIc#n+YywA^+|NQei3l=N@ z$DGoy8ZDi7A>BQrxgw~;+UAMLzkASg5*|OC=~g`Whs&3Bww(RKCHGd%ojYIb+Vz&q z8RXVCFz{Qq&UW$SLk%3-BR?QS)_+~@qVkH0QDlC`HScB1f*nP!?UVJmwJO@SE5%o2 z-LTmBEDX22v+MQb9e3K=;(!C-avQlic*^I6Y`QW3`LFNWySuv!Z|;k?P@hYh5uTl% zlr-%1Eq_WT9M7Kp)4T7!YnM1dzqh%iWeul4w{~*%rGu050$Owx%8>3P{do}+D<`U- zJsbo<@!mrYEl=+LS!~0@V|?r^eduZSb+^wX?O8g= zsfc ze|B(mO#3=N-y!q*ksrv}eGys!O9+e)ierPbS2S3}GiAf9wVV z*E%OZzlOJbkIRIi4jw#c=XJZJq$fH3F_8KF$K&n*-Z$bB5=;m7GCFf12M;z3xx3~&YjX(XhfgLnKYx$`o*UaoY)x@YfC*+SA2)E^;P93yJGy^u?7ea0 z!Hj~A12e)01Fw5*4$n!i?<-FC!8>oU@I~?vz)(j3veo!gy=>XCn_!J9Fwg=0Qr}Q5 zP;^gWo=ovmWo0dB2#nZwwp0Xt*BB?icI_J5bOl|jP+*Jw{N7fSEtog&E^mAI_^}H) z8y6q%)dk$g8ejX+-25;&mLr1m!iCoher#>33+did5dqfOotRTKF~ZEu><(dYamh5n zU?4z$MdFP|4IS+pdlK18=1mvx;U+ylqDLDohJ0oMd_F_E-t)he?oQ>up|709mS z6DLMPkl_YaU`zeRzvkpzbobn}O&0j(zj56xLV5A+#@dSIr{@Qh{ran%5Es1I@933L z?3_J*{mZ|*cZQ79I-#~7EBX6V27p7X%)VlWFgbLIZH)#GEwy|c^cv(G*|_3gJMi!3%h-`Cja2Uq3~S8SFUZaxQayAqnL z+&1{L)vJevR3g|OK6+H2!+sEO(+(U}#yX@39rN?en@d3UT%pMT5yZAF;7h*Qqjum~ zONhRnEQfrJ5Q=#5ki#2YnW@-3Wk+Cvqm9$gw{O>+1jb{o)itHzZvp3IVfJjBzjIX3 zRHpKT8j``K?(KmIJHGtunKPFbv44|{%DT+d$~x24>()i(9=rAc{u(^(#GIrn_nm%i zY6W4wIxfugI<(;uU#mp4*>p=jefopP$Jo|Ych47pFTw z8E`+x-MwWY6zBOVrN?RlG{CX}w z(3PgiX^pSl`01yQgMtz|-@-TQ%D~pq36x#v*{~ZcSFZ+8ZQ^SotAfgu8;`z5@;lF; zH}CM3`?UVf`dj#bJp+58G09M=PH3<|Y>notnoX^bvI2HnRE)ahW7?m;HR~q7XE_7F zKP+O3l+U=9gjG>Lc3#*EyZ?CY+B{FskqX`8^KC%1LA_qbW}Kg`7?*zcb(lp(NcYEH zlMjv0;PMG1M`M2bvjvtj;%oQu#Y=xY8$#+eV)f_)mwav>MSzgV)z!m=MkHOR>pU`M zqyaOd5Lf{LvkEFlmW~hX^M?-^Q+4b^5n<2@VAS6TxhUe{*`ozm9B;YUaBAdxK=YHo ze166u>xLk;s3^UML5RZodK2Q%xHP*D9(Fn7k#c>dZ^9o|*H&MfmjC+GYTPWgPjRvc zG#WE@>?n9@@6tg;*xaRog;t#{j_ARm zBK$J0X$vwbN?g80(SV)`XmKKeNMUi%xYP*$3nW8F&L53&Ifh!uhm@2Qiz6IJq1)M3 zYsKYSS#6Y5xCtpv4O+i|umfREv2P>{RrkSz@1D%a7_@7885~1Ecksz!Ay$bKX16pI zbk5$tbRSqGFy_W*^H21rbe(_VLS8~pM=Ywr^62GHoDdL1Ai z9YZD~-X70Py8Q8NVD;(>m3vivOyzvOhM*rk`m85k_A#(r1Mk{6Q5p&%NCsGrFw9Oj zE}h#SM+werZEZye_ENOX7p%>y=(ZG)aj|zQ^n*X%m!ckda+N%ueGsAm_3T`4GD1!>CUAKl-yAe3Mp~Iz+Tyo(!bWi z;ER%%mn<27w@Cy2fvNY2069)|IdJsm)lVjP&7*mPCU{K|U~dCPw(PrfX?BF{@LH5N z>!IR7N{=(27a{Gb|CU^?sTmPrgski8rgWxB?*5801ymLid*Y-?*I^x3t#lOLz5dfr zcU+N1W|Jo;vj2QwAIlZGHM3J(9}`0V-kKj%UVRMs zo&ETuyI2;lK}gL)NE>br7L6(b@HIu-ea9ey6h0FV>geo)>qLb{8{h&Ef!-Dfwrt$M zuZ+R=((z!s?*L>SKqUB`^?rH!c|Y<$Iy#ytwydVu=7>Eb{0Z2d5IHM|wnBDx_Q!sH zk;JCuQrc+X;&MmIuyJffs@${{(sdhO z!;ruiDdq$FI+FGKh#$f!pzPws9;++!tNkeVYZfh9#4V$us^aibw%x4Se|uYc2hm0+ z1SnKdOViC`1v#luwvp zc^m3(v%I#vpDT*m@BJ-mh@Nm!e<0FsUX2{-xX0#xZ9MR~$INP;LZi^I0Rl$)KgH2&GBwMjJ zHu$G6BjxS9F5^fc^awOmxDv64AjP2DMBijs2<2{ste@d#Z3B|-fY0PZE~2SOeRtDV zB7$+E*N4e70!fA&{?gRCkCz~^^|`xbCI; zk7(dIq>xIvw|K#D^JZCp^a4Jn_L^q%_qwLNHqv)`>YT+t$n|R(o~DN!Mom#SY$Z&N z(X%7U&>Yj~$9Z@dhS1oHknJOaXUv!(i1HkH$G1h&P{VtsLyPOzPq%TReKw-PPuuTP z&)ct}gbVItV087tI*KU3#}@1Zw~?M;0DjPRD@6Pk6}?6PVsb#99Q^#ZUvzk{oJhyi zJs}txq=9LejUI{+_o9y)BW&u5{v-SVx(Gn29Eif}v_yI;-YNO=CnzZ* z65FF43^!{}gh{B1?+`xV*?p;)P(&f8*G?vJTqHL{Q2hc_Lk+PgHBkcq#HW&3^s7^+ z{vzGyxE_79e859O7j+#N64X{@z@-CEY}xW>ZJzXlt}z_tFda!+)i`GVQe$yMG9h61 zs;rrCE!%rdaMNR|CSPEQHpw>Z^59yAy7k#;tbFd135JL{>PRd?8JqK_f>O=b*LT`| z?WOI5T5nX+#7QYZ5fGX%YftnRZG_$7;V=ylLjRUJe#+;+?ZBLtH7$*`0iEql^l$(0 z#)$`|H!huc(D~=e%4LZDz=DcRpPrsi4fX`tg!AwzwboK{*(XzBLyduI#DJp|y75*) z$eAR2bxb!eKwpX95P)L<1}~|d)Oe=K_>15M9X?mK-M@0 zJ%2l*S)WZ~n3@wA88r8Eb|TB_HLoE|$_`%gLEMrs>UdXSF?z=pPk+1bN=O#iQ0P6# zDDXiOsCC#Vr5=^NM}*8Gur0=_{l24}#v2A0>zTgLnf`dXCXeXyKD=%^ z_b_>NPvyBMb1Ki>r73fZ~pX}XC_Kbuup!+ z^G{*Tm;u~hDIpX~$JY#3oCED!t|WA9?Yfqf9+(^rqb_yu`x~!jS*{KQL~P9#xbpxo#nh4A|y~L zrDP%DK*{;@)<{tEDN~ZKJwP?@M26BXMexfPDk)p(l@TeMr}UrUL<$NM(%@pcLk;mbSXV!NJEfGDM^M<8dE5pYf>WR*?mH zBU8+s7$F2X)fhkmvIEAeKl^MK*)9sl;WE{lH6Ibwpeo$lV6lu3FN2K%3~sMvr^^&H zHI`7dgM*)+8B9AOl{*!W)(e7qaf2swY;1!?pNEs^4Rbd~#O&pj6QL4rGX;iAdXYv5 z{n8buQPVfGxX%(_i}*!OByfL+B%kdH@=0&_1cT2PFu#;$z##_~L0t02&Vz=VFD^Of zZ!yAD~kt7H6j((V4*&vk6m4%y+zbCTQC{j zoVpMhsYCF#{;=XS+#PUHc8ZdhMq8iZ3SGzr(+AVy{blWBKB?6-9jX7gp{$kb+%5da zefEF+_<^>X{7?U>jE9|HzcFLRniJQ~F3es0y2;tHD;a;gSNPld&9Snu^^aUORl8Q5 zeeENiSEoKc{p0*kPe}i<`ul*F|33ZW^FMD|tbP3--~1nDq0R~N!0AP)+35rItdca# zlwqN{q0aTD|EVuN2=XjSZ63r0y_7fI!a@_o1*aD+`j2`sZ0vF3@Ik`%l975diVlxg zPA_sAB%e{_ta3L|%5S^r>jjrM4brn-nySzD7Zo|B`Max>`f}@~%3e{2eUmQchuqW^6e!~=6pXl^sr0)NlmI5=SdwXx2{e#lRuVkw=c@&0~jdjzhuEK-#8Q< zDmm=yu1dw)!6m6qY3wN2Uc5M-P&n)&{E;**IngUsU#_=7&RYiR@qIiJ)-x(J^ssNL z@@5)u@#1}wPvlBD2jzn)zL=I8|Oc5ywlZss1T0 zMAJ>TfW+}~ElmBldC4UID?!7R4z|^ciVm|s5jYZRg&uAQvELR-Q2amo@&>tevKN_d zy|leb>$DAWISBzC2;k5NyeM%>8z@gmRi=_i|6^WmJ|`qZN1E7iopL))6z~ly5TW3_ zT&c8l9wgVY7w{+2Z-btmoOALo3I54KEv)y{i*jTIE&E{*iPdabaHM2B=)(&Dk!T@t znr-#lQHNb5vNI7mELhR`aAHGjI>h*HZo z|9jhIe;YW`_LAox$n)_gizWSE*~ou{-8wD^zXk5>8I{{JivO@Cz7o;{bQgh{Cx{wp z0gXX-+36xUlM;~`(pO;qcCvNRHsLNkVHNQeOo(v-Rbf}4NC+6d0{vkDmAm*Zt`f}7 zSD+Lj5X$AnwQ-5`72u3z!7uS$XXkn$4fqODvQAFaoSY_Q5g{af1;=PN`M%b;!{2ThcZl^uuR z2||)&QL!*i=sftZeyH--1K`|A7-hf17U+~*u_ zK)XBR-fY*FBLXBL0#UiN8Aa7Ox40?uXH>g8w+xQ*w5{H#4AlEqUhKH6C6f7d0u{i{9Dqx(n7l(!7O5HdT2yGIZL(&Ab6WEv zz8vsRzU*-B;=quMP92F9lx?YC9(gh&FWzx?@w)oYEeC}^&^!%j$R6WSF_M4!Pf5`K z!z)#)MZ9zHwIW`(IJuMeoAbqkmV5pS2V~Sn*1!0ew8HLdjTis$%6RQNRg1!Sz3SV6 zykEQAKQ8<~*VK=-Ve(jV_+w?@R_@YXaSkE5bySaa#*x)W#BC!H(1h$*!2eyZnc%})a z{|{S8UCV7zZ_y*|9LCN{gDy4)byT=(*-fsO1cyj;=tu?&logU%Gzlb%C~BgaAs7MW zCW=t;t^67E5d>*KP88l<0EV^{bSc+M5Q`wf>YPQ|3Kg2xY@?;8fN*nxl2ZzNLttAkpYVH&Q_gE!Oc~YQRpRxbTe-01XrfB#>8X zTZnRZPf_p*i9<0#KvIl8R?=uSc(G=pue)f>wN1gn^4;7Jr#tb$6m}&+<)mm>Xy*v) zYEMb@h>l<9*o|wNGC%eD`_fj6x|4}|ijcprpZ;vtgm)%|ZM;zJ8GdN?x}ER68WM2C z+AGFI|FuDrYg;`QKVDP&tYzWpMb}K*b|-1#OAc#}X*`OiF7>I2zAJtMBw&J`UKXUT z_l90nY^-{aUQ~K$=mM*j@XozGqf%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log b/example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log new file mode 100644 index 0000000000..85b86bdc5b --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log @@ -0,0 +1,11 @@ +v20.20.2 +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json b/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json new file mode 100644 index 0000000000..2ff0de571a --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json @@ -0,0 +1,105 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T08:55:54.204Z", + "wallClockMs": 16623, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log b/example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log new file mode 100644 index 0000000000..c57213570e --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log @@ -0,0 +1,10 @@ +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json b/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json new file mode 100644 index 0000000000..9423038b98 --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json @@ -0,0 +1,105 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T08:57:34.302Z", + "wallClockMs": 17106, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-pass-node20/stdout.log b/example/visual/evidence/runs/ios/round2-pass-node20/stdout.log new file mode 100644 index 0000000000..4bcbd2b112 --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass-node20/stdout.log @@ -0,0 +1,11 @@ +v20.20.2 +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20 + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass-node20/summary.json b/example/visual/evidence/runs/ios/round2-pass-node20/summary.json new file mode 100644 index 0000000000..83ea220d6f --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass-node20/summary.json @@ -0,0 +1,105 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T08:54:56.543Z", + "wallClockMs": 17376, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-pass/stdout.log b/example/visual/evidence/runs/ios/round2-pass/stdout.log new file mode 100644 index 0000000000..538e4d1aa4 --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass/stdout.log @@ -0,0 +1,10 @@ +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass/summary.json b/example/visual/evidence/runs/ios/round2-pass/summary.json new file mode 100644 index 0000000000..aa3ad90e39 --- /dev/null +++ b/example/visual/evidence/runs/ios/round2-pass/summary.json @@ -0,0 +1,105 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png", + "cropWidth": 1206, + "cropHeight": 642, + "logicalWidth": 402, + "logicalHeight": 214 + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "cropWidth": 1280, + "cropHeight": 642, + "totalPixels": 821760, + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T08:53:19.036Z", + "wallClockMs": 15434, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json b/example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json deleted file mode 100644 index e554ad7846..0000000000 --- a/example/visual/evidence/sensitivity/android/000-snapshot-raw-forcefull.json +++ /dev/null @@ -1,4341 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e1" - }, - { - "index": 1, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_launch_animation_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e2" - }, - { - "index": 2, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e3" - }, - { - "index": 3, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 2, - "ref": "e4" - }, - { - "index": 4, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 3, - "ref": "e5" - }, - { - "index": 5, - "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 4, - "ref": "e6" - }, - { - "index": 6, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 5, - "ref": "e7" - }, - { - "index": 7, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_contents", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1220, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 6, - "ref": "e8" - }, - { - "index": 8, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 525, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e9" - }, - { - "index": 9, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_content", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 196, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 8, - "ref": "e10" - }, - { - "index": 10, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_except_heads_up", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 196, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 9, - "ref": "e11" - }, - { - "index": 11, - "type": "android.widget.TextView", - "label": "3:24", - "value": "3:24", - "identifier": "com.android.systemui:id/clock", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 45, - "width": 130, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 10, - "ref": "e12" - }, - { - "index": 12, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/start_side_notif_and_chip_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 10, - "ref": "e13" - }, - { - "index": 13, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/notification_icon_area", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 12, - "ref": "e14" - }, - { - "index": 14, - "type": "android.view.ViewGroup", - "identifier": "com.android.systemui:id/notificationIcons", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 13, - "ref": "e15" - }, - { - "index": 15, - "type": "android.widget.ImageView", - "label": "Security & privacy notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 14, - "ref": "e16" - }, - { - "index": 16, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 0, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 10, - "parentIndex": 10, - "ref": "e17" - }, - { - "index": 17, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 16, - "ref": "e18" - }, - { - "index": 18, - "type": "android.view.View", - "identifier": "com.android.systemui:id/cutout_space_view", - "bundleId": "com.android.systemui", - "rect": { - "x": 573, - "y": 0, - "width": 109, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e19" - }, - { - "index": 19, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_end_side_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 682, - "y": 0, - "width": 526, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e20" - }, - { - "index": 20, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_end_side_content", - "bundleId": "com.android.systemui", - "rect": { - "x": 963, - "y": 0, - "width": 245, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 19, - "ref": "e21" - }, - { - "index": 21, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/system_icons", - "bundleId": "com.android.systemui", - "rect": { - "x": 963, - "y": 45, - "width": 245, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 20, - "ref": "e22" - }, - { - "index": 22, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/statusIcons", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 144, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e23" - }, - { - "index": 23, - "type": "android.widget.FrameLayout", - "label": "T-Mobile, one bar.", - "identifier": "com.android.systemui:id/mobile_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 69, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e24" - }, - { - "index": 24, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/mobile_group", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 45, - "width": 51, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 23, - "ref": "e25" - }, - { - "index": 25, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 24, - "ref": "e26" - }, - { - "index": 26, - "type": "android.widget.ImageView", - "identifier": "com.android.systemui:id/mobile_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 25, - "ref": "e27" - }, - { - "index": 27, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 78, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 22, - "ref": "e28" - }, - { - "index": 28, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 78, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 22, - "ref": "e29" - }, - { - "index": 29, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/wifi_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 1041, - "y": 45, - "width": 66, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e30" - }, - { - "index": 30, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/wifi_group", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 45, - "width": 48, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 29, - "ref": "e31" - }, - { - "index": 31, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/wifi_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 30, - "ref": "e32" - }, - { - "index": 32, - "type": "android.widget.ImageView", - "label": "Wifi signal full.", - "identifier": "com.android.systemui:id/wifi_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 31, - "ref": "e33" - }, - { - "index": 33, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e34" - }, - { - "index": 34, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 33, - "ref": "e35" - }, - { - "index": 35, - "type": "android.view.View", - "identifier": "com.android.systemui:id/battery", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 34, - "ref": "e36" - }, - { - "index": 36, - "type": "android.view.View", - "label": "Battery 100 percent.", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 72, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 35, - "ref": "e37" - }, - { - "index": 37, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e38" - }, - { - "index": 38, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 37, - "ref": "e39" - }, - { - "index": 39, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 38, - "ref": "e40" - }, - { - "index": 40, - "type": "android.widget.LinearLayout", - "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 39, - "ref": "e41" - }, - { - "index": 41, - "type": "android.widget.FrameLayout", - "identifier": "android:id/content", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 40, - "ref": "e42" - }, - { - "index": 42, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 41, - "ref": "e43" - }, - { - "index": 43, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 42, - "ref": "e44" - }, - { - "index": 44, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 43, - "ref": "e45" - }, - { - "index": 45, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 44, - "ref": "e46" - }, - { - "index": 46, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 156, - "width": 252, - "height": 252 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 45, - "ref": "e47" - }, - { - "index": 47, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1076, - "y": 204, - "width": 156, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 46, - "ref": "e48" - }, - { - "index": 48, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1082, - "y": 210, - "width": 144, - "height": 144 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 47, - "ref": "e49" - }, - { - "index": 49, - "type": "android.widget.ImageView", - "label": "Tools", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1115, - "y": 243, - "width": 78, - "height": 78 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 48, - "ref": "e50" - }, - { - "index": 50, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 42, - "ref": "e51" - }, - { - "index": 51, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 50, - "ref": "e52" - }, - { - "index": 52, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 51, - "ref": "e53" - }, - { - "index": 53, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 50, - "ref": "e54" - }, - { - "index": 54, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 53, - "ref": "e55" - }, - { - "index": 55, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 53, - "ref": "e56" - }, - { - "index": 56, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 55, - "ref": "e57" - }, - { - "index": 57, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 56, - "ref": "e58" - }, - { - "index": 58, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 57, - "ref": "e59" - }, - { - "index": 59, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 12, - "parentIndex": 58, - "ref": "e60" - }, - { - "index": 60, - "type": "android.widget.Button", - "label": "Close drawer", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 13, - "parentIndex": 59, - "ref": "e61" - }, - { - "index": 61, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 58, - "ref": "e62" - }, - { - "index": 62, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 61, - "ref": "e63" - }, - { - "index": 63, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 62, - "ref": "e64" - }, - { - "index": 64, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 15, - "parentIndex": 63, - "ref": "e65" - }, - { - "index": 65, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 16, - "parentIndex": 64, - "ref": "e66" - }, - { - "index": 66, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 65, - "ref": "e67" - }, - { - "index": 67, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 17, - "parentIndex": 65, - "ref": "e68" - }, - { - "index": 68, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 18, - "parentIndex": 67, - "ref": "e69" - }, - { - "index": 69, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 19, - "parentIndex": 68, - "ref": "e70" - }, - { - "index": 70, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 20, - "parentIndex": 69, - "ref": "e71" - }, - { - "index": 71, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 70, - "ref": "e72" - }, - { - "index": 72, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 71, - "ref": "e73" - }, - { - "index": 73, - "type": "android.widget.Button", - "label": "Back", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 72, - "ref": "e74" - }, - { - "index": 74, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 73, - "ref": "e75" - }, - { - "index": 75, - "type": "android.widget.TextView", - "label": "󰁍", - "value": "󰁍", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 74, - "ref": "e76" - }, - { - "index": 76, - "type": "android.view.View", - "label": "Surface", - "value": "Surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 210, - "width": 1064, - "height": 84 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 71, - "ref": "e77" - }, - { - "index": 77, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 20, - "parentIndex": 69, - "hiddenContentBelow": true, - "ref": "e78" - }, - { - "index": 78, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 77, - "ref": "e79" - }, - { - "index": 79, - "type": "android.view.ViewGroup", - "identifier": "surface-example-elevated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e80" - }, - { - "index": 80, - "type": "android.widget.TextView", - "label": "Elevated surface", - "value": "Elevated surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e81" - }, - { - "index": 81, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 78, - "ref": "e82" - }, - { - "index": 82, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 81, - "ref": "e83" - }, - { - "index": 83, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 82, - "ref": "e84" - }, - { - "index": 84, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 83, - "ref": "e85" - }, - { - "index": 85, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 480, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 82, - "ref": "e86" - }, - { - "index": 86, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 85, - "ref": "e87" - }, - { - "index": 87, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 912, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 82, - "ref": "e88" - }, - { - "index": 88, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 87, - "ref": "e89" - }, - { - "index": 89, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1344, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 82, - "ref": "e90" - }, - { - "index": 90, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1430, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 89, - "ref": "e91" - }, - { - "index": 91, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1776, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 82, - "ref": "e92" - }, - { - "index": 92, - "type": "android.widget.TextView", - "label": "Elevation 4", - "value": "Elevation 4", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1862, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 91, - "ref": "e93" - }, - { - "index": 93, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2208, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 82, - "ref": "e94" - }, - { - "index": 94, - "type": "android.widget.TextView", - "label": "Elevation 5", - "value": "Elevation 5", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2294, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 93, - "ref": "e95" - }, - { - "index": 95, - "type": "android.view.ViewGroup", - "identifier": "surface-example-flat", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e96" - }, - { - "index": 96, - "type": "android.widget.TextView", - "label": "Flat surface", - "value": "Flat surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e97" - }, - { - "index": 97, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 78, - "ref": "e98" - }, - { - "index": 98, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 97, - "ref": "e99" - }, - { - "index": 99, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 98, - "ref": "e100" - }, - { - "index": 100, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 99, - "ref": "e101" - }, - { - "index": 101, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 480, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 98, - "ref": "e102" - }, - { - "index": 102, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 101, - "ref": "e103" - }, - { - "index": 103, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 912, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 98, - "ref": "e104" - }, - { - "index": 104, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 103, - "ref": "e105" - }, - { - "index": 105, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1344, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 98, - "ref": "e106" - }, - { - "index": 106, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1430, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 105, - "ref": "e107" - }, - { - "index": 107, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1776, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 98, - "ref": "e108" - }, - { - "index": 108, - "type": "android.widget.TextView", - "label": "Elevation 4", - "value": "Elevation 4", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1862, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 107, - "ref": "e109" - }, - { - "index": 109, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2208, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 98, - "ref": "e110" - }, - { - "index": 110, - "type": "android.widget.TextView", - "label": "Elevation 5", - "value": "Elevation 5", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2294, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 109, - "ref": "e111" - }, - { - "index": 111, - "type": "android.widget.TextView", - "label": "Animated elevation", - "value": "Animated elevation", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1752, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e112" - }, - { - "index": 112, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 1962, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e113" - }, - { - "index": 113, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 2118, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 112, - "ref": "e114" - }, - { - "index": 114, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e115" - }, - { - "index": 115, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 114, - "ref": "e116" - }, - { - "index": 116, - "type": "android.widget.TextView", - "label": "󰍴", - "value": "󰍴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 90, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 115, - "ref": "e117" - }, - { - "index": 117, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e118" - }, - { - "index": 118, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 117, - "ref": "e119" - }, - { - "index": 119, - "type": "android.widget.TextView", - "label": "󰐕", - "value": "󰐕", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 294, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 118, - "ref": "e120" - }, - { - "index": 120, - "type": "android.widget.TextView", - "label": "Layout", - "value": "Layout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2670, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e121" - }, - { - "index": 121, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2880, - "width": 1136, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e122" - }, - { - "index": 122, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e123" - }, - { - "index": 123, - "type": "android.widget.TextView", - "label": "Left", - "value": "Left", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 122, - "ref": "e124" - }, - { - "index": 124, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 661, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e125" - }, - { - "index": 125, - "type": "android.widget.TextView", - "label": "Right", - "value": "Right", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 661, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 124, - "ref": "e126" - }, - { - "index": 126, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 3063, - "width": 1136, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e127" - }, - { - "index": 127, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3096, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e128" - }, - { - "index": 128, - "type": "android.widget.TextView", - "label": "Top", - "value": "Top", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3339, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 127, - "ref": "e129" - }, - { - "index": 129, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3686, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e130" - }, - { - "index": 130, - "type": "android.widget.TextView", - "label": "Bottom", - "value": "Bottom", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3929, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 129, - "ref": "e131" - }, - { - "index": 131, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 18, - "parentIndex": 67, - "ref": "e132" - }, - { - "index": 132, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 57, - "ref": "e133" - }, - { - "index": 133, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 12, - "parentIndex": 132, - "ref": "e134" - }, - { - "index": 134, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2706 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 13, - "parentIndex": 133, - "ref": "e135" - }, - { - "index": 135, - "type": "android.widget.TextView", - "label": "Example items", - "value": "Example items", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 246, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e136" - }, - { - "index": 136, - "type": "android.widget.Button", - "label": "Inbox, 44", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 360, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e137" - }, - { - "index": 137, - "type": "android.widget.TextView", - "label": "󰚇", - "value": "󰚇", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 408, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e138" - }, - { - "index": 138, - "type": "android.widget.TextView", - "label": "Inbox", - "value": "Inbox", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 414, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e139" - }, - { - "index": 139, - "type": "android.widget.TextView", - "label": "44", - "value": "44", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 414, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e140" - }, - { - "index": 140, - "type": "android.widget.Button", - "label": "Starred", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 528, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e141" - }, - { - "index": 141, - "type": "android.widget.TextView", - "label": "󰓎", - "value": "󰓎", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 576, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e142" - }, - { - "index": 142, - "type": "android.widget.TextView", - "label": "Starred", - "value": "Starred", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 582, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e143" - }, - { - "index": 143, - "type": "android.widget.TextView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 603, - "width": 0, - "height": 18 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e144" - }, - { - "index": 144, - "type": "android.widget.Button", - "label": "Sent mail", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 696, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e145" - }, - { - "index": 145, - "type": "android.widget.TextView", - "label": "󰒊", - "value": "󰒊", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 744, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 144, - "ref": "e146" - }, - { - "index": 146, - "type": "android.widget.TextView", - "label": "Sent mail", - "value": "Sent mail", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 750, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 144, - "ref": "e147" - }, - { - "index": 147, - "type": "android.widget.Button", - "label": "Colored label", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 864, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e148" - }, - { - "index": 148, - "type": "android.widget.TextView", - "label": "󰏘", - "value": "󰏘", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 912, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 147, - "ref": "e149" - }, - { - "index": 149, - "type": "android.widget.TextView", - "label": "Colored label", - "value": "Colored label", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 918, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 147, - "ref": "e150" - }, - { - "index": 150, - "type": "android.widget.Button", - "label": "A very long title that will be truncated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1032, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e151" - }, - { - "index": 151, - "type": "android.widget.TextView", - "label": "󰆴", - "value": "󰆴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1080, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e152" - }, - { - "index": 152, - "type": "android.widget.TextView", - "label": "A very long title that will be truncated", - "value": "A very long title that will be truncated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1086, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e153" - }, - { - "index": 153, - "type": "android.widget.TextView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1107, - "width": 0, - "height": 18 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e154" - }, - { - "index": 154, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1212, - "width": 0, - "height": 3 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e155" - }, - { - "index": 155, - "type": "android.widget.TextView", - "label": "Preferences", - "value": "Preferences", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1281, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e156" - }, - { - "index": 156, - "type": "android.view.ViewGroup", - "label": "Use Dynamic Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1395, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e157" - }, - { - "index": 157, - "type": "android.widget.TextView", - "label": "Use Dynamic Theme", - "value": "Use Dynamic Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1449, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 156, - "ref": "e158" - }, - { - "index": 158, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 156, - "ref": "e159" - }, - { - "index": 159, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e160" - }, - { - "index": 160, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 158, - "ref": "e161" - }, - { - "index": 161, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1431, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 160, - "ref": "e162" - }, - { - "index": 162, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e163" - }, - { - "index": 163, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1443, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e164" - }, - { - "index": 164, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1443, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 163, - "ref": "e165" - }, - { - "index": 165, - "type": "android.view.ViewGroup", - "label": "Dark Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1563, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e166" - }, - { - "index": 166, - "type": "android.widget.TextView", - "label": "Dark Theme", - "value": "Dark Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1617, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 165, - "ref": "e167" - }, - { - "index": 167, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 165, - "ref": "e168" - }, - { - "index": 168, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e169" - }, - { - "index": 169, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 167, - "ref": "e170" - }, - { - "index": 170, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1599, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 169, - "ref": "e171" - }, - { - "index": 171, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1599, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 169, - "ref": "e172" - }, - { - "index": 172, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e173" - }, - { - "index": 173, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1623, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e174" - }, - { - "index": 174, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1623, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 173, - "ref": "e175" - }, - { - "index": 175, - "type": "android.view.ViewGroup", - "label": "RTL", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1731, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e176" - }, - { - "index": 176, - "type": "android.widget.TextView", - "label": "RTL", - "value": "RTL", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1785, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 175, - "ref": "e177" - }, - { - "index": 177, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 175, - "ref": "e178" - }, - { - "index": 178, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e179" - }, - { - "index": 179, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 177, - "ref": "e180" - }, - { - "index": 180, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1767, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 179, - "ref": "e181" - }, - { - "index": 181, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1767, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 179, - "ref": "e182" - }, - { - "index": 182, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e183" - }, - { - "index": 183, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1791, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e184" - }, - { - "index": 184, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1791, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 183, - "ref": "e185" - }, - { - "index": 185, - "type": "android.view.ViewGroup", - "label": "Collapsed drawer *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1899, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e186" - }, - { - "index": 186, - "type": "android.widget.TextView", - "label": "Collapsed drawer *", - "value": "Collapsed drawer *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1953, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 185, - "ref": "e187" - }, - { - "index": 187, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 185, - "ref": "e188" - }, - { - "index": 188, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e189" - }, - { - "index": 189, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 187, - "ref": "e190" - }, - { - "index": 190, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1935, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 189, - "ref": "e191" - }, - { - "index": 191, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1935, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 189, - "ref": "e192" - }, - { - "index": 192, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e193" - }, - { - "index": 193, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1959, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e194" - }, - { - "index": 194, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1959, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 193, - "ref": "e195" - }, - { - "index": 195, - "type": "android.view.ViewGroup", - "label": "Custom font *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2067, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e196" - }, - { - "index": 196, - "type": "android.widget.TextView", - "label": "Custom font *", - "value": "Custom font *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2121, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 195, - "ref": "e197" - }, - { - "index": 197, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 195, - "ref": "e198" - }, - { - "index": 198, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e199" - }, - { - "index": 199, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 197, - "ref": "e200" - }, - { - "index": 200, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2103, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 199, - "ref": "e201" - }, - { - "index": 201, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2103, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 199, - "ref": "e202" - }, - { - "index": 202, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e203" - }, - { - "index": 203, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2127, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e204" - }, - { - "index": 204, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2127, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 203, - "ref": "e205" - }, - { - "index": 205, - "type": "android.view.ViewGroup", - "label": "Ripple effect *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2235, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e206" - }, - { - "index": 206, - "type": "android.widget.TextView", - "label": "Ripple effect *", - "value": "Ripple effect *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2289, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 205, - "ref": "e207" - }, - { - "index": 207, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 205, - "ref": "e208" - }, - { - "index": 208, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e209" - }, - { - "index": 209, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 207, - "ref": "e210" - }, - { - "index": 210, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2271, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 209, - "ref": "e211" - }, - { - "index": 211, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e212" - }, - { - "index": 212, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2283, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e213" - }, - { - "index": 213, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2283, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 212, - "ref": "e214" - }, - { - "index": 214, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2415, - "width": 0, - "height": 3 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e215" - }, - { - "index": 215, - "type": "android.widget.TextView", - "label": "* - optional example toggles", - "value": "* - optional example toggles", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2448, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e216" - }, - { - "index": 216, - "type": "android.widget.TextView", - "label": "React Native Paper Version 6.0.0-alpha.0", - "value": "React Native Paper Version 6.0.0-alpha.0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2532, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e217" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 217, - "totalNodeCount": 217, - "reasons": [] - }, - "androidSnapshot": { - "backend": "android-helper", - "helperVersion": "0.21.0", - "helperApiVersion": "2", - "helperTransport": "persistent-session", - "helperSessionReused": true, - "installReason": "current", - "waitForIdleTimeoutMs": 500, - "waitForIdleQuietMs": 100, - "timeoutMs": 2000, - "maxDepth": 128, - "maxNodes": 5000, - "rootPresent": true, - "captureMode": "interactive-windows", - "windowCount": 2, - "nodeCount": 217, - "helperTruncated": false, - "elapsedMs": 97 - }, - "snapshotQuality": { - "state": "healthy", - "backend": "android-helper" - }, - "snapshotDiagnostics": { - "stats": { - "count": 104, - "p50Ms": 52, - "p95Ms": 206, - "maxMs": 609, - "slowThresholdMs": 1500, - "platform": "android", - "backends": { - "android": 104 - } - } - }, - "refsGeneration": 835372 - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-wait.json b/example/visual/evidence/sensitivity/android/gross-probe-wait.json deleted file mode 100644 index 42a3d78bf7..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-probe-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 728, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-wait.json b/example/visual/evidence/sensitivity/android/gross-wait.json deleted file mode 100644 index 1a1dffb6de..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 709, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/android/realistic-1-wait.json b/example/visual/evidence/sensitivity/android/realistic-1-wait.json deleted file mode 100644 index a3fa3081b6..0000000000 --- a/example/visual/evidence/sensitivity/android/realistic-1-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 732, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/android/realistic-2-wait.json b/example/visual/evidence/sensitivity/android/realistic-2-wait.json deleted file mode 100644 index f383053005..0000000000 --- a/example/visual/evidence/sensitivity/android/realistic-2-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 724, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/android/realistic-3-wait.json b/example/visual/evidence/sensitivity/android/realistic-3-wait.json deleted file mode 100644 index 9387013160..0000000000 --- a/example/visual/evidence/sensitivity/android/realistic-3-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 707, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/android/reverted-wait.json b/example/visual/evidence/sensitivity/android/reverted-wait.json deleted file mode 100644 index bffe19a758..0000000000 --- a/example/visual/evidence/sensitivity/android/reverted-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 722, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-wait.json b/example/visual/evidence/sensitivity/android/sanity-before-break-wait.json deleted file mode 100644 index d35e9e31a1..0000000000 --- a/example/visual/evidence/sensitivity/android/sanity-before-break-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 706, - "captures": 3, - "nodeCount": 24 - } -} diff --git a/example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json b/example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json deleted file mode 100644 index c7e10289da..0000000000 --- a/example/visual/evidence/sensitivity/ios/000-snapshot-raw-forcefull.json +++ /dev/null @@ -1,2821 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "Application", - "role": "UIApplication", - "label": "React Native Paper Example", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 0, - "pid": 37870, - "ref": "e1" - }, - { - "index": 1, - "parentIndex": 0, - "type": "Window", - "role": "UIWindow", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 1, - "pid": 37870, - "ref": "e2" - }, - { - "index": 2, - "parentIndex": 1, - "type": "Other", - "role": "UITransitionView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 2, - "pid": 37870, - "ref": "e3" - }, - { - "index": 3, - "parentIndex": 2, - "type": "Other", - "role": "UIDropShadowView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 3, - "pid": 37870, - "ref": "e4" - }, - { - "index": 4, - "parentIndex": 3, - "type": "Other", - "role": "_TtC13EXDevLauncherP33_867A144D7C8F5D750D0BFA9E58EDAFE322DevLauncherWrapperView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 4, - "pid": 37870, - "ref": "e5" - }, - { - "index": 5, - "parentIndex": 4, - "type": "Other", - "role": "RCTSurfaceHostingProxyRootView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 5, - "pid": 37870, - "ref": "e6" - }, - { - "index": 6, - "parentIndex": 5, - "type": "Other", - "role": "RCTSurfaceView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 6, - "pid": 37870, - "ref": "e7" - }, - { - "index": 7, - "parentIndex": 6, - "type": "Other", - "role": "RCTRootComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 7, - "pid": 37870, - "ref": "e8" - }, - { - "index": 8, - "parentIndex": 7, - "type": "Other", - "role": "RNCSafeAreaProviderComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 8, - "pid": 37870, - "ref": "e9" - }, - { - "index": 9, - "parentIndex": 8, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e10" - }, - { - "index": 10, - "parentIndex": 9, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 10, - "pid": 37870, - "ref": "e11" - }, - { - "index": 11, - "parentIndex": 10, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 11, - "pid": 37870, - "ref": "e12" - }, - { - "index": 12, - "parentIndex": 11, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 12, - "pid": 37870, - "ref": "e13" - }, - { - "index": 13, - "parentIndex": 12, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 13, - "pid": 37870, - "ref": "e14" - }, - { - "index": 14, - "parentIndex": 13, - "type": "Other", - "role": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 770 - }, - "depth": 14, - "pid": 37870, - "ref": "e15" - }, - { - "index": 15, - "parentIndex": 14, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 770 - }, - "depth": 15, - "pid": 37870, - "ref": "e16" - }, - { - "index": 16, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Example items", - "rect": { - "x": -306, - "y": 30, - "width": 294, - "height": 20 - }, - "depth": 16, - "pid": 37870, - "ref": "e17" - }, - { - "index": 17, - "parentIndex": 16, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Example items", - "rect": { - "x": -306, - "y": 30, - "width": 294, - "height": 20 - }, - "depth": 17, - "pid": 37870, - "ref": "e18" - }, - { - "index": 18, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Inbox, 44", - "rect": { - "x": -322, - "y": 68, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e19" - }, - { - "index": 19, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Starred", - "rect": { - "x": -322, - "y": 124, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e20" - }, - { - "index": 20, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Sent mail", - "rect": { - "x": -322, - "y": 180, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e21" - }, - { - "index": 21, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Colored label", - "rect": { - "x": -322, - "y": 236, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e22" - }, - { - "index": 22, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "A very long title that will be truncated", - "rect": { - "x": -322, - "y": 292, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e23" - }, - { - "index": 23, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -318, - "y": 352, - "width": 290, - "height": 1 - }, - "depth": 16, - "pid": 37870, - "ref": "e24" - }, - { - "index": 24, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Preferences", - "rect": { - "x": -306, - "y": 375, - "width": 294, - "height": 20 - }, - "depth": 16, - "pid": 37870, - "ref": "e25" - }, - { - "index": 25, - "parentIndex": 24, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Preferences", - "rect": { - "x": -306, - "y": 375, - "width": 294, - "height": 20 - }, - "depth": 17, - "pid": 37870, - "ref": "e26" - }, - { - "index": 26, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Dark Theme", - "rect": { - "x": -334, - "y": 413, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e27" - }, - { - "index": 27, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "RTL", - "rect": { - "x": -334, - "y": 469, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e28" - }, - { - "index": 28, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Collapsed drawer *", - "rect": { - "x": -334, - "y": 525, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e29" - }, - { - "index": 29, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Custom font *", - "rect": { - "x": -334, - "y": 581, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e30" - }, - { - "index": 30, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Highlight effect *", - "rect": { - "x": -334, - "y": 637, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e31" - }, - { - "index": 31, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -318, - "y": 697, - "width": 290, - "height": 1 - }, - "depth": 16, - "pid": 37870, - "ref": "e32" - }, - { - "index": 32, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "* - optional example toggles", - "rect": { - "x": -310, - "y": 708, - "width": 274, - "height": 16 - }, - "depth": 16, - "pid": 37870, - "ref": "e33" - }, - { - "index": 33, - "parentIndex": 32, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "* - optional example toggles", - "rect": { - "x": -310, - "y": 708, - "width": 274, - "height": 16 - }, - "depth": 17, - "pid": 37870, - "ref": "e34" - }, - { - "index": 34, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "React Native Paper Version 6.0.0-alpha.0", - "rect": { - "x": -310, - "y": 736, - "width": 274, - "height": 16 - }, - "depth": 16, - "pid": 37870, - "ref": "e35" - }, - { - "index": 35, - "parentIndex": 34, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "React Native Paper Version 6.0.0-alpha.0", - "rect": { - "x": -310, - "y": 736, - "width": 274, - "height": 16 - }, - "depth": 17, - "pid": 37870, - "ref": "e36" - }, - { - "index": 36, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -33, - "y": 62, - "width": 30, - "height": 778 - }, - "depth": 14, - "pid": 37870, - "ref": "e37" - }, - { - "index": 37, - "parentIndex": 36, - "type": "Other", - "role": "UIView", - "rect": { - "x": -6, - "y": 169, - "width": 3, - "height": 668 - }, - "depth": 15, - "pid": 37870, - "ref": "e38" - }, - { - "index": 38, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -346, - "y": 807, - "width": 346, - "height": 30 - }, - "depth": 14, - "pid": 37870, - "ref": "e39" - }, - { - "index": 39, - "parentIndex": 38, - "type": "Other", - "role": "UIView", - "rect": { - "x": -343, - "y": 834, - "width": 340, - "height": 3 - }, - "depth": 15, - "pid": 37870, - "ref": "e40" - }, - { - "index": 40, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -33, - "y": 62, - "width": 30, - "height": 778 - }, - "depth": 14, - "pid": 37870, - "ref": "e41" - }, - { - "index": 41, - "parentIndex": 40, - "type": "Other", - "role": "UIView", - "rect": { - "x": -6, - "y": 169, - "width": 3, - "height": 668 - }, - "depth": 15, - "pid": 37870, - "ref": "e42" - }, - { - "index": 42, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -346, - "y": 807, - "width": 346, - "height": 30 - }, - "depth": 14, - "pid": 37870, - "ref": "e43" - }, - { - "index": 43, - "parentIndex": 42, - "type": "Other", - "role": "UIView", - "rect": { - "x": -343, - "y": 834, - "width": 340, - "height": 3 - }, - "depth": 15, - "pid": 37870, - "ref": "e44" - }, - { - "index": 44, - "parentIndex": 10, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 11, - "pid": 37870, - "ref": "e45" - }, - { - "index": 45, - "parentIndex": 44, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 12, - "pid": 37870, - "ref": "e46" - }, - { - "index": 46, - "parentIndex": 45, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 13, - "pid": 37870, - "ref": "e47" - }, - { - "index": 47, - "parentIndex": 46, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 14, - "pid": 37870, - "ref": "e48" - }, - { - "index": 48, - "parentIndex": 47, - "type": "Other", - "role": "RNSScreenStackView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 15, - "pid": 37870, - "ref": "e49" - }, - { - "index": 49, - "parentIndex": 48, - "type": "Other", - "role": "UILayoutContainerView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 16, - "pid": 37870, - "ref": "e50" - }, - { - "index": 50, - "parentIndex": 49, - "type": "Other", - "role": "UINavigationTransitionView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 17, - "pid": 37870, - "ref": "e51" - }, - { - "index": 51, - "parentIndex": 50, - "type": "Other", - "role": "UIViewControllerWrapperView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 18, - "pid": 37870, - "ref": "e52" - }, - { - "index": 52, - "parentIndex": 51, - "type": "Other", - "role": "RNSScreenView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 19, - "pid": 37870, - "ref": "e53" - }, - { - "index": 53, - "parentIndex": 52, - "type": "Other", - "role": "RNSScreenContentWrapper", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 20, - "pid": 37870, - "ref": "e54" - }, - { - "index": 54, - "parentIndex": 53, - "type": "Other", - "role": "RNSSafeAreaViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 21, - "pid": 37870, - "ref": "e55" - }, - { - "index": 55, - "parentIndex": 54, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 22, - "pid": 37870, - "ref": "e56" - }, - { - "index": 56, - "parentIndex": 55, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 23, - "pid": 37870, - "ref": "e57" - }, - { - "index": 57, - "parentIndex": 56, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 24, - "pid": 37870, - "ref": "e58" - }, - { - "index": 58, - "parentIndex": 57, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 25, - "pid": 37870, - "ref": "e59" - }, - { - "index": 59, - "parentIndex": 57, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 25, - "pid": 37870, - "ref": "e60" - }, - { - "index": 60, - "parentIndex": 59, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Back", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 26, - "pid": 37870, - "ref": "e61" - }, - { - "index": 61, - "parentIndex": 57, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 25, - "pid": 37870, - "ref": "e62" - }, - { - "index": 62, - "parentIndex": 61, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 26, - "pid": 37870, - "ref": "e63" - }, - { - "index": 63, - "parentIndex": 55, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 23, - "pid": 37870, - "ref": "e64" - }, - { - "index": 64, - "parentIndex": 63, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 24, - "pid": 37870, - "ref": "e65" - }, - { - "index": 65, - "parentIndex": 64, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 1435 - }, - "depth": 25, - "pid": 37870, - "ref": "e66" - }, - { - "index": 66, - "parentIndex": 65, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 1435 - }, - "depth": 26, - "pid": 37870, - "ref": "e67" - }, - { - "index": 67, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevated surface", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e68" - }, - { - "index": 68, - "parentIndex": 67, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevated surface", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e69" - }, - { - "index": 69, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "identifier": "surface-example-elevated", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 214 - }, - "depth": 27, - "pid": 37870, - "ref": "e70" - }, - { - "index": 70, - "parentIndex": 66, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 180, - "width": 402, - "height": 168 - }, - "depth": 27, - "pid": 37870, - "ref": "e71" - }, - { - "index": 71, - "parentIndex": 70, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 180, - "width": 402, - "height": 168 - }, - "depth": 28, - "pid": 37870, - "ref": "e72" - }, - { - "index": 72, - "parentIndex": 71, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 180, - "width": 872, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e73" - }, - { - "index": 73, - "parentIndex": 72, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 180, - "width": 872, - "height": 168 - }, - "depth": 30, - "pid": 37870, - "ref": "e74" - }, - { - "index": 74, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e75" - }, - { - "index": 75, - "parentIndex": 74, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e76" - }, - { - "index": 76, - "parentIndex": 74, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 256, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e77" - }, - { - "index": 77, - "parentIndex": 76, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 256, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e78" - }, - { - "index": 78, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 160, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e79" - }, - { - "index": 79, - "parentIndex": 78, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 160, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e80" - }, - { - "index": 80, - "parentIndex": 78, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 256, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e81" - }, - { - "index": 81, - "parentIndex": 80, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 256, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e82" - }, - { - "index": 82, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 304, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e83" - }, - { - "index": 83, - "parentIndex": 82, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 304, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e84" - }, - { - "index": 84, - "parentIndex": 82, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 256, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e85" - }, - { - "index": 85, - "parentIndex": 84, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 256, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e86" - }, - { - "index": 86, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 448, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e87" - }, - { - "index": 87, - "parentIndex": 86, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 448, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e88" - }, - { - "index": 88, - "parentIndex": 86, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 256, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e89" - }, - { - "index": 89, - "parentIndex": 88, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 256, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e90" - }, - { - "index": 90, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 592, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e91" - }, - { - "index": 91, - "parentIndex": 90, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 592, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e92" - }, - { - "index": 92, - "parentIndex": 90, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 256, - "width": 67, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e93" - }, - { - "index": 93, - "parentIndex": 92, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 256, - "width": 67, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e94" - }, - { - "index": 94, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 736, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e95" - }, - { - "index": 95, - "parentIndex": 94, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 736, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e96" - }, - { - "index": 96, - "parentIndex": 94, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 256, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e97" - }, - { - "index": 97, - "parentIndex": 96, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 256, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e98" - }, - { - "index": 98, - "parentIndex": 71, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 180, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e99" - }, - { - "index": 99, - "parentIndex": 98, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 183, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e100" - }, - { - "index": 100, - "parentIndex": 71, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 180, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e101" - }, - { - "index": 101, - "parentIndex": 100, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 183, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e102" - }, - { - "index": 102, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Flat surface", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e103" - }, - { - "index": 103, - "parentIndex": 102, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Flat surface", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e104" - }, - { - "index": 104, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "identifier": "surface-example-flat", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 214 - }, - "depth": 27, - "pid": 37870, - "ref": "e105" - }, - { - "index": 105, - "parentIndex": 66, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 410, - "width": 402, - "height": 168 - }, - "depth": 27, - "pid": 37870, - "ref": "e106" - }, - { - "index": 106, - "parentIndex": 105, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 410, - "width": 402, - "height": 168 - }, - "depth": 28, - "pid": 37870, - "ref": "e107" - }, - { - "index": 107, - "parentIndex": 106, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 410, - "width": 872, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e108" - }, - { - "index": 108, - "parentIndex": 107, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 410, - "width": 872, - "height": 168 - }, - "depth": 30, - "pid": 37870, - "ref": "e109" - }, - { - "index": 109, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e110" - }, - { - "index": 110, - "parentIndex": 109, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 486, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e111" - }, - { - "index": 111, - "parentIndex": 110, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 486, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e112" - }, - { - "index": 112, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 160, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e113" - }, - { - "index": 113, - "parentIndex": 112, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 486, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e114" - }, - { - "index": 114, - "parentIndex": 113, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 486, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e115" - }, - { - "index": 115, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 304, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e116" - }, - { - "index": 116, - "parentIndex": 115, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 486, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e117" - }, - { - "index": 117, - "parentIndex": 116, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 486, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e118" - }, - { - "index": 118, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 448, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e119" - }, - { - "index": 119, - "parentIndex": 118, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 486, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e120" - }, - { - "index": 120, - "parentIndex": 119, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 486, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e121" - }, - { - "index": 121, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 592, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e122" - }, - { - "index": 122, - "parentIndex": 121, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 486, - "width": 67, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e123" - }, - { - "index": 123, - "parentIndex": 122, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 486, - "width": 67, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e124" - }, - { - "index": 124, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 736, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e125" - }, - { - "index": 125, - "parentIndex": 124, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 486, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e126" - }, - { - "index": 126, - "parentIndex": 125, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 486, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e127" - }, - { - "index": 127, - "parentIndex": 106, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 410, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e128" - }, - { - "index": 128, - "parentIndex": 127, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 413, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e129" - }, - { - "index": 129, - "parentIndex": 106, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 410, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e130" - }, - { - "index": 130, - "parentIndex": 129, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 413, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e131" - }, - { - "index": 131, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e132" - }, - { - "index": 132, - "parentIndex": 131, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e133" - }, - { - "index": 133, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 664, - "width": 120, - "height": 120 - }, - "depth": 27, - "pid": 37870, - "ref": "e134" - }, - { - "index": 134, - "parentIndex": 133, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 664, - "width": 120, - "height": 120 - }, - "depth": 28, - "pid": 37870, - "ref": "e135" - }, - { - "index": 135, - "parentIndex": 133, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 28, - "pid": 37870, - "ref": "e136" - }, - { - "index": 136, - "parentIndex": 135, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 29, - "pid": 37870, - "ref": "e137" - }, - { - "index": 137, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 27, - "pid": 37870, - "ref": "e138" - }, - { - "index": 138, - "parentIndex": 137, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 28, - "pid": 37870, - "ref": "e139" - }, - { - "index": 139, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 27, - "pid": 37870, - "ref": "e140" - }, - { - "index": 140, - "parentIndex": 139, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 28, - "pid": 37870, - "ref": "e141" - }, - { - "index": 141, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Layout", - "rect": { - "x": 0, - "y": 900, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e142" - }, - { - "index": 142, - "parentIndex": 141, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Layout", - "rect": { - "x": 0, - "y": 900, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e143" - }, - { - "index": 143, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 24, - "y": 970, - "width": 354, - "height": 39 - }, - "depth": 27, - "pid": 37870, - "ref": "e144" - }, - { - "index": 144, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 27, - "pid": 37870, - "ref": "e145" - }, - { - "index": 145, - "parentIndex": 144, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e146" - }, - { - "index": 146, - "parentIndex": 144, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Left", - "rect": { - "x": 35, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e147" - }, - { - "index": 147, - "parentIndex": 146, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Left", - "rect": { - "x": 35, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e148" - }, - { - "index": 148, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 27, - "pid": 37870, - "ref": "e149" - }, - { - "index": 149, - "parentIndex": 148, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e150" - }, - { - "index": 150, - "parentIndex": 148, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Right", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e151" - }, - { - "index": 151, - "parentIndex": 150, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Right", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e152" - }, - { - "index": 152, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 24, - "y": 1029, - "width": 354, - "height": 400 - }, - "depth": 27, - "pid": 37870, - "ref": "e153" - }, - { - "index": 153, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1040, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 27, - "pid": 37870, - "ref": "e154" - }, - { - "index": 154, - "parentIndex": 153, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1040, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 28, - "pid": 37870, - "ref": "e155" - }, - { - "index": 155, - "parentIndex": 153, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Top", - "rect": { - "x": 35, - "y": 1122, - "width": 332, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e156" - }, - { - "index": 156, - "parentIndex": 155, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Top", - "rect": { - "x": 35, - "y": 1122, - "width": 332, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e157" - }, - { - "index": 157, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1236.6666717529297, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 27, - "pid": 37870, - "ref": "e158" - }, - { - "index": 158, - "parentIndex": 157, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1236.6666717529297, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 28, - "pid": 37870, - "ref": "e159" - }, - { - "index": 159, - "parentIndex": 157, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Bottom", - "rect": { - "x": 35, - "y": 1318.6666717529297, - "width": 332, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e160" - }, - { - "index": 160, - "parentIndex": 159, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Bottom", - "rect": { - "x": 35, - "y": 1318.6666717529297, - "width": 332, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e161" - }, - { - "index": 161, - "parentIndex": 64, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 25, - "pid": 37870, - "ref": "e162" - }, - { - "index": 162, - "parentIndex": 161, - "type": "Other", - "role": "UIView", - "rect": { - "x": 65, - "y": 868, - "width": 272, - "height": 3 - }, - "depth": 26, - "pid": 37870, - "ref": "e163" - }, - { - "index": 163, - "parentIndex": 64, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 25, - "pid": 37870, - "ref": "e164" - }, - { - "index": 164, - "parentIndex": 163, - "type": "Other", - "role": "UIView", - "rect": { - "x": 65, - "y": 868, - "width": 272, - "height": 3 - }, - "depth": 26, - "pid": 37870, - "ref": "e165" - }, - { - "index": 165, - "parentIndex": 49, - "type": "Other", - "role": "_UIFloatingBarContainerView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 17, - "pid": 37870, - "ref": "e166" - }, - { - "index": 166, - "parentIndex": 165, - "type": "Other", - "role": "_TtGC5UIKitP10$186ecd81022FloatingBarHostingViewVS_20FloatingBarContainer_", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 18, - "pid": 37870, - "ref": "e167" - }, - { - "index": 167, - "parentIndex": 8, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e168" - }, - { - "index": 168, - "parentIndex": 7, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 8, - "pid": 37870, - "ref": "e169" - }, - { - "index": 169, - "parentIndex": 168, - "type": "Other", - "role": "RCTDebuggingOverlayComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e170" - }, - { - "index": 170, - "parentIndex": 169, - "type": "Other", - "role": "RCTDebuggingOverlay", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 10, - "pid": 37870, - "ref": "e171" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 171, - "totalNodeCount": 171, - "reasons": [] - }, - "warnings": [ - "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." - ], - "snapshotDiagnostics": { - "stats": { - "count": 123, - "p50Ms": 68, - "p95Ms": 122, - "maxMs": 677, - "slowThresholdMs": 1500, - "platform": "ios", - "backends": { - "xctest": 123 - } - } - }, - "refsGeneration": 835197 - } -} diff --git a/example/visual/evidence/sensitivity/ios/gross-wait.json b/example/visual/evidence/sensitivity/ios/gross-wait.json deleted file mode 100644 index b7edafb5b6..0000000000 --- a/example/visual/evidence/sensitivity/ios/gross-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 634, - "captures": 3, - "nodeCount": 18 - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-1-wait.json b/example/visual/evidence/sensitivity/ios/realistic-1-wait.json deleted file mode 100644 index 940b56e98e..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-1-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 636, - "captures": 3, - "nodeCount": 18 - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-wait.json b/example/visual/evidence/sensitivity/ios/realistic-2-wait.json deleted file mode 100644 index 00a016d76d..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-2-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 632, - "captures": 3, - "nodeCount": 18 - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-wait.json b/example/visual/evidence/sensitivity/ios/realistic-3-wait.json deleted file mode 100644 index 1246ce0693..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-3-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 608, - "captures": 3, - "nodeCount": 18 - } -} diff --git a/example/visual/evidence/sensitivity/ios/reverted-wait.json b/example/visual/evidence/sensitivity/ios/reverted-wait.json deleted file mode 100644 index 83b938e802..0000000000 --- a/example/visual/evidence/sensitivity/ios/reverted-wait.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "waitedMs": 635, - "captures": 3, - "nodeCount": 18 - } -} diff --git a/example/visual/evidence/summarize.mjs b/example/visual/evidence/summarize.mjs new file mode 100644 index 0000000000..97c457fda9 --- /dev/null +++ b/example/visual/evidence/summarize.mjs @@ -0,0 +1,135 @@ +#!/usr/bin/env node +/** + * Regenerates example/visual/evidence/summary.md from the raw agent-device JSON + * kept under example/visual/evidence/. + * + * node example/visual/evidence/summarize.mjs [evidence-dir] + * + * Every *.json that reports a diff is picked up: an agent-device `diff` payload + * (`data.differentPixels`) or a run.mjs summary.json (one row per entry in + * `results`). Files are grouped into one table per directory, in walk order. + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const COLUMNS = [ + 'file', + 'total px', + 'changed px', + 'mismatch %', + 'regions', + 'match', +]; + +/** Every *.json under `dir`, depth-first, directories and files sorted. */ +function jsonFiles(dir) { + const found = []; + for (const entry of fs + .readdirSync(dir, { withFileTypes: true }) + .sort((a, b) => a.name.localeCompare(b.name))) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) found.push(...jsonFiles(full)); + else if (entry.name.endsWith('.json')) found.push(full); + } + return found; +} + +/** The diff rows a single JSON file contributes, or [] if it reports no diff. */ +function rowsOf(file) { + let json; + try { + json = JSON.parse(fs.readFileSync(file, 'utf8')); + } catch { + return []; + } + + const name = path.basename(file); + + if (json?.data?.differentPixels != null) { + const d = json.data; + return [ + { + file: name, + total: d.totalPixels, + changed: d.differentPixels, + mismatch: d.mismatchPercentage, + regions: d.regions?.length ?? 0, + match: d.match, + }, + ]; + } + + // run.mjs summary.json: the diff numbers live one level down, per story. + if (Array.isArray(json?.results)) { + return json.results + .filter((r) => r.changedPixels != null) + .map((r) => ({ + file: `${name} (${r.story})`, + total: r.totalPixels, + changed: r.changedPixels, + mismatch: r.mismatchPercentage, + regions: r.regions?.length ?? 0, + match: r.pass, + })); + } + + return []; +} + +function renderTable(rows) { + const cells = rows.map((r) => [ + r.file, + String(r.total ?? ''), + String(r.changed ?? ''), + String(r.mismatch ?? ''), + String(r.regions ?? ''), + r.match ? 'yes' : 'no', + ]); + const widths = COLUMNS.map((header, i) => + Math.max(header.length, ...cells.map((c) => c[i].length)) + ); + const line = (values) => + `| ${values.map((v, i) => v.padEnd(widths[i])).join(' | ')} |`; + + return [ + line(COLUMNS), + `| ${widths.map((w) => '-'.repeat(w)).join(' | ')} |`, + ...cells.map(line), + ].join('\n'); +} + +function main() { + const root = path.resolve( + process.argv[2] || path.dirname(fileURLToPath(import.meta.url)) + ); + + const sections = new Map(); + for (const file of jsonFiles(root)) { + const rows = rowsOf(file); + if (rows.length === 0) continue; + const section = `${path.relative(root, path.dirname(file)) || '.'}/`; + sections.set(section, [...(sections.get(section) || []), ...rows]); + } + + const out = [ + '# Evidence summary', + '', + 'generated by evidence/summarize.mjs — do not edit by hand', + '', + ...[...sections].flatMap(([section, rows]) => [ + `## ${section}`, + '', + renderTable(rows), + '', + ]), + ].join('\n'); + + const target = path.join(root, 'summary.md'); + fs.writeFileSync(target, out); + const total = [...sections.values()].reduce((n, r) => n + r.length, 0); + console.log(`${target}: ${total} rows in ${sections.size} sections`); +} + +main(); diff --git a/example/visual/evidence/summary.md b/example/visual/evidence/summary.md index f906eed577..2efd67d31d 100644 --- a/example/visual/evidence/summary.md +++ b/example/visual/evidence/summary.md @@ -1,125 +1,193 @@ -# Evidence summary (generated) - -## iOS — original run - -| artifact | kind | total px | changed px | mismatch % | regions | widest region | note | -| ---------------------------- | ---- | -------- | ---------- | ---------- | ------- | ------------- | ----- | -| 26-diff.json | diff | 86028 | 0 | 0 | 0 | 0 | True | -| 30-diff.json | diff | 86028 | 0 | 0 | 0 | 0 | True | -| 37-diff.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 40-diff.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 43-diff.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 53-diff.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 59-diff.json | diff | 774252 | 4277 | 0.55 | 1 | 316 | False | -| 60-diff.json | diff | 774252 | 116292 | 15.02 | 3 | 1206 | False | -| 63-diff.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 66-diff-t0.02.json | diff | 774252 | 10179 | 1.31 | 3 | 378 | False | -| 66-diff-t0.1.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 69-diff.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 6x-diff-relaunch-1-t002.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 6x-diff-warm-1-t002.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 6x-diff-warm-2-t002.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| 6x-diff-warm-3-t002.json | diff | 774252 | 0 | 0 | 0 | 0 | True | - -PNG dimensions: - -## Android — original run - -| artifact | kind | total px | changed px | mismatch % | regions | widest region | note | -| ------------------------------ | ---- | -------- | ---------- | ---------- | ------- | ------------- | ----- | -| 103-diff-relaunch-1-t0.01.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 103-diff-relaunch-1-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 103-diff-relaunch-1-t0.05.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 103-diff-relaunch-1-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 108-diff-gross-t0.01.json | diff | 821760 | 265916 | 32.36 | 2 | 1280 | False | -| 108-diff-gross-t0.02.json | diff | 821760 | 208505 | 25.37 | 4 | 1280 | False | -| 108-diff-gross-t0.05.json | diff | 821760 | 118661 | 14.44 | 4 | 390 | False | -| 108-diff-gross-t0.1.json | diff | 821760 | 65051 | 7.92 | 2 | 359 | False | -| 111-diff-revert1-t0.01.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 111-diff-revert1-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 111-diff-revert1-t0.05.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 111-diff-revert1-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 114-diff-realistic-t0.01.json | diff | 821760 | 14686 | 1.79 | 1 | 380 | False | -| 114-diff-realistic-t0.02.json | diff | 821760 | 9336 | 1.14 | 1 | 374 | False | -| 114-diff-realistic-t0.05.json | diff | 821760 | 1830 | 0.22 | 1 | 360 | False | -| 114-diff-realistic-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 117-diff-revert2-t0.01.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 117-diff-revert2-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 117-diff-revert2-t0.05.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 117-diff-revert2-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-1-t0.01.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-1-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-1-t0.05.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-1-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-2-t0.01.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-2-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-2-t0.05.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-2-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-3-t0.01.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-3-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-3-t0.05.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| 94-diff-warm-3-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | - -PNG dimensions: - -## ios — re-measured after review - -| artifact | kind | total px | changed px | mismatch % | regions | widest region | note | -| --------------------------- | ---------- | -------- | ---------- | ---------- | ------- | ------------- | --------------- | -| gross-diff-t0.02.json | diff | 774252 | 116292 | 15.02 | 3 | 1206 | False | -| gross-diff-t0.1.json | diff | 774252 | 4277 | 0.55 | 1 | 316 | False | -| gross-shot.json | screenshot | | | | | | gross.png | -| realistic-1-diff-t0.02.json | diff | 774252 | 10179 | 1.31 | 3 | 378 | False | -| realistic-1-diff-t0.1.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| realistic-1-shot.json | screenshot | | | | | | realistic-1.png | -| realistic-2-diff-t0.02.json | diff | 774252 | 10179 | 1.31 | 3 | 378 | False | -| realistic-2-diff-t0.1.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| realistic-2-shot.json | screenshot | | | | | | realistic-2.png | -| realistic-3-diff-t0.02.json | diff | 774252 | 10179 | 1.31 | 3 | 378 | False | -| realistic-3-diff-t0.1.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| realistic-3-shot.json | screenshot | | | | | | realistic-3.png | -| reverted-diff-t0.02.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| reverted-diff-t0.1.json | diff | 774252 | 0 | 0 | 0 | 0 | True | -| reverted-shot.json | screenshot | | | | | | reverted.png | - -PNG dimensions: -gross.png: 1206x642 -realistic-1.png: 1206x642 -realistic-2.png: 1206x642 -realistic-3.png: 1206x642 -reverted.png: 1206x642 - -## android — re-measured after review - -| artifact | kind | total px | changed px | mismatch % | regions | widest region | note | -| ----------------------------------- | ---------- | -------- | ---------- | ---------- | ------- | ------------- | ----------------------- | -| gross-diff-t0.02.json | diff | 821760 | 208505 | 25.37 | 4 | 1280 | False | -| gross-diff-t0.1.json | diff | 821760 | 65051 | 7.92 | 2 | 359 | False | -| gross-probe-diff-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| gross-probe-diff-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| gross-probe-shot.json | screenshot | | | | | | gross-probe.png | -| gross-shot.json | screenshot | | | | | | gross.png | -| realistic-1-diff-t0.02.json | diff | 821760 | 9336 | 1.14 | 1 | 374 | False | -| realistic-1-diff-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| realistic-1-shot.json | screenshot | | | | | | realistic-1.png | -| realistic-2-diff-t0.02.json | diff | 821760 | 9336 | 1.14 | 1 | 374 | False | -| realistic-2-diff-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| realistic-2-shot.json | screenshot | | | | | | realistic-2.png | -| realistic-3-diff-t0.02.json | diff | 821760 | 9336 | 1.14 | 1 | 374 | False | -| realistic-3-diff-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| realistic-3-shot.json | screenshot | | | | | | realistic-3.png | -| reverted-diff-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| reverted-diff-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| reverted-shot.json | screenshot | | | | | | reverted.png | -| sanity-before-break-diff-t0.02.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| sanity-before-break-diff-t0.1.json | diff | 821760 | 0 | 0 | 0 | 0 | True | -| sanity-before-break-shot.json | screenshot | | | | | | sanity-before-break.png | - -PNG dimensions: -gross-probe.png: 1280x642 -gross.png: 1280x642 -realistic-1.png: 1280x642 -realistic-2.png: 1280x642 -realistic-3.png: 1280x642 -reverted.png: 1280x642 -sanity-before-break.png: 1280x642 +# Evidence summary + +generated by evidence/summarize.mjs — do not edit by hand + +## android/ + +| file | total px | changed px | mismatch % | regions | match | +| ------------------------------ | -------- | ---------- | ---------- | ------- | ----- | +| 103-diff-relaunch-1-t0.01.json | 821760 | 0 | 0 | 0 | yes | +| 103-diff-relaunch-1-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| 103-diff-relaunch-1-t0.05.json | 821760 | 0 | 0 | 0 | yes | +| 103-diff-relaunch-1-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| 108-diff-gross-t0.01.json | 821760 | 265916 | 32.36 | 2 | no | +| 108-diff-gross-t0.02.json | 821760 | 208505 | 25.37 | 4 | no | +| 108-diff-gross-t0.05.json | 821760 | 118661 | 14.44 | 4 | no | +| 108-diff-gross-t0.1.json | 821760 | 65051 | 7.92 | 2 | no | +| 111-diff-revert1-t0.01.json | 821760 | 0 | 0 | 0 | yes | +| 111-diff-revert1-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| 111-diff-revert1-t0.05.json | 821760 | 0 | 0 | 0 | yes | +| 111-diff-revert1-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| 114-diff-realistic-t0.01.json | 821760 | 14686 | 1.79 | 1 | no | +| 114-diff-realistic-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | +| 114-diff-realistic-t0.05.json | 821760 | 1830 | 0.22 | 1 | no | +| 114-diff-realistic-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| 117-diff-revert2-t0.01.json | 821760 | 0 | 0 | 0 | yes | +| 117-diff-revert2-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| 117-diff-revert2-t0.05.json | 821760 | 0 | 0 | 0 | yes | +| 117-diff-revert2-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-1-t0.01.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-1-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-1-t0.05.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-1-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-2-t0.01.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-2-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-2-t0.05.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-2-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-3-t0.01.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-3-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-3-t0.05.json | 821760 | 0 | 0 | 0 | yes | +| 94-diff-warm-3-t0.1.json | 821760 | 0 | 0 | 0 | yes | + +## ios/ + +| file | total px | changed px | mismatch % | regions | match | +| ---------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| 26-diff.json | 86028 | 0 | 0 | 0 | yes | +| 30-diff.json | 86028 | 0 | 0 | 0 | yes | +| 37-diff.json | 774252 | 0 | 0 | 0 | yes | +| 40-diff.json | 774252 | 0 | 0 | 0 | yes | +| 43-diff.json | 774252 | 0 | 0 | 0 | yes | +| 53-diff.json | 774252 | 0 | 0 | 0 | yes | +| 59-diff.json | 774252 | 4277 | 0.55 | 1 | no | +| 60-diff.json | 774252 | 116292 | 15.02 | 3 | no | +| 63-diff.json | 774252 | 0 | 0 | 0 | yes | +| 66-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | +| 66-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | +| 69-diff.json | 774252 | 0 | 0 | 0 | yes | +| 6x-diff-relaunch-1-t002.json | 774252 | 0 | 0 | 0 | yes | +| 6x-diff-warm-1-t002.json | 774252 | 0 | 0 | 0 | yes | +| 6x-diff-warm-2-t002.json | 774252 | 0 | 0 | 0 | yes | +| 6x-diff-warm-3-t002.json | 774252 | 0 | 0 | 0 | yes | + +## runs/android/fix-fail/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 9336 | 1.14 | 1 | no | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/fix-pass-after-revert/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/fix-pass-from-other-screen/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/fix-pass-from-surface/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/round2-pass/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/ios/fix-fail/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 10179 | 1.31 | 3 | no | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/fix-pass-after-revert/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/fix-pass-from-other-screen/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/fix-pass-from-surface/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/round2-fail-node20/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 10179 | 1.31 | 3 | no | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/round2-pass/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/round2-pass-after-revert/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/round2-pass-node20/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/round2-pass-node20-literal/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## sensitivity/android/ + +| file | total px | changed px | mismatch % | regions | match | +| ----------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| gross-diff-t0.02.json | 821760 | 208505 | 25.37 | 4 | no | +| gross-diff-t0.1.json | 821760 | 65051 | 7.92 | 2 | no | +| gross-probe-diff-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| gross-probe-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| realistic-1-diff-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | +| realistic-1-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| realistic-2-diff-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | +| realistic-2-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| realistic-3-diff-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | +| realistic-3-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| reverted-diff-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| reverted-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | +| sanity-before-break-diff-t0.02.json | 821760 | 0 | 0 | 0 | yes | +| sanity-before-break-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | + +## sensitivity/ios/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| gross-diff-t0.02.json | 774252 | 116292 | 15.02 | 3 | no | +| gross-diff-t0.1.json | 774252 | 4277 | 0.55 | 1 | no | +| realistic-1-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | +| realistic-1-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | +| realistic-2-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | +| realistic-2-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | +| realistic-3-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | +| realistic-3-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | +| reverted-diff-t0.02.json | 774252 | 0 | 0 | 0 | yes | +| reverted-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | diff --git a/example/visual/run.mjs b/example/visual/run.mjs index bd67a7392f..80dd5a505f 100644 --- a/example/visual/run.mjs +++ b/example/visual/run.mjs @@ -23,7 +23,10 @@ * * Exit codes: 0 pass, 1 a story FAILed the diff, 2 setup/environment error, * 3 a capture came back with the wrong dimensions. `summary.json` is written in - * the output directory in every one of those cases. + * the output directory in every one of those cases, including argument errors + * (those land in artifacts/run/unknown/ when the platform is missing/invalid). + * + * Unit tests: node --test example/visual/run.test.mjs */ import { spawnSync } from 'node:child_process'; @@ -152,7 +155,13 @@ function parseArgs(argv) { case '-h': console.log( 'usage: node example/visual/run.mjs --platform ios|android [--update] [--force]\n' + - ' [--threshold <0-1>] [--story|--stories a,b] [--out ]' + ' [--threshold <0-1>] [--story|--stories a,b] [--out ]\n' + + '\n' + + ' --update write the captures to __baselines__// instead of diffing\n' + + ' them (the capture-size check is skipped; the captured dimensions\n' + + ' are printed instead)\n' + + ' --force run even though the device does not match env.json. It covers the\n' + + ' device check only — a capture-size mismatch is never overridden.' ); process.exit(0); break; @@ -178,6 +187,41 @@ function parseArgs(argv) { return out; } +/** + * Where to write summary.json when parseArgs itself failed. Takes `--out` if it + * was given, else the platform directory if `--platform` was given and valid, + * else an `unknown` directory — so an argument error is still summarised. + */ +function fallbackOutDir(argv) { + const valueOf = (flag) => { + const i = argv.lastIndexOf(flag); + return i === -1 ? null : (argv[i + 1] ?? null); + }; + + const out = valueOf('--out'); + if (out) return path.resolve(out); + + const platform = valueOf('--platform'); + const dir = + platform === 'ios' || platform === 'android' ? platform : 'unknown'; + return path.join(VISUAL_DIR, 'artifacts', 'run', dir); +} + +/** + * Environment for the nested `npx agent-device` call. When this script itself + * runs under `npx -p node@20 node run.mjs`, npx exports `npm_config_package` + * (and friends) into the child; the nested npx then reads that, installs + * node@20 and treats `agent-device@0.21.0` as a command name inside it. Strip + * every npm_config_* variable so the nested npx resolves its own package. + */ +function spawnEnv() { + const env = {}; + for (const [key, value] of Object.entries(process.env)) { + if (!key.startsWith('npm_config_')) env[key] = value; + } + return env; +} + /** Runs one agent-device command, records its JSON, returns the parsed payload. */ function ad(label, args, { allowFail = false } = {}) { const argv = [AGENT_DEVICE, ...args, '--json']; @@ -185,6 +229,7 @@ function ad(label, args, { allowFail = false } = {}) { const proc = spawnSync('npx', argv, { cwd: SESSION_CWD, encoding: 'utf8', + env: spawnEnv(), maxBuffer: 256 * 1024 * 1024, }); const elapsedMs = Date.now() - startedAt; @@ -329,15 +374,11 @@ function checkEnvironment(platform, env) { observed.runtime = match.runtime; observed.state = match.device.state; + // The runtime identifier carries the iOS version (…SimRuntime.iOS-26-5), so + // comparing it also covers env.iosVersion. if (env.runtime && match.runtime !== env.runtime) { mismatch('runtime', env.runtime, match.runtime); } - if ( - env.iosVersion && - !match.runtime.endsWith(env.iosVersion.replace(/\./g, '-')) - ) { - mismatch('iOS version', env.iosVersion, `runtime ${match.runtime}`); - } if (env.device && match.device.name !== env.device) { mismatch('device name', env.device, match.device.name); } @@ -377,7 +418,8 @@ function checkEnvironment(platform, env) { /** * Throws unless the device matches env.json. `--force` downgrades the * mismatches to warnings so a deliberate re-baseline on another device is - * still possible, but never by accident. + * still possible, but never by accident. This is the only check `--force` + * covers. */ function enforceEnvironment(platform, env, force) { const { observed, mismatches } = checkEnvironment(platform, env); @@ -413,14 +455,20 @@ function requireBaseline(platform, story) { return baseline; } -/** `--update` mode: write the capture to the baseline, creating it if new. */ -function writeBaseline(platform, story, current) { +/** + * `--update` mode: write the capture to the baseline, creating it if new. The + * captured dimensions go in the log line because the size check is skipped in + * this mode (see checkCaptureSize) — this is the only place a human sees what + * the new baseline actually measures. + */ +function writeBaseline(platform, story, current, shotData) { const baseline = baselinePath(platform, story); const created = !fs.existsSync(baseline); fs.mkdirSync(path.dirname(baseline), { recursive: true }); fs.copyFileSync(current, baseline); + const size = `${shotData?.width ?? '?'}x${shotData?.height ?? '?'}`; console.log( - `${platform} ${story} baseline ${created ? 'created' : 'updated'} → ${path.relative(VISUAL_DIR, baseline)}` + `${platform} ${story} baseline ${created ? 'created' : 'updated'} (${size}) → ${path.relative(VISUAL_DIR, baseline)}` ); return { baseline, created }; } @@ -430,17 +478,28 @@ function writeBaseline(platform, story, current) { * A wrong-sized capture would otherwise diff clean and read as PASS — and so * would a capture whose size agent-device did not report at all, which is why a * missing value is a failure rather than a warning. + * + * Skipped entirely in `--update` mode: the whole point of that mode is to + * record what the device produces now, and a new story has no pinned size to + * check against. In diff mode there is no override — a size mismatch on a + * device that matches env.json means something is wrong that no flag should + * paper over, so `--force` does not reach this check. */ -function checkCaptureSize(platform, env, story, shotData, force) { +function checkCaptureSize(env, story, shotData, { update = false } = {}) { + if (update) return; + const expected = env.baselines || {}; const problems = []; + if (expected.cropWidth == null || expected.cropHeight == null) { + fail( + `${story}: ${ENV_FILE} pins no crop dimensions, so the capture cannot be ` + + 'size-checked — pin baselines.cropWidth/cropHeight, or re-record with --update', + 3 + ); + } + const compare = (what, want, got) => { - if (want == null) { - // Nothing pinned in env.json: nothing to verify against. - warn(`${story}: env.json pins no ${what}, capture reports ${got}`); - return; - } if (got == null) { problems.push( `${what}: expected ${want}, agent-device reported no ${what}` @@ -464,16 +523,11 @@ function checkCaptureSize(platform, env, story, shotData, force) { if (problems.length === 0) return; const detail = problems.map((p) => ` - ${p}`).join('\n'); - if (force) { - warn( - `${story}: capture dimensions do not match env.json (--force):\n${detail}` - ); - return; - } fail( `${story}: capture dimensions do not match ${ENV_FILE}:\n${detail}\n` + - 'a wrong-sized capture cannot be compared with the baseline. ' + - 'Check --crop-on/--pixel-density and the device, or pass --force to continue anyway.', + 'a wrong-sized capture cannot be compared with the baseline. Check ' + + '--crop-on/--pixel-density and the device; if the new size is the intended ' + + 'one, re-record the baselines with --update. (--force does not override this.)', 3 ); } @@ -536,11 +590,11 @@ function findDevMenuNode(nodes) { /** * The Expo dev launcher ("DEVELOPMENT SERVERS" / "RECENTLY OPENED"). It is left * behind by an Android relaunch and none of the dev-menu labels match it. The - * way out is the recently-opened row that carries the Metro URL; if that row is - * missing, any labelled row under the "RECENTLY OPENED" header. + * way out is the recently-opened row carrying the Metro URL; if the launcher is + * up but that row is not there, the run fails rather than pressing whatever row + * happens to be nearby, which could open a different app. */ function findDevLauncherNode(nodes) { - const header = nodes.find((n) => labelOf(n) === 'RECENTLY OPENED'); if (!nodes.some((n) => DEV_LAUNCHER_MARKERS.includes(labelOf(n)))) { return null; } @@ -550,16 +604,11 @@ function findDevLauncherNode(nodes) { ); if (metroRow) return metroRow; - if (!header) return null; - const headerBottom = (header.rect?.y ?? 0) + (header.rect?.height ?? 0); - return ( - nodes.find( - (n) => - labelOf(n) && - !DEV_LAUNCHER_MARKERS.includes(labelOf(n)) && - (n.rect?.y ?? -1) >= headerBottom - ) || null + fail( + 'the Expo dev launcher is on screen but has no recently-opened row for ' + + `http://…:${METRO_PORT} — start Metro and open the app from the launcher once` ); + return null; // unreachable } /** @@ -611,12 +660,13 @@ function onSurfaceScreen(globals, stories) { } /** - * The example-list root is the only screen whose Appbar title is "Examples"; - * every example screen shows a "Back" action where the root shows the drawer - * button. Either signal on its own identifies the root. + * The example-list root is the only screen whose Appbar title is "Examples", + * and it shows the drawer button where every example screen shows "Back". Both + * signals are required: "no Back element" on its own is also true of a screen + * with no header at all, which would make any such screen read as the list. */ function atListRoot(nodes) { - return hasLabel(nodes, LIST_ROOT_TITLE) || !hasLabel(nodes, BACK_LABEL); + return hasLabel(nodes, LIST_ROOT_TITLE) && !hasLabel(nodes, BACK_LABEL); } /** @@ -649,8 +699,13 @@ function goBackToListRoot(platform, globals, nodes) { } fail( - `still not on the example list root after ${MAX_BACK_STEPS} back steps — ` + - `expected the "${LIST_ROOT_TITLE}" title` + `could not reach the example list: after ${MAX_BACK_STEPS} back steps the ` + + `"${LIST_ROOT_TITLE}" title was still not on screen (last screen: ` + + `${current + .map((n) => labelOf(n)) + .filter(Boolean) + .slice(0, 5) + .join(' / ')})` ); return current; // unreachable } @@ -816,10 +871,15 @@ function runPass(state) { if (platform === 'ios') shotArgs.push('--pixel-density', String(env.pixelDensity || 3)); const shot = ad(`screenshot-${story}`, shotArgs); - checkCaptureSize(platform, env, story, shot.data, opts.force); + checkCaptureSize(env, story, shot.data, { update: opts.update }); if (opts.update) { - const { baseline, created } = writeBaseline(platform, story, current); + const { baseline, created } = writeBaseline( + platform, + story, + current, + shot.data + ); state.results.push({ story, updated: !created, @@ -897,14 +957,47 @@ function writeSummary(state, exitCode, error) { pass: exitCode === 0, }; const file = path.join(opts.outDir, 'summary.json'); + fs.mkdirSync(opts.outDir, { recursive: true }); fs.writeFileSync(file, JSON.stringify(summary, null, 2)); return file; } +/** Summarises an argument error, which happens before there are real options. */ +function writeArgErrorSummary(argv, failure) { + const platform = argv[argv.lastIndexOf('--platform') + 1]; + const state = { + opts: { + platform: platform === 'ios' || platform === 'android' ? platform : null, + threshold: null, + update: argv.includes('--update'), + force: argv.includes('--force'), + stories: null, + outDir: fallbackOutDir(argv), + }, + env: null, + observedEnv: {}, + results: [], + startedAt: Date.now(), + }; + return writeSummary(state, failure.exitCode, { + message: failure.message, + exitCode: failure.exitCode, + }); +} + function main() { - // Argument errors are the one class of failure that cannot be summarised: - // there is no output directory to write into yet. - const opts = parseArgs(process.argv.slice(2)); + const argv = process.argv.slice(2); + + let opts; + try { + opts = parseArgs(argv); + } catch (thrown) { + if (!(thrown instanceof RunFailure)) throw thrown; + console.error(`error: ${thrown.message}`); + const summaryFile = writeArgErrorSummary(argv, thrown); + console.log(`# summary: ${summaryFile} (exit ${thrown.exitCode})`); + process.exit(thrown.exitCode); + } const state = { opts, @@ -947,33 +1040,34 @@ function main() { process.exit(exitCode); } -if (import.meta.main) { - try { - main(); - } catch (thrown) { - // Only argument errors can reach here: runPass failures are caught (and - // summarised) inside main(). - if (!(thrown instanceof RunFailure)) throw thrown; - console.error(`error: ${thrown.message}`); - process.exit(thrown.exitCode); - } +/** + * True when this module is the process entry point. `import.meta.main` would + * say the same thing but only exists on Node >= 24.2, and this script has to + * run on the Node 20 floor in example/package.json. Both sides are realpath'd + * so a symlinked invocation still matches. + */ +function isMainModule(argvPath, moduleUrl) { + if (!argvPath) return false; + const real = (p) => { + try { + return fs.realpathSync(p); + } catch { + return path.resolve(p); + } + }; + return real(argvPath) === real(fileURLToPath(moduleUrl)); +} + +if (isMainModule(process.argv[1], import.meta.url)) { + main(); } -// Exported so the argument/path/environment logic can be exercised from a -// throwaway script without a device; the script itself only runs when -// executed directly. +// Exported for example/visual/run.test.mjs only. export { RunFailure, - parseArgs, - baselinePath, - requireBaseline, - writeBaseline, - checkEnvironment, - enforceEnvironment, + isMainModule, checkCaptureSize, - findSurfaceRow, - findDevMenuNode, - findDevLauncherNode, + enforceEnvironment, atListRoot, - looksReady, + findSurfaceRow, }; diff --git a/example/visual/run.test.mjs b/example/visual/run.test.mjs new file mode 100644 index 0000000000..94649f85ba --- /dev/null +++ b/example/visual/run.test.mjs @@ -0,0 +1,123 @@ +/** + * Unit tests for example/visual/run.mjs. No device, no agent-device, no new + * dependencies — only the pure decision helpers are exercised. + * + * node --test example/visual/run.test.mjs + */ + +import assert from 'node:assert/strict'; +import path from 'node:path'; +import test from 'node:test'; +import { fileURLToPath } from 'node:url'; + +import { + RunFailure, + atListRoot, + checkCaptureSize, + enforceEnvironment, + findSurfaceRow, + isMainModule, +} from './run.mjs'; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +const RUN_URL = new URL('./run.mjs', import.meta.url); +const RUN_PATH = fileURLToPath(RUN_URL); + +const env = { baselines: { cropWidth: 1206, cropHeight: 642 } }; +const wrongSize = { width: 1280, height: 700 }; + +test('isMainModule is false for another argv[1] and true for the script itself', () => { + assert.equal(isMainModule(path.join(HERE, 'other.mjs'), RUN_URL), false); + assert.equal(isMainModule(undefined, RUN_URL), false); + assert.equal(isMainModule(RUN_PATH, RUN_URL), true); +}); + +test('checkCaptureSize skips the check in update mode', () => { + // Regression: this is the gate that used to abort `--update` before + // writeBaseline ever ran, so a story with no baseline could never get one. + assert.doesNotThrow(() => + checkCaptureSize(env, 'new-story', wrongSize, { update: true }) + ); + // A brand-new story has no pinned size at all; --update must still get through. + assert.doesNotThrow(() => + checkCaptureSize({ baselines: {} }, 'new-story', wrongSize, { + update: true, + }) + ); +}); + +test('checkCaptureSize fails with exit code 3 in diff mode', () => { + assert.throws( + () => checkCaptureSize(env, 'story', wrongSize, { update: false }), + (thrown) => { + assert.ok(thrown instanceof RunFailure); + assert.equal(thrown.exitCode, 3); + assert.match(thrown.message, /capture dimensions do not match/); + return true; + } + ); + + assert.doesNotThrow(() => + checkCaptureSize(env, 'story', { width: 1206, height: 642 }, {}) + ); +}); + +test('--force covers the device check but not the size check', () => { + // An impossible API level mismatches whether or not an emulator is attached. + const mismatched = { apiLevel: -1, density: -1 }; + + assert.throws( + () => enforceEnvironment('android', mismatched, false), + (thrown) => { + assert.ok(thrown instanceof RunFailure); + assert.equal(thrown.exitCode, 2); + return true; + } + ); + assert.doesNotThrow(() => enforceEnvironment('android', mismatched, true)); + + // The size check takes no force: a stray `force` in the options changes nothing. + assert.throws( + () => + checkCaptureSize(env, 'story', wrongSize, { update: false, force: true }), + RunFailure + ); +}); + +test('atListRoot needs the "Examples" title and no Back element', () => { + const title = { label: 'Examples' }; + const back = { label: 'Back' }; + + assert.equal(atListRoot([title]), true); + assert.equal(atListRoot([title, back]), false); + // A screen with no header at all is not the list root. + assert.equal(atListRoot([{ label: 'Elevated surface' }]), false); + assert.equal(atListRoot([]), false); +}); + +test('findSurfaceRow picks the list row, not the Appbar title', () => { + const nodes = [ + { + ref: 'title', + label: 'Examples', + rect: { y: 60, height: 48, width: 402 }, + }, + // Appbar title of the Surface screen: above the list, must not win. + { + ref: 'header', + label: 'Surface', + rect: { y: 60, height: 48, width: 402 }, + }, + // Inset text child: below the header but too narrow to be the row. + { + ref: 'child', + label: 'Surface', + rect: { y: 300, height: 48, width: 360 }, + }, + { ref: 'row', label: 'Surface', rect: { y: 300, height: 48, width: 402 } }, + ]; + + assert.equal(findSurfaceRow(nodes)?.ref, 'row'); + // No "Examples" title means this is not the list: report nothing. + assert.equal(findSurfaceRow(nodes.filter((n) => n.ref !== 'title')), null); +}); From e9245dc975a2c9e21a18afecbb664a7c90244812 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Fri, 11 Sep 2026 12:24:09 +0200 Subject: [PATCH 04/18] test(example): address round-3 review on the visual regression PoC - Evidence citations: every path in evidence/issues.md now resolves to a committed file. Issue 15 re-captured (evidence/runner/ios-*), issues 4 and 14 rewritten onto committed evidence; the two lost logs are stated as not kept. - Crop size is checked against the baseline PNG's own header, per story, so `--update` on a new story is followed by a passing run; env.json drops the per-platform crop pins and totalPixels. - Drop the arg-error summary machinery; an argument error prints and exits 2. - Device observers are injected; the --force test no longer shells out. `yarn example test:visual` runs the seven node:test cases; README says it is manual, not Jest/hook/CI. README Node version is 20+ throughout. - Guardrails triggered for real: exit 2 on a UDID that is not attached, exit 3 on an 804x428 capture against the 3x baseline (evidence/runs/ios/round3-exit*). - New: the Expo dev-client's floating "Tools" button inside the crop produced a deterministic false FAIL on Android with src clean (issue 19). The runner now detects it, disables it via the dev menu, or stops with exit 2; evidence in evidence/runner/android-* and evidence/runs/android/round3-*. --- example/package.json | 3 +- example/visual/README.md | 49 +- example/visual/env.json | 9 +- example/visual/evidence/issues.md | 123 +- .../android-01-snapshot-tools-overlay.json | 1267 +++++ .../runner/android-02-snapshot-devmenu.json | 1149 +++++ .../android-03-press-tools-button-toggle.json | 21 + .../runner/android-04-press-close.json | 22 + .../android-05-snapshot-after-toggle.json | 1247 +++++ .../evidence/runner/ios-01-open-relaunch.json | 32 + ...2-snapshot-immediately-after-relaunch.json | 80 + .../runner/ios-03-snapshot-6s-later.json | 1344 +++++ .../evidence/runner/ios-04-press-close.json | 23 + .../round3-pass-after-tools-off/stdout.log | 10 + .../round3-pass-after-tools-off/summary.json | 76 + .../surface-example-elevated.png | Bin 0 -> 31693 bytes .../surface-example-flat.png | Bin 0 -> 23886 bytes .../runs/android/round3-pass-final/stdout.log | 10 + .../android/round3-pass-final/summary.json | 76 + .../cmds/001-open-after-force-stop.json | 47 + .../cmds/002-snapshot-ready.json | 1369 +++++ .../cmds/003-press-launcher.json | 277 + .../cmds/004-snapshot-ready.json | 348 ++ .../cmds/005-snapshot-ready.json | 328 ++ .../cmds/006-snapshot-ready.json | 1304 +++++ .../cmds/007-snapshot-raw.json | 4437 +++++++++++++++++ .../cmds/008-wait-stable.json | 26 + ...9-screenshot-surface-example-elevated.json | 26 + .../010-diff-surface-example-elevated.json | 61 + .../011-screenshot-surface-example-flat.json | 26 + .../cmds/012-diff-surface-example-flat.json | 32 + .../runs/android/round3-pass-rerun/stdout.log | 10 + .../android/round3-pass-rerun/summary.json | 103 + .../surface-example-elevated-diff.png | Bin 0 -> 27633 bytes .../surface-example-elevated.png | Bin 0 -> 37661 bytes .../surface-example-flat.png | Bin 0 -> 23886 bytes .../runs/android/round3-pass/stdout.log | 10 + .../runs/android/round3-pass/summary.json | 103 + .../surface-example-elevated-diff.png | Bin 0 -> 27633 bytes .../round3-tools-autodisable/stdout.log | 16 + .../round3-tools-autodisable/summary.json | 76 + .../round3-exit2-device-mismatch/stdout.log | 6 + .../round3-exit2-device-mismatch/summary.json | 71 + .../ios/round3-exit3-crop-mismatch/stdout.log | 12 + .../round3-exit3-crop-mismatch/summary.json | 76 + .../runs/ios/round3-pass-final/stdout.log | 10 + .../runs/ios/round3-pass-final/summary.json | 98 + .../evidence/runs/ios/round3-pass/stdout.log | 10 + .../runs/ios/round3-pass/summary.json | 98 + example/visual/evidence/summary.md | 49 + example/visual/run.mjs | 410 +- example/visual/run.test.mjs | 117 +- 52 files changed, 14900 insertions(+), 197 deletions(-) create mode 100644 example/visual/evidence/runner/android-01-snapshot-tools-overlay.json create mode 100644 example/visual/evidence/runner/android-02-snapshot-devmenu.json create mode 100644 example/visual/evidence/runner/android-03-press-tools-button-toggle.json create mode 100644 example/visual/evidence/runner/android-04-press-close.json create mode 100644 example/visual/evidence/runner/android-05-snapshot-after-toggle.json create mode 100644 example/visual/evidence/runner/ios-01-open-relaunch.json create mode 100644 example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json create mode 100644 example/visual/evidence/runner/ios-03-snapshot-6s-later.json create mode 100644 example/visual/evidence/runner/ios-04-press-close.json create mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log create mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json create mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png create mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png create mode 100644 example/visual/evidence/runs/android/round3-pass-final/stdout.log create mode 100644 example/visual/evidence/runs/android/round3-pass-final/summary.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/001-open-after-force-stop.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/002-snapshot-ready.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/003-press-launcher.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/004-snapshot-ready.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/005-snapshot-ready.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/006-snapshot-ready.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/007-snapshot-raw.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/008-wait-stable.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/009-screenshot-surface-example-elevated.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/010-diff-surface-example-elevated.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/011-screenshot-surface-example-flat.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/012-diff-surface-example-flat.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/stdout.log create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/summary.json create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated-diff.png create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated.png create mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/surface-example-flat.png create mode 100644 example/visual/evidence/runs/android/round3-pass/stdout.log create mode 100644 example/visual/evidence/runs/android/round3-pass/summary.json create mode 100644 example/visual/evidence/runs/android/round3-pass/surface-example-elevated-diff.png create mode 100644 example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log create mode 100644 example/visual/evidence/runs/android/round3-tools-autodisable/summary.json create mode 100644 example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log create mode 100644 example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json create mode 100644 example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log create mode 100644 example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json create mode 100644 example/visual/evidence/runs/ios/round3-pass-final/stdout.log create mode 100644 example/visual/evidence/runs/ios/round3-pass-final/summary.json create mode 100644 example/visual/evidence/runs/ios/round3-pass/stdout.log create mode 100644 example/visual/evidence/runs/ios/round3-pass/summary.json diff --git a/example/package.json b/example/package.json index 8d32e2a364..4ca0d985b4 100644 --- a/example/package.json +++ b/example/package.json @@ -8,7 +8,8 @@ "eas-build-pre-install": "cd .. && yarn", "start": "EXPO_NO_TYPESCRIPT_SETUP=1 expo start --dev-client", "android": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:android", - "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios" + "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios", + "test:visual": "node --test visual/run.test.mjs" }, "dependencies": { "@expo/metro-config": "~56.0.0", diff --git a/example/visual/README.md b/example/visual/README.md index fbad6743d9..d5426f2451 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -75,7 +75,7 @@ Also noted: docs say `wait --stable`, the CLI takes `wait stable [quietMs] [time Issues 6–12 (session binding per cwd, non-portable `find` selectors, stale-ref errors, Android relaunch landing in the launcher, `logs` on an inactive log, `--pixel-density` iOS-only, Node client not resolvable from the `npx` cache) are in `evidence/issues.md` with commands and evidence. -Issues 13–18 came out of the review round: `snapshot` returns an empty `nodes` array when the tree is unchanged unless `--force-full` is passed; a relaunch restores the previous route (the example app persists navigation state, so this is app behaviour the runner has to handle, logged for context); the dev menu appears after app-ready, not at open; Fast Refresh not reaching Android after a relaunch; an occasional non-zero CLI exit with empty stdout and stderr; and `diff screenshot --out` writing no image when the result is a match. +Issues 13–18 came out of the review round: `snapshot` returns an empty `nodes` array when the tree is unchanged unless `--force-full` is passed; a relaunch restores the previous route (the example app persists navigation state, so this is app behaviour the runner has to handle, logged for context); the dev menu appears after app-ready, not at open; Fast Refresh not reaching Android after a relaunch; an occasional non-zero CLI exit with empty stdout and stderr; and `diff screenshot --out` writing no image when the result is a match. Issue 19, from round 3, is the dev-client's floating Tools button landing inside the crop and producing a deterministic false FAIL — see the verification notes below. ## Android @@ -136,12 +136,12 @@ Web (`--crop-on` is refused off iOS/Android, so it is a different loop), deep li Before 0.02 is trusted as a default threshold rather than a Surface-specific one, the same protocol should be run on: other shadow-bearing components (Card, Chip, FAB), a text-heavy crop (glyph antialiasing may raise the noise floor), dark theme (different contrast profile), and an emulator on swiftshader, which is what `ubuntu-latest` CI renders with. None of these were measured. -Also unmeasured: cold simulator/emulator boot, a different day or host machine, an iOS runtime or emulator image update. Baselines are valid for the `env.json` configuration only. +Also unmeasured: cold simulator/emulator boot, a different day or host machine, an iOS runtime or emulator image update. Baselines are valid for the `env.json` configuration only. Dev-client chrome (dev menu, dev launcher, floating Tools button) is handled by the runner case by case; a release build would remove the whole class. ## Running it `example/visual/run.mjs` is the hand-run CLI loop above as one Node script (plain -ESM, Node 24, no build step, no new dependencies). It spawns +ESM, Node 20 or newer, no build step, no new dependencies). It spawns `npx agent-device@0.21.0 … --json` and parses stdout. The published package does export `createAgentDeviceClient`, but `agent-device` is not a dependency of this repo and is not resolvable from `example/`, so using the typed client would mean @@ -156,12 +156,16 @@ Requires Node 20 or newer, matching `example/package.json`. The entry point is guarded by comparing `process.argv[1]` with the module URL rather than `import.meta.main`, which only exists from Node 24.2 — on Node 20 the earlier version printed nothing and exited 0, the worst failure a tool whose contract is -its exit code can have. The pure helpers have a `node:test` file: +its exit code can have. The pure helpers have a `node:test` file, run with: ```bash -node --test example/visual/run.test.mjs +yarn example test:visual ``` +It needs no device, adb or xcrun. It is **not** run by Jest (which ignores `.mjs`), +by the pre-commit hook, or by CI — it is a manual check for whoever edits +`run.mjs`, nothing more. + `evidence/summary.md` is generated from the committed JSON by `node example/visual/evidence/summarize.mjs`. @@ -209,13 +213,15 @@ Two guardrails: list. This applies to `--update` too, so committed baselines cannot be overwritten from the wrong simulator by accident. `--force` downgrades this check to a warning; that is the only thing `--force` does. -- **Crop size.** In diff mode, after every capture the reported width, height and - (on iOS) pixel density are compared with the crop pinned in `env.json`. A - mismatch exits 3 with no override — a wrong-sized capture can never read as - PASS, and a size mismatch on the right device means something a flag should - not paper over. In `--update` mode the check is skipped (a new story has no - pinned size yet) and the captured dimensions are printed on the `baseline -created` line instead. `env.json` is never rewritten by the script. +- **Crop size.** In diff mode, after every capture the reported width and height + are compared with the dimensions of the baseline PNG itself (read from its + header), and on iOS the pixel density with the one pinned in `env.json`. The + expected size therefore comes per story from the file the diff actually uses + and cannot drift from it, and a story that has just been `--update`d passes on + the next run. A mismatch exits 3 with no override — a wrong-sized capture can + never read as PASS. In `--update` mode the check is skipped and the captured + dimensions are printed on the `baseline created` line instead. `env.json` is + never rewritten by the script. Verified end to end on 2026-09-10 after review; `summary.json` and the diff images are in `evidence/runs//fix-*/`. From the Surface screen: PASS with `changed=0` @@ -234,3 +240,22 @@ realistic break FAILs with `changed=10179 (1.31%)`, exit 1, and the revert PASSe One thing that surfaced: `npx -p` leaks `npm_config_package` into the child, which made the script's own nested `npx agent-device` install node instead — the script now strips `npm_config_*` from the environment it spawns with. + +Round-3 verification (2026-09-11), `evidence/runs/ios/round3-*/`: both guardrails +triggered for real. With `env.json` pointing at a UDID that is not attached, the +run refused before touching any device — `udid: expected 0000…, observed not +present in xcrun simctl list` — exit 2. With `pixelDensity` pinned to 2 against +the 3x baselines, the capture came back 804x428 and the run stopped with +`width: expected 1206, actual 804 / height: expected 642, actual 428` — exit 3. +Both `summary.json` files record the error and exit code. + +The same day's Android confirmation run then failed for real — `changed=2822`, one +152x74 region at the top-right of the crop — with `src/` clean and the baseline +byte-identical to `HEAD`. The diff image shows the Expo dev-client's floating +**Tools** button, which had been switched on by some earlier dev-menu interaction +and sat inside the section. Turning it off through the dev menu ("Tools button") +made the next run pass with `changed=0`; the script now detects that node and +disables it, or stops with exit 2 rather than reporting it as a regression +(issue 19, with the snapshots and both failing summaries in `evidence/`). It is +the first false FAIL of the PoC, and the clearest argument yet for capturing +from a release build rather than a dev-client once this goes beyond a PoC. diff --git a/example/visual/env.json b/example/visual/env.json index 56e0f34822..453b33ef14 100644 --- a/example/visual/env.json +++ b/example/visual/env.json @@ -12,11 +12,7 @@ "date": "2026-09-10T09:30:58Z", "baselines": { "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 + "surface-example-flat": "__baselines__/ios/surface-example-flat.png" }, "diffThresholds": { "cliDefault": 0.1, @@ -41,9 +37,6 @@ "baselines": { "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" }, "diffThresholds": { diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index f407089a00..0c2707b4de 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -21,8 +21,17 @@ npx agent-device@0.21.0 find 'label="Surface"' --udid 2464A356-C17C-4B0D-99DB-CD Output (note `"Tapped …"`): ```json -{ "success": true, "data": { "ref": "@e13", "locator": "any", "query": "label=\"Surface\"", - "x": 201, "y": 501, "message": "Tapped @e13 (201, 501)" } } +{ + "success": true, + "data": { + "ref": "@e13", + "locator": "any", + "query": "label=\"Surface\"", + "x": 201, + "y": 501, + "message": "Tapped @e13 (201, 501)" + } +} ``` Artifact: `19-find-surface.json` (also `16-find.json`, `17-find.json`). @@ -49,9 +58,14 @@ npx agent-device@0.21.0 scroll bottom --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826 Output: ```json -{ "success": false, "error": { "code": "COMMAND_FAILED", - "message": "scroll bottom reached the safety limit before the snapshot showed the edge", - "hint": "The scoped scroll container still reports hidden content. Use a smaller manual scroll + snapshot loop to inspect the current state." } } +{ + "success": false, + "error": { + "code": "COMMAND_FAILED", + "message": "scroll bottom reached the safety limit before the snapshot showed the edge", + "hint": "The scoped scroll container still reports hidden content. Use a smaller manual scroll + snapshot loop to inspect the current state." + } +} ``` Artifact: `16-scroll.json`. Recovery: `press 'label="Close"'` (artifact `18-press-close.json`). @@ -92,14 +106,27 @@ threshold: ``` npx agent-device@0.21.0 diff screenshot \ - --baseline example/visual/__baselines__/ios/surface-elevated.png \ - example/visual/artifacts/realistic-elevated@3x.png \ - --out example/visual/artifacts/diff-realistic-t0.1.png --threshold 0.1 --json + --baseline example/visual/__baselines__/ios/surface-example-elevated.png \ + --out --threshold 0.1 --json ``` +Committed evidence: `evidence/ios/66-diff-t0.1.json` (0 changed pixels, `match: true`) and +`evidence/ios/66-diff-t0.02.json` (10,179 changed pixels) are the two diffs of the same +capture; the three repeats are `evidence/sensitivity/ios/realistic-{1,2,3}-diff-t0.1.json` +and `-t0.02.json`; the diff image at 0.02 is `evidence/diff-images/ios-realistic-t0.02.png`. +There is no 0.1 image because `diff screenshot --out` writes nothing on a match (issue 18). +The raw capture PNG was not committed. + ```json -{ "success": true, "data": { "totalPixels": 774252, "differentPixels": 0, - "mismatchPercentage": 0, "match": true } } +{ + "success": true, + "data": { + "totalPixels": 774252, + "differentPixels": 0, + "mismatchPercentage": 0, + "match": true + } +} ``` The same pair at `--threshold 0.02` reports 10179 different pixels (1.31%) in a @@ -228,33 +255,41 @@ not. The example app persists its navigation state in AsyncStorage `open --relaunch` (iOS) or `am force-stop` + `open` (Android) the app comes back on whatever screen it was on. Reproduced on both platforms in this pass: -- iOS, from the Button example: `evidence/runs/ios/pass-2-from-other-screen.log` - and `pass-2b-from-other-screen-no-devmenu.log` — the six `snapshot-list` - captures all show the *Button* screen (88 nodes, `Back` / `Button` / - `Text button (text)`), the scrolls are no-ops on that screen, and the run dies - with `could not find the "Surface" row after 6 scrolls`. -- Android, from the Switch example: - `evidence/runs/android/pass-2-from-other-screen.log`. +The runs that first showed the failure were hand-run against an earlier version +of `run.mjs` and their logs were not kept. The committed evidence is the fixed +script's own output when started from another example screen — +`evidence/runs/ios/fix-pass-from-other-screen/summary.json` and +`evidence/runs/android/fix-pass-from-other-screen/summary.json` — whose step log +reads `relaunching the app … not on the Surface screen — going back to the example +list … pressing "Back" … at the example list root`. If a relaunch reset the route, +the "not on the Surface screen" branch could never be reached from a relaunch; +it is, on both platforms. This is a `run.mjs` bug, not an agent-device bug: navigation has to be driven back to the list explicitly (press `Back` until no `Back` control is left, then scroll for the row), not implied by a relaunch. Related trap: because `navigateToSurface()` matches on `label === 'Surface'` and picks the largest -match, on the restored *Surface* screen it presses the nav header title instead -of a list row — visible in `evidence/runs/ios/guard.log`, which reports -`pressing "Surface" row (@e3)` where `@e3` is the header -`RCTParagraphComponentView "Surface"`. +match, on the restored _Surface_ screen it pressed the nav header title +(`RCTParagraphComponentView "Surface"`) instead of a list row. That log was not +kept either; the trap is encoded as the test +`findSurfaceRow picks the list row, not the Appbar title` in +`example/visual/run.test.mjs`, and the fixed heuristic is visible in the same two +`summary.json` files above: `pressing the "Surface" row (@e17, Other, y=618, w=402)` +on iOS, `(@e72, android.view.ViewGroup, y=2747, w=1280)` on Android. ## 15. The dev-menu check runs before the app finishes loading `dismissDevMenu()` snapshots once, immediately after the relaunch. On iOS that snapshot came back with three nodes — `UIApplication`, `SplashScreenLogo`, `Downloading 100%…` — so it found none of the `Close` / `Continue` labels and -returned "clean" (`evidence/runs/ios/pass-2-from-other-screen/cmds/004-snapshot-devmenu.json`). -The Expo dev menu then appeared *after* the bundle finished downloading and was -still on screen for the whole navigation loop (`007-snapshot-list.json` has -`SwiftUI.AccessibilityNode "Close" id="xmark"` plus -`Runtime version: exposdk:56.0.0`), swallowing every scroll. The check has to +returned "clean". Reproduced for the record on 2026-09-11 in `evidence/runner/`: +`ios-01-open-relaunch.json` (the relaunch), `ios-02-snapshot-immediately-after-relaunch.json` +(3 nodes: `React Native Paper Example`, the splash image, `Downloading 100%…`), +then `ios-03-snapshot-6s-later.json` (77 nodes, including the dev menu's +`Close` with `identifier: "xmark"` and `Reload`) and `ios-04-press-close.json` +dismissing it. The dev menu appears _after_ the bundle finishes downloading; a +check that snapshots once at open time cannot see it, and it then swallows every +subsequent scroll. The check has to wait for the app to be ready first, and be repeated inside the navigation loop rather than run once. @@ -283,7 +318,7 @@ pixels and report PASS. ## 17. Minor: an agent-device command occasionally exits non-zero with no output Twice in this pass (`press '@e2'`, `press 'label="Close"'`, both on iOS) the CLI -exited 1 with completely empty stdout *and* stderr. Re-running the identical +exited 1 with completely empty stdout _and_ stderr. Re-running the identical command immediately afterwards succeeded. Nothing to act on beyond noting that a caller cannot distinguish this from a crash, and that `run.mjs`'s "parse the first `{`..`}` out of stdout" fallback turns it into a `null` response rather @@ -299,3 +334,37 @@ per-threshold sweep produces a gappy set of files: this pass has diffs but no `-t0.1.png` counterparts, because at 0.1 the realistic break matches. The `-diff-t0.1.json` files under `evidence/sensitivity//` are the record for those. + +## 19. The dev-client's floating "Tools" button lands inside the crop and reads as a regression + +Found 2026-09-11 while re-running the Android loop with `src/` clean after the +round-2 changes. `run.mjs` reported a deterministic **FAIL** — +`surface-example-elevated changed=2822 (0.34%) regions=1` — twice in a row +(`evidence/runs/android/round3-pass/summary.json`, `…/round3-pass-rerun/summary.json`), +against a baseline whose file is byte-identical to the one committed +(`md5 8693c919…` in both the working tree and `HEAD`). The diff image +(`evidence/runs/android/round3-pass/surface-example-elevated-diff.png`) shows the +change: a 152x74 pill at the top-right of the crop reading **Tools** — the Expo +dev-client's floating dev-tools button, `android.widget.ImageView` label `Tools`, +rect `{x:1115, y:243, w:78, h:78}` in `evidence/runner/android-01-snapshot-tools-overlay.json`. + +It is a dev-client setting, toggled by the dev menu entry **"Tools button"** +(`evidence/runner/android-02-snapshot-devmenu.json` lists `Close`, `Reload`, +`TOOLS`, `Tools button`, `Toggle Dev Menu`, …). Pressing it +(`android-03-press-tools-button-toggle.json`) and then `Close` +(`android-04-press-close.json`) removed the node (`android-05-snapshot-after-toggle.json`, +60 nodes, no `Tools`), and the next run passed with `changed=0` on both stories +(`evidence/runs/android/round3-pass-after-tools-off/summary.json`). The setting +survives a relaunch. It had been off in every earlier run today +(`round2-pass`, 08:53 UTC, 0 px) and was on by 10:14 UTC; which earlier dev-menu +interaction flipped it is not known. + +Two lessons. For agent-device: a screenshot of a dev build can contain dev-client +chrome that is not part of the app, and `diff screenshot` cannot tell — worth a +note in the docs, or a `screenshot` option that hides dev-client overlays. For +`run.mjs`: a dev overlay inside the crop must never be reported as a visual +regression; the script now looks for the floating node after dismissing the dev +menu and launcher, turns it off through the dev menu when it can, and otherwise +stops with exit 2 and a message naming the node and the manual fix. This is also +the strongest argument so far for capturing from a release build rather than a +dev-client once this moves past a PoC. diff --git a/example/visual/evidence/runner/android-01-snapshot-tools-overlay.json b/example/visual/evidence/runner/android-01-snapshot-tools-overlay.json new file mode 100644 index 0000000000..1f02f1a413 --- /dev/null +++ b/example/visual/evidence/runner/android-01-snapshot-tools-overlay.json @@ -0,0 +1,1267 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e1" + }, + { + "index": 1, + "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e2" + }, + { + "index": 2, + "type": "android.widget.TextView", + "label": "12:16", + "value": "12:16", + "identifier": "com.android.systemui:id/clock", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 45, + "width": 154, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e3" + }, + { + "index": 3, + "type": "android.widget.ImageView", + "label": "Find Hub notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 202, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e4" + }, + { + "index": 4, + "type": "android.widget.ImageView", + "label": "Security & privacy notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 268, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e5" + }, + { + "index": 5, + "type": "android.widget.FrameLayout", + "label": "T-Mobile, two bars.", + "identifier": "com.android.systemui:id/mobile_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 69, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e6" + }, + { + "index": 6, + "type": "android.widget.ImageView", + "identifier": "com.android.systemui:id/mobile_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 5, + "ref": "e7" + }, + { + "index": 7, + "type": "android.widget.ImageView", + "label": "Wifi signal full.", + "identifier": "com.android.systemui:id/wifi_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e8" + }, + { + "index": 8, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e9" + }, + { + "index": 9, + "type": "android.view.View", + "label": "Battery 100 percent.", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 72, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 8, + "ref": "e10" + }, + { + "index": 10, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e11" + }, + { + "index": 11, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 10, + "ref": "e12" + }, + { + "index": 12, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 11, + "ref": "e13" + }, + { + "index": 13, + "type": "android.widget.LinearLayout", + "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 12, + "ref": "e14" + }, + { + "index": 14, + "type": "android.widget.FrameLayout", + "identifier": "android:id/content", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 13, + "ref": "e15" + }, + { + "index": 15, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 14, + "ref": "e16" + }, + { + "index": 16, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 15, + "ref": "e17" + }, + { + "index": 17, + "type": "android.widget.ImageView", + "label": "Tools", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1115, + "y": 243, + "width": 78, + "height": 78 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 16, + "ref": "e18" + }, + { + "index": 18, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 15, + "ref": "e19" + }, + { + "index": 19, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 18, + "ref": "e20" + }, + { + "index": 20, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 19, + "ref": "e21" + }, + { + "index": 21, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 20, + "ref": "e22" + }, + { + "index": 22, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 21, + "ref": "e23" + }, + { + "index": 23, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 22, + "ref": "e24" + }, + { + "index": 24, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 23, + "ref": "e25" + }, + { + "index": 25, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 24, + "ref": "e26" + }, + { + "index": 26, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 25, + "ref": "e27" + }, + { + "index": 27, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 15, + "parentIndex": 26, + "ref": "e28" + }, + { + "index": 28, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 16, + "parentIndex": 27, + "ref": "e29" + }, + { + "index": 29, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 17, + "parentIndex": 28, + "ref": "e30" + }, + { + "index": 30, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 18, + "parentIndex": 29, + "ref": "e31" + }, + { + "index": 31, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 19, + "parentIndex": 30, + "ref": "e32" + }, + { + "index": 32, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 20, + "parentIndex": 31, + "ref": "e33" + }, + { + "index": 33, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 32, + "ref": "e34" + }, + { + "index": 34, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 33, + "ref": "e35" + }, + { + "index": 35, + "type": "android.widget.Button", + "label": "Back", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 34, + "ref": "e36" + }, + { + "index": 36, + "type": "android.widget.TextView", + "label": "󰁍", + "value": "󰁍", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 35, + "ref": "e37" + }, + { + "index": 37, + "type": "android.view.View", + "label": "Surface", + "value": "Surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 210, + "width": 1064, + "height": 84 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 33, + "ref": "e38" + }, + { + "index": 38, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 20, + "parentIndex": 31, + "hiddenContentBelow": true, + "ref": "e39" + }, + { + "index": 39, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 38, + "ref": "e40" + }, + { + "index": 40, + "type": "android.view.ViewGroup", + "identifier": "surface-example-elevated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e41" + }, + { + "index": 41, + "type": "android.widget.TextView", + "label": "Elevated surface", + "value": "Elevated surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e42" + }, + { + "index": 42, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 39, + "ref": "e43" + }, + { + "index": 43, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 42, + "ref": "e44" + }, + { + "index": 44, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 42, + "ref": "e45" + }, + { + "index": 45, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 42, + "ref": "e46" + }, + { + "index": 46, + "type": "android.view.ViewGroup", + "identifier": "surface-example-flat", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e47" + }, + { + "index": 47, + "type": "android.widget.TextView", + "label": "Flat surface", + "value": "Flat surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e48" + }, + { + "index": 48, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 39, + "ref": "e49" + }, + { + "index": 49, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 48, + "ref": "e50" + }, + { + "index": 50, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 48, + "ref": "e51" + }, + { + "index": 51, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 48, + "ref": "e52" + }, + { + "index": 52, + "type": "android.widget.TextView", + "label": "Animated elevation", + "value": "Animated elevation", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1752, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e53" + }, + { + "index": 53, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 2118, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e54" + }, + { + "index": 54, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e55" + }, + { + "index": 55, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 54, + "ref": "e56" + }, + { + "index": 56, + "type": "android.widget.TextView", + "label": "󰍴", + "value": "󰍴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 90, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 55, + "ref": "e57" + }, + { + "index": 57, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e58" + }, + { + "index": 58, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 57, + "ref": "e59" + }, + { + "index": 59, + "type": "android.widget.TextView", + "label": "󰐕", + "value": "󰐕", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 294, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 58, + "ref": "e60" + }, + { + "index": 60, + "type": "android.widget.TextView", + "label": "Layout", + "value": "Layout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2670, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 39, + "ref": "e61" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": true, + "visibleNodeCount": 61, + "totalNodeCount": 61, + "reasons": [ + "scroll-hidden-below" + ] + }, + "androidSnapshot": { + "backend": "android-helper", + "helperVersion": "0.21.0", + "helperApiVersion": "2", + "helperTransport": "persistent-session", + "helperSessionReused": true, + "installReason": "current", + "waitForIdleTimeoutMs": 500, + "waitForIdleQuietMs": 100, + "timeoutMs": 2000, + "maxDepth": 128, + "maxNodes": 5000, + "rootPresent": true, + "captureMode": "interactive-windows", + "windowCount": 2, + "nodeCount": 218, + "helperTruncated": false, + "elapsedMs": 26 + }, + "snapshotQuality": { + "state": "healthy", + "backend": "android-helper" + }, + "snapshotDiagnostics": { + "stats": { + "count": 462, + "p50Ms": 107, + "p95Ms": 396, + "maxMs": 988, + "slowThresholdMs": 1500, + "platform": "android", + "backends": { + "android": 462 + } + } + }, + "refsGeneration": 835757 + } +} diff --git a/example/visual/evidence/runner/android-02-snapshot-devmenu.json b/example/visual/evidence/runner/android-02-snapshot-devmenu.json new file mode 100644 index 0000000000..d1cfedab95 --- /dev/null +++ b/example/visual/evidence/runner/android-02-snapshot-devmenu.json @@ -0,0 +1,1149 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e1" + }, + { + "index": 1, + "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e2" + }, + { + "index": 2, + "type": "android.widget.TextView", + "label": "12:16", + "value": "12:16", + "identifier": "com.android.systemui:id/clock", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 45, + "width": 154, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e3" + }, + { + "index": 3, + "type": "android.widget.ImageView", + "label": "Find Hub notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 202, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e4" + }, + { + "index": 4, + "type": "android.widget.ImageView", + "label": "Security & privacy notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 268, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e5" + }, + { + "index": 5, + "type": "android.widget.FrameLayout", + "label": "T-Mobile, two bars.", + "identifier": "com.android.systemui:id/mobile_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 69, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e6" + }, + { + "index": 6, + "type": "android.widget.ImageView", + "identifier": "com.android.systemui:id/mobile_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 5, + "ref": "e7" + }, + { + "index": 7, + "type": "android.widget.ImageView", + "label": "Wifi signal full.", + "identifier": "com.android.systemui:id/wifi_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e8" + }, + { + "index": 8, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e9" + }, + { + "index": 9, + "type": "android.view.View", + "label": "Battery 100 percent.", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 72, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 8, + "ref": "e10" + }, + { + "index": 10, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e11" + }, + { + "index": 11, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 10, + "ref": "e12" + }, + { + "index": 12, + "type": "android.widget.FrameLayout", + "identifier": "android:id/content", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 11, + "ref": "e13" + }, + { + "index": 13, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 12, + "ref": "e14" + }, + { + "index": 14, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 13, + "ref": "e15" + }, + { + "index": 15, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 14, + "ref": "e16" + }, + { + "index": 16, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1142, + "width": 1280, + "height": 1714 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 15, + "ref": "e17" + }, + { + "index": 17, + "type": "android.widget.ImageView", + "label": "App Icon", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1214, + "width": 132, + "height": 132 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 16, + "ref": "e18" + }, + { + "index": 18, + "type": "android.widget.TextView", + "label": "React Native Paper Example", + "value": "React Native Paper Example", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 252, + "y": 1220, + "width": 628, + "height": 58 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 16, + "ref": "e19" + }, + { + "index": 19, + "type": "android.widget.TextView", + "label": "Runtime version: exposdk:56.0.0", + "value": "Runtime version: exposdk:56.0.0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 252, + "y": 1290, + "width": 618, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 16, + "ref": "e20" + }, + { + "index": 20, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1082, + "y": 1208, + "width": 144, + "height": 144 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 7, + "parentIndex": 16, + "ref": "e21" + }, + { + "index": 21, + "type": "android.view.View", + "label": "Close", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1130, + "y": 1256, + "width": 48, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 20, + "ref": "e22" + }, + { + "index": 22, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 1100, + "y": 1226, + "width": 108, + "height": 108 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 20, + "ref": "e23" + }, + { + "index": 23, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1418, + "width": 1280, + "height": 1438 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 16, + "hiddenContentBelow": true, + "ref": "e24" + }, + { + "index": 24, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1418, + "width": 556, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e25" + }, + { + "index": 25, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1418, + "width": 556, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 9, + "parentIndex": 24, + "ref": "e26" + }, + { + "index": 26, + "type": "android.view.View", + "label": "Reload", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 1484, + "width": 60, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 25, + "ref": "e27" + }, + { + "index": 27, + "type": "android.widget.TextView", + "label": "Reload", + "value": "Reload", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 1489, + "width": 133, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 25, + "ref": "e28" + }, + { + "index": 28, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1418, + "width": 556, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 25, + "ref": "e29" + }, + { + "index": 29, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 652, + "y": 1418, + "width": 556, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e30" + }, + { + "index": 30, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 652, + "y": 1418, + "width": 556, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 9, + "parentIndex": 29, + "ref": "e31" + }, + { + "index": 31, + "type": "android.view.View", + "label": "Home", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 700, + "y": 1484, + "width": 60, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 30, + "ref": "e32" + }, + { + "index": 32, + "type": "android.widget.TextView", + "label": "Go home", + "value": "Go home", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 784, + "y": 1489, + "width": 175, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 30, + "ref": "e33" + }, + { + "index": 33, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 652, + "y": 1418, + "width": 556, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 30, + "ref": "e34" + }, + { + "index": 34, + "type": "android.widget.TextView", + "label": "TOOLS", + "value": "TOOLS", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1706, + "width": 110, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e35" + }, + { + "index": 35, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1802, + "width": 1136, + "height": 774 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e36" + }, + { + "index": 36, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1802, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 9, + "parentIndex": 35, + "ref": "e37" + }, + { + "index": 37, + "type": "android.view.View", + "label": "Performance monitor", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 1868, + "width": 60, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 36, + "ref": "e38" + }, + { + "index": 38, + "type": "android.widget.TextView", + "label": "Toggle performance monitor", + "value": "Toggle performance monitor", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 1873, + "width": 540, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 36, + "ref": "e39" + }, + { + "index": 39, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1802, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 36, + "ref": "e40" + }, + { + "index": 40, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1996, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 9, + "parentIndex": 35, + "ref": "e41" + }, + { + "index": 41, + "type": "android.view.View", + "label": "Element inspector", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 2062, + "width": 60, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 40, + "ref": "e42" + }, + { + "index": 42, + "type": "android.widget.TextView", + "label": "Toggle element inspector", + "value": "Toggle element inspector", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 2067, + "width": 478, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 40, + "ref": "e43" + }, + { + "index": 43, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 1996, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 40, + "ref": "e44" + }, + { + "index": 44, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2190, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 9, + "parentIndex": 35, + "ref": "e45" + }, + { + "index": 45, + "type": "android.view.View", + "label": "DevTools", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 2256, + "width": 60, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 44, + "ref": "e46" + }, + { + "index": 46, + "type": "android.widget.TextView", + "label": "Open DevTools", + "value": "Open DevTools", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 2261, + "width": 288, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 44, + "ref": "e47" + }, + { + "index": 47, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2190, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 44, + "ref": "e48" + }, + { + "index": 48, + "type": "android.view.View", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2384, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 9, + "parentIndex": 35, + "ref": "e49" + }, + { + "index": 49, + "type": "android.view.View", + "label": "Toggle Dev Menu", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 2450, + "width": 60, + "height": 60 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 48, + "ref": "e50" + }, + { + "index": 50, + "type": "android.widget.TextView", + "label": "Tools button", + "value": "Tools button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 2455, + "width": 233, + "height": 51 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 48, + "ref": "e51" + }, + { + "index": 51, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 72, + "y": 2384, + "width": 1136, + "height": 192 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 48, + "ref": "e52" + }, + { + "index": 52, + "type": "android.widget.ImageView", + "label": "Lightbulb", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 2746, + "width": 54, + "height": 54 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e53" + }, + { + "index": 53, + "type": "android.widget.TextView", + "label": "Tip", + "value": "Tip", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 186, + "y": 2744, + "width": 70, + "height": 58 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e54" + }, + { + "index": 54, + "type": "android.widget.TextView", + "label": "Debugging not working? Try manually reloading first.", + "value": "Debugging not working? Try manually reloading first.", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 120, + "y": 2814, + "width": 853, + "height": 42 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 23, + "ref": "e55" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": true, + "visibleNodeCount": 55, + "totalNodeCount": 55, + "reasons": [ + "scroll-hidden-below" + ] + }, + "androidSnapshot": { + "backend": "android-helper", + "helperVersion": "0.21.0", + "helperApiVersion": "2", + "helperTransport": "persistent-session", + "helperSessionReused": true, + "installReason": "current", + "waitForIdleTimeoutMs": 500, + "waitForIdleQuietMs": 100, + "timeoutMs": 2000, + "maxDepth": 128, + "maxNodes": 5000, + "rootPresent": true, + "captureMode": "interactive-windows", + "windowCount": 2, + "nodeCount": 97, + "helperTruncated": false, + "elapsedMs": 37 + }, + "snapshotQuality": { + "state": "healthy", + "backend": "android-helper" + }, + "snapshotDiagnostics": { + "stats": { + "count": 463, + "p50Ms": 107, + "p95Ms": 396, + "maxMs": 988, + "slowThresholdMs": 1500, + "platform": "android", + "backends": { + "android": 463 + } + } + }, + "refsGeneration": 835758 + } +} diff --git a/example/visual/evidence/runner/android-03-press-tools-button-toggle.json b/example/visual/evidence/runner/android-03-press-tools-button-toggle.json new file mode 100644 index 0000000000..24706b4f64 --- /dev/null +++ b/example/visual/evidence/runner/android-03-press-tools-button-toggle.json @@ -0,0 +1,21 @@ +{ + "success": true, + "data": { + "x": 640, + "y": 2480, + "message": "Tapped label=\"Tools button\" (640, 2480)", + "referenceWidth": 1280, + "referenceHeight": 2856, + "targetKind": "selector", + "selector": "label=\"Tools button\"", + "selectorChain": [ + "role=\"view\"" + ], + "refLabel": "Toggle Dev Menu", + "resolution": { + "source": "runtime", + "phase": "pre-action", + "kind": "unique" + } + } +} diff --git a/example/visual/evidence/runner/android-04-press-close.json b/example/visual/evidence/runner/android-04-press-close.json new file mode 100644 index 0000000000..b2016befe7 --- /dev/null +++ b/example/visual/evidence/runner/android-04-press-close.json @@ -0,0 +1,22 @@ +{ + "success": true, + "data": { + "x": 1154, + "y": 1280, + "message": "Tapped label=\"Close\" (1154, 1280)", + "referenceWidth": 1280, + "referenceHeight": 2856, + "targetKind": "selector", + "selector": "label=\"Close\"", + "selectorChain": [ + "role=\"view\" label=\"Close\"", + "label=\"Close\"" + ], + "refLabel": "Close", + "resolution": { + "source": "runtime", + "phase": "pre-action", + "kind": "unique" + } + } +} diff --git a/example/visual/evidence/runner/android-05-snapshot-after-toggle.json b/example/visual/evidence/runner/android-05-snapshot-after-toggle.json new file mode 100644 index 0000000000..0e2b8e69a3 --- /dev/null +++ b/example/visual/evidence/runner/android-05-snapshot-after-toggle.json @@ -0,0 +1,1247 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e1" + }, + { + "index": 1, + "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", + "bundleId": "com.android.systemui", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 0, + "ref": "e2" + }, + { + "index": 2, + "type": "android.widget.TextView", + "label": "12:17", + "value": "12:17", + "identifier": "com.android.systemui:id/clock", + "bundleId": "com.android.systemui", + "rect": { + "x": 48, + "y": 45, + "width": 154, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e3" + }, + { + "index": 3, + "type": "android.widget.ImageView", + "label": "Find Hub notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 202, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e4" + }, + { + "index": 4, + "type": "android.widget.ImageView", + "label": "Security & privacy notification: ", + "bundleId": "com.android.systemui", + "rect": { + "x": 268, + "y": 0, + "width": 66, + "height": 156 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e5" + }, + { + "index": 5, + "type": "android.widget.FrameLayout", + "label": "T-Mobile, one bar.", + "identifier": "com.android.systemui:id/mobile_combo", + "bundleId": "com.android.systemui", + "rect": { + "x": 972, + "y": 45, + "width": 69, + "height": 66 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e6" + }, + { + "index": 6, + "type": "android.widget.ImageView", + "identifier": "com.android.systemui:id/mobile_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 981, + "y": 60, + "width": 51, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 5, + "ref": "e7" + }, + { + "index": 7, + "type": "android.widget.ImageView", + "label": "Wifi signal full.", + "identifier": "com.android.systemui:id/wifi_signal", + "bundleId": "com.android.systemui", + "rect": { + "x": 1050, + "y": 60, + "width": 48, + "height": 36 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e8" + }, + { + "index": 8, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 80, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 1, + "ref": "e9" + }, + { + "index": 9, + "type": "android.view.View", + "label": "Battery 100 percent.", + "bundleId": "com.android.systemui", + "rect": { + "x": 1116, + "y": 58, + "width": 72, + "height": 39 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 8, + "ref": "e10" + }, + { + "index": 10, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 0, + "ref": "e11" + }, + { + "index": 11, + "type": "android.widget.LinearLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 1, + "parentIndex": 10, + "ref": "e12" + }, + { + "index": 12, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 2, + "parentIndex": 11, + "ref": "e13" + }, + { + "index": 13, + "type": "android.widget.LinearLayout", + "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 3, + "parentIndex": 12, + "ref": "e14" + }, + { + "index": 14, + "type": "android.widget.FrameLayout", + "identifier": "android:id/content", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 4, + "parentIndex": 13, + "ref": "e15" + }, + { + "index": 15, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 5, + "parentIndex": 14, + "ref": "e16" + }, + { + "index": 16, + "type": "androidx.compose.ui.platform.ComposeView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 15, + "ref": "e17" + }, + { + "index": 17, + "type": "android.widget.FrameLayout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 6, + "parentIndex": 15, + "ref": "e18" + }, + { + "index": 18, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 7, + "parentIndex": 17, + "ref": "e19" + }, + { + "index": 19, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 8, + "parentIndex": 18, + "ref": "e20" + }, + { + "index": 20, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 9, + "parentIndex": 19, + "ref": "e21" + }, + { + "index": 21, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 10, + "parentIndex": 20, + "ref": "e22" + }, + { + "index": 22, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 11, + "parentIndex": 21, + "ref": "e23" + }, + { + "index": 23, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 12, + "parentIndex": 22, + "ref": "e24" + }, + { + "index": 24, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 13, + "parentIndex": 23, + "ref": "e25" + }, + { + "index": 25, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 14, + "parentIndex": 24, + "ref": "e26" + }, + { + "index": 26, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 15, + "parentIndex": 25, + "ref": "e27" + }, + { + "index": 27, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 16, + "parentIndex": 26, + "ref": "e28" + }, + { + "index": 28, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 17, + "parentIndex": 27, + "ref": "e29" + }, + { + "index": 29, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 18, + "parentIndex": 28, + "ref": "e30" + }, + { + "index": 30, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 2856 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 19, + "parentIndex": 29, + "ref": "e31" + }, + { + "index": 31, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 20, + "parentIndex": 30, + "ref": "e32" + }, + { + "index": 32, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 0, + "width": 1280, + "height": 348 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 31, + "ref": "e33" + }, + { + "index": 33, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 32, + "ref": "e34" + }, + { + "index": 34, + "type": "android.widget.Button", + "label": "Back", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 30, + "y": 192, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 33, + "ref": "e35" + }, + { + "index": 35, + "type": "android.widget.TextView", + "label": "󰁍", + "value": "󰁍", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 54, + "y": 216, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 34, + "ref": "e36" + }, + { + "index": 36, + "type": "android.view.View", + "label": "Surface", + "value": "Surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 204, + "y": 210, + "width": 1064, + "height": 84 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 32, + "ref": "e37" + }, + { + "index": 37, + "type": "android.widget.ScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 20, + "parentIndex": 30, + "hiddenContentBelow": true, + "ref": "e38" + }, + { + "index": 38, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 348, + "width": 1280, + "height": 2508 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 21, + "parentIndex": 37, + "ref": "e39" + }, + { + "index": 39, + "type": "android.view.ViewGroup", + "identifier": "surface-example-elevated", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e40" + }, + { + "index": 40, + "type": "android.widget.TextView", + "label": "Elevated surface", + "value": "Elevated surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e41" + }, + { + "index": 41, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 510, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 38, + "ref": "e42" + }, + { + "index": 42, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 41, + "ref": "e43" + }, + { + "index": 43, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 41, + "ref": "e44" + }, + { + "index": 44, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 738, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 41, + "ref": "e45" + }, + { + "index": 45, + "type": "android.view.ViewGroup", + "identifier": "surface-example-flat", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 642 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e46" + }, + { + "index": 46, + "type": "android.widget.TextView", + "label": "Flat surface", + "value": "Flat surface", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1062, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e47" + }, + { + "index": 47, + "type": "android.widget.HorizontalScrollView", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1200, + "width": 1280, + "height": 504 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 22, + "parentIndex": 38, + "ref": "e48" + }, + { + "index": 48, + "type": "android.widget.TextView", + "label": "Elevation 0", + "value": "Elevation 0", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 47, + "ref": "e49" + }, + { + "index": 49, + "type": "android.widget.TextView", + "label": "Elevation 1", + "value": "Elevation 1", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 566, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 47, + "ref": "e50" + }, + { + "index": 50, + "type": "android.widget.TextView", + "label": "Elevation 2", + "value": "Elevation 2", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 998, + "y": 1428, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 23, + "parentIndex": 47, + "ref": "e51" + }, + { + "index": 51, + "type": "android.widget.TextView", + "label": "Animated elevation", + "value": "Animated elevation", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 1752, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e52" + }, + { + "index": 52, + "type": "android.widget.TextView", + "label": "Elevation 3", + "value": "Elevation 3", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 134, + "y": 2118, + "width": 188, + "height": 48 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e53" + }, + { + "index": 53, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e54" + }, + { + "index": 54, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 66, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 53, + "ref": "e55" + }, + { + "index": 55, + "type": "android.widget.TextView", + "label": "󰍴", + "value": "󰍴", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 90, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 54, + "ref": "e56" + }, + { + "index": 56, + "type": "android.view.ViewGroup", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e57" + }, + { + "index": 57, + "type": "android.widget.Button", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 270, + "y": 2412, + "width": 120, + "height": 120 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "hittable": true, + "depth": 23, + "parentIndex": 56, + "ref": "e58" + }, + { + "index": 58, + "type": "android.widget.TextView", + "label": "󰐕", + "value": "󰐕", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 294, + "y": 2436, + "width": 72, + "height": 72 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 24, + "parentIndex": 57, + "ref": "e59" + }, + { + "index": 59, + "type": "android.widget.TextView", + "label": "Layout", + "value": "Layout", + "bundleId": "com.callstack.reactnativepaperexample", + "rect": { + "x": 0, + "y": 2670, + "width": 1280, + "height": 138 + }, + "enabled": true, + "editable": false, + "password": false, + "hintShowing": false, + "visibleToUser": true, + "depth": 22, + "parentIndex": 38, + "ref": "e60" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": true, + "visibleNodeCount": 60, + "totalNodeCount": 60, + "reasons": [ + "scroll-hidden-below" + ] + }, + "androidSnapshot": { + "backend": "android-helper", + "helperVersion": "0.21.0", + "helperApiVersion": "2", + "helperTransport": "persistent-session", + "helperSessionReused": true, + "installReason": "current", + "waitForIdleTimeoutMs": 500, + "waitForIdleQuietMs": 100, + "timeoutMs": 2000, + "maxDepth": 128, + "maxNodes": 5000, + "rootPresent": true, + "captureMode": "interactive-windows", + "windowCount": 2, + "nodeCount": 214, + "helperTruncated": false, + "elapsedMs": 114 + }, + "snapshotQuality": { + "state": "healthy", + "backend": "android-helper" + }, + "snapshotDiagnostics": { + "stats": { + "count": 467, + "p50Ms": 107, + "p95Ms": 396, + "maxMs": 988, + "slowThresholdMs": 1500, + "platform": "android", + "backends": { + "android": 467 + } + } + }, + "refsGeneration": 835762 + } +} diff --git a/example/visual/evidence/runner/ios-01-open-relaunch.json b/example/visual/evidence/runner/ios-01-open-relaunch.json new file mode 100644 index 0000000000..5a069e7934 --- /dev/null +++ b/example/visual/evidence/runner/ios-01-open-relaunch.json @@ -0,0 +1,32 @@ +{ + "success": true, + "data": { + "session": "default", + "sessionStateDir": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default", + "runnerLogPath": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/runner.log", + "requestLogPath": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/requests/fe0f9676bf21a0bd.ndjson", + "eventLogPath": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/events.ndjson", + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "selection": { + "reason": "existing-session", + "source": "session", + "candidateCount": 1, + "bootOccurred": false + }, + "startup": { + "durationMs": 1437, + "measuredAt": "2026-09-11T10:10:23.882Z", + "method": "open-command-roundtrip", + "appTarget": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample" + }, + "platform": "ios", + "target": "mobile", + "device": "iPhone 17 Pro", + "id": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "device_udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "ios_simulator_device_set": null, + "message": "Opened: com.callstack.reactnativepaperexample" + } +} diff --git a/example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json b/example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json new file mode 100644 index 0000000000..ac76487b31 --- /dev/null +++ b/example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json @@ -0,0 +1,80 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "Application", + "role": "UIApplication", + "label": "React Native Paper Example", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 0, + "pid": 58894, + "ref": "e1" + }, + { + "index": 1, + "parentIndex": 0, + "type": "Image", + "role": "UIImageView", + "identifier": "SplashScreenLogo", + "rect": { + "x": 151, + "y": 387, + "width": 100, + "height": 100 + }, + "depth": 1, + "pid": 58894, + "ref": "e2" + }, + { + "index": 2, + "parentIndex": 0, + "type": "StaticText", + "role": "UILabel", + "label": "Downloading 100%…", + "rect": { + "x": 10, + "y": 70, + "width": 382, + "height": 14.333333333333329 + }, + "depth": 1, + "pid": 58894, + "ref": "e3" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": false, + "visibleNodeCount": 3, + "totalNodeCount": 3, + "reasons": [] + }, + "warnings": [ + "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." + ], + "snapshotDiagnostics": { + "stats": { + "count": 1045, + "p50Ms": 97, + "p95Ms": 131, + "maxMs": 677, + "slowThresholdMs": 1500, + "platform": "ios", + "backends": { + "xctest": 1045 + } + } + }, + "refsGeneration": 835862 + } +} diff --git a/example/visual/evidence/runner/ios-03-snapshot-6s-later.json b/example/visual/evidence/runner/ios-03-snapshot-6s-later.json new file mode 100644 index 0000000000..a981fcb824 --- /dev/null +++ b/example/visual/evidence/runner/ios-03-snapshot-6s-later.json @@ -0,0 +1,1344 @@ +{ + "success": true, + "data": { + "nodes": [ + { + "index": 0, + "type": "Application", + "role": "UIApplication", + "label": "React Native Paper Example", + "rect": { + "x": 0, + "y": 0, + "width": 402, + "height": 874 + }, + "depth": 0, + "pid": 58894, + "ref": "e1" + }, + { + "index": 1, + "parentIndex": 0, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "label": "Back", + "rect": { + "x": 10, + "y": 74, + "width": 40, + "height": 40 + }, + "depth": 1, + "pid": 58894, + "ref": "e2" + }, + { + "index": 2, + "parentIndex": 0, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 1, + "pid": 58894, + "ref": "e3" + }, + { + "index": 3, + "parentIndex": 2, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Surface", + "rect": { + "x": 164, + "y": 80, + "width": 74, + "height": 28 + }, + "depth": 2, + "pid": 58894, + "ref": "e4" + }, + { + "index": 4, + "parentIndex": 0, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 126, + "width": 402, + "height": 748 + }, + "depth": 1, + "pid": 58894, + "hiddenContentBelow": true, + "ref": "e5" + }, + { + "index": 5, + "parentIndex": 4, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevated surface", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 46 + }, + "depth": 2, + "pid": 58894, + "ref": "e6" + }, + { + "index": 6, + "parentIndex": 5, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevated surface", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 46 + }, + "depth": 3, + "pid": 58894, + "ref": "e7" + }, + { + "index": 7, + "parentIndex": 4, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "identifier": "surface-example-elevated", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 214 + }, + "depth": 2, + "pid": 58894, + "ref": "e8" + }, + { + "index": 8, + "parentIndex": 4, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 180, + "width": 402, + "height": 168 + }, + "depth": 2, + "pid": 58894, + "ref": "e9" + }, + { + "index": 9, + "parentIndex": 8, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 256, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e10" + }, + { + "index": 10, + "parentIndex": 9, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 256, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 4, + "pid": 58894, + "ref": "e11" + }, + { + "index": 11, + "parentIndex": 8, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 256, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e12" + }, + { + "index": 12, + "parentIndex": 11, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 256, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 4, + "pid": 58894, + "ref": "e13" + }, + { + "index": 13, + "parentIndex": 8, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 256, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e14" + }, + { + "index": 14, + "parentIndex": 13, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 256, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 4, + "pid": 58894, + "ref": "e15" + }, + { + "index": 15, + "parentIndex": 8, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 180, + "width": 30, + "height": 168 + }, + "depth": 3, + "pid": 58894, + "ref": "e16" + }, + { + "index": 16, + "parentIndex": 8, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 180, + "width": 30, + "height": 168 + }, + "depth": 3, + "pid": 58894, + "ref": "e17" + }, + { + "index": 17, + "parentIndex": 4, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Flat surface", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 46 + }, + "depth": 2, + "pid": 58894, + "ref": "e18" + }, + { + "index": 18, + "parentIndex": 17, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Flat surface", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 46 + }, + "depth": 3, + "pid": 58894, + "ref": "e19" + }, + { + "index": 19, + "parentIndex": 4, + "type": "Other", + "role": "RCTViewComponentView", + "subrole": "UIView", + "identifier": "surface-example-flat", + "rect": { + "x": 0, + "y": 364, + "width": 402, + "height": 214 + }, + "depth": 2, + "pid": 58894, + "ref": "e20" + }, + { + "index": 20, + "parentIndex": 4, + "type": "ScrollView", + "role": "RCTEnhancedScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 0, + "y": 410, + "width": 402, + "height": 168 + }, + "depth": 2, + "pid": 58894, + "ref": "e21" + }, + { + "index": 21, + "parentIndex": 20, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 486, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e22" + }, + { + "index": 22, + "parentIndex": 21, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 0", + "rect": { + "x": 42.66666603088379, + "y": 486, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 4, + "pid": 58894, + "ref": "e23" + }, + { + "index": 23, + "parentIndex": 20, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 486, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e24" + }, + { + "index": 24, + "parentIndex": 23, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 1", + "rect": { + "x": 187.6666660308838, + "y": 486, + "width": 64.66665649414062, + "height": 16 + }, + "depth": 4, + "pid": 58894, + "ref": "e25" + }, + { + "index": 25, + "parentIndex": 20, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 486, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e26" + }, + { + "index": 26, + "parentIndex": 25, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 2", + "rect": { + "x": 330.6666660308838, + "y": 486, + "width": 66.33334350585938, + "height": 16 + }, + "depth": 4, + "pid": 58894, + "ref": "e27" + }, + { + "index": 27, + "parentIndex": 20, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 410, + "width": 30, + "height": 168 + }, + "depth": 3, + "pid": 58894, + "ref": "e28" + }, + { + "index": 28, + "parentIndex": 20, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 369, + "y": 410, + "width": 30, + "height": 168 + }, + "depth": 3, + "pid": 58894, + "ref": "e29" + }, + { + "index": 29, + "parentIndex": 4, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 2, + "pid": 58894, + "ref": "e30" + }, + { + "index": 30, + "parentIndex": 29, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Animated elevation", + "rect": { + "x": 0, + "y": 594, + "width": 402, + "height": 46 + }, + "depth": 3, + "pid": 58894, + "ref": "e31" + }, + { + "index": 31, + "parentIndex": 4, + "type": "StaticText", + "role": "RCTParagraphComponentView", + "subrole": "UIView", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 2, + "pid": 58894, + "ref": "e32" + }, + { + "index": 32, + "parentIndex": 31, + "type": "StaticText", + "role": "RCTAccessibilityElement", + "subrole": "UIAccessibilityElement", + "label": "Elevation 3", + "rect": { + "x": 42.66666603088379, + "y": 716, + "width": 66.66667175292969, + "height": 16 + }, + "depth": 3, + "pid": 58894, + "ref": "e33" + }, + { + "index": 33, + "parentIndex": 4, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 22, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 2, + "pid": 58894, + "ref": "e34" + }, + { + "index": 34, + "parentIndex": 4, + "type": "Button", + "role": "RCTViewComponentView", + "subrole": "UIView", + "rect": { + "x": 90, + "y": 814, + "width": 40, + "height": 40 + }, + "depth": 2, + "pid": 58894, + "ref": "e35" + }, + { + "index": 35, + "parentIndex": 4, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 2, + "pid": 58894, + "ref": "e36" + }, + { + "index": 36, + "parentIndex": 4, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Horizontal scroll bar, 1 page", + "value": "0%", + "rect": { + "x": 62, + "y": 841, + "width": 278, + "height": 30 + }, + "depth": 2, + "pid": 58894, + "ref": "e37" + }, + { + "index": 37, + "parentIndex": 0, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "rect": { + "x": 71.37313432835822, + "y": 401.26368159203975, + "width": 218.60530679933663, + "height": 19.52404643449421 + }, + "depth": 1, + "pid": 58894, + "ref": "e38", + "inheritsLabel": true + }, + { + "index": 38, + "parentIndex": 0, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Runtime version: exposdk:56.0.0", + "rect": { + "x": 71.37313432835822, + "y": 422.7081260364842, + "width": 176.99668325041458, + "height": 13.762852404643468 + }, + "depth": 1, + "pid": 58894, + "ref": "e39" + }, + { + "index": 39, + "parentIndex": 0, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Close", + "identifier": "xmark", + "rect": { + "x": 344.06965174129357, + "y": 401.5837479270315, + "width": 34.56716417910445, + "height": 34.56716417910445 + }, + "depth": 1, + "pid": 58894, + "ref": "e40" + }, + { + "index": 40, + "parentIndex": 0, + "type": "ScrollView", + "role": "SwiftUI.HostingScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 8, + "y": 452.47429519071306, + "width": 386, + "height": 413.5257048092868 + }, + "depth": 1, + "pid": 58894, + "hiddenContentBelow": true, + "ref": "e41" + }, + { + "index": 41, + "parentIndex": 40, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Reload", + "rect": { + "x": 23.363184079601993, + "y": 467.83747927031504, + "width": 173.79601990049753, + "height": 53.771144278606926 + }, + "depth": 2, + "pid": 58894, + "ref": "e42" + }, + { + "index": 42, + "parentIndex": 41, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Refresh", + "identifier": "arrow.clockwise", + "rect": { + "x": 43.207296849087896, + "y": 486.0812603648424, + "width": 14.082919044874195, + "height": 17.283582089552226 + }, + "depth": 3, + "pid": 58894, + "ref": "e43" + }, + { + "index": 43, + "parentIndex": 41, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Reload", + "rect": { + "x": 69.45273631840797, + "y": 484.96102819237143, + "width": 50.25041459369817, + "height": 19.52404643449421 + }, + "depth": 3, + "pid": 58894, + "ref": "e44" + }, + { + "index": 44, + "parentIndex": 40, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Go home", + "rect": { + "x": 204.84079601990052, + "y": 467.83747927031504, + "width": 173.7960199004975, + "height": 53.771144278606926 + }, + "depth": 2, + "pid": 58894, + "ref": "e45" + }, + { + "index": 45, + "parentIndex": 44, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Home", + "identifier": "house.fill", + "rect": { + "x": 222.12437810945275, + "y": 486.0812603648424, + "width": 19.203980099502502, + "height": 16.96351697551671 + }, + "depth": 3, + "pid": 58894, + "ref": "e46" + }, + { + "index": 46, + "parentIndex": 44, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Go home", + "rect": { + "x": 250.9303482587065, + "y": 484.96102819237143, + "width": 66.5737976782753, + "height": 19.52404643449421 + }, + "depth": 3, + "pid": 58894, + "ref": "e47" + }, + { + "index": 47, + "parentIndex": 40, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "TOOLS", + "rect": { + "x": 23.363184079601993, + "y": 552.334991708126, + "width": 38.72802653399668, + "height": 13.762852404643468 + }, + "depth": 2, + "pid": 58894, + "ref": "e48" + }, + { + "index": 48, + "parentIndex": 40, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Source code explorer", + "rect": { + "x": 23.363184079601993, + "y": 573.7794361525705, + "width": 355.27363184079604, + "height": 53.771144278606926 + }, + "depth": 2, + "pid": 58894, + "ref": "e49" + }, + { + "index": 49, + "parentIndex": 48, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Show Map", + "identifier": "map", + "rect": { + "x": 41.92703150912106, + "y": 592.6633499170812, + "width": 16.643450030046914, + "height": 16.003317970541616 + }, + "depth": 3, + "pid": 58894, + "ref": "e50" + }, + { + "index": 50, + "parentIndex": 48, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Source code explorer", + "rect": { + "x": 69.45273631840797, + "y": 590.9029850746268, + "width": 155.87230514096186, + "height": 19.524046434494153 + }, + "depth": 3, + "pid": 58894, + "ref": "e51" + }, + { + "index": 51, + "parentIndex": 48, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Forward", + "identifier": "chevron.right", + "rect": { + "x": 356.8723051409619, + "y": 595.5439469320065, + "width": 5.761194029850742, + "height": 9.922056995221055 + }, + "depth": 3, + "pid": 58894, + "ref": "e52" + }, + { + "index": 52, + "parentIndex": 40, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Toggle performance monitor", + "rect": { + "x": 23.363184079601993, + "y": 627.8706467661691, + "width": 355.27363184079604, + "height": 53.771144278606926 + }, + "depth": 2, + "pid": 58894, + "ref": "e53" + }, + { + "index": 53, + "parentIndex": 52, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Speed", + "identifier": "speedometer", + "rect": { + "x": 42.247097844112766, + "y": 646.7545605306799, + "width": 16.32338308457711, + "height": 16.32338308457713 + }, + "depth": 3, + "pid": 58894, + "ref": "e54" + }, + { + "index": 54, + "parentIndex": 52, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "rect": { + "x": 69.45273631840797, + "y": 644.9941956882255, + "width": 208.04311774461024, + "height": 19.524046434494153 + }, + "depth": 3, + "pid": 58894, + "ref": "e55", + "inheritsLabel": true + }, + { + "index": 55, + "parentIndex": 40, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Toggle element inspector", + "rect": { + "x": 23.363184079601993, + "y": 681.9618573797678, + "width": 355.27363184079604, + "height": 53.771144278606926 + }, + "depth": 2, + "pid": 58894, + "ref": "e56" + }, + { + "index": 56, + "parentIndex": 55, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Scan", + "identifier": "viewfinder", + "rect": { + "x": 42.56716417910448, + "y": 701.1658374792703, + "width": 15.683251025071783, + "height": 15.68325102507174 + }, + "depth": 3, + "pid": 58894, + "ref": "e57" + }, + { + "index": 57, + "parentIndex": 55, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "rect": { + "x": 69.45273631840797, + "y": 699.0854063018242, + "width": 185.318407960199, + "height": 19.524046434494267 + }, + "depth": 3, + "pid": 58894, + "ref": "e58", + "inheritsLabel": true + }, + { + "index": 58, + "parentIndex": 40, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Open DevTools", + "rect": { + "x": 23.363184079601993, + "y": 736.0530679933665, + "width": 355.27363184079604, + "height": 53.771144278606926 + }, + "depth": 2, + "pid": 58894, + "ref": "e59" + }, + { + "index": 59, + "parentIndex": 58, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "chevron.left.chevron.right", + "identifier": "chevron.left.chevron.right", + "rect": { + "x": 40.64676616915423, + "y": 755.8971807628524, + "width": 19.203980099502488, + "height": 14.082919044874302 + }, + "depth": 3, + "pid": 58894, + "ref": "e60" + }, + { + "index": 60, + "parentIndex": 58, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Open DevTools", + "rect": { + "x": 69.45273631840797, + "y": 753.1766169154228, + "width": 110.42288557213931, + "height": 19.524046434494267 + }, + "depth": 3, + "pid": 58894, + "ref": "e61" + }, + { + "index": 61, + "parentIndex": 40, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Running", + "identifier": "figure.run", + "rect": { + "x": 43.207296849087896, + "y": 810.3084577114428, + "width": 13.762853015121536, + "height": 17.603649035022045 + }, + "depth": 2, + "pid": 58894, + "ref": "e62" + }, + { + "index": 62, + "parentIndex": 40, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Fast refresh", + "rect": { + "x": 69.45273631840797, + "y": 809.1882255389717, + "width": 86.7379767827529, + "height": 19.524046434494267 + }, + "depth": 2, + "pid": 58894, + "ref": "e63" + }, + { + "index": 63, + "parentIndex": 40, + "type": "Switch", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "value": "1", + "rect": { + "x": 163.87229919433594, + "y": 805.5074462890625, + "width": 199.4013214111328, + "height": 26.88555908203125 + }, + "depth": 2, + "pid": 58894, + "ref": "e64" + }, + { + "index": 64, + "parentIndex": 63, + "type": "Switch", + "role": "UISwitch", + "value": "1", + "rect": { + "x": 304.7014925373134, + "y": 805.5074626865671, + "width": 60.49253731343282, + "height": 26.885572139303463 + }, + "depth": 3, + "pid": 58894, + "ref": "e65" + }, + { + "index": 65, + "parentIndex": 40, + "type": "Switch", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "value": "1", + "rect": { + "x": 168.03317260742188, + "y": 863.439453125, + "width": 195.24044799804688, + "height": 2.5605468749998863 + }, + "depth": 2, + "pid": 58894, + "ref": "e66" + }, + { + "index": 66, + "parentIndex": 65, + "type": "Switch", + "role": "UISwitch", + "value": "1", + "rect": { + "x": 304.7014925373134, + "y": 863.4394693200663, + "width": 60.49253731343282, + "height": 2.5605306799335494 + }, + "depth": 3, + "pid": 58894, + "ref": "e67" + }, + { + "index": 67, + "parentIndex": 40, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 362.3134328358209, + "y": 452.47429519071306, + "width": 28.80597014925371, + "height": 359.0419539873368 + }, + "depth": 2, + "pid": 58894, + "ref": "e68" + }, + { + "index": 68, + "parentIndex": 40, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 3 pages", + "value": "0%", + "rect": { + "x": 362.3134328358209, + "y": 452.47429519071306, + "width": 28.80597014925371, + "height": 359.0419539873368 + }, + "depth": 2, + "pid": 58894, + "ref": "e69" + }, + { + "index": 69, + "parentIndex": 0, + "type": "ScrollView", + "role": "SwiftUI.HostingScrollView", + "subrole": "UIScrollView", + "rect": { + "x": 8, + "y": 452.47429519071306, + "width": 386, + "height": 413.5257048092868 + }, + "depth": 1, + "pid": 58894, + "ref": "e70" + }, + { + "index": 70, + "parentIndex": 69, + "type": "Image", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "dev-tools", + "rect": { + "x": 166.1127694859038, + "y": 487.0414593698175, + "width": 69.77446102819238, + "height": 76.81592039801001 + }, + "depth": 2, + "pid": 58894, + "ref": "e71" + }, + { + "index": 71, + "parentIndex": 69, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "This is the developer menu. It gives you access to useful tools in development builds.", + "rect": { + "x": 23.363184079601993, + "y": 598.424543946932, + "width": 349.19237147595356, + "height": 38.72802653399674 + }, + "depth": 2, + "pid": 58894, + "ref": "e72" + }, + { + "index": 72, + "parentIndex": 69, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "You can open it at any time by pressing the blue button with the gear icon, or with the ⌃ + d keyboard shortcut.", + "rect": { + "x": 23.363184079601993, + "y": 648.6749585406301, + "width": 336.38971807628525, + "height": 58.89220563847425 + }, + "depth": 2, + "pid": 58894, + "ref": "e73" + }, + { + "index": 73, + "parentIndex": 69, + "type": "StaticText", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "(Connect Hardware Keyboard must be enabled on your simulator to use this shortcut, you can toggle it with ⌘ + shift + K.)", + "rect": { + "x": 23.363184079601993, + "y": 711.407960199005, + "width": 330.9485903814262, + "height": 49.61028192371475 + }, + "depth": 2, + "pid": 58894, + "ref": "e74" + }, + { + "index": 74, + "parentIndex": 69, + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "subrole": "UIResponder", + "label": "Continue", + "rect": { + "x": 23.363184079601993, + "y": 776.3814262023217, + "width": 355.27363184079604, + "height": 44.169154228855746 + }, + "depth": 2, + "pid": 58894, + "ref": "e75" + }, + { + "index": 75, + "parentIndex": 69, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 2 pages", + "value": "0%", + "rect": { + "x": 362.3134328358209, + "y": 452.47429519071306, + "width": 28.80597014925371, + "height": 359.0419539873368 + }, + "depth": 2, + "pid": 58894, + "ref": "e76" + }, + { + "index": 76, + "parentIndex": 69, + "type": "Other", + "role": "_UIScrollViewScrollIndicator", + "label": "Vertical scroll bar, 2 pages", + "value": "0%", + "rect": { + "x": 362.3134328358209, + "y": 452.47429519071306, + "width": 28.80597014925371, + "height": 359.0419539873368 + }, + "depth": 2, + "pid": 58894, + "ref": "e77" + } + ], + "truncated": false, + "appName": "com.callstack.reactnativepaperexample", + "appBundleId": "com.callstack.reactnativepaperexample", + "visibility": { + "partial": true, + "visibleNodeCount": 77, + "totalNodeCount": 77, + "reasons": [ + "scroll-hidden-below" + ] + }, + "warnings": [ + "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." + ], + "snapshotDiagnostics": { + "stats": { + "count": 1046, + "p50Ms": 97, + "p95Ms": 131, + "maxMs": 677, + "slowThresholdMs": 1500, + "platform": "ios", + "backends": { + "xctest": 1046 + } + } + }, + "refsGeneration": 835863 + } +} diff --git a/example/visual/evidence/runner/ios-04-press-close.json b/example/visual/evidence/runner/ios-04-press-close.json new file mode 100644 index 0000000000..a1a624a62c --- /dev/null +++ b/example/visual/evidence/runner/ios-04-press-close.json @@ -0,0 +1,23 @@ +{ + "success": true, + "data": { + "x": 361, + "y": 419, + "message": "Tapped label=\"Close\" (361, 419)", + "referenceWidth": 402, + "referenceHeight": 874, + "targetKind": "selector", + "selector": "label=\"Close\"", + "selectorChain": [ + "id=\"xmark\"", + "role=\"button\" label=\"Close\"", + "label=\"Close\"" + ], + "refLabel": "Close", + "resolution": { + "source": "runtime", + "phase": "pre-action", + "kind": "unique" + } + } +} diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log b/example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log new file mode 100644 index 0000000000..ddc742a6a5 --- /dev/null +++ b/example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log @@ -0,0 +1,10 @@ +# android — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off + relaunching the app (fresh bundle from Metro) + app ready (55 app nodes) + dev launcher: pressing "http://192.168.1.151:8081" (@e53) + app ready (50 app nodes) + restored onto the Surface screen +android surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +android surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json (exit 0) diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json b/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json new file mode 100644 index 0000000000..1b06d47c41 --- /dev/null +++ b/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json @@ -0,0 +1,76 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-11T10:17:24.799Z", + "wallClockMs": 16183, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png b/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png new file mode 100644 index 0000000000000000000000000000000000000000..c94e2bc1b130d2115e61ca8d2451db373b1ba6fc GIT binary patch literal 31693 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png b/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png new file mode 100644 index 0000000000000000000000000000000000000000..4f688b4e617c3a6ee0dd2fa84e42fc3384bb8bf4 GIT binary patch literal 23886 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 A0RR91 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated.png b/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated.png new file mode 100644 index 0000000000000000000000000000000000000000..c999384a506d87cae83972de356dfed69d7f447e GIT binary patch literal 37661 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 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-flat.png b/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-flat.png new file mode 100644 index 0000000000000000000000000000000000000000..4f688b4e617c3a6ee0dd2fa84e42fc3384bb8bf4 GIT binary patch literal 23886 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 A0RR91 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log b/example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log new file mode 100644 index 0000000000..c630b16939 --- /dev/null +++ b/example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log @@ -0,0 +1,16 @@ +# android — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable + relaunching the app (fresh bundle from Metro) + app ready (55 app nodes) + dev launcher: pressing "http://192.168.1.151:8081" (@e53) + app ready (52 app nodes) + app ready (45 app nodes) + dev menu: pressing "Tools button" + app ready (45 app nodes) + dev menu: pressing "Close" + app ready (50 app nodes) + dev-client floating Tools button was inside the capture area — disabled it via the dev menu + restored onto the Surface screen +android surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +android surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json (exit 0) diff --git a/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json b/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json new file mode 100644 index 0000000000..29854f1777 --- /dev/null +++ b/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json @@ -0,0 +1,76 @@ +{ + "platform": "android", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + }, + "observedEnv": { + "apiLevel": 37, + "androidRelease": "17", + "density": 480 + }, + "startedAt": "2026-09-11T10:22:04.180Z", + "wallClockMs": 20190, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-elevated-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-flat-diff.png", + "totalPixels": 821760, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log b/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log new file mode 100644 index 0000000000..22ad177fde --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log @@ -0,0 +1,6 @@ +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit2-device-mismatch +error: device does not match /Users/juliankobrynski/Projects/react-native-paper/example/visual/env.json: + - udid: expected 00000000-0000-4000-8000-000000000000, observed not present in xcrun simctl list (no such simulator) +refusing to run: baselines are only comparable on the device they were captured on. Boot/point at the right device, or pass --force to continue anyway. +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json (exit 2) diff --git a/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json b/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json new file mode 100644 index 0000000000..3e74b0bdb0 --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json @@ -0,0 +1,71 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit2-device-mismatch", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "00000000-0000-4000-8000-000000000000", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": {}, + "startedAt": "2026-09-11T10:13:44.919Z", + "wallClockMs": 234, + "results": [], + "status": "error", + "exitCode": 2, + "error": { + "message": "device does not match /Users/juliankobrynski/Projects/react-native-paper/example/visual/env.json:\n - udid: expected 00000000-0000-4000-8000-000000000000, observed not present in xcrun simctl list (no such simulator)\nrefusing to run: baselines are only comparable on the device they were captured on. Boot/point at the right device, or pass --force to continue anyway.", + "exitCode": 2 + }, + "pass": false +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log b/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log new file mode 100644 index 0000000000..fae897d740 --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log @@ -0,0 +1,12 @@ +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +error: surface-example-elevated: capture dimensions do not match the baseline __baselines__/ios/surface-example-elevated.png: + - width: expected 1206, actual 804 + - height: expected 642, actual 428 +a wrong-sized capture cannot be compared with the baseline. Check --crop-on/--pixel-density and the device; if the new size is the intended one, re-record the baselines with --update. (--force does not override this.) +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json (exit 3) diff --git a/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json b/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json new file mode 100644 index 0000000000..b00ce67055 --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json @@ -0,0 +1,76 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 2, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T10:13:45.217Z", + "wallClockMs": 11559, + "results": [], + "status": "error", + "exitCode": 3, + "error": { + "message": "surface-example-elevated: capture dimensions do not match the baseline __baselines__/ios/surface-example-elevated.png:\n - width: expected 1206, actual 804\n - height: expected 642, actual 428\na wrong-sized capture cannot be compared with the baseline. Check --crop-on/--pixel-density and the device; if the new size is the intended one, re-record the baselines with --update. (--force does not override this.)", + "exitCode": 3 + }, + "pass": false +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-pass-final/stdout.log b/example/visual/evidence/runs/ios/round3-pass-final/stdout.log new file mode 100644 index 0000000000..8b001ec3b0 --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-pass-final/stdout.log @@ -0,0 +1,10 @@ +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round3-pass-final/summary.json b/example/visual/evidence/runs/ios/round3-pass-final/summary.json new file mode 100644 index 0000000000..37e393162b --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-pass-final/summary.json @@ -0,0 +1,98 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T10:23:03.857Z", + "wallClockMs": 12804, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-pass/stdout.log b/example/visual/evidence/runs/ios/round3-pass/stdout.log new file mode 100644 index 0000000000..e607ebb7d7 --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-pass/stdout.log @@ -0,0 +1,10 @@ +# ios — threshold 0.02 +# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass + relaunching the app (fresh bundle from Metro) + app ready (77 app nodes) + dev menu: pressing "Close" (@e40) + app ready (37 app nodes) + restored onto the Surface screen +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS +# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round3-pass/summary.json b/example/visual/evidence/runs/ios/round3-pass/summary.json new file mode 100644 index 0000000000..5b2014f7d6 --- /dev/null +++ b/example/visual/evidence/runs/ios/round3-pass/summary.json @@ -0,0 +1,98 @@ +{ + "platform": "ios", + "threshold": 0.02, + "update": false, + "force": false, + "stories": [ + "surface-example-elevated", + "surface-example-flat" + ], + "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass", + "agentDeviceVersion": "agent-device@0.21.0", + "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", + "expectedEnv": { + "platform": "ios", + "device": "iPhone 17 Pro", + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "iosVersion": "26.5", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "scale": 3, + "pixelDensity": 3, + "agentDeviceVersion": "0.21.0", + "reactNativeVersion": "0.85.3", + "branch": "poc/agent-device-visual", + "date": "2026-09-10T09:30:58Z", + "baselines": { + "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", + "surface-example-flat": "__baselines__/ios/surface-example-flat.png" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + }, + "android": { + "avd": "Pixel_10_Pro", + "device": "Pixel 10 Pro", + "serial": "emulator-5554", + "apiLevel": 37, + "androidRelease": "17", + "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", + "density": 480, + "screenPx": "1280x2856", + "emulatorVersion": "36.6.11.0 (build_id 15507667)", + "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", + "agentDeviceVersion": "0.21.0", + "agentDeviceSession": "android", + "reactNativeVersion": "0.85.3", + "metroHost": "http://192.168.1.151:8081", + "date": "2026-09-10T09:45:00Z", + "baselines": { + "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", + "surface-example-flat": "__baselines__/android/surface-example-flat.png", + "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" + }, + "diffThresholds": { + "cliDefault": 0.1, + "usedForShadowRegressions": 0.02 + } + } + }, + "observedEnv": { + "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", + "name": "iPhone 17 Pro", + "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", + "state": "Booted" + }, + "startedAt": "2026-09-11T10:14:25.049Z", + "wallClockMs": 12803, + "results": [ + { + "story": "surface-example-elevated", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-elevated.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-elevated-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + }, + { + "story": "surface-example-flat", + "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", + "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-flat.png", + "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-flat-diff.png", + "totalPixels": 774252, + "changedPixels": 0, + "mismatchPercentage": 0, + "regions": [], + "threshold": 0.02, + "pass": true + } + ], + "status": "pass", + "exitCode": 0, + "error": null, + "pass": true +} \ No newline at end of file diff --git a/example/visual/evidence/summary.md b/example/visual/evidence/summary.md index 2efd67d31d..ef609764d1 100644 --- a/example/visual/evidence/summary.md +++ b/example/visual/evidence/summary.md @@ -95,6 +95,41 @@ generated by evidence/summarize.mjs — do not edit by hand | summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | | summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | +## runs/android/round3-pass/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 2822 | 0.34 | 1 | no | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/round3-pass-after-tools-off/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/round3-pass-final/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/round3-pass-rerun/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 2822 | 0.34 | 1 | no | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + +## runs/android/round3-tools-autodisable/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | + ## runs/ios/fix-fail/ | file | total px | changed px | mismatch % | regions | match | @@ -158,6 +193,20 @@ generated by evidence/summarize.mjs — do not edit by hand | summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | | summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | +## runs/ios/round3-pass/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + +## runs/ios/round3-pass-final/ + +| file | total px | changed px | mismatch % | regions | match | +| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | +| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | +| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | + ## sensitivity/android/ | file | total px | changed px | mismatch % | regions | match | diff --git a/example/visual/run.mjs b/example/visual/run.mjs index 80dd5a505f..1f082e28e2 100644 --- a/example/visual/run.mjs +++ b/example/visual/run.mjs @@ -23,8 +23,8 @@ * * Exit codes: 0 pass, 1 a story FAILed the diff, 2 setup/environment error, * 3 a capture came back with the wrong dimensions. `summary.json` is written in - * the output directory in every one of those cases, including argument errors - * (those land in artifacts/run/unknown/ when the platform is missing/invalid). + * the output directory in every one of those cases, except an argument error, + * which prints the problem and exits 2 before there are any options to summarise. * * Unit tests: node --test example/visual/run.test.mjs */ @@ -75,6 +75,18 @@ const DEV_MENU_MARKERS = [ const DEV_LAUNCHER_MARKERS = ['DEVELOPMENT SERVERS', 'RECENTLY OPENED']; const METRO_PORT = '8081'; +// The Expo dev client's floating "Tools" button: a small image control labelled +// exactly "Tools", drawn on top of the app. On Android at 480 dpi it sits in the +// top-right corner of the surface-example-elevated crop, where it diffs as a +// deterministic ~2,800-pixel "regression" with the library untouched. The dev +// menu has a "TOOLS" section of its own, so a tree showing the dev menu is +// excluded outright; its rows are text nodes, which is what the type check +// rules out (android.widget.TextView on Android, StaticText on iOS). +const FLOATING_TOOLS_LABEL = 'Tools'; +const TOOLS_TOGGLE_LABEL = 'Tools button'; // the dev menu row that toggles it +const DEV_MENU_CLOSE_LABEL = 'Close'; +const ANDROID_KEYCODE_MENU = '82'; // opens the RN dev menu via adb + const LIST_ROOT_TITLE = 'Examples'; // Appbar title of the example-list root const SURFACE_ROW_LABEL = 'Surface'; const BACK_LABEL = 'Back'; @@ -187,26 +199,6 @@ function parseArgs(argv) { return out; } -/** - * Where to write summary.json when parseArgs itself failed. Takes `--out` if it - * was given, else the platform directory if `--platform` was given and valid, - * else an `unknown` directory — so an argument error is still summarised. - */ -function fallbackOutDir(argv) { - const valueOf = (flag) => { - const i = argv.lastIndexOf(flag); - return i === -1 ? null : (argv[i + 1] ?? null); - }; - - const out = valueOf('--out'); - if (out) return path.resolve(out); - - const platform = valueOf('--platform'); - const dir = - platform === 'ios' || platform === 'android' ? platform : 'unknown'; - return path.join(VISUAL_DIR, 'artifacts', 'run', dir); -} - /** * Environment for the nested `npx agent-device` call. When this script itself * runs under `npx -p node@20 node run.mjs`, npx exports `npm_config_package` @@ -317,95 +309,129 @@ function adbPath() { return fs.existsSync(candidate) ? candidate : 'adb'; } +/** + * Reads the simulator matching `expectedUdid` out of `xcrun simctl list`. + * Returns `{ observed }` on success, or `{ error }` describing why the device + * could not be inspected. + */ +function observeIos(expectedUdid) { + const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); + if (res.status !== 0) { + return { + error: { + what: 'device inspection', + expected: `xcrun simctl list to succeed for udid ${expectedUdid}`, + actual: `exit ${res.status} ${res.stderr.trim()}`, + }, + }; + } + + let devices; + try { + devices = JSON.parse(res.stdout).devices || {}; + } catch { + return { + error: { + what: 'device inspection', + expected: 'parseable xcrun simctl list output', + actual: 'unparseable JSON', + }, + }; + } + + let match = null; + for (const [runtime, list] of Object.entries(devices)) { + for (const device of list) { + if (device.udid === expectedUdid) match = { runtime, device }; + } + } + + if (!match) { + return { + error: { + what: 'udid', + expected: expectedUdid, + actual: 'not present in xcrun simctl list (no such simulator)', + }, + }; + } + + return { + observed: { + udid: match.device.udid, + name: match.device.name, + runtime: match.runtime, + state: match.device.state, + }, + }; +} + +/** Reads API level, release and density off the connected device via adb. */ +function observeAndroid() { + const adb = adbPath(); + const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); + const sdkLevel = prop('ro.build.version.sdk'); + if (!sdkLevel) { + return { + error: { + what: 'device inspection', + expected: `Android properties readable via ${adb}`, + actual: 'no response (is an emulator connected?)', + }, + }; + } + + const densityOut = sh(adb, ['shell', 'wm', 'density']).stdout; + const densityMatch = densityOut.match(/(\d+)\s*$/m); + + return { + observed: { + apiLevel: Number(sdkLevel), + androidRelease: prop('ro.build.version.release'), + density: densityMatch ? Number(densityMatch[1]) : null, + }, + }; +} + +const DEFAULT_OBSERVERS = { observeIos, observeAndroid }; + /** * Compares the connected device with env.json. Returns the observed values and * the list of mismatches; the caller decides what to do with them. A device * that cannot be inspected counts as a mismatch: baselines are only meaningful - * on a device we could actually identify. + * on a device we could actually identify. The observers are injected so the + * comparison can be tested without xcrun/adb. */ -function checkEnvironment(platform, env) { - const observed = {}; +function checkEnvironment(platform, env, observers = DEFAULT_OBSERVERS) { const mismatches = []; const mismatch = (what, expected, actual) => mismatches.push(`${what}: expected ${expected}, observed ${actual}`); - if (platform === 'ios') { - const expectedUdid = env.udid; - const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); - if (res.status !== 0) { - mismatch( - 'device inspection', - `xcrun simctl list to succeed for udid ${expectedUdid}`, - `exit ${res.status} ${res.stderr.trim()}` - ); - return { observed, mismatches }; - } - - let devices; - try { - devices = JSON.parse(res.stdout).devices || {}; - } catch { - mismatch( - 'device inspection', - 'parseable xcrun simctl list output', - 'unparseable JSON' - ); - return { observed, mismatches }; - } - - let match = null; - for (const [runtime, list] of Object.entries(devices)) { - for (const device of list) { - if (device.udid === expectedUdid) match = { runtime, device }; - } - } - - if (!match) { - mismatch( - 'udid', - expectedUdid, - 'not present in xcrun simctl list (no such simulator)' - ); - return { observed, mismatches }; - } - - observed.udid = match.device.udid; - observed.name = match.device.name; - observed.runtime = match.runtime; - observed.state = match.device.state; + const read = + platform === 'ios' + ? observers.observeIos(env.udid) + : observers.observeAndroid(); + if (read.error) { + mismatch(read.error.what, read.error.expected, read.error.actual); + return { observed: {}, mismatches }; + } + const observed = read.observed; + if (platform === 'ios') { // The runtime identifier carries the iOS version (…SimRuntime.iOS-26-5), so // comparing it also covers env.iosVersion. - if (env.runtime && match.runtime !== env.runtime) { - mismatch('runtime', env.runtime, match.runtime); + if (env.runtime && observed.runtime !== env.runtime) { + mismatch('runtime', env.runtime, observed.runtime); } - if (env.device && match.device.name !== env.device) { - mismatch('device name', env.device, match.device.name); + if (env.device && observed.name !== env.device) { + mismatch('device name', env.device, observed.name); } - if (match.device.state !== 'Booted') { - mismatch('device state', 'Booted', match.device.state); + if (observed.state !== 'Booted') { + mismatch('device state', 'Booted', observed.state); } return { observed, mismatches }; } - const adb = adbPath(); - const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); - const sdkLevel = prop('ro.build.version.sdk'); - if (!sdkLevel) { - mismatch( - 'device inspection', - `Android properties readable via ${adb}`, - 'no response (is an emulator connected?)' - ); - return { observed, mismatches }; - } - - observed.apiLevel = Number(sdkLevel); - observed.androidRelease = prop('ro.build.version.release'); - const densityOut = sh(adb, ['shell', 'wm', 'density']).stdout; - const densityMatch = densityOut.match(/(\d+)\s*$/m); - observed.density = densityMatch ? Number(densityMatch[1]) : null; - if (env.apiLevel != null && observed.apiLevel !== env.apiLevel) { mismatch('Android API level', env.apiLevel, observed.apiLevel); } @@ -421,8 +447,13 @@ function checkEnvironment(platform, env) { * still possible, but never by accident. This is the only check `--force` * covers. */ -function enforceEnvironment(platform, env, force) { - const { observed, mismatches } = checkEnvironment(platform, env); +function enforceEnvironment( + platform, + env, + force, + observers = DEFAULT_OBSERVERS +) { + const { observed, mismatches } = checkEnvironment(platform, env, observers); if (mismatches.length === 0) return observed; const detail = mismatches.map((m) => ` - ${m}`).join('\n'); @@ -474,27 +505,60 @@ function writeBaseline(platform, story, current, shotData) { } /** - * Fails unless the capture has the dimensions env.json pins for this platform. - * A wrong-sized capture would otherwise diff clean and read as PASS — and so - * would a capture whose size agent-device did not report at all, which is why a - * missing value is a failure rather than a warning. + * Width and height out of a PNG's IHDR: the signature is 8 bytes, the IHDR + * length+type another 8, so the two big-endian uint32s live at bytes 16–24. No + * decoding and no dependency — the header is all this needs. + */ +function readPngSize(file) { + const header = Buffer.alloc(24); + let read = 0; + let fd; + try { + fd = fs.openSync(file, 'r'); + read = fs.readSync(fd, header, 0, 24, 0); + } catch { + return null; + } finally { + if (fd != null) fs.closeSync(fd); + } + if (read < 24 || header.toString('ascii', 12, 16) !== 'IHDR') return null; + return { width: header.readUInt32BE(16), height: header.readUInt32BE(20) }; +} + +/** + * Fails unless the capture has the same dimensions as the committed baseline it + * is about to be compared with. A wrong-sized capture would otherwise diff + * clean and read as PASS — and so would a capture whose size agent-device did + * not report at all, which is why a missing value is a failure rather than a + * warning. + * + * The expected size comes from the baseline PNG itself rather than from + * env.json: that makes it per story by construction, so a story that was just + * added and `--update`d passes, and it cannot drift from the file the diff + * actually uses. * * Skipped entirely in `--update` mode: the whole point of that mode is to - * record what the device produces now, and a new story has no pinned size to - * check against. In diff mode there is no override — a size mismatch on a - * device that matches env.json means something is wrong that no flag should - * paper over, so `--force` does not reach this check. + * record what the device produces now, and a new story has no baseline to check + * against. In diff mode there is no override — a size mismatch on a device that + * matches env.json means something is wrong that no flag should paper over, so + * `--force` does not reach this check. */ -function checkCaptureSize(env, story, shotData, { update = false } = {}) { +function checkCaptureSize( + env, + story, + shotData, + { update = false, baselineFile = null } = {} +) { if (update) return; - const expected = env.baselines || {}; + const expected = baselineFile ? readPngSize(baselineFile) : null; const problems = []; - if (expected.cropWidth == null || expected.cropHeight == null) { + if (!expected) { fail( - `${story}: ${ENV_FILE} pins no crop dimensions, so the capture cannot be ` + - 'size-checked — pin baselines.cropWidth/cropHeight, or re-record with --update', + `${story}: could not read the dimensions of the baseline PNG ` + + `(${baselineFile ?? 'none given'}), so the capture cannot be ` + + 'size-checked — re-record the baseline with --update', 3 ); } @@ -511,8 +575,8 @@ function checkCaptureSize(env, story, shotData, { update = false } = {}) { } }; - compare('width', expected.cropWidth, shotData?.width); - compare('height', expected.cropHeight, shotData?.height); + compare('width', expected.width, shotData?.width); + compare('height', expected.height, shotData?.height); // pixelDensity is reported (and pinnable) on iOS only. Android screenshots // are native device pixels and env.json pins no density there, so the check // is skipped rather than warned about. @@ -524,7 +588,8 @@ function checkCaptureSize(env, story, shotData, { update = false } = {}) { const detail = problems.map((p) => ` - ${p}`).join('\n'); fail( - `${story}: capture dimensions do not match ${ENV_FILE}:\n${detail}\n` + + `${story}: capture dimensions do not match the baseline ` + + `${path.relative(VISUAL_DIR, baselineFile)}:\n${detail}\n` + 'a wrong-sized capture cannot be compared with the baseline. Check ' + '--crop-on/--pixel-density and the device; if the new size is the intended ' + 'one, re-record the baselines with --update. (--force does not override this.)', @@ -587,6 +652,91 @@ function findDevMenuNode(nodes) { return nodes.find((n) => DEV_MENU_LABELS.includes(labelOf(n))) || null; } +/** The floating dev-client "Tools" button, or null when it is not on screen. */ +function findFloatingToolsNode(nodes) { + if (nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n)))) return null; + return ( + nodes.find( + (n) => labelOf(n) === FLOATING_TOOLS_LABEL && !/text/i.test(n.type || '') + ) || null + ); +} + +function describeNode(node) { + const rect = node.rect || {}; + const round = (value) => Math.round(value ?? -1); + return ( + `${node.type || 'node'} label="${labelOf(node)}" at ` + + `{x:${round(rect.x)}, y:${round(rect.y)}, ` + + `w:${round(rect.width)}, h:${round(rect.height)}}` + ); +} + +/** + * Turns the floating dev-client "Tools" button off through the dev menu, once, + * and returns the settled tree. A dev overlay inside the crop must never be + * reported as a visual regression, so anything that leaves it on screen — a + * platform with no way to open the dev menu, or a toggle that did not take — + * is a setup error naming the node and the manual fix. + * + * Android opens the dev menu with KEYCODE_MENU. agent-device 0.21.0 has no + * dev-menu/shake command (checked in `help commands`), so on iOS there is + * nothing to drive and the run stops instead. + */ +function disableFloatingTools(platform, globals, nodes) { + const tools = findFloatingToolsNode(nodes); + if (!tools) return nodes; + + const giveUp = (why) => + fail( + `the dev-client floating Tools button is inside the capture area ` + + `(${describeNode(tools)}) and ${why}. Turn it off on the device: ` + + 'dev menu → Tools button.' + ); + + if (platform !== 'android') giveUp('cannot be toggled automatically on iOS'); + + const menu = sh(adbPath(), [ + 'shell', + 'input', + 'keyevent', + ANDROID_KEYCODE_MENU, + ]); + if (menu.status !== 0) { + fail( + `adb input keyevent ${ANDROID_KEYCODE_MENU} failed: ${menu.stderr.trim()}` + ); + } + + let current = waitForAppReady(globals); + for (const label of [TOOLS_TOGGLE_LABEL, DEV_MENU_CLOSE_LABEL]) { + if (!current.some((n) => labelOf(n) === label)) { + giveUp(`the dev menu has no "${label}" entry`); + } + console.log(` dev menu: pressing "${label}"`); + // By selector, not by ref: the dev menu's "Close" is a container whose + // tappable area belongs entirely to an unlabelled child, so pressing its + // own ref is rejected (covered_by_interactive_descendants). The selector + // lets agent-device resolve down to that child. + ad(`press-${label.replace(/\s+/g, '-').toLowerCase()}`, [ + 'press', + `label="${label}"`, + '--settle', + ...globals, + ]); + current = waitForAppReady(globals); + } + + if (findFloatingToolsNode(current)) + giveUp('is still on screen after one toggle'); + + console.log( + ' dev-client floating Tools button was inside the capture area — ' + + 'disabled it via the dev menu' + ); + return current; +} + /** * The Expo dev launcher ("DEVELOPMENT SERVERS" / "RECENTLY OPENED"). It is left * behind by an Android relaunch and none of the dev-menu labels match it. The @@ -814,7 +964,11 @@ function openOnSurfaceScreen(platform, globals, stories) { ad('open-after-force-stop', ['open', BUNDLE_ID, ...globals]); } - const nodes = dismissOverlays(globals); + const nodes = disableFloatingTools( + platform, + globals, + dismissOverlays(globals) + ); if (onSurfaceScreen(globals, stories)) { console.log(' restored onto the Surface screen'); @@ -871,9 +1025,9 @@ function runPass(state) { if (platform === 'ios') shotArgs.push('--pixel-density', String(env.pixelDensity || 3)); const shot = ad(`screenshot-${story}`, shotArgs); - checkCaptureSize(env, story, shot.data, { update: opts.update }); if (opts.update) { + checkCaptureSize(env, story, shot.data, { update: true }); const { baseline, created } = writeBaseline( platform, story, @@ -893,6 +1047,7 @@ function runPass(state) { } const baseline = requireBaseline(platform, story); + checkCaptureSize(env, story, shot.data, { baselineFile: baseline }); const diffOut = path.join(opts.outDir, `${story}-diff.png`); const diff = ad(`diff-${story}`, [ @@ -962,40 +1117,18 @@ function writeSummary(state, exitCode, error) { return file; } -/** Summarises an argument error, which happens before there are real options. */ -function writeArgErrorSummary(argv, failure) { - const platform = argv[argv.lastIndexOf('--platform') + 1]; - const state = { - opts: { - platform: platform === 'ios' || platform === 'android' ? platform : null, - threshold: null, - update: argv.includes('--update'), - force: argv.includes('--force'), - stories: null, - outDir: fallbackOutDir(argv), - }, - env: null, - observedEnv: {}, - results: [], - startedAt: Date.now(), - }; - return writeSummary(state, failure.exitCode, { - message: failure.message, - exitCode: failure.exitCode, - }); -} - function main() { const argv = process.argv.slice(2); + // An argument error happens before there are options to summarise (not even + // an output directory), so it just prints and exits; every later failure + // goes through writeSummary below. let opts; try { opts = parseArgs(argv); } catch (thrown) { if (!(thrown instanceof RunFailure)) throw thrown; console.error(`error: ${thrown.message}`); - const summaryFile = writeArgErrorSummary(argv, thrown); - console.log(`# summary: ${summaryFile} (exit ${thrown.exitCode})`); process.exit(thrown.exitCode); } @@ -1069,5 +1202,6 @@ export { checkCaptureSize, enforceEnvironment, atListRoot, + findFloatingToolsNode, findSurfaceRow, }; diff --git a/example/visual/run.test.mjs b/example/visual/run.test.mjs index 94649f85ba..5d3f570f30 100644 --- a/example/visual/run.test.mjs +++ b/example/visual/run.test.mjs @@ -1,11 +1,14 @@ /** - * Unit tests for example/visual/run.mjs. No device, no agent-device, no new - * dependencies — only the pure decision helpers are exercised. + * Unit tests for example/visual/run.mjs. No device, no adb/xcrun, no + * agent-device, no new dependencies — only the pure decision helpers are + * exercised, with the device observers faked. * * node --test example/visual/run.test.mjs */ import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import os from 'node:os'; import path from 'node:path'; import test from 'node:test'; import { fileURLToPath } from 'node:url'; @@ -15,6 +18,7 @@ import { atListRoot, checkCaptureSize, enforceEnvironment, + findFloatingToolsNode, findSurfaceRow, isMainModule, } from './run.mjs'; @@ -23,9 +27,28 @@ const HERE = path.dirname(fileURLToPath(import.meta.url)); const RUN_URL = new URL('./run.mjs', import.meta.url); const RUN_PATH = fileURLToPath(RUN_URL); -const env = { baselines: { cropWidth: 1206, cropHeight: 642 } }; +const env = {}; const wrongSize = { width: 1280, height: 700 }; +/** + * Writes a file carrying a PNG signature and an IHDR of the given size. Only + * those first 24 bytes are what run.mjs reads, so no encoder is needed. + */ +function writePngHeader(dir, name, width, height) { + const header = Buffer.alloc(24); + Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]).copy(header, 0); + header.writeUInt32BE(13, 8); + header.write('IHDR', 12, 'ascii'); + header.writeUInt32BE(width, 16); + header.writeUInt32BE(height, 20); + const file = path.join(dir, name); + fs.writeFileSync(file, header); + return file; +} + +const TMP_DIR = fs.mkdtempSync(path.join(os.tmpdir(), 'paper-visual-')); +process.on('exit', () => fs.rmSync(TMP_DIR, { recursive: true, force: true })); + test('isMainModule is false for another argv[1] and true for the script itself', () => { assert.equal(isMainModule(path.join(HERE, 'other.mjs'), RUN_URL), false); assert.equal(isMainModule(undefined, RUN_URL), false); @@ -38,17 +61,20 @@ test('checkCaptureSize skips the check in update mode', () => { assert.doesNotThrow(() => checkCaptureSize(env, 'new-story', wrongSize, { update: true }) ); - // A brand-new story has no pinned size at all; --update must still get through. + // A brand-new story has no baseline at all; --update must still get through. assert.doesNotThrow(() => - checkCaptureSize({ baselines: {} }, 'new-story', wrongSize, { + checkCaptureSize(env, 'new-story', wrongSize, { update: true, + baselineFile: path.join(TMP_DIR, 'missing.png'), }) ); }); test('checkCaptureSize fails with exit code 3 in diff mode', () => { + const baselineFile = writePngHeader(TMP_DIR, 'story.png', 1206, 642); + assert.throws( - () => checkCaptureSize(env, 'story', wrongSize, { update: false }), + () => checkCaptureSize(env, 'story', wrongSize, { baselineFile }), (thrown) => { assert.ok(thrown instanceof RunFailure); assert.equal(thrown.exitCode, 3); @@ -58,28 +84,72 @@ test('checkCaptureSize fails with exit code 3 in diff mode', () => { ); assert.doesNotThrow(() => - checkCaptureSize(env, 'story', { width: 1206, height: 642 }, {}) + checkCaptureSize( + env, + 'story', + { width: 1206, height: 642 }, + { + baselineFile, + } + ) + ); + + // A story added today: whatever size its freshly written baseline has is the + // size the check expects, so no env.json edit is needed to make it pass. + const fresh = writePngHeader(TMP_DIR, 'new-story.png', 837, 219); + assert.doesNotThrow(() => + checkCaptureSize( + env, + 'new-story', + { width: 837, height: 219 }, + { + baselineFile: fresh, + } + ) ); }); test('--force covers the device check but not the size check', () => { - // An impossible API level mismatches whether or not an emulator is attached. + // Fake observers: the check compares env.json with these, so the test needs + // neither adb nor xcrun on PATH. + const observers = { + observeIos: () => ({ + observed: { udid: 'fake', name: 'iPhone', runtime: 'r', state: 'Booted' }, + }), + observeAndroid: () => ({ + observed: { apiLevel: 37, androidRelease: '17', density: 480 }, + }), + }; const mismatched = { apiLevel: -1, density: -1 }; assert.throws( - () => enforceEnvironment('android', mismatched, false), + () => enforceEnvironment('android', mismatched, false, observers), (thrown) => { assert.ok(thrown instanceof RunFailure); assert.equal(thrown.exitCode, 2); return true; } ); - assert.doesNotThrow(() => enforceEnvironment('android', mismatched, true)); + assert.doesNotThrow(() => + enforceEnvironment('android', mismatched, true, observers) + ); + // A matching device needs no force at all. + assert.doesNotThrow(() => + enforceEnvironment( + 'android', + { apiLevel: 37, density: 480 }, + false, + observers + ) + ); // The size check takes no force: a stray `force` in the options changes nothing. assert.throws( () => - checkCaptureSize(env, 'story', wrongSize, { update: false, force: true }), + checkCaptureSize(env, 'story', wrongSize, { + force: true, + baselineFile: writePngHeader(TMP_DIR, 'force.png', 1206, 642), + }), RunFailure ); }); @@ -95,6 +165,31 @@ test('atListRoot needs the "Examples" title and no Back element', () => { assert.equal(atListRoot([]), false); }); +test('findFloatingToolsNode finds the dev-client button, not the dev menu', () => { + // Shape taken from a real Android snapshot (480 dpi, top-right of the crop). + const floating = { + ref: 'e18', + type: 'android.widget.ImageView', + label: 'Tools', + rect: { x: 1115, y: 243, width: 78, height: 78 }, + }; + + assert.equal( + findFloatingToolsNode([{ label: 'Elevated surface' }, floating])?.ref, + 'e18' + ); + // The dev menu has a "TOOLS" section of its own: not the floating button. + assert.equal( + findFloatingToolsNode([ + { type: 'android.widget.TextView', label: 'TOOLS' }, + { type: 'android.widget.TextView', label: 'Reload' }, + { type: 'android.widget.TextView', label: 'Tools' }, + ]), + null + ); + assert.equal(findFloatingToolsNode([]), null); +}); + test('findSurfaceRow picks the list row, not the Appbar title', () => { const nodes = [ { From e59fd2eb1c77fbc8341d6515936eb73d552c4eef Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Fri, 11 Sep 2026 13:14:09 +0200 Subject: [PATCH 05/18] test(example): cut the visual regression PoC back to PoC scope Three review rounds turned the reproduction script into a 1,200-line runner and the evidence folder into 29,000 lines of accessibility-tree dumps. Neither is what a proof of concept needs. This commit keeps: - the results (README), the pinned environment, the four baselines and the two test ids; - the diff JSON every table is computed from, the diff images, and the 19 agent-device issues with their evidence; - two small excerpts replacing the full accessibility-tree snapshots, each saying how to regenerate the full tree; - hand-run CLI commands to reproduce, instead of a script. Removed from this PR: run.mjs, run.test.mjs, evidence/summarize.mjs and summary.md, evidence/runs, evidence/runner, the full evidence/a11y trees, and the example/package.json test script. All of it is preserved unchanged on branch poc/agent-device-visual-runner, and the README lists what a real runner would have to handle, learned from it. --- example/package.json | 3 +- example/visual/README.md | 302 +- example/visual/evidence/a11y-excerpt.json | 74 + .../a11y/01-ios-snapshot-with-accessible.json | 1896 ------- .../02-android-snapshot-with-accessible.json | 4343 ---------------- .../a11y/03-testid-only-and-crop.json | 8 - .../a11y/03-testid-only-and-snapshot.json | 4341 ---------------- .../a11y/03-testid-only-ios-crop.json | 11 - .../a11y/03-testid-only-ios-snapshot.json | 2912 ----------- .../visual/evidence/devclient-excerpt.json | 42 + .../android-devclient-tools-button.png} | Bin example/visual/evidence/issues.md | 94 +- .../android-01-snapshot-tools-overlay.json | 1267 ----- .../runner/android-02-snapshot-devmenu.json | 1149 ----- .../android-03-press-tools-button-toggle.json | 21 - .../runner/android-04-press-close.json | 22 - .../android-05-snapshot-after-toggle.json | 1247 ----- .../evidence/runner/ios-01-open-relaunch.json | 32 - ...2-snapshot-immediately-after-relaunch.json | 80 - .../runner/ios-03-snapshot-6s-later.json | 1344 ----- .../evidence/runner/ios-04-press-close.json | 23 - .../runs/android/fix-fail/summary.json | 106 - .../surface-example-elevated-diff.png | Bin 25122 -> 0 bytes .../fix-pass-after-revert/summary.json | 79 - .../fix-pass-from-other-screen/summary.json | 79 - .../fix-pass-from-surface/summary.json | 79 - .../runs/android/round2-pass/stdout.log | 10 - .../runs/android/round2-pass/summary.json | 79 - .../round3-pass-after-tools-off/stdout.log | 10 - .../round3-pass-after-tools-off/summary.json | 76 - .../surface-example-elevated.png | Bin 31693 -> 0 bytes .../surface-example-flat.png | Bin 23886 -> 0 bytes .../runs/android/round3-pass-final/stdout.log | 10 - .../android/round3-pass-final/summary.json | 76 - .../cmds/001-open-after-force-stop.json | 47 - .../cmds/002-snapshot-ready.json | 1369 ----- .../cmds/003-press-launcher.json | 277 - .../cmds/004-snapshot-ready.json | 348 -- .../cmds/005-snapshot-ready.json | 328 -- .../cmds/006-snapshot-ready.json | 1304 ----- .../cmds/007-snapshot-raw.json | 4437 ----------------- .../cmds/008-wait-stable.json | 26 - ...9-screenshot-surface-example-elevated.json | 26 - .../010-diff-surface-example-elevated.json | 61 - .../011-screenshot-surface-example-flat.json | 26 - .../cmds/012-diff-surface-example-flat.json | 32 - .../runs/android/round3-pass-rerun/stdout.log | 10 - .../android/round3-pass-rerun/summary.json | 103 - .../surface-example-elevated.png | Bin 37661 -> 0 bytes .../surface-example-flat.png | Bin 23886 -> 0 bytes .../runs/android/round3-pass/stdout.log | 10 - .../runs/android/round3-pass/summary.json | 103 - .../surface-example-elevated-diff.png | Bin 27633 -> 0 bytes .../round3-tools-autodisable/stdout.log | 16 - .../round3-tools-autodisable/summary.json | 76 - .../evidence/runs/ios/fix-fail/summary.json | 185 - .../surface-example-elevated-diff.png | Bin 52140 -> 0 bytes .../ios/fix-pass-after-revert/summary.json | 106 - .../fix-pass-from-other-screen/summary.json | 106 - .../ios/fix-pass-from-surface/summary.json | 106 - .../runs/ios/round2-fail-node20/stdout.log | 11 - .../runs/ios/round2-fail-node20/summary.json | 184 - .../surface-example-elevated-diff.png | Bin 52140 -> 0 bytes .../ios/round2-pass-after-revert/stdout.log | 11 - .../ios/round2-pass-after-revert/summary.json | 105 - .../ios/round2-pass-node20-literal/stdout.log | 10 - .../round2-pass-node20-literal/summary.json | 105 - .../runs/ios/round2-pass-node20/stdout.log | 11 - .../runs/ios/round2-pass-node20/summary.json | 105 - .../evidence/runs/ios/round2-pass/stdout.log | 10 - .../runs/ios/round2-pass/summary.json | 105 - .../round3-exit2-device-mismatch/stdout.log | 6 - .../round3-exit2-device-mismatch/summary.json | 71 - .../ios/round3-exit3-crop-mismatch/stdout.log | 12 - .../round3-exit3-crop-mismatch/summary.json | 76 - .../runs/ios/round3-pass-final/stdout.log | 10 - .../runs/ios/round3-pass-final/summary.json | 98 - .../evidence/runs/ios/round3-pass/stdout.log | 10 - .../runs/ios/round3-pass/summary.json | 98 - example/visual/evidence/summarize.mjs | 135 - example/visual/evidence/summary.md | 242 - example/visual/run.mjs | 1207 ----- example/visual/run.test.mjs | 218 - 83 files changed, 242 insertions(+), 31515 deletions(-) create mode 100644 example/visual/evidence/a11y-excerpt.json delete mode 100644 example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json delete mode 100644 example/visual/evidence/a11y/02-android-snapshot-with-accessible.json delete mode 100644 example/visual/evidence/a11y/03-testid-only-and-crop.json delete mode 100644 example/visual/evidence/a11y/03-testid-only-and-snapshot.json delete mode 100644 example/visual/evidence/a11y/03-testid-only-ios-crop.json delete mode 100644 example/visual/evidence/a11y/03-testid-only-ios-snapshot.json create mode 100644 example/visual/evidence/devclient-excerpt.json rename example/visual/evidence/{runs/android/round3-pass-rerun/surface-example-elevated-diff.png => diff-images/android-devclient-tools-button.png} (100%) delete mode 100644 example/visual/evidence/runner/android-01-snapshot-tools-overlay.json delete mode 100644 example/visual/evidence/runner/android-02-snapshot-devmenu.json delete mode 100644 example/visual/evidence/runner/android-03-press-tools-button-toggle.json delete mode 100644 example/visual/evidence/runner/android-04-press-close.json delete mode 100644 example/visual/evidence/runner/android-05-snapshot-after-toggle.json delete mode 100644 example/visual/evidence/runner/ios-01-open-relaunch.json delete mode 100644 example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json delete mode 100644 example/visual/evidence/runner/ios-03-snapshot-6s-later.json delete mode 100644 example/visual/evidence/runner/ios-04-press-close.json delete mode 100644 example/visual/evidence/runs/android/fix-fail/summary.json delete mode 100644 example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png delete mode 100644 example/visual/evidence/runs/android/fix-pass-after-revert/summary.json delete mode 100644 example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json delete mode 100644 example/visual/evidence/runs/android/fix-pass-from-surface/summary.json delete mode 100644 example/visual/evidence/runs/android/round2-pass/stdout.log delete mode 100644 example/visual/evidence/runs/android/round2-pass/summary.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log delete mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png delete mode 100644 example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png delete mode 100644 example/visual/evidence/runs/android/round3-pass-final/stdout.log delete mode 100644 example/visual/evidence/runs/android/round3-pass-final/summary.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/001-open-after-force-stop.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/002-snapshot-ready.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/003-press-launcher.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/004-snapshot-ready.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/005-snapshot-ready.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/006-snapshot-ready.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/007-snapshot-raw.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/008-wait-stable.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/009-screenshot-surface-example-elevated.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/010-diff-surface-example-elevated.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/011-screenshot-surface-example-flat.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/cmds/012-diff-surface-example-flat.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/stdout.log delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/summary.json delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated.png delete mode 100644 example/visual/evidence/runs/android/round3-pass-rerun/surface-example-flat.png delete mode 100644 example/visual/evidence/runs/android/round3-pass/stdout.log delete mode 100644 example/visual/evidence/runs/android/round3-pass/summary.json delete mode 100644 example/visual/evidence/runs/android/round3-pass/surface-example-elevated-diff.png delete mode 100644 example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log delete mode 100644 example/visual/evidence/runs/android/round3-tools-autodisable/summary.json delete mode 100644 example/visual/evidence/runs/ios/fix-fail/summary.json delete mode 100644 example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png delete mode 100644 example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json delete mode 100644 example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json delete mode 100644 example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json delete mode 100644 example/visual/evidence/runs/ios/round2-fail-node20/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round2-fail-node20/summary.json delete mode 100644 example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png delete mode 100644 example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json delete mode 100644 example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json delete mode 100644 example/visual/evidence/runs/ios/round2-pass-node20/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round2-pass-node20/summary.json delete mode 100644 example/visual/evidence/runs/ios/round2-pass/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round2-pass/summary.json delete mode 100644 example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json delete mode 100644 example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json delete mode 100644 example/visual/evidence/runs/ios/round3-pass-final/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round3-pass-final/summary.json delete mode 100644 example/visual/evidence/runs/ios/round3-pass/stdout.log delete mode 100644 example/visual/evidence/runs/ios/round3-pass/summary.json delete mode 100644 example/visual/evidence/summarize.mjs delete mode 100644 example/visual/evidence/summary.md delete mode 100644 example/visual/run.mjs delete mode 100644 example/visual/run.test.mjs diff --git a/example/package.json b/example/package.json index 4ca0d985b4..8d32e2a364 100644 --- a/example/package.json +++ b/example/package.json @@ -8,8 +8,7 @@ "eas-build-pre-install": "cd .. && yarn", "start": "EXPO_NO_TYPESCRIPT_SETUP=1 expo start --dev-client", "android": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:android", - "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios", - "test:visual": "node --test visual/run.test.mjs" + "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios" }, "dependencies": { "@expo/metro-config": "~56.0.0", diff --git a/example/visual/README.md b/example/visual/README.md index d5426f2451..1e1115aa4d 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -1,261 +1,123 @@ # Visual regression PoC — agent-device on the example app -**Status: PoC complete (Thu 2026-09-10) — iOS, Android, and a reproducible script. Under review in #5115.** +**Status: proof of concept, complete. Under review in #5115.** iOS and Android, one component, hand-run CLI. A hardened runner script and the full raw evidence that grew out of review live on branch `poc/agent-device-visual-runner`; they are deliberately not in this PR. -Question this PoC answers: does [agent-device](https://github.com/callstack/agent-device) capture the existing example screens deterministically enough to diff `Surface` against a baseline, and does that diff catch a realistic regression rather than only a gross one? +## The question, and the answer -Every number below is backed by committed evidence in `evidence/`. The original measurements were taken before the test ids were renamed, so JSON under `evidence/ios/`, `evidence/android/` and `evidence/a11y/` refers to `surface-elevated` / `surface-flat`; the current ids are `surface-example-*`, and renaming an id does not change a pixel. Committed evidence covers the raw `diff screenshot` JSON each table is computed from, the diff images from the deliberate breaks, and `evidence/issues.md` — plus the pinned environment in `env.json`. Local run output goes to `artifacts/` (gitignored). +Does [agent-device](https://github.com/callstack/agent-device) capture the existing example screens deterministically enough to diff `Surface` against a baseline, and does that diff catch a realistic regression rather than only a gross one? -## Setup - -- Branch `poc/agent-device-visual` (PR #5115), React Native 0.85.3, Expo 56, Debug dev-client. -- iPhone 17 Pro simulator, iOS 26.5, 3x. Built with `yarn example ios --device "iPhone 17 Pro"` (63 s incremental). -- agent-device 0.21.0 via `npx`, driven from the CLI. No Storybook, no extra screens. -- Example-app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat`, named so they cannot be mistaken for the library defaults removed in #5088 and #5099), so `screenshot --crop-on 'id="surface-example-elevated"'` crops to exactly that section (402x214 logical, 1206x642 px at `--pixel-density 3`). -- No animation freezing, no status-bar normalisation, no release build were needed. The crop excludes the status bar, dev-client bubble and LogBox. - -### The only test hook: a `testID`, and why not `accessible` - -An earlier revision also set `accessible` on the two `List.Section`s, on the assumption that Android needed it to expose the node. Review flagged that as an accessibility regression, and testing confirmed it — see `evidence/a11y/`: - -- **With `accessible`, iOS collapses the section into one accessibility element.** The XCUITest tree (the same tree VoiceOver walks) shows `surface-example-elevated` as a childless leaf with the label `"Elevated surface, Elevation 0, Elevation 1, …, Elevation 5, Vertical scroll bar, 3 pages"` — 2 Elevation-labelled nodes in the whole screen instead of 26 (`01-ios-snapshot-with-accessible.json` vs `03-testid-only-ios-snapshot.json`). Android does not collapse children either way (217 nodes, identical structure). -- **`testID` alone is enough on both platforms.** `--crop-on 'id="…"'` resolves to the identical rect with or without `accessible` (iOS 0,134,402×214; Android 0,372,1280×642). React Native did not flatten the View on Android, so `collapsable={false}` is not needed either. -- **A label or text selector cannot replace the id.** `label="Elevated surface"` is ambiguous on iOS (`CROP_TARGET_AMBIGUOUS`, nested StaticText) and on Android resolves to the 138 px subheader rather than the section. - -`testID` has no effect on the accessibility tree on either platform, so the example app's behaviour is unchanged by the hook. - -## iOS results - -### Stability - -Four captures of `surface-example-elevated` diffed against the baseline, 774,252 pixels each: - -| capture | changed px @ threshold 0.1 | changed px @ 0.02 | regions | -| ------------------------------------------------- | -------------------------- | ----------------- | ------- | -| warm-1 | 0 | 0 | 0 | -| warm-2 | 0 | 0 | 0 | -| warm-3 | 0 | 0 | 0 | -| relaunch-1 (`open --relaunch`, pid 27223 → 37870) | 0 | 0 | 0 | - -**Noise floor: 0 pixels**, including across a real process restart. Screenshot wall-clock ≈ 0.7 s; relaunch ≈ 1.5 s. - -Not measured: cold simulator boot, a different day/host, an iOS runtime update, other devices. Baselines are valid for the `env.json` configuration only. - -### Sensitivity - -Two deliberate one-line changes to `src/components/Surface.tsx` (iOS branch), applied via Fast Refresh and reverted after each measurement (revert re-diffed to 0 both times): - -| break | @ 0.1 (CLI default) | @ 0.02 | -| ------------------------------------------------------ | --------------------------- | ----------------------------------------------------------------------- | -| Gross — every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | -| Realistic — level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, dominant region 378x378 on the Elevation 1 card | - -**The most important finding:** agent-device's default per-pixel colour threshold (0.1) reports the realistic regression as a perfect match. At 0.02 it is caught cleanly, on exactly the right card, with the noise floor still at zero. Soft shadows are low-contrast by design; any suite built on this must set `--threshold` explicitly and verify noise at that threshold. - -Human visibility of the realistic break: borderline — noticeable only when flipping between the two images. This is the class of regression a reviewer misses and a pixel diff catches. +**Yes on both platforms, with one catch.** The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression — elevation level 1 rendering the level-2 shadow — is caught cleanly at `--threshold 0.02`, on exactly the right card, and is **bit-identical across three independent captures per platform**. But at agent-device's **default threshold (0.1) that same regression is reported as a perfect match** on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. -The table above is the original single capture per break. Review asked for the realistic break to be repeated; the three independent re-captures per platform are in "Re-measured after review" below and are bit-identical to these numbers. - -Two caveats, both from independent review of the artifacts: +## Setup -- **Threshold choice was post-hoc on iOS.** 0.02 was chosen after the default missed the break, then re-verified against the same four noise captures. For Android the thresholds are pre-registered as a sweep (0.1 / 0.05 / 0.02 / 0.01) over every noise capture and every break, and the whole curve is reported. -- **The crop is not perfectly isolated.** Under the gross break, a full-width 33 px band at the top of the crop changed — the Appbar's shadow bleeding into the section. That is expected: the Appbar is itself a `Surface`, and the gross break changed every Surface. It accounted for 2 of 3 regions but not the majority of the signal (the dominant region, ~61 % of changed pixels, sits on the cards). The realistic break showed no bleed. Consequence for a real suite: an Appbar-only change could register against this crop. That is inherent in screenshotting real screens rather than isolated components, and is documented rather than engineered around in this PoC. +- Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client, agent-device 0.21.0 via `npx`. No Storybook, no extra screens. +- iPhone 17 Pro simulator (iOS 26.5, 3x) and `Pixel_10_Pro` emulator (API 37, 480 dpi, `hw.gpu.mode=auto`). Pinned in `env.json`; baselines are valid for that configuration only. +- The only app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat` — named so they cannot be mistaken for the library defaults removed in #5088 and #5099). `screenshot --crop-on 'id="…"'` then crops to exactly that section: 402x214 logical, 1206x642 px at `--pixel-density 3` on iOS; 1280x642 native px on Android. +- No animation freezing, status-bar normalisation or release build was needed for these captures. The crop excludes the status bar and LogBox. -## agent-device issues found (to file) +**Why not `accessible`.** An earlier revision also set `accessible` on the sections, assuming Android needed it. It didn't, and on iOS it collapsed each section into one VoiceOver element: 2 Elevation-labelled nodes on screen instead of 26, the section a childless leaf labelled `"Elevated surface, Elevation 0, … Elevation 5, Vertical scroll bar, 3 pages"`. `testID` alone resolves the crop to the identical rect on both platforms and has no effect on the accessibility tree. Excerpts of the four trees are in `evidence/a11y-excerpt.json`; the full dumps are on the runner branch. -See `evidence/issues.md` for commands and evidence. +## iOS -1. `find ` taps the match instead of only locating it. -2. `scroll bottom` hits a safety limit and leaves the Expo dev menu open. -3. `open --relaunch` restarts the app with the Expo dev menu open. -4. Default `diff screenshot --threshold 0.1` misses soft-shadow regressions (above). -5. Screenshot JSON carries no timing; wall-clock has to be measured externally. +Stability — four captures of `surface-example-elevated` against the baseline, 774,252 px each: -Also noted: docs say `wait --stable`, the CLI takes `wait stable [quietMs] [timeoutMs]`. +| capture | @ 0.1 | @ 0.02 | regions | +| ------------------------------------------------- | ----- | ------ | ------- | +| warm-1 / warm-2 / warm-3 | 0 | 0 | 0 | +| relaunch-1 (`open --relaunch`, pid 27223 → 37870) | 0 | 0 | 0 | -Issues 6–12 (session binding per cwd, non-portable `find` selectors, stale-ref errors, Android relaunch landing in the launcher, `logs` on an inactive log, `--pixel-density` iOS-only, Node client not resolvable from the `npx` cache) are in `evidence/issues.md` with commands and evidence. +Sensitivity — one-line changes to the iOS branch of `src/components/Surface.tsx`, reverted after each capture (revert re-diffed to 0): -Issues 13–18 came out of the review round: `snapshot` returns an empty `nodes` array when the tree is unchanged unless `--force-full` is passed; a relaunch restores the previous route (the example app persists navigation state, so this is app behaviour the runner has to handle, logged for context); the dev menu appears after app-ready, not at open; Fast Refresh not reaching Android after a relaunch; an occasional non-zero CLI exit with empty stdout and stderr; and `diff screenshot --out` writing no image when the result is a match. Issue 19, from round 3, is the dev-client's floating Tools button landing inside the crop and producing a deterministic false FAIL — see the verification notes below. +| break | @ 0.1 (default) | @ 0.02 | +| ------------------------------------------------------ | --------------------------- | ------------------------------------------------------------------ | +| Gross — every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | +| Realistic — level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, one 378x378 region on the Elevation 1 card | ## Android -Emulator `Pixel_10_Pro`, API 37 (Android 17), arm64 `google_apis_playstore_ps16k`, 480 dpi, 1280x2856, emulator 36.6.11, `hw.gpu.mode=auto`. Wall-clock: emulator boot 8 s, `yarn example android` (incremental, build + install + launch) 119 s, `open` 668 ms, `open --relaunch` 1,688 ms, one cropped capture ≈ 2 s. - -`--pixel-density` is rejected on Android (`UNSUPPORTED_OPERATION`, iOS-family only); Android screenshots already come back in native device pixels, so the `surface-example-elevated` crop is 1280x642 = 821,760 px. `--crop-on 'id="surface-example-elevated"'` and `'id="surface-example-flat"'` each resolve to exactly one node from the `testID` alone (see "The only test hook" above), so no fallback selector was needed. - -### Stability +Stability — four captures against the baseline, 821,760 px each, thresholds pre-declared before capturing: -Four captures of `surface-example-elevated` diffed against the baseline, 821,760 pixels each, at every pre-registered threshold: +| capture | @ 0.1 | @ 0.05 | @ 0.02 | @ 0.01 | regions | +| ------------------------------------------------ | ----- | ------ | ------ | ------ | ------- | +| warm-1 / warm-2 / warm-3 | 0 | 0 | 0 | 0 | 0 | +| relaunch-1 (`open --relaunch`, pid 9944 → 10860) | 0 | 0 | 0 | 0 | 0 | -| capture | changed px @ 0.1 | @ 0.05 | @ 0.02 | @ 0.01 | regions | -| ------------------------------------------------ | ---------------- | ------ | ------ | ------ | ------- | -| warm-1 | 0 | 0 | 0 | 0 | 0 | -| warm-2 | 0 | 0 | 0 | 0 | 0 | -| warm-3 | 0 | 0 | 0 | 0 | 0 | -| relaunch-1 (`open --relaunch`, pid 9944 → 10860) | 0 | 0 | 0 | 0 | 0 | +Sensitivity — one-line changes to the Android branch (`androidElevationLevels[…]`), reverted after each capture: -**Noise floor: 0 pixels at every threshold down to 0.01**, including across a real process restart. Same result as iOS. No animation freezing, no status-bar handling: the crop excludes the status bar, and `screenshot` stabilises Android chrome by default. +| break | @ 0.1 (default) | @ 0.05 | @ 0.02 | @ 0.01 | +| ------------------------------------------- | ----------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| Gross — every elevated surface gets level 5 | 65,051 px (7.92 %), 2 regions | 118,661 px (14.44 %), 4 regions | 208,505 px (25.37 %), 4 regions | 265,916 px (32.36 %), 2 regions | +| Realistic — level 1 renders level 2 | **0 px, `match: true`** | 1,830 px (0.22 %), 1 region | **9,336 px (1.14 %)**, 1 region | 14,686 px (1.79 %), 1 region | -### Sensitivity +## The realistic break, repeated -Both breaks are one-line changes to the Android branch of `src/components/Surface.tsx` (`androidElevationLevels[elevation]`), applied by Fast Refresh — confirmed by a temporary `console.log` probe seen 19 times in `adb logcat`, then removed. Each break was reverted with `git checkout --` and re-diffed to 0 at all four thresholds. +Three independent captures per platform (`wait stable`, 2 s, screenshot, diff), thresholds declared first: -| break | @ 0.1 (CLI default) | @ 0.05 | @ 0.02 | @ 0.01 | widest region | -| ------------------------------------------- | ----------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -------------------------------- | -| Gross — every elevated surface gets level 5 | 65,051 px (7.92 %), 2 regions | 118,661 px (14.44 %), 4 regions | 208,505 px (25.37 %), 4 regions | 265,916 px (32.36 %), 2 regions | 1280x444 @ 0.01 (whole card row) | -| Realistic — level 1 renders level 2 | **0 px, `match: true`** | 1,830 px (0.22 %), 1 region | 9,336 px (1.14 %), 1 region | 14,686 px (1.79 %), 1 region | 380x381 on the Elevation 1 card | +| platform | capture | @ 0.1 | @ 0.02 | +| -------- | ------------------- | ----- | --------------- | +| iOS | realistic-1 / 2 / 3 | 0 | 10,179 (1.31 %) | +| Android | realistic-1 / 2 / 3 | 0 | 9,336 (1.14 %) | -The realistic break repeats the iOS finding exactly: at the default threshold the regression is reported as a perfect match; at 0.02 it is caught cleanly, in one region (374x375 at x=473, y=207) that covers only the Elevation 1 card, with the noise floor still 0. The diff image is a ring around that card, heaviest along the bottom edge — the extra shadow spread. Human visibility: subtle. Side by side you would notice the card sits slightly higher; in isolation almost nobody would. The gross break, unlike on iOS, is caught at the default threshold too, because a native `elevation` jump from 1 to 5 changes background compositing across the whole row, not just a soft shadow edge. +Bit-identical every time, and identical to the first single captures. On these targets the changed-pixel count is a deterministic function of the code. The diff image is a ring on the Elevation 1 card and nothing else (`evidence/diff-images/-realistic-*-t0.02.png`). Human visibility: borderline — noticeable only when flipping between the two images. -### Caveats +## Caveats -These numbers are for one emulator on one host with `hw.gpu.mode=auto`, i.e. host-GPU rendering. **swiftshader was not measured**, so nothing here says whether Android baselines survive on `ubuntu-latest`, which renders with swiftshader — CI parity is an open item, not a claim. Nor was a cold emulator boot from a wiped snapshot, an AVD at another density, a system-image update, or a Release build. Emulator relaunch is more expensive than on iOS in commands, not seconds: `open --relaunch` starts the Expo dev launcher, so reconnecting to Metro and waiting for the bundle takes three extra steps (see issues 9 and 10), and `wait stable` returns "settled" on the still-empty tree while the bundle loads — a suite must wait for real content, not for stability. +- **The crop is not perfectly isolated.** Under the gross break a full-width 33 px band at the top of the crop changed: the Appbar is itself a `Surface`, and the break changed every Surface. The realistic break showed no bleed. An Appbar-only change could register against this crop; that is inherent in screenshotting real screens rather than isolated components. +- **Dev-client chrome can land in the crop.** The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sat inside the Android section and produced a deterministic 2,822 px false FAIL with `src/` clean (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`). Turning it off in the dev menu ("Tools button") restored 0. A release build would remove the whole class of dev menu, dev launcher and floating button. +- **Not measured:** swiftshader (what `ubuntu-latest` renders with), cold simulator/emulator boot, another host or day, runtime or image updates, other components, text-heavy crops, dark theme, web (`--crop-on` is refused there). -Six more agent-device findings came out of the Android run (session/device binding, non-portable `find` selectors, ref invalidation, dev-launcher relaunch, silent `logs`, and `--pixel-density` being iOS-only). They are issues 6-11 in `evidence/issues.md`, with commands and artifact references. +## Reproducing by hand -## Re-measured after review +Prerequisites: the example app built and installed on the device pinned in `env.json`, Metro running (`yarn example start`). Commands verified on 2026-09-10/11. agent-device sessions are keyed by cwd and bound to one device — use one directory per platform, or `--session ` for the second. -Review asked that the headline sensitivity claim rest on more than one capture, and that the threshold be fixed before measuring rather than after. Both were done on 2026-09-10 with the renamed test ids and `testID` only (no `accessible`). Each row is an independent capture — `wait stable`, 2 s sleep, screenshot, then two diffs against the committed baseline at the two pre-declared thresholds. Raw JSON is in `evidence/sensitivity//`, diff images in `evidence/diff-images/-realistic--t0.02.png`. +iOS (from the same cwd every time): -| platform | capture | changed px @ 0.1 | changed px @ 0.02 | regions @ 0.02 | -| -------- | ----------- | ---------------- | ----------------- | -------------- | -| iOS | realistic-1 | 0 | 10,179 (1.31 %) | 3 | -| iOS | realistic-2 | 0 | 10,179 (1.31 %) | 3 | -| iOS | realistic-3 | 0 | 10,179 (1.31 %) | 3 | -| Android | realistic-1 | 0 | 9,336 (1.14 %) | 1 | -| Android | realistic-2 | 0 | 9,336 (1.14 %) | 1 | -| Android | realistic-3 | 0 | 9,336 (1.14 %) | 1 | - -**Bit-identical across all three captures on both platforms**, and identical to the original single-capture numbers. There is no capture noise to average over: on these targets the changed-pixel count is a deterministic function of the code. The gross break was re-captured once per platform with the same result as before (iOS 4,277 / 116,292 px; Android 65,051 / 208,505 px at 0.1 / 0.02). After reverting, every capture diffed to 0 at both thresholds. - -One operational finding from this pass matters for any runner built on this: **Fast Refresh stopped reaching the Android app after a relaunch.** Metro was serving the changed bundle (verified by fetching it), `adb reverse` was in place, and yet captures stayed at 0 changed pixels until a dev-menu Reload — after which the break appeared at exactly the expected magnitude. A runner that captures without forcing a fresh bundle can compare stale pixels and report PASS. `run.mjs` therefore always relaunches the app before capturing (issue 16). +```bash +UDID=2464A356-C17C-4B0D-99DB-CDFBDB98826C +npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --relaunch --platform ios --udid $UDID --json +# the dev menu appears a few seconds after relaunch; wait for it, then: +npx agent-device@0.21.0 wait stable 500 10000 --platform ios --udid $UDID --json +npx agent-device@0.21.0 press 'label="Close"' --platform ios --udid $UDID --json +# navigate to Surface (the app restores its last screen; if it is not Surface, press Back to the list and press the "Surface" row) +npx agent-device@0.21.0 wait stable 500 10000 --platform ios --udid $UDID --json && sleep 2 +npx agent-device@0.21.0 screenshot current.png --crop-on 'id="surface-example-elevated"' --pixel-density 3 --platform ios --udid $UDID --json +npx agent-device@0.21.0 diff screenshot --baseline example/visual/__baselines__/ios/surface-example-elevated.png current.png --out diff.png --threshold 0.02 --json +``` -## Not done / out of scope +Android (`--session android --platform android` on every command; after `open --relaunch` the dev launcher shows — press the row labelled with the Metro URL, e.g. `http://192.168.1.151:8081`, then wait for the app to load; no `--pixel-density`): -Web (`--crop-on` is refused off iOS/Android, so it is a different loop), deep links, CI, other components, cross-platform comparison. +```bash +npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --relaunch --platform android --session android --json +npx agent-device@0.21.0 screenshot current.png --crop-on 'id="surface-example-elevated"' --platform android --session android --json +npx agent-device@0.21.0 diff screenshot --baseline example/visual/__baselines__/android/surface-example-elevated.png current.png --out diff.png --threshold 0.02 --json +``` -Before 0.02 is trusted as a default threshold rather than a Surface-specific one, the same protocol should be run on: other shadow-bearing components (Card, Chip, FAB), a text-heavy crop (glyph antialiasing may raise the noise floor), dark theme (different contrast profile), and an emulator on swiftshader, which is what `ubuntu-latest` CI renders with. None of these were measured. +To see a failure: in `src/components/Surface.tsx` change `shadow(elevation, …)` to `shadow(elevation === 1 ? 2 : elevation, …)` (iOS) or `androidElevationLevels[elevation]` to `androidElevationLevels[elevation === 1 ? 2 : elevation]` (Android), relaunch the app so it fetches the bundle, capture, diff — expect ~10,179 px (iOS) / ~9,336 px (Android) at 0.02 and `match: true` at 0.1. `git checkout -- src/components/Surface.tsx` afterwards. -Also unmeasured: cold simulator/emulator boot, a different day or host machine, an iOS runtime or emulator image update. Baselines are valid for the `env.json` configuration only. Dev-client chrome (dev menu, dev launcher, floating Tools button) is handled by the runner case by case; a release build would remove the whole class. +## What a real runner would have to handle -## Running it +Learned the hard way while trying to script the loop above; each is documented in `evidence/issues.md` and implemented on the runner branch, none of it is in this PR: -`example/visual/run.mjs` is the hand-run CLI loop above as one Node script (plain -ESM, Node 20 or newer, no build step, no new dependencies). It spawns -`npx agent-device@0.21.0 … --json` and parses stdout. The published package does -export `createAgentDeviceClient`, but `agent-device` is not a dependency of this -repo and is not resolvable from `example/`, so using the typed client would mean -adding a dependency — out of scope for the PoC. +- **Relaunch before every capture.** Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. +- **The example app persists navigation state.** A relaunch lands on the last screen, so "start at the top of the list" is false; the runner has to press Back to the root and pick the Surface _row_, not the header title. +- **Dev-client chrome:** the dev menu appears seconds _after_ the app is ready, the Android relaunch lands in the dev launcher, and the floating Tools button can appear inside the crop. +- `snapshot` returns an empty `nodes` array when nothing changed unless `--force-full` is passed. +- Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default hides real regressions. +- Pin the device (UDID, runtime, density) and refuse to compare or re-baseline on anything else; derive expected capture size from the baseline PNG, per story. +- Plain `.mjs` entry guarded by `import.meta.main` does nothing on Node 20/22; guard with an `argv[1]` comparison. -```bash -node example/visual/run.mjs --platform ios -node example/visual/run.mjs --platform android -``` +## agent-device issues found -Requires Node 20 or newer, matching `example/package.json`. The entry point is -guarded by comparing `process.argv[1]` with the module URL rather than -`import.meta.main`, which only exists from Node 24.2 — on Node 20 the earlier -version printed nothing and exited 0, the worst failure a tool whose contract is -its exit code can have. The pure helpers have a `node:test` file, run with: +Nineteen, with commands and evidence, in `evidence/issues.md`. The ones that matter most: the default diff threshold misses soft-shadow regressions (4); `find` taps what it finds (1); sessions are bound to one device per cwd (6); a dev-build screenshot can contain dev-client chrome the diff cannot tell apart from the app (19). -```bash -yarn example test:visual -``` +## Evidence -It needs no device, adb or xcrun. It is **not** run by Jest (which ignores `.mjs`), -by the pre-commit hook, or by CI — it is a manual check for whoever edits -`run.mjs`, nothing more. - -`evidence/summary.md` is generated from the committed JSON by -`node example/visual/evidence/summarize.mjs`. - -Flags: `--update` (write the current captures as baselines — creates a missing -baseline, overwrites an existing one), `--threshold <0-1>` (default `0.02`, the PoC -finding — the CLI default of `0.1` misses soft-shadow regressions), -`--story surface-example-elevated,surface-example-flat`, `--out ` (where captures, -diff images, per-command JSON and `summary.json` go; default -`example/visual/artifacts/run/`, gitignored), `--force` (downgrade the device -check below to a warning — it does not touch the crop-size check). - -Prerequisites are documented, not automated: the app must already be built and -installed on the device pinned in `env.json`, and Metro must be running. The -script always relaunches the app (`open --relaunch` on iOS, `am force-stop` + -`open` on Android) so the JS bundle is fetched fresh from Metro — never trusting -whatever is already on screen, after Fast Refresh was seen to silently stop -reaching the Android app. It waits for the app to be ready (not just for the tree -to be stable), dismisses the Expo dev menu (iOS) or dev launcher (Android) if -they appear, and then — because the example app persists navigation state and -restores the last route — either finds the Surface screen already showing or -presses Back to the example list root and presses the Surface row (matched by -position and width, not by label alone, so the header title is never mistaken -for it). Every loop is bounded and fails with a message rather than scrolling -forever. It then waits for the UI to go quiet and captures and diffs each story. - -Each story prints one line: +Every number above resolves to a file: -``` -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -``` +- `evidence/ios/`, `evidence/android/` — the `diff screenshot --json` output behind the first-run tables. +- `evidence/sensitivity//` — the three repeated realistic breaks, plus the gross break and the reverts, at each threshold. +- `evidence/diff-images/` — the diff images, platform-prefixed. None exist for 0.1 diffs because `diff screenshot --out` writes nothing on a match (issue 18). +- `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json` — the nodes that matter from the accessibility trees; full trees on the runner branch. +- `env.json` — the pinned devices, versions and thresholds. -PASS means agent-device reported `match: true` at that threshold — no pixel -differed by more than the threshold's colour distance. FAIL means it did not; -`changed` is the pixel count and `regions` the number of clustered diff areas. -Exit codes: `1` if any story fails; `2` if the connected device does not match -`env.json`; `3` if a capture's dimensions do not match the crop pinned in -`env.json`. A regression is the only thing that exits 1. - -Two guardrails: - -- **Device pin.** Before any capture the script compares the connected device with - `env.json` — UDID, iOS runtime and boot state via `xcrun simctl list -j devices`; - API level and density via `adb getprop` and `adb shell wm density`. Any mismatch, - or an inability to identify the device at all, exits 2 with an expected/observed - list. This applies to `--update` too, so committed baselines cannot be - overwritten from the wrong simulator by accident. `--force` downgrades this - check to a warning; that is the only thing `--force` does. -- **Crop size.** In diff mode, after every capture the reported width and height - are compared with the dimensions of the baseline PNG itself (read from its - header), and on iOS the pixel density with the one pinned in `env.json`. The - expected size therefore comes per story from the file the diff actually uses - and cannot drift from it, and a story that has just been `--update`d passes on - the next run. A mismatch exits 3 with no override — a wrong-sized capture can - never read as PASS. In `--update` mode the check is skipped and the captured - dimensions are printed on the `baseline created` line instead. `env.json` is - never rewritten by the script. - -Verified end to end on 2026-09-10 after review; `summary.json` and the diff images are in -`evidence/runs//fix-*/`. From the Surface screen: PASS with `changed=0` -on both stories, both platforms (iOS 12.7 s, Android 24.9 s). Started from another -example screen: relaunch → overlay dismissed → Back ×2 → Surface row pressed → PASS -(iOS 35.6 s, Android 33.6 s). With the realistic break applied and no manual -reload: `ios surface-example-elevated changed=10179 (1.31%) regions=3 → FAIL`, exit 1; -`android surface-example-elevated changed=9336 (1.14%) regions=1 → FAIL`, exit 1 — -the same counts as every hand-run capture. After `git checkout -- src/components/Surface.tsx`: -PASS again on both. - -Round-2 verification (2026-09-11), `evidence/runs//round2-*/`: PASS on iOS -(15 s) and Android (31 s) on Node 24.18; on Node 20.20.2 via `npx -y -p node@20 node -example/visual/run.mjs --platform ios` the entry point fires and PASSes (19 s), the -realistic break FAILs with `changed=10179 (1.31%)`, exit 1, and the revert PASSes. -One thing that surfaced: `npx -p` leaks `npm_config_package` into the child, which -made the script's own nested `npx agent-device` install node instead — the script -now strips `npm_config_*` from the environment it spawns with. - -Round-3 verification (2026-09-11), `evidence/runs/ios/round3-*/`: both guardrails -triggered for real. With `env.json` pointing at a UDID that is not attached, the -run refused before touching any device — `udid: expected 0000…, observed not -present in xcrun simctl list` — exit 2. With `pixelDensity` pinned to 2 against -the 3x baselines, the capture came back 804x428 and the run stopped with -`width: expected 1206, actual 804 / height: expected 642, actual 428` — exit 3. -Both `summary.json` files record the error and exit code. - -The same day's Android confirmation run then failed for real — `changed=2822`, one -152x74 region at the top-right of the crop — with `src/` clean and the baseline -byte-identical to `HEAD`. The diff image shows the Expo dev-client's floating -**Tools** button, which had been switched on by some earlier dev-menu interaction -and sat inside the section. Turning it off through the dev menu ("Tools button") -made the next run pass with `changed=0`; the script now detects that node and -disables it, or stops with exit 2 rather than reporting it as a regression -(issue 19, with the snapshots and both failing summaries in `evidence/`). It is -the first false FAIL of the PoC, and the clearest argument yet for capturing -from a release build rather than a dev-client once this goes beyond a PoC. +The first-run JSON predates the test-id rename and says `surface-elevated` / `surface-flat`; renaming an id changes no pixel. diff --git a/example/visual/evidence/a11y-excerpt.json b/example/visual/evidence/a11y-excerpt.json new file mode 100644 index 0000000000..d2d253df10 --- /dev/null +++ b/example/visual/evidence/a11y-excerpt.json @@ -0,0 +1,74 @@ +{ + "about": "Excerpts from the XCUITest / UiAutomator trees captured 2026-09-10 with `npx agent-device@0.21.0 snapshot --raw --force-full --json`. The full trees (13,500 lines) are on branch poc/agent-device-visual-runner under example/visual/evidence/a11y/. Test id at the time: surface-elevated (renamed surface-example-elevated later; the rename changes no pixel).", + "ios": { + "with_accessible": { + "total_nodes": 115, + "elevation_labelled_nodes": 2, + "surface_section_node": [ + { + "type": "Other", + "role": "RCTViewComponentView", + "identifier": "surface-elevated", + "label": "Elevated surface, Elevation 0, Elevation 1, Elevation 2, Elevation 3, Elevation 4, Elevation 5, Vertical scroll bar, 3 pages", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 214 + } + } + ] + }, + "testID_only": { + "total_nodes": 177, + "elevation_labelled_nodes": 26, + "surface_section_node": [ + { + "type": "Other", + "role": "RCTViewComponentView", + "identifier": "surface-elevated", + "rect": { + "x": 0, + "y": 134, + "width": 402, + "height": 214 + } + } + ] + } + }, + "android": { + "with_accessible": { + "total_nodes": 217, + "elevation_labelled_nodes": 13, + "surface_section_node": [ + { + "type": "android.view.ViewGroup", + "identifier": "surface-elevated", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + } + } + ] + }, + "testID_only": { + "total_nodes": 217, + "elevation_labelled_nodes": 13, + "surface_section_node": [ + { + "type": "android.view.ViewGroup", + "identifier": "surface-elevated", + "rect": { + "x": 0, + "y": 372, + "width": 1280, + "height": 642 + } + } + ] + } + } +} \ No newline at end of file diff --git a/example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json b/example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json deleted file mode 100644 index e979d076fc..0000000000 --- a/example/visual/evidence/a11y/01-ios-snapshot-with-accessible.json +++ /dev/null @@ -1,1896 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "Application", - "role": "UIApplication", - "label": "React Native Paper Example", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 0, - "pid": 37870, - "ref": "e1" - }, - { - "index": 1, - "parentIndex": 0, - "type": "Window", - "role": "UIWindow", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 1, - "pid": 37870, - "ref": "e2" - }, - { - "index": 2, - "parentIndex": 1, - "type": "Other", - "role": "UITransitionView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 2, - "pid": 37870, - "ref": "e3" - }, - { - "index": 3, - "parentIndex": 2, - "type": "Other", - "role": "UIDropShadowView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 3, - "pid": 37870, - "ref": "e4" - }, - { - "index": 4, - "parentIndex": 3, - "type": "Other", - "role": "_TtC13EXDevLauncherP33_867A144D7C8F5D750D0BFA9E58EDAFE322DevLauncherWrapperView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 4, - "pid": 37870, - "ref": "e5" - }, - { - "index": 5, - "parentIndex": 4, - "type": "Other", - "role": "RCTSurfaceHostingProxyRootView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 5, - "pid": 37870, - "ref": "e6" - }, - { - "index": 6, - "parentIndex": 5, - "type": "Other", - "role": "RCTSurfaceView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 6, - "pid": 37870, - "ref": "e7" - }, - { - "index": 7, - "parentIndex": 6, - "type": "Other", - "role": "RCTRootComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 7, - "pid": 37870, - "ref": "e8" - }, - { - "index": 8, - "parentIndex": 7, - "type": "Other", - "role": "RNCSafeAreaProviderComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 8, - "pid": 37870, - "ref": "e9" - }, - { - "index": 9, - "parentIndex": 8, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e10" - }, - { - "index": 10, - "parentIndex": 9, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 10, - "pid": 37870, - "ref": "e11" - }, - { - "index": 11, - "parentIndex": 10, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 11, - "pid": 37870, - "ref": "e12" - }, - { - "index": 12, - "parentIndex": 11, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 12, - "pid": 37870, - "ref": "e13" - }, - { - "index": 13, - "parentIndex": 12, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 13, - "pid": 37870, - "ref": "e14" - }, - { - "index": 14, - "parentIndex": 13, - "type": "Other", - "role": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 770 - }, - "depth": 14, - "pid": 37870, - "ref": "e15" - }, - { - "index": 15, - "parentIndex": 14, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 770 - }, - "depth": 15, - "pid": 37870, - "ref": "e16" - }, - { - "index": 16, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Example items", - "rect": { - "x": -306, - "y": 30, - "width": 294, - "height": 20 - }, - "depth": 16, - "pid": 37870, - "ref": "e17" - }, - { - "index": 17, - "parentIndex": 16, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Example items", - "rect": { - "x": -306, - "y": 30, - "width": 294, - "height": 20 - }, - "depth": 17, - "pid": 37870, - "ref": "e18" - }, - { - "index": 18, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Inbox, 44", - "rect": { - "x": -322, - "y": 68, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e19" - }, - { - "index": 19, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Starred", - "rect": { - "x": -322, - "y": 124, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e20" - }, - { - "index": 20, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Sent mail", - "rect": { - "x": -322, - "y": 180, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e21" - }, - { - "index": 21, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Colored label", - "rect": { - "x": -322, - "y": 236, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e22" - }, - { - "index": 22, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "A very long title that will be truncated", - "rect": { - "x": -322, - "y": 292, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e23" - }, - { - "index": 23, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -318, - "y": 352, - "width": 290, - "height": 1 - }, - "depth": 16, - "pid": 37870, - "ref": "e24" - }, - { - "index": 24, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Preferences", - "rect": { - "x": -306, - "y": 375, - "width": 294, - "height": 20 - }, - "depth": 16, - "pid": 37870, - "ref": "e25" - }, - { - "index": 25, - "parentIndex": 24, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Preferences", - "rect": { - "x": -306, - "y": 375, - "width": 294, - "height": 20 - }, - "depth": 17, - "pid": 37870, - "ref": "e26" - }, - { - "index": 26, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Dark Theme", - "rect": { - "x": -334, - "y": 413, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e27" - }, - { - "index": 27, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "RTL", - "rect": { - "x": -334, - "y": 469, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e28" - }, - { - "index": 28, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Collapsed drawer *", - "rect": { - "x": -334, - "y": 525, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e29" - }, - { - "index": 29, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Custom font *", - "rect": { - "x": -334, - "y": 581, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e30" - }, - { - "index": 30, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Highlight effect *", - "rect": { - "x": -334, - "y": 637, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e31" - }, - { - "index": 31, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -318, - "y": 697, - "width": 290, - "height": 1 - }, - "depth": 16, - "pid": 37870, - "ref": "e32" - }, - { - "index": 32, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "* - optional example toggles", - "rect": { - "x": -310, - "y": 708, - "width": 274, - "height": 16 - }, - "depth": 16, - "pid": 37870, - "ref": "e33" - }, - { - "index": 33, - "parentIndex": 32, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "* - optional example toggles", - "rect": { - "x": -310, - "y": 708, - "width": 274, - "height": 16 - }, - "depth": 17, - "pid": 37870, - "ref": "e34" - }, - { - "index": 34, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "React Native Paper Version 6.0.0-alpha.0", - "rect": { - "x": -310, - "y": 736, - "width": 274, - "height": 16 - }, - "depth": 16, - "pid": 37870, - "ref": "e35" - }, - { - "index": 35, - "parentIndex": 34, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "React Native Paper Version 6.0.0-alpha.0", - "rect": { - "x": -310, - "y": 736, - "width": 274, - "height": 16 - }, - "depth": 17, - "pid": 37870, - "ref": "e36" - }, - { - "index": 36, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -33, - "y": 62, - "width": 30, - "height": 778 - }, - "depth": 14, - "pid": 37870, - "ref": "e37" - }, - { - "index": 37, - "parentIndex": 36, - "type": "Other", - "role": "UIView", - "rect": { - "x": -6, - "y": 169, - "width": 3, - "height": 668 - }, - "depth": 15, - "pid": 37870, - "ref": "e38" - }, - { - "index": 38, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -346, - "y": 807, - "width": 346, - "height": 30 - }, - "depth": 14, - "pid": 37870, - "ref": "e39" - }, - { - "index": 39, - "parentIndex": 38, - "type": "Other", - "role": "UIView", - "rect": { - "x": -343, - "y": 834, - "width": 340, - "height": 3 - }, - "depth": 15, - "pid": 37870, - "ref": "e40" - }, - { - "index": 40, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -33, - "y": 62, - "width": 30, - "height": 778 - }, - "depth": 14, - "pid": 37870, - "ref": "e41" - }, - { - "index": 41, - "parentIndex": 40, - "type": "Other", - "role": "UIView", - "rect": { - "x": -6, - "y": 169, - "width": 3, - "height": 668 - }, - "depth": 15, - "pid": 37870, - "ref": "e42" - }, - { - "index": 42, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -346, - "y": 807, - "width": 346, - "height": 30 - }, - "depth": 14, - "pid": 37870, - "ref": "e43" - }, - { - "index": 43, - "parentIndex": 42, - "type": "Other", - "role": "UIView", - "rect": { - "x": -343, - "y": 834, - "width": 340, - "height": 3 - }, - "depth": 15, - "pid": 37870, - "ref": "e44" - }, - { - "index": 44, - "parentIndex": 10, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 11, - "pid": 37870, - "ref": "e45" - }, - { - "index": 45, - "parentIndex": 44, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 12, - "pid": 37870, - "ref": "e46" - }, - { - "index": 46, - "parentIndex": 45, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 13, - "pid": 37870, - "ref": "e47" - }, - { - "index": 47, - "parentIndex": 46, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 14, - "pid": 37870, - "ref": "e48" - }, - { - "index": 48, - "parentIndex": 47, - "type": "Other", - "role": "RNSScreenStackView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 15, - "pid": 37870, - "ref": "e49" - }, - { - "index": 49, - "parentIndex": 48, - "type": "Other", - "role": "UILayoutContainerView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 16, - "pid": 37870, - "ref": "e50" - }, - { - "index": 50, - "parentIndex": 49, - "type": "Other", - "role": "UINavigationTransitionView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 17, - "pid": 37870, - "ref": "e51" - }, - { - "index": 51, - "parentIndex": 50, - "type": "Other", - "role": "UIViewControllerWrapperView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 18, - "pid": 37870, - "ref": "e52" - }, - { - "index": 52, - "parentIndex": 51, - "type": "Other", - "role": "RNSScreenView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 19, - "pid": 37870, - "ref": "e53" - }, - { - "index": 53, - "parentIndex": 52, - "type": "Other", - "role": "RNSScreenContentWrapper", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 20, - "pid": 37870, - "ref": "e54" - }, - { - "index": 54, - "parentIndex": 53, - "type": "Other", - "role": "RNSSafeAreaViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 21, - "pid": 37870, - "ref": "e55" - }, - { - "index": 55, - "parentIndex": 54, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 22, - "pid": 37870, - "ref": "e56" - }, - { - "index": 56, - "parentIndex": 55, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 23, - "pid": 37870, - "ref": "e57" - }, - { - "index": 57, - "parentIndex": 56, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 24, - "pid": 37870, - "ref": "e58" - }, - { - "index": 58, - "parentIndex": 57, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 25, - "pid": 37870, - "ref": "e59" - }, - { - "index": 59, - "parentIndex": 57, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 25, - "pid": 37870, - "ref": "e60" - }, - { - "index": 60, - "parentIndex": 59, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Back", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 26, - "pid": 37870, - "ref": "e61" - }, - { - "index": 61, - "parentIndex": 57, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 25, - "pid": 37870, - "ref": "e62" - }, - { - "index": 62, - "parentIndex": 61, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 26, - "pid": 37870, - "ref": "e63" - }, - { - "index": 63, - "parentIndex": 55, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 23, - "pid": 37870, - "ref": "e64" - }, - { - "index": 64, - "parentIndex": 63, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 24, - "pid": 37870, - "ref": "e65" - }, - { - "index": 65, - "parentIndex": 64, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 1435 - }, - "depth": 25, - "pid": 37870, - "ref": "e66" - }, - { - "index": 66, - "parentIndex": 65, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 1435 - }, - "depth": 26, - "pid": 37870, - "ref": "e67" - }, - { - "index": 67, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Elevated surface, Elevation 0, Elevation 1, Elevation 2, Elevation 3, Elevation 4, Elevation 5, Vertical scroll bar, 3 pages", - "identifier": "surface-elevated", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 214 - }, - "depth": 27, - "pid": 37870, - "ref": "e68" - }, - { - "index": 68, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Flat surface, Elevation 0, Elevation 1, Elevation 2, Elevation 3, Elevation 4, Elevation 5, Vertical scroll bar, 3 pages", - "identifier": "surface-flat", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 214 - }, - "depth": 27, - "pid": 37870, - "ref": "e69" - }, - { - "index": 69, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e70" - }, - { - "index": 70, - "parentIndex": 69, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e71" - }, - { - "index": 71, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 664, - "width": 120, - "height": 120 - }, - "depth": 27, - "pid": 37870, - "ref": "e72" - }, - { - "index": 72, - "parentIndex": 71, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 664, - "width": 120, - "height": 120 - }, - "depth": 28, - "pid": 37870, - "ref": "e73" - }, - { - "index": 73, - "parentIndex": 71, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 28, - "pid": 37870, - "ref": "e74" - }, - { - "index": 74, - "parentIndex": 73, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 29, - "pid": 37870, - "ref": "e75" - }, - { - "index": 75, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 27, - "pid": 37870, - "ref": "e76" - }, - { - "index": 76, - "parentIndex": 75, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 28, - "pid": 37870, - "ref": "e77" - }, - { - "index": 77, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 27, - "pid": 37870, - "ref": "e78" - }, - { - "index": 78, - "parentIndex": 77, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 28, - "pid": 37870, - "ref": "e79" - }, - { - "index": 79, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Layout", - "rect": { - "x": 0, - "y": 900, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e80" - }, - { - "index": 80, - "parentIndex": 79, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Layout", - "rect": { - "x": 0, - "y": 900, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e81" - }, - { - "index": 81, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 24, - "y": 970, - "width": 354, - "height": 39 - }, - "depth": 27, - "pid": 37870, - "ref": "e82" - }, - { - "index": 82, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 27, - "pid": 37870, - "ref": "e83" - }, - { - "index": 83, - "parentIndex": 82, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e84" - }, - { - "index": 84, - "parentIndex": 82, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Left", - "rect": { - "x": 35, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e85" - }, - { - "index": 85, - "parentIndex": 84, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Left", - "rect": { - "x": 35, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e86" - }, - { - "index": 86, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 27, - "pid": 37870, - "ref": "e87" - }, - { - "index": 87, - "parentIndex": 86, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e88" - }, - { - "index": 88, - "parentIndex": 86, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Right", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e89" - }, - { - "index": 89, - "parentIndex": 88, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Right", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e90" - }, - { - "index": 90, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 24, - "y": 1029, - "width": 354, - "height": 400 - }, - "depth": 27, - "pid": 37870, - "ref": "e91" - }, - { - "index": 91, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1040, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 27, - "pid": 37870, - "ref": "e92" - }, - { - "index": 92, - "parentIndex": 91, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1040, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 28, - "pid": 37870, - "ref": "e93" - }, - { - "index": 93, - "parentIndex": 91, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Top", - "rect": { - "x": 35, - "y": 1122, - "width": 332, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e94" - }, - { - "index": 94, - "parentIndex": 93, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Top", - "rect": { - "x": 35, - "y": 1122, - "width": 332, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e95" - }, - { - "index": 95, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1236.6666717529297, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 27, - "pid": 37870, - "ref": "e96" - }, - { - "index": 96, - "parentIndex": 95, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1236.6666717529297, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 28, - "pid": 37870, - "ref": "e97" - }, - { - "index": 97, - "parentIndex": 95, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Bottom", - "rect": { - "x": 35, - "y": 1318.6666717529297, - "width": 332, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e98" - }, - { - "index": 98, - "parentIndex": 97, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Bottom", - "rect": { - "x": 35, - "y": 1318.6666717529297, - "width": 332, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e99" - }, - { - "index": 99, - "parentIndex": 64, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 25, - "pid": 37870, - "ref": "e100" - }, - { - "index": 100, - "parentIndex": 99, - "type": "Other", - "role": "UIView", - "rect": { - "x": 65, - "y": 868, - "width": 272, - "height": 3 - }, - "depth": 26, - "pid": 37870, - "ref": "e101" - }, - { - "index": 101, - "parentIndex": 64, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 25, - "pid": 37870, - "ref": "e102" - }, - { - "index": 102, - "parentIndex": 101, - "type": "Other", - "role": "UIView", - "rect": { - "x": 65, - "y": 868, - "width": 272, - "height": 3 - }, - "depth": 26, - "pid": 37870, - "ref": "e103" - }, - { - "index": 103, - "parentIndex": 49, - "type": "Other", - "role": "_UIFloatingBarContainerView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 17, - "pid": 37870, - "ref": "e104" - }, - { - "index": 104, - "parentIndex": 103, - "type": "Other", - "role": "_TtGC5UIKitP10$186ecd81022FloatingBarHostingViewVS_20FloatingBarContainer_", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 18, - "pid": 37870, - "ref": "e105" - }, - { - "index": 105, - "parentIndex": 8, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e106" - }, - { - "index": 106, - "parentIndex": 7, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 8, - "pid": 37870, - "ref": "e107" - }, - { - "index": 107, - "parentIndex": 106, - "type": "Other", - "role": "RCTDebuggingOverlayComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e108" - }, - { - "index": 108, - "parentIndex": 107, - "type": "Other", - "role": "RCTDebuggingOverlay", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 10, - "pid": 37870, - "ref": "e109" - }, - { - "index": 109, - "parentIndex": 0, - "type": "Window", - "role": "UIWindow", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 1, - "pid": 37870, - "ref": "e110" - }, - { - "index": 110, - "parentIndex": 109, - "type": "Other", - "role": "UITransitionView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 2, - "pid": 37870, - "ref": "e111" - }, - { - "index": 111, - "parentIndex": 110, - "type": "Other", - "role": "UIDropShadowView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 3, - "pid": 37870, - "ref": "e112" - }, - { - "index": 112, - "parentIndex": 111, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 4, - "pid": 37870, - "ref": "e113" - }, - { - "index": 113, - "parentIndex": 112, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 5, - "pid": 37870, - "ref": "e114" - }, - { - "index": 114, - "parentIndex": 113, - "type": "StaticText", - "role": "UILabel", - "label": "Refreshing...", - "rect": { - "x": 10, - "y": -22.33333333333333, - "width": 382, - "height": 14.333333333333329 - }, - "depth": 6, - "pid": 37870, - "ref": "e115" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 115, - "totalNodeCount": 115, - "reasons": [] - }, - "warnings": [ - "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." - ], - "snapshotDiagnostics": { - "stats": { - "count": 121, - "p50Ms": 68, - "p95Ms": 122, - "maxMs": 677, - "slowThresholdMs": 1500, - "platform": "ios", - "backends": { - "xctest": 121 - } - } - }, - "refsGeneration": 835195 - } -} diff --git a/example/visual/evidence/a11y/02-android-snapshot-with-accessible.json b/example/visual/evidence/a11y/02-android-snapshot-with-accessible.json deleted file mode 100644 index d2bc849f18..0000000000 --- a/example/visual/evidence/a11y/02-android-snapshot-with-accessible.json +++ /dev/null @@ -1,4343 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e1" - }, - { - "index": 1, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_launch_animation_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e2" - }, - { - "index": 2, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e3" - }, - { - "index": 3, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 2, - "ref": "e4" - }, - { - "index": 4, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 3, - "ref": "e5" - }, - { - "index": 5, - "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 4, - "ref": "e6" - }, - { - "index": 6, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 5, - "ref": "e7" - }, - { - "index": 7, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_contents", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1220, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 6, - "ref": "e8" - }, - { - "index": 8, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 525, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e9" - }, - { - "index": 9, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_content", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 196, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 8, - "ref": "e10" - }, - { - "index": 10, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_except_heads_up", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 196, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 9, - "ref": "e11" - }, - { - "index": 11, - "type": "android.widget.TextView", - "label": "3:11", - "value": "3:11", - "identifier": "com.android.systemui:id/clock", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 45, - "width": 130, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 10, - "ref": "e12" - }, - { - "index": 12, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/start_side_notif_and_chip_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 10, - "ref": "e13" - }, - { - "index": 13, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/notification_icon_area", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 12, - "ref": "e14" - }, - { - "index": 14, - "type": "android.view.ViewGroup", - "identifier": "com.android.systemui:id/notificationIcons", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 13, - "ref": "e15" - }, - { - "index": 15, - "type": "android.widget.ImageView", - "label": "Security & privacy notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 14, - "ref": "e16" - }, - { - "index": 16, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 0, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 10, - "parentIndex": 10, - "ref": "e17" - }, - { - "index": 17, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 16, - "ref": "e18" - }, - { - "index": 18, - "type": "android.view.View", - "identifier": "com.android.systemui:id/cutout_space_view", - "bundleId": "com.android.systemui", - "rect": { - "x": 573, - "y": 0, - "width": 109, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e19" - }, - { - "index": 19, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_end_side_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 682, - "y": 0, - "width": 526, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e20" - }, - { - "index": 20, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_end_side_content", - "bundleId": "com.android.systemui", - "rect": { - "x": 963, - "y": 0, - "width": 245, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 19, - "ref": "e21" - }, - { - "index": 21, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/system_icons", - "bundleId": "com.android.systemui", - "rect": { - "x": 963, - "y": 45, - "width": 245, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 20, - "ref": "e22" - }, - { - "index": 22, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/statusIcons", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 144, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e23" - }, - { - "index": 23, - "type": "android.widget.FrameLayout", - "label": "T-Mobile, three bars.", - "identifier": "com.android.systemui:id/mobile_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 69, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e24" - }, - { - "index": 24, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/mobile_group", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 45, - "width": 51, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 23, - "ref": "e25" - }, - { - "index": 25, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 24, - "ref": "e26" - }, - { - "index": 26, - "type": "android.widget.ImageView", - "identifier": "com.android.systemui:id/mobile_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 25, - "ref": "e27" - }, - { - "index": 27, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 78, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 22, - "ref": "e28" - }, - { - "index": 28, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 78, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 22, - "ref": "e29" - }, - { - "index": 29, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/wifi_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 1041, - "y": 45, - "width": 66, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e30" - }, - { - "index": 30, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/wifi_group", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 45, - "width": 48, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 29, - "ref": "e31" - }, - { - "index": 31, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/wifi_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 30, - "ref": "e32" - }, - { - "index": 32, - "type": "android.widget.ImageView", - "label": "Wifi signal full.", - "identifier": "com.android.systemui:id/wifi_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 31, - "ref": "e33" - }, - { - "index": 33, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e34" - }, - { - "index": 34, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 33, - "ref": "e35" - }, - { - "index": 35, - "type": "android.view.View", - "identifier": "com.android.systemui:id/battery", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 34, - "ref": "e36" - }, - { - "index": 36, - "type": "android.view.View", - "label": "Battery 100 percent.", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 72, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 35, - "ref": "e37" - }, - { - "index": 37, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e38" - }, - { - "index": 38, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 37, - "ref": "e39" - }, - { - "index": 39, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 38, - "ref": "e40" - }, - { - "index": 40, - "type": "android.widget.LinearLayout", - "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 39, - "ref": "e41" - }, - { - "index": 41, - "type": "android.widget.FrameLayout", - "identifier": "android:id/content", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 40, - "ref": "e42" - }, - { - "index": 42, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 41, - "ref": "e43" - }, - { - "index": 43, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 42, - "ref": "e44" - }, - { - "index": 44, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 43, - "ref": "e45" - }, - { - "index": 45, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 44, - "ref": "e46" - }, - { - "index": 46, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 156, - "width": 252, - "height": 252 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 45, - "ref": "e47" - }, - { - "index": 47, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1076, - "y": 204, - "width": 156, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 46, - "ref": "e48" - }, - { - "index": 48, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1082, - "y": 210, - "width": 144, - "height": 144 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 47, - "ref": "e49" - }, - { - "index": 49, - "type": "android.widget.ImageView", - "label": "Tools", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1115, - "y": 243, - "width": 78, - "height": 78 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 48, - "ref": "e50" - }, - { - "index": 50, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 42, - "ref": "e51" - }, - { - "index": 51, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 50, - "ref": "e52" - }, - { - "index": 52, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 51, - "ref": "e53" - }, - { - "index": 53, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 50, - "ref": "e54" - }, - { - "index": 54, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 53, - "ref": "e55" - }, - { - "index": 55, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 53, - "ref": "e56" - }, - { - "index": 56, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 55, - "ref": "e57" - }, - { - "index": 57, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 56, - "ref": "e58" - }, - { - "index": 58, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 57, - "ref": "e59" - }, - { - "index": 59, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 12, - "parentIndex": 58, - "ref": "e60" - }, - { - "index": 60, - "type": "android.widget.Button", - "label": "Close drawer", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 13, - "parentIndex": 59, - "ref": "e61" - }, - { - "index": 61, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 58, - "ref": "e62" - }, - { - "index": 62, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 61, - "ref": "e63" - }, - { - "index": 63, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 62, - "ref": "e64" - }, - { - "index": 64, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 15, - "parentIndex": 63, - "ref": "e65" - }, - { - "index": 65, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 16, - "parentIndex": 64, - "ref": "e66" - }, - { - "index": 66, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 65, - "ref": "e67" - }, - { - "index": 67, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 17, - "parentIndex": 65, - "ref": "e68" - }, - { - "index": 68, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 18, - "parentIndex": 67, - "ref": "e69" - }, - { - "index": 69, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 19, - "parentIndex": 68, - "ref": "e70" - }, - { - "index": 70, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 20, - "parentIndex": 69, - "ref": "e71" - }, - { - "index": 71, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 70, - "ref": "e72" - }, - { - "index": 72, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 71, - "ref": "e73" - }, - { - "index": 73, - "type": "android.widget.Button", - "label": "Back", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 72, - "ref": "e74" - }, - { - "index": 74, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 73, - "ref": "e75" - }, - { - "index": 75, - "type": "android.widget.TextView", - "label": "󰁍", - "value": "󰁍", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 74, - "ref": "e76" - }, - { - "index": 76, - "type": "android.view.View", - "label": "Surface", - "value": "Surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 210, - "width": 1064, - "height": 84 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 71, - "ref": "e77" - }, - { - "index": 77, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 20, - "parentIndex": 69, - "hiddenContentBelow": true, - "ref": "e78" - }, - { - "index": 78, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 77, - "ref": "e79" - }, - { - "index": 79, - "type": "android.view.ViewGroup", - "identifier": "surface-elevated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 78, - "ref": "e80" - }, - { - "index": 80, - "type": "android.widget.TextView", - "label": "Elevated surface", - "value": "Elevated surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 79, - "ref": "e81" - }, - { - "index": 81, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 79, - "ref": "e82" - }, - { - "index": 82, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 81, - "ref": "e83" - }, - { - "index": 83, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 82, - "ref": "e84" - }, - { - "index": 84, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 26, - "parentIndex": 83, - "ref": "e85" - }, - { - "index": 85, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 480, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 82, - "ref": "e86" - }, - { - "index": 86, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 26, - "parentIndex": 85, - "ref": "e87" - }, - { - "index": 87, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 912, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 82, - "ref": "e88" - }, - { - "index": 88, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 26, - "parentIndex": 87, - "ref": "e89" - }, - { - "index": 89, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1344, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 82, - "ref": "e90" - }, - { - "index": 90, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1430, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 26, - "parentIndex": 89, - "ref": "e91" - }, - { - "index": 91, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1776, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 82, - "ref": "e92" - }, - { - "index": 92, - "type": "android.widget.TextView", - "label": "Elevation 4", - "value": "Elevation 4", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1862, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 26, - "parentIndex": 91, - "ref": "e93" - }, - { - "index": 93, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2208, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 82, - "ref": "e94" - }, - { - "index": 94, - "type": "android.widget.TextView", - "label": "Elevation 5", - "value": "Elevation 5", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2294, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 26, - "parentIndex": 93, - "ref": "e95" - }, - { - "index": 95, - "type": "android.view.ViewGroup", - "identifier": "surface-flat", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 78, - "ref": "e96" - }, - { - "index": 96, - "type": "android.widget.TextView", - "label": "Flat surface", - "value": "Flat surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 95, - "ref": "e97" - }, - { - "index": 97, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 95, - "ref": "e98" - }, - { - "index": 98, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 97, - "ref": "e99" - }, - { - "index": 99, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 98, - "ref": "e100" - }, - { - "index": 100, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 26, - "parentIndex": 99, - "ref": "e101" - }, - { - "index": 101, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 480, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 98, - "ref": "e102" - }, - { - "index": 102, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 26, - "parentIndex": 101, - "ref": "e103" - }, - { - "index": 103, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 912, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 98, - "ref": "e104" - }, - { - "index": 104, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 26, - "parentIndex": 103, - "ref": "e105" - }, - { - "index": 105, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1344, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 98, - "ref": "e106" - }, - { - "index": 106, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1430, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 26, - "parentIndex": 105, - "ref": "e107" - }, - { - "index": 107, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1776, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 98, - "ref": "e108" - }, - { - "index": 108, - "type": "android.widget.TextView", - "label": "Elevation 4", - "value": "Elevation 4", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1862, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 26, - "parentIndex": 107, - "ref": "e109" - }, - { - "index": 109, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2208, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 98, - "ref": "e110" - }, - { - "index": 110, - "type": "android.widget.TextView", - "label": "Elevation 5", - "value": "Elevation 5", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2294, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 26, - "parentIndex": 109, - "ref": "e111" - }, - { - "index": 111, - "type": "android.widget.TextView", - "label": "Animated elevation", - "value": "Animated elevation", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1752, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e112" - }, - { - "index": 112, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 1962, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e113" - }, - { - "index": 113, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 2118, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 112, - "ref": "e114" - }, - { - "index": 114, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e115" - }, - { - "index": 115, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 114, - "ref": "e116" - }, - { - "index": 116, - "type": "android.widget.TextView", - "label": "󰍴", - "value": "󰍴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 90, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 115, - "ref": "e117" - }, - { - "index": 117, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e118" - }, - { - "index": 118, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 117, - "ref": "e119" - }, - { - "index": 119, - "type": "android.widget.TextView", - "label": "󰐕", - "value": "󰐕", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 294, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 118, - "ref": "e120" - }, - { - "index": 120, - "type": "android.widget.TextView", - "label": "Layout", - "value": "Layout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2670, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e121" - }, - { - "index": 121, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2880, - "width": 1136, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e122" - }, - { - "index": 122, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e123" - }, - { - "index": 123, - "type": "android.widget.TextView", - "label": "Left", - "value": "Left", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 122, - "ref": "e124" - }, - { - "index": 124, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 661, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e125" - }, - { - "index": 125, - "type": "android.widget.TextView", - "label": "Right", - "value": "Right", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 661, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 124, - "ref": "e126" - }, - { - "index": 126, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 3063, - "width": 1136, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e127" - }, - { - "index": 127, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3096, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e128" - }, - { - "index": 128, - "type": "android.widget.TextView", - "label": "Top", - "value": "Top", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3339, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 127, - "ref": "e129" - }, - { - "index": 129, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3686, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e130" - }, - { - "index": 130, - "type": "android.widget.TextView", - "label": "Bottom", - "value": "Bottom", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3929, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 129, - "ref": "e131" - }, - { - "index": 131, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 18, - "parentIndex": 67, - "ref": "e132" - }, - { - "index": 132, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 57, - "ref": "e133" - }, - { - "index": 133, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 12, - "parentIndex": 132, - "ref": "e134" - }, - { - "index": 134, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2706 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 13, - "parentIndex": 133, - "ref": "e135" - }, - { - "index": 135, - "type": "android.widget.TextView", - "label": "Example items", - "value": "Example items", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 246, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e136" - }, - { - "index": 136, - "type": "android.widget.Button", - "label": "Inbox, 44", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 360, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e137" - }, - { - "index": 137, - "type": "android.widget.TextView", - "label": "󰚇", - "value": "󰚇", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 408, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e138" - }, - { - "index": 138, - "type": "android.widget.TextView", - "label": "Inbox", - "value": "Inbox", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 414, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e139" - }, - { - "index": 139, - "type": "android.widget.TextView", - "label": "44", - "value": "44", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 414, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e140" - }, - { - "index": 140, - "type": "android.widget.Button", - "label": "Starred", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 528, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e141" - }, - { - "index": 141, - "type": "android.widget.TextView", - "label": "󰓎", - "value": "󰓎", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 576, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e142" - }, - { - "index": 142, - "type": "android.widget.TextView", - "label": "Starred", - "value": "Starred", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 582, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e143" - }, - { - "index": 143, - "type": "android.widget.TextView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 603, - "width": 0, - "height": 18 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e144" - }, - { - "index": 144, - "type": "android.widget.Button", - "label": "Sent mail", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 696, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e145" - }, - { - "index": 145, - "type": "android.widget.TextView", - "label": "󰒊", - "value": "󰒊", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 744, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 144, - "ref": "e146" - }, - { - "index": 146, - "type": "android.widget.TextView", - "label": "Sent mail", - "value": "Sent mail", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 750, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 144, - "ref": "e147" - }, - { - "index": 147, - "type": "android.widget.Button", - "label": "Colored label", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 864, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e148" - }, - { - "index": 148, - "type": "android.widget.TextView", - "label": "󰏘", - "value": "󰏘", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 912, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 147, - "ref": "e149" - }, - { - "index": 149, - "type": "android.widget.TextView", - "label": "Colored label", - "value": "Colored label", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 918, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 147, - "ref": "e150" - }, - { - "index": 150, - "type": "android.widget.Button", - "label": "A very long title that will be truncated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1032, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e151" - }, - { - "index": 151, - "type": "android.widget.TextView", - "label": "󰆴", - "value": "󰆴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1080, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e152" - }, - { - "index": 152, - "type": "android.widget.TextView", - "label": "A very long title that will be truncated", - "value": "A very long title that will be truncated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1086, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e153" - }, - { - "index": 153, - "type": "android.widget.TextView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1107, - "width": 0, - "height": 18 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e154" - }, - { - "index": 154, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1212, - "width": 0, - "height": 3 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e155" - }, - { - "index": 155, - "type": "android.widget.TextView", - "label": "Preferences", - "value": "Preferences", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1281, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e156" - }, - { - "index": 156, - "type": "android.view.ViewGroup", - "label": "Use Dynamic Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1395, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e157" - }, - { - "index": 157, - "type": "android.widget.TextView", - "label": "Use Dynamic Theme", - "value": "Use Dynamic Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1449, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 156, - "ref": "e158" - }, - { - "index": 158, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 156, - "ref": "e159" - }, - { - "index": 159, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e160" - }, - { - "index": 160, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 158, - "ref": "e161" - }, - { - "index": 161, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1431, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 160, - "ref": "e162" - }, - { - "index": 162, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e163" - }, - { - "index": 163, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1443, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e164" - }, - { - "index": 164, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1443, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 163, - "ref": "e165" - }, - { - "index": 165, - "type": "android.view.ViewGroup", - "label": "Dark Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1563, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e166" - }, - { - "index": 166, - "type": "android.widget.TextView", - "label": "Dark Theme", - "value": "Dark Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1617, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 165, - "ref": "e167" - }, - { - "index": 167, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 165, - "ref": "e168" - }, - { - "index": 168, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e169" - }, - { - "index": 169, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 167, - "ref": "e170" - }, - { - "index": 170, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1599, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 169, - "ref": "e171" - }, - { - "index": 171, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1599, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 169, - "ref": "e172" - }, - { - "index": 172, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e173" - }, - { - "index": 173, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1623, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e174" - }, - { - "index": 174, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1623, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 173, - "ref": "e175" - }, - { - "index": 175, - "type": "android.view.ViewGroup", - "label": "RTL", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1731, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e176" - }, - { - "index": 176, - "type": "android.widget.TextView", - "label": "RTL", - "value": "RTL", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1785, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 175, - "ref": "e177" - }, - { - "index": 177, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 175, - "ref": "e178" - }, - { - "index": 178, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e179" - }, - { - "index": 179, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 177, - "ref": "e180" - }, - { - "index": 180, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1767, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 179, - "ref": "e181" - }, - { - "index": 181, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1767, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 179, - "ref": "e182" - }, - { - "index": 182, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e183" - }, - { - "index": 183, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1791, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e184" - }, - { - "index": 184, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1791, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 183, - "ref": "e185" - }, - { - "index": 185, - "type": "android.view.ViewGroup", - "label": "Collapsed drawer *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1899, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e186" - }, - { - "index": 186, - "type": "android.widget.TextView", - "label": "Collapsed drawer *", - "value": "Collapsed drawer *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1953, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 185, - "ref": "e187" - }, - { - "index": 187, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 185, - "ref": "e188" - }, - { - "index": 188, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e189" - }, - { - "index": 189, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 187, - "ref": "e190" - }, - { - "index": 190, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1935, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 189, - "ref": "e191" - }, - { - "index": 191, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1935, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 189, - "ref": "e192" - }, - { - "index": 192, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e193" - }, - { - "index": 193, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1959, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e194" - }, - { - "index": 194, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1959, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 193, - "ref": "e195" - }, - { - "index": 195, - "type": "android.view.ViewGroup", - "label": "Custom font *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2067, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e196" - }, - { - "index": 196, - "type": "android.widget.TextView", - "label": "Custom font *", - "value": "Custom font *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2121, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 195, - "ref": "e197" - }, - { - "index": 197, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 195, - "ref": "e198" - }, - { - "index": 198, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e199" - }, - { - "index": 199, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 197, - "ref": "e200" - }, - { - "index": 200, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2103, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 199, - "ref": "e201" - }, - { - "index": 201, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2103, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 199, - "ref": "e202" - }, - { - "index": 202, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e203" - }, - { - "index": 203, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2127, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e204" - }, - { - "index": 204, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2127, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 203, - "ref": "e205" - }, - { - "index": 205, - "type": "android.view.ViewGroup", - "label": "Ripple effect *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2235, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e206" - }, - { - "index": 206, - "type": "android.widget.TextView", - "label": "Ripple effect *", - "value": "Ripple effect *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2289, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 205, - "ref": "e207" - }, - { - "index": 207, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 205, - "ref": "e208" - }, - { - "index": 208, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e209" - }, - { - "index": 209, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 207, - "ref": "e210" - }, - { - "index": 210, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2271, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 209, - "ref": "e211" - }, - { - "index": 211, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e212" - }, - { - "index": 212, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2283, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e213" - }, - { - "index": 213, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2283, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 212, - "ref": "e214" - }, - { - "index": 214, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2415, - "width": 0, - "height": 3 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e215" - }, - { - "index": 215, - "type": "android.widget.TextView", - "label": "* - optional example toggles", - "value": "* - optional example toggles", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2448, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e216" - }, - { - "index": 216, - "type": "android.widget.TextView", - "label": "React Native Paper Version 6.0.0-alpha.0", - "value": "React Native Paper Version 6.0.0-alpha.0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2532, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e217" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 217, - "totalNodeCount": 217, - "reasons": [] - }, - "androidSnapshot": { - "backend": "android-helper", - "helperVersion": "0.21.0", - "helperApiVersion": "2", - "helperTransport": "persistent-session", - "helperSessionReused": true, - "installReason": "current", - "waitForIdleTimeoutMs": 500, - "waitForIdleQuietMs": 100, - "timeoutMs": 2000, - "maxDepth": 128, - "maxNodes": 5000, - "rootPresent": true, - "captureMode": "interactive-windows", - "windowCount": 2, - "nodeCount": 217, - "helperTruncated": false, - "elapsedMs": 76 - }, - "snapshotQuality": { - "state": "healthy", - "backend": "android-helper" - }, - "snapshotDiagnostics": { - "stats": { - "count": 102, - "p50Ms": 50, - "p95Ms": 206, - "maxMs": 609, - "slowThresholdMs": 1500, - "platform": "android", - "backends": { - "android": 102 - } - } - }, - "refsGeneration": 835370 - } -} diff --git a/example/visual/evidence/a11y/03-testid-only-and-crop.json b/example/visual/evidence/a11y/03-testid-only-and-crop.json deleted file mode 100644 index 0524c24d24..0000000000 --- a/example/visual/evidence/a11y/03-testid-only-and-crop.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/a11y/03-no-accessible-and.png", - "width": 1280, - "height": 642 - } -} diff --git a/example/visual/evidence/a11y/03-testid-only-and-snapshot.json b/example/visual/evidence/a11y/03-testid-only-and-snapshot.json deleted file mode 100644 index b5eb9164e9..0000000000 --- a/example/visual/evidence/a11y/03-testid-only-and-snapshot.json +++ /dev/null @@ -1,4341 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e1" - }, - { - "index": 1, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_launch_animation_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e2" - }, - { - "index": 2, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e3" - }, - { - "index": 3, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 2, - "ref": "e4" - }, - { - "index": 4, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 3, - "ref": "e5" - }, - { - "index": 5, - "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 4, - "ref": "e6" - }, - { - "index": 6, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 5, - "ref": "e7" - }, - { - "index": 7, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_contents", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1220, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 6, - "ref": "e8" - }, - { - "index": 8, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 525, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e9" - }, - { - "index": 9, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_content", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 196, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 8, - "ref": "e10" - }, - { - "index": 10, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_start_side_except_heads_up", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 0, - "width": 196, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 9, - "ref": "e11" - }, - { - "index": 11, - "type": "android.widget.TextView", - "label": "3:12", - "value": "3:12", - "identifier": "com.android.systemui:id/clock", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 45, - "width": 130, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 10, - "ref": "e12" - }, - { - "index": 12, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/start_side_notif_and_chip_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 10, - "ref": "e13" - }, - { - "index": 13, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/notification_icon_area", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 12, - "ref": "e14" - }, - { - "index": 14, - "type": "android.view.ViewGroup", - "identifier": "com.android.systemui:id/notificationIcons", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 13, - "ref": "e15" - }, - { - "index": 15, - "type": "android.widget.ImageView", - "label": "Security & privacy notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 14, - "ref": "e16" - }, - { - "index": 16, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 0, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 10, - "parentIndex": 10, - "ref": "e17" - }, - { - "index": 17, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 178, - "y": 0, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 16, - "ref": "e18" - }, - { - "index": 18, - "type": "android.view.View", - "identifier": "com.android.systemui:id/cutout_space_view", - "bundleId": "com.android.systemui", - "rect": { - "x": 573, - "y": 0, - "width": 109, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e19" - }, - { - "index": 19, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/status_bar_end_side_container", - "bundleId": "com.android.systemui", - "rect": { - "x": 682, - "y": 0, - "width": 526, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 7, - "ref": "e20" - }, - { - "index": 20, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/status_bar_end_side_content", - "bundleId": "com.android.systemui", - "rect": { - "x": 963, - "y": 0, - "width": 245, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 19, - "ref": "e21" - }, - { - "index": 21, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/system_icons", - "bundleId": "com.android.systemui", - "rect": { - "x": 963, - "y": 45, - "width": 245, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 20, - "ref": "e22" - }, - { - "index": 22, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/statusIcons", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 144, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e23" - }, - { - "index": 23, - "type": "android.widget.FrameLayout", - "label": "T-Mobile, one bar.", - "identifier": "com.android.systemui:id/mobile_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 69, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e24" - }, - { - "index": 24, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/mobile_group", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 45, - "width": 51, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 23, - "ref": "e25" - }, - { - "index": 25, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 24, - "ref": "e26" - }, - { - "index": 26, - "type": "android.widget.ImageView", - "identifier": "com.android.systemui:id/mobile_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 25, - "ref": "e27" - }, - { - "index": 27, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 78, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 22, - "ref": "e28" - }, - { - "index": 28, - "type": "android.widget.FrameLayout", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 78, - "width": 0, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 22, - "ref": "e29" - }, - { - "index": 29, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/wifi_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 1041, - "y": 45, - "width": 66, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e30" - }, - { - "index": 30, - "type": "android.widget.LinearLayout", - "identifier": "com.android.systemui:id/wifi_group", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 45, - "width": 48, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 29, - "ref": "e31" - }, - { - "index": 31, - "type": "android.widget.FrameLayout", - "identifier": "com.android.systemui:id/wifi_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 30, - "ref": "e32" - }, - { - "index": 32, - "type": "android.widget.ImageView", - "label": "Wifi signal full.", - "identifier": "com.android.systemui:id/wifi_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 31, - "ref": "e33" - }, - { - "index": 33, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e34" - }, - { - "index": 34, - "type": "android.view.View", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 33, - "ref": "e35" - }, - { - "index": 35, - "type": "android.view.View", - "identifier": "com.android.systemui:id/battery", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 34, - "ref": "e36" - }, - { - "index": 36, - "type": "android.view.View", - "label": "Battery 100 percent.", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 72, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 35, - "ref": "e37" - }, - { - "index": 37, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e38" - }, - { - "index": 38, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 37, - "ref": "e39" - }, - { - "index": 39, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 38, - "ref": "e40" - }, - { - "index": 40, - "type": "android.widget.LinearLayout", - "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 39, - "ref": "e41" - }, - { - "index": 41, - "type": "android.widget.FrameLayout", - "identifier": "android:id/content", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 40, - "ref": "e42" - }, - { - "index": 42, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 41, - "ref": "e43" - }, - { - "index": 43, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 42, - "ref": "e44" - }, - { - "index": 44, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 43, - "ref": "e45" - }, - { - "index": 45, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 44, - "ref": "e46" - }, - { - "index": 46, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 156, - "width": 252, - "height": 252 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 45, - "ref": "e47" - }, - { - "index": 47, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1076, - "y": 204, - "width": 156, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 46, - "ref": "e48" - }, - { - "index": 48, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1082, - "y": 210, - "width": 144, - "height": 144 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 47, - "ref": "e49" - }, - { - "index": 49, - "type": "android.widget.ImageView", - "label": "Tools", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1115, - "y": 243, - "width": 78, - "height": 78 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 48, - "ref": "e50" - }, - { - "index": 50, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 42, - "ref": "e51" - }, - { - "index": 51, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 50, - "ref": "e52" - }, - { - "index": 52, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 51, - "ref": "e53" - }, - { - "index": 53, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 50, - "ref": "e54" - }, - { - "index": 54, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 53, - "ref": "e55" - }, - { - "index": 55, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 53, - "ref": "e56" - }, - { - "index": 56, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 55, - "ref": "e57" - }, - { - "index": 57, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 56, - "ref": "e58" - }, - { - "index": 58, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 57, - "ref": "e59" - }, - { - "index": 59, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 12, - "parentIndex": 58, - "ref": "e60" - }, - { - "index": 60, - "type": "android.widget.Button", - "label": "Close drawer", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 13, - "parentIndex": 59, - "ref": "e61" - }, - { - "index": 61, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 58, - "ref": "e62" - }, - { - "index": 62, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 61, - "ref": "e63" - }, - { - "index": 63, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 62, - "ref": "e64" - }, - { - "index": 64, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 15, - "parentIndex": 63, - "ref": "e65" - }, - { - "index": 65, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 16, - "parentIndex": 64, - "ref": "e66" - }, - { - "index": 66, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 65, - "ref": "e67" - }, - { - "index": 67, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 17, - "parentIndex": 65, - "ref": "e68" - }, - { - "index": 68, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 18, - "parentIndex": 67, - "ref": "e69" - }, - { - "index": 69, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 19, - "parentIndex": 68, - "ref": "e70" - }, - { - "index": 70, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 20, - "parentIndex": 69, - "ref": "e71" - }, - { - "index": 71, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 70, - "ref": "e72" - }, - { - "index": 72, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 71, - "ref": "e73" - }, - { - "index": 73, - "type": "android.widget.Button", - "label": "Back", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 72, - "ref": "e74" - }, - { - "index": 74, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 73, - "ref": "e75" - }, - { - "index": 75, - "type": "android.widget.TextView", - "label": "󰁍", - "value": "󰁍", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 74, - "ref": "e76" - }, - { - "index": 76, - "type": "android.view.View", - "label": "Surface", - "value": "Surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 210, - "width": 1064, - "height": 84 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 71, - "ref": "e77" - }, - { - "index": 77, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 20, - "parentIndex": 69, - "hiddenContentBelow": true, - "ref": "e78" - }, - { - "index": 78, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 77, - "ref": "e79" - }, - { - "index": 79, - "type": "android.view.ViewGroup", - "identifier": "surface-elevated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e80" - }, - { - "index": 80, - "type": "android.widget.TextView", - "label": "Elevated surface", - "value": "Elevated surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e81" - }, - { - "index": 81, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 78, - "ref": "e82" - }, - { - "index": 82, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 81, - "ref": "e83" - }, - { - "index": 83, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 82, - "ref": "e84" - }, - { - "index": 84, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 83, - "ref": "e85" - }, - { - "index": 85, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 480, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 82, - "ref": "e86" - }, - { - "index": 86, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 85, - "ref": "e87" - }, - { - "index": 87, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 912, - "y": 582, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 82, - "ref": "e88" - }, - { - "index": 88, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 87, - "ref": "e89" - }, - { - "index": 89, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1344, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 82, - "ref": "e90" - }, - { - "index": 90, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1430, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 89, - "ref": "e91" - }, - { - "index": 91, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1776, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 82, - "ref": "e92" - }, - { - "index": 92, - "type": "android.widget.TextView", - "label": "Elevation 4", - "value": "Elevation 4", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1862, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 91, - "ref": "e93" - }, - { - "index": 93, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2208, - "y": 582, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 82, - "ref": "e94" - }, - { - "index": 94, - "type": "android.widget.TextView", - "label": "Elevation 5", - "value": "Elevation 5", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2294, - "y": 738, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 93, - "ref": "e95" - }, - { - "index": 95, - "type": "android.view.ViewGroup", - "identifier": "surface-flat", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e96" - }, - { - "index": 96, - "type": "android.widget.TextView", - "label": "Flat surface", - "value": "Flat surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e97" - }, - { - "index": 97, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 78, - "ref": "e98" - }, - { - "index": 98, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 97, - "ref": "e99" - }, - { - "index": 99, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 98, - "ref": "e100" - }, - { - "index": 100, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 99, - "ref": "e101" - }, - { - "index": 101, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 480, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 98, - "ref": "e102" - }, - { - "index": 102, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 101, - "ref": "e103" - }, - { - "index": 103, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 912, - "y": 1272, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 98, - "ref": "e104" - }, - { - "index": 104, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 25, - "parentIndex": 103, - "ref": "e105" - }, - { - "index": 105, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1344, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 98, - "ref": "e106" - }, - { - "index": 106, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1430, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 105, - "ref": "e107" - }, - { - "index": 107, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1776, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 98, - "ref": "e108" - }, - { - "index": 108, - "type": "android.widget.TextView", - "label": "Elevation 4", - "value": "Elevation 4", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1862, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 107, - "ref": "e109" - }, - { - "index": 109, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2208, - "y": 1272, - "width": 0, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 24, - "parentIndex": 98, - "ref": "e110" - }, - { - "index": 110, - "type": "android.widget.TextView", - "label": "Elevation 5", - "value": "Elevation 5", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 2294, - "y": 1428, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 25, - "parentIndex": 109, - "ref": "e111" - }, - { - "index": 111, - "type": "android.widget.TextView", - "label": "Animated elevation", - "value": "Animated elevation", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1752, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e112" - }, - { - "index": 112, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 48, - "y": 1962, - "width": 360, - "height": 360 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e113" - }, - { - "index": 113, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 2118, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 112, - "ref": "e114" - }, - { - "index": 114, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e115" - }, - { - "index": 115, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 114, - "ref": "e116" - }, - { - "index": 116, - "type": "android.widget.TextView", - "label": "󰍴", - "value": "󰍴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 90, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 115, - "ref": "e117" - }, - { - "index": 117, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e118" - }, - { - "index": 118, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 117, - "ref": "e119" - }, - { - "index": 119, - "type": "android.widget.TextView", - "label": "󰐕", - "value": "󰐕", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 294, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 118, - "ref": "e120" - }, - { - "index": 120, - "type": "android.widget.TextView", - "label": "Layout", - "value": "Layout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2670, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 78, - "ref": "e121" - }, - { - "index": 121, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2880, - "width": 1136, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e122" - }, - { - "index": 122, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e123" - }, - { - "index": 123, - "type": "android.widget.TextView", - "label": "Left", - "value": "Left", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 122, - "ref": "e124" - }, - { - "index": 124, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 661, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e125" - }, - { - "index": 125, - "type": "android.widget.TextView", - "label": "Right", - "value": "Right", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 661, - "y": 2913, - "width": 514, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 124, - "ref": "e126" - }, - { - "index": 126, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 3063, - "width": 1136, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e127" - }, - { - "index": 127, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3096, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e128" - }, - { - "index": 128, - "type": "android.widget.TextView", - "label": "Top", - "value": "Top", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3339, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 127, - "ref": "e129" - }, - { - "index": 129, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3686, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 22, - "parentIndex": 78, - "ref": "e130" - }, - { - "index": 130, - "type": "android.widget.TextView", - "label": "Bottom", - "value": "Bottom", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 105, - "y": 3929, - "width": 1070, - "height": 0 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 23, - "parentIndex": 129, - "ref": "e131" - }, - { - "index": 131, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 18, - "parentIndex": 67, - "ref": "e132" - }, - { - "index": 132, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 11, - "parentIndex": 57, - "ref": "e133" - }, - { - "index": 133, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 12, - "parentIndex": 132, - "ref": "e134" - }, - { - "index": 134, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 0, - "height": 2706 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 13, - "parentIndex": 133, - "ref": "e135" - }, - { - "index": 135, - "type": "android.widget.TextView", - "label": "Example items", - "value": "Example items", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 246, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e136" - }, - { - "index": 136, - "type": "android.widget.Button", - "label": "Inbox, 44", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 360, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e137" - }, - { - "index": 137, - "type": "android.widget.TextView", - "label": "󰚇", - "value": "󰚇", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 408, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e138" - }, - { - "index": 138, - "type": "android.widget.TextView", - "label": "Inbox", - "value": "Inbox", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 414, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e139" - }, - { - "index": 139, - "type": "android.widget.TextView", - "label": "44", - "value": "44", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 414, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 136, - "ref": "e140" - }, - { - "index": 140, - "type": "android.widget.Button", - "label": "Starred", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 528, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e141" - }, - { - "index": 141, - "type": "android.widget.TextView", - "label": "󰓎", - "value": "󰓎", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 576, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e142" - }, - { - "index": 142, - "type": "android.widget.TextView", - "label": "Starred", - "value": "Starred", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 582, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e143" - }, - { - "index": 143, - "type": "android.widget.TextView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 603, - "width": 0, - "height": 18 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 140, - "ref": "e144" - }, - { - "index": 144, - "type": "android.widget.Button", - "label": "Sent mail", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 696, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e145" - }, - { - "index": 145, - "type": "android.widget.TextView", - "label": "󰒊", - "value": "󰒊", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 744, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 144, - "ref": "e146" - }, - { - "index": 146, - "type": "android.widget.TextView", - "label": "Sent mail", - "value": "Sent mail", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 750, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 144, - "ref": "e147" - }, - { - "index": 147, - "type": "android.widget.Button", - "label": "Colored label", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 864, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e148" - }, - { - "index": 148, - "type": "android.widget.TextView", - "label": "󰏘", - "value": "󰏘", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 912, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 147, - "ref": "e149" - }, - { - "index": 149, - "type": "android.widget.TextView", - "label": "Colored label", - "value": "Colored label", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 918, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 147, - "ref": "e150" - }, - { - "index": 150, - "type": "android.widget.Button", - "label": "A very long title that will be truncated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1032, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e151" - }, - { - "index": 151, - "type": "android.widget.TextView", - "label": "󰆴", - "value": "󰆴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1080, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e152" - }, - { - "index": 152, - "type": "android.widget.TextView", - "label": "A very long title that will be truncated", - "value": "A very long title that will be truncated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1086, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e153" - }, - { - "index": 153, - "type": "android.widget.TextView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1107, - "width": 0, - "height": 18 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 150, - "ref": "e154" - }, - { - "index": 154, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1212, - "width": 0, - "height": 3 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e155" - }, - { - "index": 155, - "type": "android.widget.TextView", - "label": "Preferences", - "value": "Preferences", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1281, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e156" - }, - { - "index": 156, - "type": "android.view.ViewGroup", - "label": "Use Dynamic Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1395, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e157" - }, - { - "index": 157, - "type": "android.widget.TextView", - "label": "Use Dynamic Theme", - "value": "Use Dynamic Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1449, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 156, - "ref": "e158" - }, - { - "index": 158, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 156, - "ref": "e159" - }, - { - "index": 159, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e160" - }, - { - "index": 160, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 158, - "ref": "e161" - }, - { - "index": 161, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1431, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 160, - "ref": "e162" - }, - { - "index": 162, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1419, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e163" - }, - { - "index": 163, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1443, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 158, - "ref": "e164" - }, - { - "index": 164, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1443, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 163, - "ref": "e165" - }, - { - "index": 165, - "type": "android.view.ViewGroup", - "label": "Dark Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1563, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e166" - }, - { - "index": 166, - "type": "android.widget.TextView", - "label": "Dark Theme", - "value": "Dark Theme", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1617, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 165, - "ref": "e167" - }, - { - "index": 167, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 165, - "ref": "e168" - }, - { - "index": 168, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e169" - }, - { - "index": 169, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 167, - "ref": "e170" - }, - { - "index": 170, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1599, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 169, - "ref": "e171" - }, - { - "index": 171, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1599, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 169, - "ref": "e172" - }, - { - "index": 172, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1587, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e173" - }, - { - "index": 173, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1623, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 167, - "ref": "e174" - }, - { - "index": 174, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1623, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 173, - "ref": "e175" - }, - { - "index": 175, - "type": "android.view.ViewGroup", - "label": "RTL", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1731, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e176" - }, - { - "index": 176, - "type": "android.widget.TextView", - "label": "RTL", - "value": "RTL", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1785, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 175, - "ref": "e177" - }, - { - "index": 177, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 175, - "ref": "e178" - }, - { - "index": 178, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e179" - }, - { - "index": 179, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 177, - "ref": "e180" - }, - { - "index": 180, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1767, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 179, - "ref": "e181" - }, - { - "index": 181, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1767, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 179, - "ref": "e182" - }, - { - "index": 182, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1755, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e183" - }, - { - "index": 183, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1791, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 177, - "ref": "e184" - }, - { - "index": 184, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1791, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 183, - "ref": "e185" - }, - { - "index": 185, - "type": "android.view.ViewGroup", - "label": "Collapsed drawer *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1899, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e186" - }, - { - "index": 186, - "type": "android.widget.TextView", - "label": "Collapsed drawer *", - "value": "Collapsed drawer *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1953, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 185, - "ref": "e187" - }, - { - "index": 187, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 185, - "ref": "e188" - }, - { - "index": 188, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e189" - }, - { - "index": 189, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 187, - "ref": "e190" - }, - { - "index": 190, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1935, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 189, - "ref": "e191" - }, - { - "index": 191, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1935, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 189, - "ref": "e192" - }, - { - "index": 192, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1923, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e193" - }, - { - "index": 193, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1959, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 187, - "ref": "e194" - }, - { - "index": 194, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1959, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 193, - "ref": "e195" - }, - { - "index": 195, - "type": "android.view.ViewGroup", - "label": "Custom font *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2067, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e196" - }, - { - "index": 196, - "type": "android.widget.TextView", - "label": "Custom font *", - "value": "Custom font *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2121, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 195, - "ref": "e197" - }, - { - "index": 197, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 195, - "ref": "e198" - }, - { - "index": 198, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e199" - }, - { - "index": 199, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 197, - "ref": "e200" - }, - { - "index": 200, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2103, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 199, - "ref": "e201" - }, - { - "index": 201, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2103, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 199, - "ref": "e202" - }, - { - "index": 202, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2091, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e203" - }, - { - "index": 203, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2127, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 197, - "ref": "e204" - }, - { - "index": 204, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2127, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 203, - "ref": "e205" - }, - { - "index": 205, - "type": "android.view.ViewGroup", - "label": "Ripple effect *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2235, - "width": 0, - "height": 168 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 14, - "parentIndex": 134, - "ref": "e206" - }, - { - "index": 206, - "type": "android.widget.TextView", - "label": "Ripple effect *", - "value": "Ripple effect *", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2289, - "width": 0, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 205, - "ref": "e207" - }, - { - "index": 207, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 15, - "parentIndex": 205, - "ref": "e208" - }, - { - "index": 208, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e209" - }, - { - "index": 209, - "type": "android.widget.Switch", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "hittable": true, - "depth": 16, - "parentIndex": 207, - "ref": "e210" - }, - { - "index": 210, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2271, - "width": 0, - "height": 96 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 209, - "ref": "e211" - }, - { - "index": 211, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2259, - "width": 0, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e212" - }, - { - "index": 212, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2283, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 16, - "parentIndex": 207, - "ref": "e213" - }, - { - "index": 213, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2283, - "width": 0, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 17, - "parentIndex": 212, - "ref": "e214" - }, - { - "index": 214, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2415, - "width": 0, - "height": 3 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e215" - }, - { - "index": 215, - "type": "android.widget.TextView", - "label": "* - optional example toggles", - "value": "* - optional example toggles", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2448, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e216" - }, - { - "index": 216, - "type": "android.widget.TextView", - "label": "React Native Paper Version 6.0.0-alpha.0", - "value": "React Native Paper Version 6.0.0-alpha.0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2532, - "width": 0, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": false, - "depth": 14, - "parentIndex": 134, - "ref": "e217" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 217, - "totalNodeCount": 217, - "reasons": [] - }, - "androidSnapshot": { - "backend": "android-helper", - "helperVersion": "0.21.0", - "helperApiVersion": "2", - "helperTransport": "persistent-session", - "helperSessionReused": true, - "installReason": "current", - "waitForIdleTimeoutMs": 500, - "waitForIdleQuietMs": 100, - "timeoutMs": 2000, - "maxDepth": 128, - "maxNodes": 5000, - "rootPresent": true, - "captureMode": "interactive-windows", - "windowCount": 2, - "nodeCount": 217, - "helperTruncated": false, - "elapsedMs": 100 - }, - "snapshotQuality": { - "state": "healthy", - "backend": "android-helper" - }, - "snapshotDiagnostics": { - "stats": { - "count": 103, - "p50Ms": 52, - "p95Ms": 206, - "maxMs": 609, - "slowThresholdMs": 1500, - "platform": "android", - "backends": { - "android": 103 - } - } - }, - "refsGeneration": 835371 - } -} diff --git a/example/visual/evidence/a11y/03-testid-only-ios-crop.json b/example/visual/evidence/a11y/03-testid-only-ios-crop.json deleted file mode 100644 index b2fee57b63..0000000000 --- a/example/visual/evidence/a11y/03-testid-only-ios-crop.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/a11y/03-no-accessible-ios.png", - "width": 1206, - "height": 642, - "logicalWidth": 402, - "logicalHeight": 214, - "pixelDensity": 3 - } -} diff --git a/example/visual/evidence/a11y/03-testid-only-ios-snapshot.json b/example/visual/evidence/a11y/03-testid-only-ios-snapshot.json deleted file mode 100644 index b96669cca7..0000000000 --- a/example/visual/evidence/a11y/03-testid-only-ios-snapshot.json +++ /dev/null @@ -1,2912 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "Application", - "role": "UIApplication", - "label": "React Native Paper Example", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 0, - "pid": 37870, - "ref": "e1" - }, - { - "index": 1, - "parentIndex": 0, - "type": "Window", - "role": "UIWindow", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 1, - "pid": 37870, - "ref": "e2" - }, - { - "index": 2, - "parentIndex": 1, - "type": "Other", - "role": "UITransitionView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 2, - "pid": 37870, - "ref": "e3" - }, - { - "index": 3, - "parentIndex": 2, - "type": "Other", - "role": "UIDropShadowView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 3, - "pid": 37870, - "ref": "e4" - }, - { - "index": 4, - "parentIndex": 3, - "type": "Other", - "role": "_TtC13EXDevLauncherP33_867A144D7C8F5D750D0BFA9E58EDAFE322DevLauncherWrapperView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 4, - "pid": 37870, - "ref": "e5" - }, - { - "index": 5, - "parentIndex": 4, - "type": "Other", - "role": "RCTSurfaceHostingProxyRootView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 5, - "pid": 37870, - "ref": "e6" - }, - { - "index": 6, - "parentIndex": 5, - "type": "Other", - "role": "RCTSurfaceView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 6, - "pid": 37870, - "ref": "e7" - }, - { - "index": 7, - "parentIndex": 6, - "type": "Other", - "role": "RCTRootComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 7, - "pid": 37870, - "ref": "e8" - }, - { - "index": 8, - "parentIndex": 7, - "type": "Other", - "role": "RNCSafeAreaProviderComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 8, - "pid": 37870, - "ref": "e9" - }, - { - "index": 9, - "parentIndex": 8, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e10" - }, - { - "index": 10, - "parentIndex": 9, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 10, - "pid": 37870, - "ref": "e11" - }, - { - "index": 11, - "parentIndex": 10, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 11, - "pid": 37870, - "ref": "e12" - }, - { - "index": 12, - "parentIndex": 11, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 12, - "pid": 37870, - "ref": "e13" - }, - { - "index": 13, - "parentIndex": 12, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 874 - }, - "depth": 13, - "pid": 37870, - "ref": "e14" - }, - { - "index": 14, - "parentIndex": 13, - "type": "Other", - "role": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 770 - }, - "depth": 14, - "pid": 37870, - "ref": "e15" - }, - { - "index": 15, - "parentIndex": 14, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -346, - "y": 0, - "width": 346, - "height": 770 - }, - "depth": 15, - "pid": 37870, - "ref": "e16" - }, - { - "index": 16, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Example items", - "rect": { - "x": -306, - "y": 30, - "width": 294, - "height": 20 - }, - "depth": 16, - "pid": 37870, - "ref": "e17" - }, - { - "index": 17, - "parentIndex": 16, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Example items", - "rect": { - "x": -306, - "y": 30, - "width": 294, - "height": 20 - }, - "depth": 17, - "pid": 37870, - "ref": "e18" - }, - { - "index": 18, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Inbox, 44", - "rect": { - "x": -322, - "y": 68, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e19" - }, - { - "index": 19, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Starred", - "rect": { - "x": -322, - "y": 124, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e20" - }, - { - "index": 20, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Sent mail", - "rect": { - "x": -322, - "y": 180, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e21" - }, - { - "index": 21, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Colored label", - "rect": { - "x": -322, - "y": 236, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e22" - }, - { - "index": 22, - "parentIndex": 15, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "A very long title that will be truncated", - "rect": { - "x": -322, - "y": 292, - "width": 298, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e23" - }, - { - "index": 23, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -318, - "y": 352, - "width": 290, - "height": 1 - }, - "depth": 16, - "pid": 37870, - "ref": "e24" - }, - { - "index": 24, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Preferences", - "rect": { - "x": -306, - "y": 375, - "width": 294, - "height": 20 - }, - "depth": 16, - "pid": 37870, - "ref": "e25" - }, - { - "index": 25, - "parentIndex": 24, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Preferences", - "rect": { - "x": -306, - "y": 375, - "width": 294, - "height": 20 - }, - "depth": 17, - "pid": 37870, - "ref": "e26" - }, - { - "index": 26, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Dark Theme", - "rect": { - "x": -334, - "y": 413, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e27" - }, - { - "index": 27, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "RTL", - "rect": { - "x": -334, - "y": 469, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e28" - }, - { - "index": 28, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Collapsed drawer *", - "rect": { - "x": -334, - "y": 525, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e29" - }, - { - "index": 29, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Custom font *", - "rect": { - "x": -334, - "y": 581, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e30" - }, - { - "index": 30, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Highlight effect *", - "rect": { - "x": -334, - "y": 637, - "width": 322, - "height": 56 - }, - "depth": 16, - "pid": 37870, - "ref": "e31" - }, - { - "index": 31, - "parentIndex": 15, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": -318, - "y": 697, - "width": 290, - "height": 1 - }, - "depth": 16, - "pid": 37870, - "ref": "e32" - }, - { - "index": 32, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "* - optional example toggles", - "rect": { - "x": -310, - "y": 708, - "width": 274, - "height": 16 - }, - "depth": 16, - "pid": 37870, - "ref": "e33" - }, - { - "index": 33, - "parentIndex": 32, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "* - optional example toggles", - "rect": { - "x": -310, - "y": 708, - "width": 274, - "height": 16 - }, - "depth": 17, - "pid": 37870, - "ref": "e34" - }, - { - "index": 34, - "parentIndex": 15, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "React Native Paper Version 6.0.0-alpha.0", - "rect": { - "x": -310, - "y": 736, - "width": 274, - "height": 16 - }, - "depth": 16, - "pid": 37870, - "ref": "e35" - }, - { - "index": 35, - "parentIndex": 34, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "React Native Paper Version 6.0.0-alpha.0", - "rect": { - "x": -310, - "y": 736, - "width": 274, - "height": 16 - }, - "depth": 17, - "pid": 37870, - "ref": "e36" - }, - { - "index": 36, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -33, - "y": 62, - "width": 30, - "height": 778 - }, - "depth": 14, - "pid": 37870, - "ref": "e37" - }, - { - "index": 37, - "parentIndex": 36, - "type": "Other", - "role": "UIView", - "rect": { - "x": -6, - "y": 169, - "width": 3, - "height": 668 - }, - "depth": 15, - "pid": 37870, - "ref": "e38" - }, - { - "index": 38, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -346, - "y": 807, - "width": 346, - "height": 30 - }, - "depth": 14, - "pid": 37870, - "ref": "e39" - }, - { - "index": 39, - "parentIndex": 38, - "type": "Other", - "role": "UIView", - "rect": { - "x": -343, - "y": 834, - "width": 340, - "height": 3 - }, - "depth": 15, - "pid": 37870, - "ref": "e40" - }, - { - "index": 40, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -33, - "y": 62, - "width": 30, - "height": 778 - }, - "depth": 14, - "pid": 37870, - "ref": "e41" - }, - { - "index": 41, - "parentIndex": 40, - "type": "Other", - "role": "UIView", - "rect": { - "x": -6, - "y": 169, - "width": 3, - "height": 668 - }, - "depth": 15, - "pid": 37870, - "ref": "e42" - }, - { - "index": 42, - "parentIndex": 13, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": -346, - "y": 807, - "width": 346, - "height": 30 - }, - "depth": 14, - "pid": 37870, - "ref": "e43" - }, - { - "index": 43, - "parentIndex": 42, - "type": "Other", - "role": "UIView", - "rect": { - "x": -343, - "y": 834, - "width": 340, - "height": 3 - }, - "depth": 15, - "pid": 37870, - "ref": "e44" - }, - { - "index": 44, - "parentIndex": 10, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 11, - "pid": 37870, - "ref": "e45" - }, - { - "index": 45, - "parentIndex": 44, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 12, - "pid": 37870, - "ref": "e46" - }, - { - "index": 46, - "parentIndex": 45, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 13, - "pid": 37870, - "ref": "e47" - }, - { - "index": 47, - "parentIndex": 46, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 14, - "pid": 37870, - "ref": "e48" - }, - { - "index": 48, - "parentIndex": 47, - "type": "Other", - "role": "RNSScreenStackView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 15, - "pid": 37870, - "ref": "e49" - }, - { - "index": 49, - "parentIndex": 48, - "type": "Other", - "role": "UILayoutContainerView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 16, - "pid": 37870, - "ref": "e50" - }, - { - "index": 50, - "parentIndex": 49, - "type": "Other", - "role": "UINavigationTransitionView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 17, - "pid": 37870, - "ref": "e51" - }, - { - "index": 51, - "parentIndex": 50, - "type": "Other", - "role": "UIViewControllerWrapperView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 18, - "pid": 37870, - "ref": "e52" - }, - { - "index": 52, - "parentIndex": 51, - "type": "Other", - "role": "RNSScreenView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 19, - "pid": 37870, - "ref": "e53" - }, - { - "index": 53, - "parentIndex": 52, - "type": "Other", - "role": "RNSScreenContentWrapper", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 20, - "pid": 37870, - "ref": "e54" - }, - { - "index": 54, - "parentIndex": 53, - "type": "Other", - "role": "RNSSafeAreaViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 21, - "pid": 37870, - "ref": "e55" - }, - { - "index": 55, - "parentIndex": 54, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 22, - "pid": 37870, - "ref": "e56" - }, - { - "index": 56, - "parentIndex": 55, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 23, - "pid": 37870, - "ref": "e57" - }, - { - "index": 57, - "parentIndex": 56, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 24, - "pid": 37870, - "ref": "e58" - }, - { - "index": 58, - "parentIndex": 57, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 126 - }, - "depth": 25, - "pid": 37870, - "ref": "e59" - }, - { - "index": 59, - "parentIndex": 57, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 25, - "pid": 37870, - "ref": "e60" - }, - { - "index": 60, - "parentIndex": 59, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Back", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 26, - "pid": 37870, - "ref": "e61" - }, - { - "index": 61, - "parentIndex": 57, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 25, - "pid": 37870, - "ref": "e62" - }, - { - "index": 62, - "parentIndex": 61, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 26, - "pid": 37870, - "ref": "e63" - }, - { - "index": 63, - "parentIndex": 55, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 23, - "pid": 37870, - "ref": "e64" - }, - { - "index": 64, - "parentIndex": 63, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 24, - "pid": 37870, - "ref": "e65" - }, - { - "index": 65, - "parentIndex": 64, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 1435 - }, - "depth": 25, - "pid": 37870, - "ref": "e66" - }, - { - "index": 66, - "parentIndex": 65, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 1435 - }, - "depth": 26, - "pid": 37870, - "ref": "e67" - }, - { - "index": 67, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevated surface", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e68" - }, - { - "index": 68, - "parentIndex": 67, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevated surface", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e69" - }, - { - "index": 69, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "identifier": "surface-elevated", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 214 - }, - "depth": 27, - "pid": 37870, - "ref": "e70" - }, - { - "index": 70, - "parentIndex": 66, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 180, - "width": 402, - "height": 168 - }, - "depth": 27, - "pid": 37870, - "ref": "e71" - }, - { - "index": 71, - "parentIndex": 70, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 180, - "width": 402, - "height": 168 - }, - "depth": 28, - "pid": 37870, - "ref": "e72" - }, - { - "index": 72, - "parentIndex": 71, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 180, - "width": 872, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e73" - }, - { - "index": 73, - "parentIndex": 72, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 180, - "width": 872, - "height": 168 - }, - "depth": 30, - "pid": 37870, - "ref": "e74" - }, - { - "index": 74, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e75" - }, - { - "index": 75, - "parentIndex": 74, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e76" - }, - { - "index": 76, - "parentIndex": 74, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 256, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e77" - }, - { - "index": 77, - "parentIndex": 76, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 256, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e78" - }, - { - "index": 78, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 160, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e79" - }, - { - "index": 79, - "parentIndex": 78, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 160, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e80" - }, - { - "index": 80, - "parentIndex": 78, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 256, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e81" - }, - { - "index": 81, - "parentIndex": 80, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 256, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e82" - }, - { - "index": 82, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 304, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e83" - }, - { - "index": 83, - "parentIndex": 82, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 304, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e84" - }, - { - "index": 84, - "parentIndex": 82, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 256, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e85" - }, - { - "index": 85, - "parentIndex": 84, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 256, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e86" - }, - { - "index": 86, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 448, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e87" - }, - { - "index": 87, - "parentIndex": 86, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 448, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e88" - }, - { - "index": 88, - "parentIndex": 86, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 256, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e89" - }, - { - "index": 89, - "parentIndex": 88, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 256, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e90" - }, - { - "index": 90, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 592, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e91" - }, - { - "index": 91, - "parentIndex": 90, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 592, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e92" - }, - { - "index": 92, - "parentIndex": 90, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 256, - "width": 67, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e93" - }, - { - "index": 93, - "parentIndex": 92, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 256, - "width": 67, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e94" - }, - { - "index": 94, - "parentIndex": 73, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 736, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e95" - }, - { - "index": 95, - "parentIndex": 94, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 736, - "y": 204, - "width": 120, - "height": 120 - }, - "depth": 32, - "pid": 37870, - "ref": "e96" - }, - { - "index": 96, - "parentIndex": 94, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 256, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e97" - }, - { - "index": 97, - "parentIndex": 96, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 256, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e98" - }, - { - "index": 98, - "parentIndex": 71, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 180, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e99" - }, - { - "index": 99, - "parentIndex": 98, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 183, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e100" - }, - { - "index": 100, - "parentIndex": 71, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 180, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e101" - }, - { - "index": 101, - "parentIndex": 100, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 183, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e102" - }, - { - "index": 102, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Flat surface", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e103" - }, - { - "index": 103, - "parentIndex": 102, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Flat surface", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e104" - }, - { - "index": 104, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "identifier": "surface-flat", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 214 - }, - "depth": 27, - "pid": 37870, - "ref": "e105" - }, - { - "index": 105, - "parentIndex": 66, - "type": "Other", - "role": "RCTScrollViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 410, - "width": 402, - "height": 168 - }, - "depth": 27, - "pid": 37870, - "ref": "e106" - }, - { - "index": 106, - "parentIndex": 105, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 410, - "width": 402, - "height": 168 - }, - "depth": 28, - "pid": 37870, - "ref": "e107" - }, - { - "index": 107, - "parentIndex": 106, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": 410, - "width": 872, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e108" - }, - { - "index": 108, - "parentIndex": 107, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 410, - "width": 872, - "height": 168 - }, - "depth": 30, - "pid": 37870, - "ref": "e109" - }, - { - "index": 109, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e110" - }, - { - "index": 110, - "parentIndex": 109, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 486, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e111" - }, - { - "index": 111, - "parentIndex": 110, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 486, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e112" - }, - { - "index": 112, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 160, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e113" - }, - { - "index": 113, - "parentIndex": 112, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 486, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e114" - }, - { - "index": 114, - "parentIndex": 113, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 486, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e115" - }, - { - "index": 115, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 304, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e116" - }, - { - "index": 116, - "parentIndex": 115, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 486, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e117" - }, - { - "index": 117, - "parentIndex": 116, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 486, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e118" - }, - { - "index": 118, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 448, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e119" - }, - { - "index": 119, - "parentIndex": 118, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 486, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e120" - }, - { - "index": 120, - "parentIndex": 119, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 474.6666660308838, - "y": 486, - "width": 66.66665649414062, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e121" - }, - { - "index": 121, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 592, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e122" - }, - { - "index": 122, - "parentIndex": 121, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 486, - "width": 67, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e123" - }, - { - "index": 123, - "parentIndex": 122, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 4", - "rect": { - "x": 618.3333339691162, - "y": 486, - "width": 67, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e124" - }, - { - "index": 124, - "parentIndex": 108, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 736, - "y": 434, - "width": 120, - "height": 120 - }, - "depth": 31, - "pid": 37870, - "ref": "e125" - }, - { - "index": 125, - "parentIndex": 124, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 486, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 32, - "pid": 37870, - "ref": "e126" - }, - { - "index": 126, - "parentIndex": 125, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 5", - "rect": { - "x": 762.6666660308838, - "y": 486, - "width": 66.6666259765625, - "height": 16 - }, - "depth": 33, - "pid": 37870, - "ref": "e127" - }, - { - "index": 127, - "parentIndex": 106, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 410, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e128" - }, - { - "index": 128, - "parentIndex": 127, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 413, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e129" - }, - { - "index": 129, - "parentIndex": 106, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 410, - "width": 30, - "height": 168 - }, - "depth": 29, - "pid": 37870, - "ref": "e130" - }, - { - "index": 130, - "parentIndex": 129, - "type": "Other", - "role": "UIView", - "rect": { - "x": 396, - "y": 413, - "width": 3, - "height": 162 - }, - "depth": 30, - "pid": 37870, - "ref": "e131" - }, - { - "index": 131, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e132" - }, - { - "index": 132, - "parentIndex": 131, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e133" - }, - { - "index": 133, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 664, - "width": 120, - "height": 120 - }, - "depth": 27, - "pid": 37870, - "ref": "e134" - }, - { - "index": 134, - "parentIndex": 133, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 16, - "y": 664, - "width": 120, - "height": 120 - }, - "depth": 28, - "pid": 37870, - "ref": "e135" - }, - { - "index": 135, - "parentIndex": 133, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 28, - "pid": 37870, - "ref": "e136" - }, - { - "index": 136, - "parentIndex": 135, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 29, - "pid": 37870, - "ref": "e137" - }, - { - "index": 137, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 27, - "pid": 37870, - "ref": "e138" - }, - { - "index": 138, - "parentIndex": 137, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 28, - "pid": 37870, - "ref": "e139" - }, - { - "index": 139, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 27, - "pid": 37870, - "ref": "e140" - }, - { - "index": 140, - "parentIndex": 139, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 28, - "pid": 37870, - "ref": "e141" - }, - { - "index": 141, - "parentIndex": 66, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Layout", - "rect": { - "x": 0, - "y": 900, - "width": 402, - "height": 46 - }, - "depth": 27, - "pid": 37870, - "ref": "e142" - }, - { - "index": 142, - "parentIndex": 141, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Layout", - "rect": { - "x": 0, - "y": 900, - "width": 402, - "height": 46 - }, - "depth": 28, - "pid": 37870, - "ref": "e143" - }, - { - "index": 143, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 24, - "y": 970, - "width": 354, - "height": 39 - }, - "depth": 27, - "pid": 37870, - "ref": "e144" - }, - { - "index": 144, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 27, - "pid": 37870, - "ref": "e145" - }, - { - "index": 145, - "parentIndex": 144, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e146" - }, - { - "index": 146, - "parentIndex": 144, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Left", - "rect": { - "x": 35, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e147" - }, - { - "index": 147, - "parentIndex": 146, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Left", - "rect": { - "x": 35, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e148" - }, - { - "index": 148, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 27, - "pid": 37870, - "ref": "e149" - }, - { - "index": 149, - "parentIndex": 148, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.3333282470703, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e150" - }, - { - "index": 150, - "parentIndex": 148, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Right", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e151" - }, - { - "index": 151, - "parentIndex": 150, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Right", - "rect": { - "x": 207.6666717529297, - "y": 981, - "width": 159.6666717529297, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e152" - }, - { - "index": 152, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 24, - "y": 1029, - "width": 354, - "height": 400 - }, - "depth": 27, - "pid": 37870, - "ref": "e153" - }, - { - "index": 153, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1040, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 27, - "pid": 37870, - "ref": "e154" - }, - { - "index": 154, - "parentIndex": 153, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1040, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 28, - "pid": 37870, - "ref": "e155" - }, - { - "index": 155, - "parentIndex": 153, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Top", - "rect": { - "x": 35, - "y": 1122, - "width": 332, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e156" - }, - { - "index": 156, - "parentIndex": 155, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Top", - "rect": { - "x": 35, - "y": 1122, - "width": 332, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e157" - }, - { - "index": 157, - "parentIndex": 66, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1236.6666717529297, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 27, - "pid": 37870, - "ref": "e158" - }, - { - "index": 158, - "parentIndex": 157, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 35, - "y": 1236.6666717529297, - "width": 332, - "height": 181.3333740234375 - }, - "depth": 28, - "pid": 37870, - "ref": "e159" - }, - { - "index": 159, - "parentIndex": 157, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Bottom", - "rect": { - "x": 35, - "y": 1318.6666717529297, - "width": 332, - "height": 17 - }, - "depth": 28, - "pid": 37870, - "ref": "e160" - }, - { - "index": 160, - "parentIndex": 159, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Bottom", - "rect": { - "x": 35, - "y": 1318.6666717529297, - "width": 332, - "height": 17 - }, - "depth": 29, - "pid": 37870, - "ref": "e161" - }, - { - "index": 161, - "parentIndex": 64, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 25, - "pid": 37870, - "ref": "e162" - }, - { - "index": 162, - "parentIndex": 161, - "type": "Other", - "role": "UIView", - "rect": { - "x": 65, - "y": 868, - "width": 272, - "height": 3 - }, - "depth": 26, - "pid": 37870, - "ref": "e163" - }, - { - "index": 163, - "parentIndex": 64, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 25, - "pid": 37870, - "ref": "e164" - }, - { - "index": 164, - "parentIndex": 163, - "type": "Other", - "role": "UIView", - "rect": { - "x": 65, - "y": 868, - "width": 272, - "height": 3 - }, - "depth": 26, - "pid": 37870, - "ref": "e165" - }, - { - "index": 165, - "parentIndex": 49, - "type": "Other", - "role": "_UIFloatingBarContainerView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 17, - "pid": 37870, - "ref": "e166" - }, - { - "index": 166, - "parentIndex": 165, - "type": "Other", - "role": "_TtGC5UIKitP10$186ecd81022FloatingBarHostingViewVS_20FloatingBarContainer_", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 18, - "pid": 37870, - "ref": "e167" - }, - { - "index": 167, - "parentIndex": 8, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e168" - }, - { - "index": 168, - "parentIndex": 7, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 8, - "pid": 37870, - "ref": "e169" - }, - { - "index": 169, - "parentIndex": 168, - "type": "Other", - "role": "RCTDebuggingOverlayComponentView", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 9, - "pid": 37870, - "ref": "e170" - }, - { - "index": 170, - "parentIndex": 169, - "type": "Other", - "role": "RCTDebuggingOverlay", - "subrole": "UIView", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 10, - "pid": 37870, - "ref": "e171" - }, - { - "index": 171, - "parentIndex": 0, - "type": "Window", - "role": "UIWindow", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 1, - "pid": 37870, - "ref": "e172" - }, - { - "index": 172, - "parentIndex": 171, - "type": "Other", - "role": "UITransitionView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 2, - "pid": 37870, - "ref": "e173" - }, - { - "index": 173, - "parentIndex": 172, - "type": "Other", - "role": "UIDropShadowView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 3, - "pid": 37870, - "ref": "e174" - }, - { - "index": 174, - "parentIndex": 173, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 4, - "pid": 37870, - "ref": "e175" - }, - { - "index": 175, - "parentIndex": 174, - "type": "Other", - "role": "UIView", - "rect": { - "x": 0, - "y": -92.33333333333333, - "width": 402, - "height": 92.33333333333333 - }, - "depth": 5, - "pid": 37870, - "ref": "e176" - }, - { - "index": 176, - "parentIndex": 175, - "type": "StaticText", - "role": "UILabel", - "label": "Refreshing...", - "rect": { - "x": 10, - "y": -22.33333333333333, - "width": 382, - "height": 14.333333333333329 - }, - "depth": 6, - "pid": 37870, - "ref": "e177" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 177, - "totalNodeCount": 177, - "reasons": [] - }, - "warnings": [ - "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." - ], - "snapshotDiagnostics": { - "stats": { - "count": 122, - "p50Ms": 65, - "p95Ms": 122, - "maxMs": 677, - "slowThresholdMs": 1500, - "platform": "ios", - "backends": { - "xctest": 122 - } - } - }, - "refsGeneration": 835196 - } -} diff --git a/example/visual/evidence/devclient-excerpt.json b/example/visual/evidence/devclient-excerpt.json new file mode 100644 index 0000000000..33a0499075 --- /dev/null +++ b/example/visual/evidence/devclient-excerpt.json @@ -0,0 +1,42 @@ +{ + "about": "Excerpts captured 2026-09-11 with `snapshot --force-full --json`; full files on branch poc/agent-device-visual-runner under example/visual/evidence/runner/.", + "ios_after_open_relaunch": { + "immediately": { + "total_nodes": 3, + "labels": [ + "React Native Paper Example", + null, + "Downloading 100%\u2026" + ] + }, + "six_seconds_later": { + "total_nodes": 77, + "dev_menu_close_node": [ + { + "type": "Button", + "role": "SwiftUI.AccessibilityNode", + "identifier": "xmark", + "label": "Close", + "rect": { + "x": 344.06965174129357, + "y": 401.5837479270315, + "width": 34.56716417910445, + "height": 34.56716417910445 + } + } + ] + } + }, + "android_devclient_floating_tools_button": [ + { + "type": "android.widget.ImageView", + "label": "Tools", + "rect": { + "x": 1115, + "y": 243, + "width": 78, + "height": 78 + } + } + ] +} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated-diff.png b/example/visual/evidence/diff-images/android-devclient-tools-button.png similarity index 100% rename from example/visual/evidence/runs/android/round3-pass-rerun/surface-example-elevated-diff.png rename to example/visual/evidence/diff-images/android-devclient-tools-button.png diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index 0c2707b4de..4e272baf3d 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -226,7 +226,7 @@ the plan's "one Node file on `createAgentDeviceClient()`" is supported in principle. In practice the package only exists in the `npx` cache (`~/.npm/_npx//node_modules/agent-device`); `import('agent-device')` from `example/` fails with `ERR_MODULE_NOT_FOUND`. Reaching the typed API therefore -means adding a devDependency, which the PoC forbade, so `example/visual/run.mjs` +means adding a devDependency, which the PoC forbade, so the runner (on branch `poc/agent-device-visual-runner`) spawns the CLI with `--json` instead. Worth a documented "run the client without installing" story (or a `npx agent-device init`-style scaffold), since the CLI path costs an `npx` resolution per command and loses all the result types. @@ -237,57 +237,52 @@ A plain `snapshot` only reports nodes that changed since the previous snapshot i the same session. When nothing changed it returns `data.nodes: []` with `success: true`, which is indistinguishable from "the screen is empty" or "the node is gone" for any caller that greps the result for an identifier. This cost -real time in the review round: the a11y JSONs -(`evidence/a11y/03-testid-only-ios-snapshot.json`, -`03-testid-only-and-snapshot.json`) look like the `testID` never reached the -tree, when in fact the ids were there the whole time — `--force-full` returns -them. Anything that asks "is this node on screen?" must pass `--force-full`, and -`run.mjs` does so in `onSurfaceScreen()` (via `--raw`) for exactly this reason. +real time in the review round: a plain snapshot after the `testID` edit looked +as if the id had never reached the tree, when it had been there the whole time — +`--force-full` returned it (the resulting trees are excerpted in +`evidence/a11y-excerpt.json`; full files on branch `poc/agent-device-visual-runner`). Anything that asks "is this node +on screen?" must pass `--force-full`; the runner on that branch does so for +exactly this reason. An empty diff-mode result would be much less of a trap if the payload said so — e.g. a `mode: "diff"` / `unchanged: true` field alongside the empty array. ## 14. `open --relaunch` restores the app's previous route -`example/visual/run.mjs` assumed a relaunch puts the example list back at the +The first scripted loop assumed a relaunch puts the example list back at the top, so it could scroll down a fixed number of rows to reach "Surface". It does not. The example app persists its navigation state in AsyncStorage (`PERSISTENCE_KEY = 'NAVIGATION_STATE'` in `example/src/index.tsx`), so after `open --relaunch` (iOS) or `am force-stop` + `open` (Android) the app comes back on whatever screen it was on. Reproduced on both platforms in this pass: -The runs that first showed the failure were hand-run against an earlier version -of `run.mjs` and their logs were not kept. The committed evidence is the fixed -script's own output when started from another example screen — -`evidence/runs/ios/fix-pass-from-other-screen/summary.json` and -`evidence/runs/android/fix-pass-from-other-screen/summary.json` — whose step log -reads `relaunching the app … not on the Surface screen — going back to the example -list … pressing "Back" … at the example list root`. If a relaunch reset the route, -the "not on the Surface screen" branch could never be reached from a relaunch; -it is, on both platforms. - -This is a `run.mjs` bug, not an agent-device bug: navigation has to be driven +The logs of the runs that first showed this were not kept. The fixed runner on +branch `poc/agent-device-visual-runner` logs `relaunching the app … not on the Surface screen — going back to the +example list … pressing "Back" … at the example list root` when started from +another example screen, on both platforms — a branch that could not be reached if a +relaunch reset the route. Its run summaries are committed on that branch under +`example/visual/evidence/runs/`. + +This is a runner bug, not an agent-device bug: navigation has to be driven back to the list explicitly (press `Back` until no `Back` control is left, then scroll for the row), not implied by a relaunch. Related trap: because `navigateToSurface()` matches on `label === 'Surface'` and picks the largest match, on the restored _Surface_ screen it pressed the nav header title (`RCTParagraphComponentView "Surface"`) instead of a list row. That log was not -kept either; the trap is encoded as the test -`findSurfaceRow picks the list row, not the Appbar title` in -`example/visual/run.test.mjs`, and the fixed heuristic is visible in the same two -`summary.json` files above: `pressing the "Surface" row (@e17, Other, y=618, w=402)` -on iOS, `(@e72, android.view.ViewGroup, y=2747, w=1280)` on Android. +kept either; the trap is encoded as a unit test in the runner on branch `poc/agent-device-visual-runner` +(`findSurfaceRow picks the list row, not the Appbar title`), whose fix picks the +row by position and width. ## 15. The dev-menu check runs before the app finishes loading `dismissDevMenu()` snapshots once, immediately after the relaunch. On iOS that snapshot came back with three nodes — `UIApplication`, `SplashScreenLogo`, `Downloading 100%…` — so it found none of the `Close` / `Continue` labels and -returned "clean". Reproduced for the record on 2026-09-11 in `evidence/runner/`: -`ios-01-open-relaunch.json` (the relaunch), `ios-02-snapshot-immediately-after-relaunch.json` -(3 nodes: `React Native Paper Example`, the splash image, `Downloading 100%…`), -then `ios-03-snapshot-6s-later.json` (77 nodes, including the dev menu's -`Close` with `identifier: "xmark"` and `Reload`) and `ios-04-press-close.json` -dismissing it. The dev menu appears _after_ the bundle finishes downloading; a +returned "clean". Reproduced for the record on 2026-09-11 — +`evidence/devclient-excerpt.json`, `ios_after_open_relaunch`: immediately after +`open --relaunch` the tree is 3 nodes (`React Native Paper Example`, the splash +image, `Downloading 100%…`); six seconds later it is 77 nodes including the dev +menu's `Close` (`identifier: "xmark"`). Full snapshots on branch `poc/agent-device-visual-runner` under +`example/visual/evidence/runner/`. The dev menu appears _after_ the bundle finishes downloading; a check that snapshots once at open time cannot see it, and it then swallows every subsequent scroll. The check has to wait for the app to be ready first, and be repeated inside the navigation loop @@ -296,7 +291,7 @@ rather than run once. On Android the same step fails differently and confirms issue 9: after `am force-stop` + `open`, the app is the Expo **dev launcher** (`DEVELOPMENT SERVERS` / `Fetch development servers` / `RECENTLY OPENED`), whose -labels are not in `DEV_MENU_LABELS`. Recovery is to press the recently-opened +labels differ from the dev menu's. Recovery is to press the recently-opened entry (`http://192.168.1.151:8081`), which reloads the bundle in ~20 s. ## 16. Fast Refresh did not reach the Android app; a manual Reload was required @@ -320,7 +315,7 @@ pixels and report PASS. Twice in this pass (`press '@e2'`, `press 'label="Close"'`, both on iOS) the CLI exited 1 with completely empty stdout _and_ stderr. Re-running the identical command immediately afterwards succeeded. Nothing to act on beyond noting that a -caller cannot distinguish this from a crash, and that `run.mjs`'s "parse the +caller cannot distinguish this from a crash, and that a runner's "parse the first `{`..`}` out of stdout" fallback turns it into a `null` response rather than a clear error. @@ -338,23 +333,20 @@ are the record for those. ## 19. The dev-client's floating "Tools" button lands inside the crop and reads as a regression Found 2026-09-11 while re-running the Android loop with `src/` clean after the -round-2 changes. `run.mjs` reported a deterministic **FAIL** — -`surface-example-elevated changed=2822 (0.34%) regions=1` — twice in a row -(`evidence/runs/android/round3-pass/summary.json`, `…/round3-pass-rerun/summary.json`), -against a baseline whose file is byte-identical to the one committed -(`md5 8693c919…` in both the working tree and `HEAD`). The diff image -(`evidence/runs/android/round3-pass/surface-example-elevated-diff.png`) shows the -change: a 152x74 pill at the top-right of the crop reading **Tools** — the Expo -dev-client's floating dev-tools button, `android.widget.ImageView` label `Tools`, -rect `{x:1115, y:243, w:78, h:78}` in `evidence/runner/android-01-snapshot-tools-overlay.json`. +round-2 changes. The scripted loop reported a deterministic **FAIL** — +`surface-example-elevated changed=2822 (0.34%) regions=1` — twice in a row, +against a baseline byte-identical to the committed one (`md5 8693c919…` in both +the working tree and `HEAD`). The diff image +(`evidence/diff-images/android-devclient-tools-button.png`) shows the change: a +152x74 pill at the top-right of the crop reading **Tools** — the Expo dev-client's +floating dev-tools button, `android.widget.ImageView` label `Tools`, rect +`{x:1115, y:243, w:78, h:78}` (`evidence/devclient-excerpt.json`, +`android_devclient_floating_tools_button`). Both failing run summaries are on branch `poc/agent-device-visual-runner`. It is a dev-client setting, toggled by the dev menu entry **"Tools button"** -(`evidence/runner/android-02-snapshot-devmenu.json` lists `Close`, `Reload`, -`TOOLS`, `Tools button`, `Toggle Dev Menu`, …). Pressing it -(`android-03-press-tools-button-toggle.json`) and then `Close` -(`android-04-press-close.json`) removed the node (`android-05-snapshot-after-toggle.json`, -60 nodes, no `Tools`), and the next run passed with `changed=0` on both stories -(`evidence/runs/android/round3-pass-after-tools-off/summary.json`). The setting +(the dev menu lists `Close`, `Reload`, `TOOLS`, `Tools button`, `Toggle Dev Menu`, …). +Pressing it and then `Close` removed the node (60 nodes, no `Tools`), and the next +run passed with `changed=0` on both stories. The setting survives a relaunch. It had been off in every earlier run today (`round2-pass`, 08:53 UTC, 0 px) and was on by 10:14 UTC; which earlier dev-menu interaction flipped it is not known. @@ -362,9 +354,9 @@ interaction flipped it is not known. Two lessons. For agent-device: a screenshot of a dev build can contain dev-client chrome that is not part of the app, and `diff screenshot` cannot tell — worth a note in the docs, or a `screenshot` option that hides dev-client overlays. For -`run.mjs`: a dev overlay inside the crop must never be reported as a visual -regression; the script now looks for the floating node after dismissing the dev -menu and launcher, turns it off through the dev menu when it can, and otherwise -stops with exit 2 and a message naming the node and the manual fix. This is also +any runner: a dev overlay inside the crop must never be reported as a visual +regression; the runner on branch `poc/agent-device-visual-runner` looks for the floating node after dismissing the +dev menu and launcher, turns it off through the dev menu when it can, and +otherwise stops with a message naming the node and the manual fix. This is also the strongest argument so far for capturing from a release build rather than a dev-client once this moves past a PoC. diff --git a/example/visual/evidence/runner/android-01-snapshot-tools-overlay.json b/example/visual/evidence/runner/android-01-snapshot-tools-overlay.json deleted file mode 100644 index 1f02f1a413..0000000000 --- a/example/visual/evidence/runner/android-01-snapshot-tools-overlay.json +++ /dev/null @@ -1,1267 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e1" - }, - { - "index": 1, - "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e2" - }, - { - "index": 2, - "type": "android.widget.TextView", - "label": "12:16", - "value": "12:16", - "identifier": "com.android.systemui:id/clock", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 45, - "width": 154, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e3" - }, - { - "index": 3, - "type": "android.widget.ImageView", - "label": "Find Hub notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 202, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e4" - }, - { - "index": 4, - "type": "android.widget.ImageView", - "label": "Security & privacy notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 268, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e5" - }, - { - "index": 5, - "type": "android.widget.FrameLayout", - "label": "T-Mobile, two bars.", - "identifier": "com.android.systemui:id/mobile_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 69, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e6" - }, - { - "index": 6, - "type": "android.widget.ImageView", - "identifier": "com.android.systemui:id/mobile_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 5, - "ref": "e7" - }, - { - "index": 7, - "type": "android.widget.ImageView", - "label": "Wifi signal full.", - "identifier": "com.android.systemui:id/wifi_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e8" - }, - { - "index": 8, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e9" - }, - { - "index": 9, - "type": "android.view.View", - "label": "Battery 100 percent.", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 72, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 8, - "ref": "e10" - }, - { - "index": 10, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e11" - }, - { - "index": 11, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 10, - "ref": "e12" - }, - { - "index": 12, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 11, - "ref": "e13" - }, - { - "index": 13, - "type": "android.widget.LinearLayout", - "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 12, - "ref": "e14" - }, - { - "index": 14, - "type": "android.widget.FrameLayout", - "identifier": "android:id/content", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 13, - "ref": "e15" - }, - { - "index": 15, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 14, - "ref": "e16" - }, - { - "index": 16, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 15, - "ref": "e17" - }, - { - "index": 17, - "type": "android.widget.ImageView", - "label": "Tools", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1115, - "y": 243, - "width": 78, - "height": 78 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 16, - "ref": "e18" - }, - { - "index": 18, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 15, - "ref": "e19" - }, - { - "index": 19, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 18, - "ref": "e20" - }, - { - "index": 20, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 19, - "ref": "e21" - }, - { - "index": 21, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 20, - "ref": "e22" - }, - { - "index": 22, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 21, - "ref": "e23" - }, - { - "index": 23, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 22, - "ref": "e24" - }, - { - "index": 24, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 23, - "ref": "e25" - }, - { - "index": 25, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 24, - "ref": "e26" - }, - { - "index": 26, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 25, - "ref": "e27" - }, - { - "index": 27, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 15, - "parentIndex": 26, - "ref": "e28" - }, - { - "index": 28, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 16, - "parentIndex": 27, - "ref": "e29" - }, - { - "index": 29, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 17, - "parentIndex": 28, - "ref": "e30" - }, - { - "index": 30, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 18, - "parentIndex": 29, - "ref": "e31" - }, - { - "index": 31, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 19, - "parentIndex": 30, - "ref": "e32" - }, - { - "index": 32, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 20, - "parentIndex": 31, - "ref": "e33" - }, - { - "index": 33, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 32, - "ref": "e34" - }, - { - "index": 34, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 33, - "ref": "e35" - }, - { - "index": 35, - "type": "android.widget.Button", - "label": "Back", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 34, - "ref": "e36" - }, - { - "index": 36, - "type": "android.widget.TextView", - "label": "󰁍", - "value": "󰁍", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 35, - "ref": "e37" - }, - { - "index": 37, - "type": "android.view.View", - "label": "Surface", - "value": "Surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 210, - "width": 1064, - "height": 84 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 33, - "ref": "e38" - }, - { - "index": 38, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 20, - "parentIndex": 31, - "hiddenContentBelow": true, - "ref": "e39" - }, - { - "index": 39, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 38, - "ref": "e40" - }, - { - "index": 40, - "type": "android.view.ViewGroup", - "identifier": "surface-example-elevated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e41" - }, - { - "index": 41, - "type": "android.widget.TextView", - "label": "Elevated surface", - "value": "Elevated surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e42" - }, - { - "index": 42, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 39, - "ref": "e43" - }, - { - "index": 43, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 42, - "ref": "e44" - }, - { - "index": 44, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 42, - "ref": "e45" - }, - { - "index": 45, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 42, - "ref": "e46" - }, - { - "index": 46, - "type": "android.view.ViewGroup", - "identifier": "surface-example-flat", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e47" - }, - { - "index": 47, - "type": "android.widget.TextView", - "label": "Flat surface", - "value": "Flat surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e48" - }, - { - "index": 48, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 39, - "ref": "e49" - }, - { - "index": 49, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 48, - "ref": "e50" - }, - { - "index": 50, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 48, - "ref": "e51" - }, - { - "index": 51, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 48, - "ref": "e52" - }, - { - "index": 52, - "type": "android.widget.TextView", - "label": "Animated elevation", - "value": "Animated elevation", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1752, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e53" - }, - { - "index": 53, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 2118, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e54" - }, - { - "index": 54, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e55" - }, - { - "index": 55, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 54, - "ref": "e56" - }, - { - "index": 56, - "type": "android.widget.TextView", - "label": "󰍴", - "value": "󰍴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 90, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 55, - "ref": "e57" - }, - { - "index": 57, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e58" - }, - { - "index": 58, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 57, - "ref": "e59" - }, - { - "index": 59, - "type": "android.widget.TextView", - "label": "󰐕", - "value": "󰐕", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 294, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 58, - "ref": "e60" - }, - { - "index": 60, - "type": "android.widget.TextView", - "label": "Layout", - "value": "Layout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2670, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 39, - "ref": "e61" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": true, - "visibleNodeCount": 61, - "totalNodeCount": 61, - "reasons": [ - "scroll-hidden-below" - ] - }, - "androidSnapshot": { - "backend": "android-helper", - "helperVersion": "0.21.0", - "helperApiVersion": "2", - "helperTransport": "persistent-session", - "helperSessionReused": true, - "installReason": "current", - "waitForIdleTimeoutMs": 500, - "waitForIdleQuietMs": 100, - "timeoutMs": 2000, - "maxDepth": 128, - "maxNodes": 5000, - "rootPresent": true, - "captureMode": "interactive-windows", - "windowCount": 2, - "nodeCount": 218, - "helperTruncated": false, - "elapsedMs": 26 - }, - "snapshotQuality": { - "state": "healthy", - "backend": "android-helper" - }, - "snapshotDiagnostics": { - "stats": { - "count": 462, - "p50Ms": 107, - "p95Ms": 396, - "maxMs": 988, - "slowThresholdMs": 1500, - "platform": "android", - "backends": { - "android": 462 - } - } - }, - "refsGeneration": 835757 - } -} diff --git a/example/visual/evidence/runner/android-02-snapshot-devmenu.json b/example/visual/evidence/runner/android-02-snapshot-devmenu.json deleted file mode 100644 index d1cfedab95..0000000000 --- a/example/visual/evidence/runner/android-02-snapshot-devmenu.json +++ /dev/null @@ -1,1149 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e1" - }, - { - "index": 1, - "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e2" - }, - { - "index": 2, - "type": "android.widget.TextView", - "label": "12:16", - "value": "12:16", - "identifier": "com.android.systemui:id/clock", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 45, - "width": 154, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e3" - }, - { - "index": 3, - "type": "android.widget.ImageView", - "label": "Find Hub notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 202, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e4" - }, - { - "index": 4, - "type": "android.widget.ImageView", - "label": "Security & privacy notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 268, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e5" - }, - { - "index": 5, - "type": "android.widget.FrameLayout", - "label": "T-Mobile, two bars.", - "identifier": "com.android.systemui:id/mobile_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 69, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e6" - }, - { - "index": 6, - "type": "android.widget.ImageView", - "identifier": "com.android.systemui:id/mobile_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 5, - "ref": "e7" - }, - { - "index": 7, - "type": "android.widget.ImageView", - "label": "Wifi signal full.", - "identifier": "com.android.systemui:id/wifi_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e8" - }, - { - "index": 8, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e9" - }, - { - "index": 9, - "type": "android.view.View", - "label": "Battery 100 percent.", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 72, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 8, - "ref": "e10" - }, - { - "index": 10, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e11" - }, - { - "index": 11, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 10, - "ref": "e12" - }, - { - "index": 12, - "type": "android.widget.FrameLayout", - "identifier": "android:id/content", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 11, - "ref": "e13" - }, - { - "index": 13, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 12, - "ref": "e14" - }, - { - "index": 14, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 13, - "ref": "e15" - }, - { - "index": 15, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 14, - "ref": "e16" - }, - { - "index": 16, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1142, - "width": 1280, - "height": 1714 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 15, - "ref": "e17" - }, - { - "index": 17, - "type": "android.widget.ImageView", - "label": "App Icon", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1214, - "width": 132, - "height": 132 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 16, - "ref": "e18" - }, - { - "index": 18, - "type": "android.widget.TextView", - "label": "React Native Paper Example", - "value": "React Native Paper Example", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 252, - "y": 1220, - "width": 628, - "height": 58 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 16, - "ref": "e19" - }, - { - "index": 19, - "type": "android.widget.TextView", - "label": "Runtime version: exposdk:56.0.0", - "value": "Runtime version: exposdk:56.0.0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 252, - "y": 1290, - "width": 618, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 16, - "ref": "e20" - }, - { - "index": 20, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1082, - "y": 1208, - "width": 144, - "height": 144 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 7, - "parentIndex": 16, - "ref": "e21" - }, - { - "index": 21, - "type": "android.view.View", - "label": "Close", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1130, - "y": 1256, - "width": 48, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 20, - "ref": "e22" - }, - { - "index": 22, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 1100, - "y": 1226, - "width": 108, - "height": 108 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 20, - "ref": "e23" - }, - { - "index": 23, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1418, - "width": 1280, - "height": 1438 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 16, - "hiddenContentBelow": true, - "ref": "e24" - }, - { - "index": 24, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1418, - "width": 556, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e25" - }, - { - "index": 25, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1418, - "width": 556, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 9, - "parentIndex": 24, - "ref": "e26" - }, - { - "index": 26, - "type": "android.view.View", - "label": "Reload", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 1484, - "width": 60, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 25, - "ref": "e27" - }, - { - "index": 27, - "type": "android.widget.TextView", - "label": "Reload", - "value": "Reload", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 1489, - "width": 133, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 25, - "ref": "e28" - }, - { - "index": 28, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1418, - "width": 556, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 25, - "ref": "e29" - }, - { - "index": 29, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 652, - "y": 1418, - "width": 556, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e30" - }, - { - "index": 30, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 652, - "y": 1418, - "width": 556, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 9, - "parentIndex": 29, - "ref": "e31" - }, - { - "index": 31, - "type": "android.view.View", - "label": "Home", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 700, - "y": 1484, - "width": 60, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 30, - "ref": "e32" - }, - { - "index": 32, - "type": "android.widget.TextView", - "label": "Go home", - "value": "Go home", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 784, - "y": 1489, - "width": 175, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 30, - "ref": "e33" - }, - { - "index": 33, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 652, - "y": 1418, - "width": 556, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 30, - "ref": "e34" - }, - { - "index": 34, - "type": "android.widget.TextView", - "label": "TOOLS", - "value": "TOOLS", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1706, - "width": 110, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e35" - }, - { - "index": 35, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1802, - "width": 1136, - "height": 774 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e36" - }, - { - "index": 36, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1802, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 9, - "parentIndex": 35, - "ref": "e37" - }, - { - "index": 37, - "type": "android.view.View", - "label": "Performance monitor", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 1868, - "width": 60, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 36, - "ref": "e38" - }, - { - "index": 38, - "type": "android.widget.TextView", - "label": "Toggle performance monitor", - "value": "Toggle performance monitor", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 1873, - "width": 540, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 36, - "ref": "e39" - }, - { - "index": 39, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1802, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 36, - "ref": "e40" - }, - { - "index": 40, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1996, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 9, - "parentIndex": 35, - "ref": "e41" - }, - { - "index": 41, - "type": "android.view.View", - "label": "Element inspector", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 2062, - "width": 60, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 40, - "ref": "e42" - }, - { - "index": 42, - "type": "android.widget.TextView", - "label": "Toggle element inspector", - "value": "Toggle element inspector", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 2067, - "width": 478, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 40, - "ref": "e43" - }, - { - "index": 43, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 1996, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 40, - "ref": "e44" - }, - { - "index": 44, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2190, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 9, - "parentIndex": 35, - "ref": "e45" - }, - { - "index": 45, - "type": "android.view.View", - "label": "DevTools", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 2256, - "width": 60, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 44, - "ref": "e46" - }, - { - "index": 46, - "type": "android.widget.TextView", - "label": "Open DevTools", - "value": "Open DevTools", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 2261, - "width": 288, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 44, - "ref": "e47" - }, - { - "index": 47, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2190, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 44, - "ref": "e48" - }, - { - "index": 48, - "type": "android.view.View", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2384, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 9, - "parentIndex": 35, - "ref": "e49" - }, - { - "index": 49, - "type": "android.view.View", - "label": "Toggle Dev Menu", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 2450, - "width": 60, - "height": 60 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 48, - "ref": "e50" - }, - { - "index": 50, - "type": "android.widget.TextView", - "label": "Tools button", - "value": "Tools button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 2455, - "width": 233, - "height": 51 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 48, - "ref": "e51" - }, - { - "index": 51, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 72, - "y": 2384, - "width": 1136, - "height": 192 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 48, - "ref": "e52" - }, - { - "index": 52, - "type": "android.widget.ImageView", - "label": "Lightbulb", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 2746, - "width": 54, - "height": 54 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e53" - }, - { - "index": 53, - "type": "android.widget.TextView", - "label": "Tip", - "value": "Tip", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 186, - "y": 2744, - "width": 70, - "height": 58 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e54" - }, - { - "index": 54, - "type": "android.widget.TextView", - "label": "Debugging not working? Try manually reloading first.", - "value": "Debugging not working? Try manually reloading first.", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 120, - "y": 2814, - "width": 853, - "height": 42 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 23, - "ref": "e55" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": true, - "visibleNodeCount": 55, - "totalNodeCount": 55, - "reasons": [ - "scroll-hidden-below" - ] - }, - "androidSnapshot": { - "backend": "android-helper", - "helperVersion": "0.21.0", - "helperApiVersion": "2", - "helperTransport": "persistent-session", - "helperSessionReused": true, - "installReason": "current", - "waitForIdleTimeoutMs": 500, - "waitForIdleQuietMs": 100, - "timeoutMs": 2000, - "maxDepth": 128, - "maxNodes": 5000, - "rootPresent": true, - "captureMode": "interactive-windows", - "windowCount": 2, - "nodeCount": 97, - "helperTruncated": false, - "elapsedMs": 37 - }, - "snapshotQuality": { - "state": "healthy", - "backend": "android-helper" - }, - "snapshotDiagnostics": { - "stats": { - "count": 463, - "p50Ms": 107, - "p95Ms": 396, - "maxMs": 988, - "slowThresholdMs": 1500, - "platform": "android", - "backends": { - "android": 463 - } - } - }, - "refsGeneration": 835758 - } -} diff --git a/example/visual/evidence/runner/android-03-press-tools-button-toggle.json b/example/visual/evidence/runner/android-03-press-tools-button-toggle.json deleted file mode 100644 index 24706b4f64..0000000000 --- a/example/visual/evidence/runner/android-03-press-tools-button-toggle.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "success": true, - "data": { - "x": 640, - "y": 2480, - "message": "Tapped label=\"Tools button\" (640, 2480)", - "referenceWidth": 1280, - "referenceHeight": 2856, - "targetKind": "selector", - "selector": "label=\"Tools button\"", - "selectorChain": [ - "role=\"view\"" - ], - "refLabel": "Toggle Dev Menu", - "resolution": { - "source": "runtime", - "phase": "pre-action", - "kind": "unique" - } - } -} diff --git a/example/visual/evidence/runner/android-04-press-close.json b/example/visual/evidence/runner/android-04-press-close.json deleted file mode 100644 index b2016befe7..0000000000 --- a/example/visual/evidence/runner/android-04-press-close.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "success": true, - "data": { - "x": 1154, - "y": 1280, - "message": "Tapped label=\"Close\" (1154, 1280)", - "referenceWidth": 1280, - "referenceHeight": 2856, - "targetKind": "selector", - "selector": "label=\"Close\"", - "selectorChain": [ - "role=\"view\" label=\"Close\"", - "label=\"Close\"" - ], - "refLabel": "Close", - "resolution": { - "source": "runtime", - "phase": "pre-action", - "kind": "unique" - } - } -} diff --git a/example/visual/evidence/runner/android-05-snapshot-after-toggle.json b/example/visual/evidence/runner/android-05-snapshot-after-toggle.json deleted file mode 100644 index 0e2b8e69a3..0000000000 --- a/example/visual/evidence/runner/android-05-snapshot-after-toggle.json +++ /dev/null @@ -1,1247 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e1" - }, - { - "index": 1, - "type": "androidx.compose.ui.viewinterop.ViewFactoryHolder", - "bundleId": "com.android.systemui", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 0, - "ref": "e2" - }, - { - "index": 2, - "type": "android.widget.TextView", - "label": "12:17", - "value": "12:17", - "identifier": "com.android.systemui:id/clock", - "bundleId": "com.android.systemui", - "rect": { - "x": 48, - "y": 45, - "width": 154, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e3" - }, - { - "index": 3, - "type": "android.widget.ImageView", - "label": "Find Hub notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 202, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e4" - }, - { - "index": 4, - "type": "android.widget.ImageView", - "label": "Security & privacy notification: ", - "bundleId": "com.android.systemui", - "rect": { - "x": 268, - "y": 0, - "width": 66, - "height": 156 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e5" - }, - { - "index": 5, - "type": "android.widget.FrameLayout", - "label": "T-Mobile, one bar.", - "identifier": "com.android.systemui:id/mobile_combo", - "bundleId": "com.android.systemui", - "rect": { - "x": 972, - "y": 45, - "width": 69, - "height": 66 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e6" - }, - { - "index": 6, - "type": "android.widget.ImageView", - "identifier": "com.android.systemui:id/mobile_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 981, - "y": 60, - "width": 51, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 5, - "ref": "e7" - }, - { - "index": 7, - "type": "android.widget.ImageView", - "label": "Wifi signal full.", - "identifier": "com.android.systemui:id/wifi_signal", - "bundleId": "com.android.systemui", - "rect": { - "x": 1050, - "y": 60, - "width": 48, - "height": 36 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e8" - }, - { - "index": 8, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 80, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 1, - "ref": "e9" - }, - { - "index": 9, - "type": "android.view.View", - "label": "Battery 100 percent.", - "bundleId": "com.android.systemui", - "rect": { - "x": 1116, - "y": 58, - "width": 72, - "height": 39 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 8, - "ref": "e10" - }, - { - "index": 10, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 0, - "ref": "e11" - }, - { - "index": 11, - "type": "android.widget.LinearLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 1, - "parentIndex": 10, - "ref": "e12" - }, - { - "index": 12, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 2, - "parentIndex": 11, - "ref": "e13" - }, - { - "index": 13, - "type": "android.widget.LinearLayout", - "identifier": "com.callstack.reactnativepaperexample:id/action_bar_root", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 3, - "parentIndex": 12, - "ref": "e14" - }, - { - "index": 14, - "type": "android.widget.FrameLayout", - "identifier": "android:id/content", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 4, - "parentIndex": 13, - "ref": "e15" - }, - { - "index": 15, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 5, - "parentIndex": 14, - "ref": "e16" - }, - { - "index": 16, - "type": "androidx.compose.ui.platform.ComposeView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 15, - "ref": "e17" - }, - { - "index": 17, - "type": "android.widget.FrameLayout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 6, - "parentIndex": 15, - "ref": "e18" - }, - { - "index": 18, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 7, - "parentIndex": 17, - "ref": "e19" - }, - { - "index": 19, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 8, - "parentIndex": 18, - "ref": "e20" - }, - { - "index": 20, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 9, - "parentIndex": 19, - "ref": "e21" - }, - { - "index": 21, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 10, - "parentIndex": 20, - "ref": "e22" - }, - { - "index": 22, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 11, - "parentIndex": 21, - "ref": "e23" - }, - { - "index": 23, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 12, - "parentIndex": 22, - "ref": "e24" - }, - { - "index": 24, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 13, - "parentIndex": 23, - "ref": "e25" - }, - { - "index": 25, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 14, - "parentIndex": 24, - "ref": "e26" - }, - { - "index": 26, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 15, - "parentIndex": 25, - "ref": "e27" - }, - { - "index": 27, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 16, - "parentIndex": 26, - "ref": "e28" - }, - { - "index": 28, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 17, - "parentIndex": 27, - "ref": "e29" - }, - { - "index": 29, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 18, - "parentIndex": 28, - "ref": "e30" - }, - { - "index": 30, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 2856 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 19, - "parentIndex": 29, - "ref": "e31" - }, - { - "index": 31, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 20, - "parentIndex": 30, - "ref": "e32" - }, - { - "index": 32, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 348 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 31, - "ref": "e33" - }, - { - "index": 33, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 32, - "ref": "e34" - }, - { - "index": 34, - "type": "android.widget.Button", - "label": "Back", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 30, - "y": 192, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 33, - "ref": "e35" - }, - { - "index": 35, - "type": "android.widget.TextView", - "label": "󰁍", - "value": "󰁍", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 54, - "y": 216, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 34, - "ref": "e36" - }, - { - "index": 36, - "type": "android.view.View", - "label": "Surface", - "value": "Surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 204, - "y": 210, - "width": 1064, - "height": 84 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 32, - "ref": "e37" - }, - { - "index": 37, - "type": "android.widget.ScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 20, - "parentIndex": 30, - "hiddenContentBelow": true, - "ref": "e38" - }, - { - "index": 38, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 348, - "width": 1280, - "height": 2508 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 21, - "parentIndex": 37, - "ref": "e39" - }, - { - "index": 39, - "type": "android.view.ViewGroup", - "identifier": "surface-example-elevated", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e40" - }, - { - "index": 40, - "type": "android.widget.TextView", - "label": "Elevated surface", - "value": "Elevated surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 372, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e41" - }, - { - "index": 41, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 510, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 38, - "ref": "e42" - }, - { - "index": 42, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 41, - "ref": "e43" - }, - { - "index": 43, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 41, - "ref": "e44" - }, - { - "index": 44, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 738, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 41, - "ref": "e45" - }, - { - "index": 45, - "type": "android.view.ViewGroup", - "identifier": "surface-example-flat", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 642 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e46" - }, - { - "index": 46, - "type": "android.widget.TextView", - "label": "Flat surface", - "value": "Flat surface", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1062, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e47" - }, - { - "index": 47, - "type": "android.widget.HorizontalScrollView", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1200, - "width": 1280, - "height": 504 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 22, - "parentIndex": 38, - "ref": "e48" - }, - { - "index": 48, - "type": "android.widget.TextView", - "label": "Elevation 0", - "value": "Elevation 0", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 47, - "ref": "e49" - }, - { - "index": 49, - "type": "android.widget.TextView", - "label": "Elevation 1", - "value": "Elevation 1", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 566, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 47, - "ref": "e50" - }, - { - "index": 50, - "type": "android.widget.TextView", - "label": "Elevation 2", - "value": "Elevation 2", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 998, - "y": 1428, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 23, - "parentIndex": 47, - "ref": "e51" - }, - { - "index": 51, - "type": "android.widget.TextView", - "label": "Animated elevation", - "value": "Animated elevation", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 1752, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e52" - }, - { - "index": 52, - "type": "android.widget.TextView", - "label": "Elevation 3", - "value": "Elevation 3", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 134, - "y": 2118, - "width": 188, - "height": 48 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e53" - }, - { - "index": 53, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e54" - }, - { - "index": 54, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 66, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 53, - "ref": "e55" - }, - { - "index": 55, - "type": "android.widget.TextView", - "label": "󰍴", - "value": "󰍴", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 90, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 54, - "ref": "e56" - }, - { - "index": 56, - "type": "android.view.ViewGroup", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e57" - }, - { - "index": 57, - "type": "android.widget.Button", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 270, - "y": 2412, - "width": 120, - "height": 120 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "hittable": true, - "depth": 23, - "parentIndex": 56, - "ref": "e58" - }, - { - "index": 58, - "type": "android.widget.TextView", - "label": "󰐕", - "value": "󰐕", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 294, - "y": 2436, - "width": 72, - "height": 72 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 24, - "parentIndex": 57, - "ref": "e59" - }, - { - "index": 59, - "type": "android.widget.TextView", - "label": "Layout", - "value": "Layout", - "bundleId": "com.callstack.reactnativepaperexample", - "rect": { - "x": 0, - "y": 2670, - "width": 1280, - "height": 138 - }, - "enabled": true, - "editable": false, - "password": false, - "hintShowing": false, - "visibleToUser": true, - "depth": 22, - "parentIndex": 38, - "ref": "e60" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": true, - "visibleNodeCount": 60, - "totalNodeCount": 60, - "reasons": [ - "scroll-hidden-below" - ] - }, - "androidSnapshot": { - "backend": "android-helper", - "helperVersion": "0.21.0", - "helperApiVersion": "2", - "helperTransport": "persistent-session", - "helperSessionReused": true, - "installReason": "current", - "waitForIdleTimeoutMs": 500, - "waitForIdleQuietMs": 100, - "timeoutMs": 2000, - "maxDepth": 128, - "maxNodes": 5000, - "rootPresent": true, - "captureMode": "interactive-windows", - "windowCount": 2, - "nodeCount": 214, - "helperTruncated": false, - "elapsedMs": 114 - }, - "snapshotQuality": { - "state": "healthy", - "backend": "android-helper" - }, - "snapshotDiagnostics": { - "stats": { - "count": 467, - "p50Ms": 107, - "p95Ms": 396, - "maxMs": 988, - "slowThresholdMs": 1500, - "platform": "android", - "backends": { - "android": 467 - } - } - }, - "refsGeneration": 835762 - } -} diff --git a/example/visual/evidence/runner/ios-01-open-relaunch.json b/example/visual/evidence/runner/ios-01-open-relaunch.json deleted file mode 100644 index 5a069e7934..0000000000 --- a/example/visual/evidence/runner/ios-01-open-relaunch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "success": true, - "data": { - "session": "default", - "sessionStateDir": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default", - "runnerLogPath": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/runner.log", - "requestLogPath": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/requests/fe0f9676bf21a0bd.ndjson", - "eventLogPath": "/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/events.ndjson", - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "selection": { - "reason": "existing-session", - "source": "session", - "candidateCount": 1, - "bootOccurred": false - }, - "startup": { - "durationMs": 1437, - "measuredAt": "2026-09-11T10:10:23.882Z", - "method": "open-command-roundtrip", - "appTarget": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample" - }, - "platform": "ios", - "target": "mobile", - "device": "iPhone 17 Pro", - "id": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "device_udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "ios_simulator_device_set": null, - "message": "Opened: com.callstack.reactnativepaperexample" - } -} diff --git a/example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json b/example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json deleted file mode 100644 index ac76487b31..0000000000 --- a/example/visual/evidence/runner/ios-02-snapshot-immediately-after-relaunch.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "Application", - "role": "UIApplication", - "label": "React Native Paper Example", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 0, - "pid": 58894, - "ref": "e1" - }, - { - "index": 1, - "parentIndex": 0, - "type": "Image", - "role": "UIImageView", - "identifier": "SplashScreenLogo", - "rect": { - "x": 151, - "y": 387, - "width": 100, - "height": 100 - }, - "depth": 1, - "pid": 58894, - "ref": "e2" - }, - { - "index": 2, - "parentIndex": 0, - "type": "StaticText", - "role": "UILabel", - "label": "Downloading 100%…", - "rect": { - "x": 10, - "y": 70, - "width": 382, - "height": 14.333333333333329 - }, - "depth": 1, - "pid": 58894, - "ref": "e3" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": false, - "visibleNodeCount": 3, - "totalNodeCount": 3, - "reasons": [] - }, - "warnings": [ - "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." - ], - "snapshotDiagnostics": { - "stats": { - "count": 1045, - "p50Ms": 97, - "p95Ms": 131, - "maxMs": 677, - "slowThresholdMs": 1500, - "platform": "ios", - "backends": { - "xctest": 1045 - } - } - }, - "refsGeneration": 835862 - } -} diff --git a/example/visual/evidence/runner/ios-03-snapshot-6s-later.json b/example/visual/evidence/runner/ios-03-snapshot-6s-later.json deleted file mode 100644 index a981fcb824..0000000000 --- a/example/visual/evidence/runner/ios-03-snapshot-6s-later.json +++ /dev/null @@ -1,1344 +0,0 @@ -{ - "success": true, - "data": { - "nodes": [ - { - "index": 0, - "type": "Application", - "role": "UIApplication", - "label": "React Native Paper Example", - "rect": { - "x": 0, - "y": 0, - "width": 402, - "height": 874 - }, - "depth": 0, - "pid": 58894, - "ref": "e1" - }, - { - "index": 1, - "parentIndex": 0, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "label": "Back", - "rect": { - "x": 10, - "y": 74, - "width": 40, - "height": 40 - }, - "depth": 1, - "pid": 58894, - "ref": "e2" - }, - { - "index": 2, - "parentIndex": 0, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 1, - "pid": 58894, - "ref": "e3" - }, - { - "index": 3, - "parentIndex": 2, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Surface", - "rect": { - "x": 164, - "y": 80, - "width": 74, - "height": 28 - }, - "depth": 2, - "pid": 58894, - "ref": "e4" - }, - { - "index": 4, - "parentIndex": 0, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 126, - "width": 402, - "height": 748 - }, - "depth": 1, - "pid": 58894, - "hiddenContentBelow": true, - "ref": "e5" - }, - { - "index": 5, - "parentIndex": 4, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevated surface", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 46 - }, - "depth": 2, - "pid": 58894, - "ref": "e6" - }, - { - "index": 6, - "parentIndex": 5, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevated surface", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 46 - }, - "depth": 3, - "pid": 58894, - "ref": "e7" - }, - { - "index": 7, - "parentIndex": 4, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "identifier": "surface-example-elevated", - "rect": { - "x": 0, - "y": 134, - "width": 402, - "height": 214 - }, - "depth": 2, - "pid": 58894, - "ref": "e8" - }, - { - "index": 8, - "parentIndex": 4, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 180, - "width": 402, - "height": 168 - }, - "depth": 2, - "pid": 58894, - "ref": "e9" - }, - { - "index": 9, - "parentIndex": 8, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 256, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e10" - }, - { - "index": 10, - "parentIndex": 9, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 256, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 4, - "pid": 58894, - "ref": "e11" - }, - { - "index": 11, - "parentIndex": 8, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 256, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e12" - }, - { - "index": 12, - "parentIndex": 11, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 256, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 4, - "pid": 58894, - "ref": "e13" - }, - { - "index": 13, - "parentIndex": 8, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 256, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e14" - }, - { - "index": 14, - "parentIndex": 13, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 256, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 4, - "pid": 58894, - "ref": "e15" - }, - { - "index": 15, - "parentIndex": 8, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 180, - "width": 30, - "height": 168 - }, - "depth": 3, - "pid": 58894, - "ref": "e16" - }, - { - "index": 16, - "parentIndex": 8, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 180, - "width": 30, - "height": 168 - }, - "depth": 3, - "pid": 58894, - "ref": "e17" - }, - { - "index": 17, - "parentIndex": 4, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Flat surface", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 46 - }, - "depth": 2, - "pid": 58894, - "ref": "e18" - }, - { - "index": 18, - "parentIndex": 17, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Flat surface", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 46 - }, - "depth": 3, - "pid": 58894, - "ref": "e19" - }, - { - "index": 19, - "parentIndex": 4, - "type": "Other", - "role": "RCTViewComponentView", - "subrole": "UIView", - "identifier": "surface-example-flat", - "rect": { - "x": 0, - "y": 364, - "width": 402, - "height": 214 - }, - "depth": 2, - "pid": 58894, - "ref": "e20" - }, - { - "index": 20, - "parentIndex": 4, - "type": "ScrollView", - "role": "RCTEnhancedScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 0, - "y": 410, - "width": 402, - "height": 168 - }, - "depth": 2, - "pid": 58894, - "ref": "e21" - }, - { - "index": 21, - "parentIndex": 20, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 486, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e22" - }, - { - "index": 22, - "parentIndex": 21, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 0", - "rect": { - "x": 42.66666603088379, - "y": 486, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 4, - "pid": 58894, - "ref": "e23" - }, - { - "index": 23, - "parentIndex": 20, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 486, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e24" - }, - { - "index": 24, - "parentIndex": 23, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 1", - "rect": { - "x": 187.6666660308838, - "y": 486, - "width": 64.66665649414062, - "height": 16 - }, - "depth": 4, - "pid": 58894, - "ref": "e25" - }, - { - "index": 25, - "parentIndex": 20, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 486, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e26" - }, - { - "index": 26, - "parentIndex": 25, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 2", - "rect": { - "x": 330.6666660308838, - "y": 486, - "width": 66.33334350585938, - "height": 16 - }, - "depth": 4, - "pid": 58894, - "ref": "e27" - }, - { - "index": 27, - "parentIndex": 20, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 410, - "width": 30, - "height": 168 - }, - "depth": 3, - "pid": 58894, - "ref": "e28" - }, - { - "index": 28, - "parentIndex": 20, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 369, - "y": 410, - "width": 30, - "height": 168 - }, - "depth": 3, - "pid": 58894, - "ref": "e29" - }, - { - "index": 29, - "parentIndex": 4, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 2, - "pid": 58894, - "ref": "e30" - }, - { - "index": 30, - "parentIndex": 29, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Animated elevation", - "rect": { - "x": 0, - "y": 594, - "width": 402, - "height": 46 - }, - "depth": 3, - "pid": 58894, - "ref": "e31" - }, - { - "index": 31, - "parentIndex": 4, - "type": "StaticText", - "role": "RCTParagraphComponentView", - "subrole": "UIView", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 2, - "pid": 58894, - "ref": "e32" - }, - { - "index": 32, - "parentIndex": 31, - "type": "StaticText", - "role": "RCTAccessibilityElement", - "subrole": "UIAccessibilityElement", - "label": "Elevation 3", - "rect": { - "x": 42.66666603088379, - "y": 716, - "width": 66.66667175292969, - "height": 16 - }, - "depth": 3, - "pid": 58894, - "ref": "e33" - }, - { - "index": 33, - "parentIndex": 4, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 22, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 2, - "pid": 58894, - "ref": "e34" - }, - { - "index": 34, - "parentIndex": 4, - "type": "Button", - "role": "RCTViewComponentView", - "subrole": "UIView", - "rect": { - "x": 90, - "y": 814, - "width": 40, - "height": 40 - }, - "depth": 2, - "pid": 58894, - "ref": "e35" - }, - { - "index": 35, - "parentIndex": 4, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 2, - "pid": 58894, - "ref": "e36" - }, - { - "index": 36, - "parentIndex": 4, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Horizontal scroll bar, 1 page", - "value": "0%", - "rect": { - "x": 62, - "y": 841, - "width": 278, - "height": 30 - }, - "depth": 2, - "pid": 58894, - "ref": "e37" - }, - { - "index": 37, - "parentIndex": 0, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "rect": { - "x": 71.37313432835822, - "y": 401.26368159203975, - "width": 218.60530679933663, - "height": 19.52404643449421 - }, - "depth": 1, - "pid": 58894, - "ref": "e38", - "inheritsLabel": true - }, - { - "index": 38, - "parentIndex": 0, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Runtime version: exposdk:56.0.0", - "rect": { - "x": 71.37313432835822, - "y": 422.7081260364842, - "width": 176.99668325041458, - "height": 13.762852404643468 - }, - "depth": 1, - "pid": 58894, - "ref": "e39" - }, - { - "index": 39, - "parentIndex": 0, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Close", - "identifier": "xmark", - "rect": { - "x": 344.06965174129357, - "y": 401.5837479270315, - "width": 34.56716417910445, - "height": 34.56716417910445 - }, - "depth": 1, - "pid": 58894, - "ref": "e40" - }, - { - "index": 40, - "parentIndex": 0, - "type": "ScrollView", - "role": "SwiftUI.HostingScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 8, - "y": 452.47429519071306, - "width": 386, - "height": 413.5257048092868 - }, - "depth": 1, - "pid": 58894, - "hiddenContentBelow": true, - "ref": "e41" - }, - { - "index": 41, - "parentIndex": 40, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Reload", - "rect": { - "x": 23.363184079601993, - "y": 467.83747927031504, - "width": 173.79601990049753, - "height": 53.771144278606926 - }, - "depth": 2, - "pid": 58894, - "ref": "e42" - }, - { - "index": 42, - "parentIndex": 41, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Refresh", - "identifier": "arrow.clockwise", - "rect": { - "x": 43.207296849087896, - "y": 486.0812603648424, - "width": 14.082919044874195, - "height": 17.283582089552226 - }, - "depth": 3, - "pid": 58894, - "ref": "e43" - }, - { - "index": 43, - "parentIndex": 41, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Reload", - "rect": { - "x": 69.45273631840797, - "y": 484.96102819237143, - "width": 50.25041459369817, - "height": 19.52404643449421 - }, - "depth": 3, - "pid": 58894, - "ref": "e44" - }, - { - "index": 44, - "parentIndex": 40, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Go home", - "rect": { - "x": 204.84079601990052, - "y": 467.83747927031504, - "width": 173.7960199004975, - "height": 53.771144278606926 - }, - "depth": 2, - "pid": 58894, - "ref": "e45" - }, - { - "index": 45, - "parentIndex": 44, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Home", - "identifier": "house.fill", - "rect": { - "x": 222.12437810945275, - "y": 486.0812603648424, - "width": 19.203980099502502, - "height": 16.96351697551671 - }, - "depth": 3, - "pid": 58894, - "ref": "e46" - }, - { - "index": 46, - "parentIndex": 44, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Go home", - "rect": { - "x": 250.9303482587065, - "y": 484.96102819237143, - "width": 66.5737976782753, - "height": 19.52404643449421 - }, - "depth": 3, - "pid": 58894, - "ref": "e47" - }, - { - "index": 47, - "parentIndex": 40, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "TOOLS", - "rect": { - "x": 23.363184079601993, - "y": 552.334991708126, - "width": 38.72802653399668, - "height": 13.762852404643468 - }, - "depth": 2, - "pid": 58894, - "ref": "e48" - }, - { - "index": 48, - "parentIndex": 40, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Source code explorer", - "rect": { - "x": 23.363184079601993, - "y": 573.7794361525705, - "width": 355.27363184079604, - "height": 53.771144278606926 - }, - "depth": 2, - "pid": 58894, - "ref": "e49" - }, - { - "index": 49, - "parentIndex": 48, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Show Map", - "identifier": "map", - "rect": { - "x": 41.92703150912106, - "y": 592.6633499170812, - "width": 16.643450030046914, - "height": 16.003317970541616 - }, - "depth": 3, - "pid": 58894, - "ref": "e50" - }, - { - "index": 50, - "parentIndex": 48, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Source code explorer", - "rect": { - "x": 69.45273631840797, - "y": 590.9029850746268, - "width": 155.87230514096186, - "height": 19.524046434494153 - }, - "depth": 3, - "pid": 58894, - "ref": "e51" - }, - { - "index": 51, - "parentIndex": 48, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Forward", - "identifier": "chevron.right", - "rect": { - "x": 356.8723051409619, - "y": 595.5439469320065, - "width": 5.761194029850742, - "height": 9.922056995221055 - }, - "depth": 3, - "pid": 58894, - "ref": "e52" - }, - { - "index": 52, - "parentIndex": 40, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Toggle performance monitor", - "rect": { - "x": 23.363184079601993, - "y": 627.8706467661691, - "width": 355.27363184079604, - "height": 53.771144278606926 - }, - "depth": 2, - "pid": 58894, - "ref": "e53" - }, - { - "index": 53, - "parentIndex": 52, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Speed", - "identifier": "speedometer", - "rect": { - "x": 42.247097844112766, - "y": 646.7545605306799, - "width": 16.32338308457711, - "height": 16.32338308457713 - }, - "depth": 3, - "pid": 58894, - "ref": "e54" - }, - { - "index": 54, - "parentIndex": 52, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "rect": { - "x": 69.45273631840797, - "y": 644.9941956882255, - "width": 208.04311774461024, - "height": 19.524046434494153 - }, - "depth": 3, - "pid": 58894, - "ref": "e55", - "inheritsLabel": true - }, - { - "index": 55, - "parentIndex": 40, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Toggle element inspector", - "rect": { - "x": 23.363184079601993, - "y": 681.9618573797678, - "width": 355.27363184079604, - "height": 53.771144278606926 - }, - "depth": 2, - "pid": 58894, - "ref": "e56" - }, - { - "index": 56, - "parentIndex": 55, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Scan", - "identifier": "viewfinder", - "rect": { - "x": 42.56716417910448, - "y": 701.1658374792703, - "width": 15.683251025071783, - "height": 15.68325102507174 - }, - "depth": 3, - "pid": 58894, - "ref": "e57" - }, - { - "index": 57, - "parentIndex": 55, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "rect": { - "x": 69.45273631840797, - "y": 699.0854063018242, - "width": 185.318407960199, - "height": 19.524046434494267 - }, - "depth": 3, - "pid": 58894, - "ref": "e58", - "inheritsLabel": true - }, - { - "index": 58, - "parentIndex": 40, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Open DevTools", - "rect": { - "x": 23.363184079601993, - "y": 736.0530679933665, - "width": 355.27363184079604, - "height": 53.771144278606926 - }, - "depth": 2, - "pid": 58894, - "ref": "e59" - }, - { - "index": 59, - "parentIndex": 58, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "chevron.left.chevron.right", - "identifier": "chevron.left.chevron.right", - "rect": { - "x": 40.64676616915423, - "y": 755.8971807628524, - "width": 19.203980099502488, - "height": 14.082919044874302 - }, - "depth": 3, - "pid": 58894, - "ref": "e60" - }, - { - "index": 60, - "parentIndex": 58, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Open DevTools", - "rect": { - "x": 69.45273631840797, - "y": 753.1766169154228, - "width": 110.42288557213931, - "height": 19.524046434494267 - }, - "depth": 3, - "pid": 58894, - "ref": "e61" - }, - { - "index": 61, - "parentIndex": 40, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Running", - "identifier": "figure.run", - "rect": { - "x": 43.207296849087896, - "y": 810.3084577114428, - "width": 13.762853015121536, - "height": 17.603649035022045 - }, - "depth": 2, - "pid": 58894, - "ref": "e62" - }, - { - "index": 62, - "parentIndex": 40, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Fast refresh", - "rect": { - "x": 69.45273631840797, - "y": 809.1882255389717, - "width": 86.7379767827529, - "height": 19.524046434494267 - }, - "depth": 2, - "pid": 58894, - "ref": "e63" - }, - { - "index": 63, - "parentIndex": 40, - "type": "Switch", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "value": "1", - "rect": { - "x": 163.87229919433594, - "y": 805.5074462890625, - "width": 199.4013214111328, - "height": 26.88555908203125 - }, - "depth": 2, - "pid": 58894, - "ref": "e64" - }, - { - "index": 64, - "parentIndex": 63, - "type": "Switch", - "role": "UISwitch", - "value": "1", - "rect": { - "x": 304.7014925373134, - "y": 805.5074626865671, - "width": 60.49253731343282, - "height": 26.885572139303463 - }, - "depth": 3, - "pid": 58894, - "ref": "e65" - }, - { - "index": 65, - "parentIndex": 40, - "type": "Switch", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "value": "1", - "rect": { - "x": 168.03317260742188, - "y": 863.439453125, - "width": 195.24044799804688, - "height": 2.5605468749998863 - }, - "depth": 2, - "pid": 58894, - "ref": "e66" - }, - { - "index": 66, - "parentIndex": 65, - "type": "Switch", - "role": "UISwitch", - "value": "1", - "rect": { - "x": 304.7014925373134, - "y": 863.4394693200663, - "width": 60.49253731343282, - "height": 2.5605306799335494 - }, - "depth": 3, - "pid": 58894, - "ref": "e67" - }, - { - "index": 67, - "parentIndex": 40, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 362.3134328358209, - "y": 452.47429519071306, - "width": 28.80597014925371, - "height": 359.0419539873368 - }, - "depth": 2, - "pid": 58894, - "ref": "e68" - }, - { - "index": 68, - "parentIndex": 40, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 3 pages", - "value": "0%", - "rect": { - "x": 362.3134328358209, - "y": 452.47429519071306, - "width": 28.80597014925371, - "height": 359.0419539873368 - }, - "depth": 2, - "pid": 58894, - "ref": "e69" - }, - { - "index": 69, - "parentIndex": 0, - "type": "ScrollView", - "role": "SwiftUI.HostingScrollView", - "subrole": "UIScrollView", - "rect": { - "x": 8, - "y": 452.47429519071306, - "width": 386, - "height": 413.5257048092868 - }, - "depth": 1, - "pid": 58894, - "ref": "e70" - }, - { - "index": 70, - "parentIndex": 69, - "type": "Image", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "dev-tools", - "rect": { - "x": 166.1127694859038, - "y": 487.0414593698175, - "width": 69.77446102819238, - "height": 76.81592039801001 - }, - "depth": 2, - "pid": 58894, - "ref": "e71" - }, - { - "index": 71, - "parentIndex": 69, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "This is the developer menu. It gives you access to useful tools in development builds.", - "rect": { - "x": 23.363184079601993, - "y": 598.424543946932, - "width": 349.19237147595356, - "height": 38.72802653399674 - }, - "depth": 2, - "pid": 58894, - "ref": "e72" - }, - { - "index": 72, - "parentIndex": 69, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "You can open it at any time by pressing the blue button with the gear icon, or with the ⌃ + d keyboard shortcut.", - "rect": { - "x": 23.363184079601993, - "y": 648.6749585406301, - "width": 336.38971807628525, - "height": 58.89220563847425 - }, - "depth": 2, - "pid": 58894, - "ref": "e73" - }, - { - "index": 73, - "parentIndex": 69, - "type": "StaticText", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "(Connect Hardware Keyboard must be enabled on your simulator to use this shortcut, you can toggle it with ⌘ + shift + K.)", - "rect": { - "x": 23.363184079601993, - "y": 711.407960199005, - "width": 330.9485903814262, - "height": 49.61028192371475 - }, - "depth": 2, - "pid": 58894, - "ref": "e74" - }, - { - "index": 74, - "parentIndex": 69, - "type": "Button", - "role": "SwiftUI.AccessibilityNode", - "subrole": "UIResponder", - "label": "Continue", - "rect": { - "x": 23.363184079601993, - "y": 776.3814262023217, - "width": 355.27363184079604, - "height": 44.169154228855746 - }, - "depth": 2, - "pid": 58894, - "ref": "e75" - }, - { - "index": 75, - "parentIndex": 69, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 2 pages", - "value": "0%", - "rect": { - "x": 362.3134328358209, - "y": 452.47429519071306, - "width": 28.80597014925371, - "height": 359.0419539873368 - }, - "depth": 2, - "pid": 58894, - "ref": "e76" - }, - { - "index": 76, - "parentIndex": 69, - "type": "Other", - "role": "_UIScrollViewScrollIndicator", - "label": "Vertical scroll bar, 2 pages", - "value": "0%", - "rect": { - "x": 362.3134328358209, - "y": 452.47429519071306, - "width": 28.80597014925371, - "height": 359.0419539873368 - }, - "depth": 2, - "pid": 58894, - "ref": "e77" - } - ], - "truncated": false, - "appName": "com.callstack.reactnativepaperexample", - "appBundleId": "com.callstack.reactnativepaperexample", - "visibility": { - "partial": true, - "visibleNodeCount": 77, - "totalNodeCount": 77, - "reasons": [ - "scroll-hidden-below" - ] - }, - "warnings": [ - "iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts." - ], - "snapshotDiagnostics": { - "stats": { - "count": 1046, - "p50Ms": 97, - "p95Ms": 131, - "maxMs": 677, - "slowThresholdMs": 1500, - "platform": "ios", - "backends": { - "xctest": 1046 - } - } - }, - "refsGeneration": 835863 - } -} diff --git a/example/visual/evidence/runner/ios-04-press-close.json b/example/visual/evidence/runner/ios-04-press-close.json deleted file mode 100644 index a1a624a62c..0000000000 --- a/example/visual/evidence/runner/ios-04-press-close.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "success": true, - "data": { - "x": 361, - "y": 419, - "message": "Tapped label=\"Close\" (361, 419)", - "referenceWidth": 402, - "referenceHeight": 874, - "targetKind": "selector", - "selector": "label=\"Close\"", - "selectorChain": [ - "id=\"xmark\"", - "role=\"button\" label=\"Close\"", - "label=\"Close\"" - ], - "refLabel": "Close", - "resolution": { - "source": "runtime", - "phase": "pre-action", - "kind": "unique" - } - } -} diff --git a/example/visual/evidence/runs/android/fix-fail/summary.json b/example/visual/evidence/runs/android/fix-fail/summary.json deleted file mode 100644 index 20fa1228a2..0000000000 --- a/example/visual/evidence/runs/android/fix-fail/summary.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-10T13:49:25.784Z", - "wallClockMs": 22960, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 9336, - "mismatchPercentage": 1.14, - "regions": [ - { - "index": 1, - "rect": { - "x": 473, - "y": 207, - "width": 374, - "height": 375 - }, - "normalizedRect": { - "x": 36.95, - "y": 32.24, - "width": 29.22, - "height": 58.41 - }, - "differentPixels": 9336, - "shareOfDiffPercentage": 100, - "densityPercentage": 6.66, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#eceaf0", - "baselineLuminance": 245, - "currentLuminance": 235, - "dominantChange": "mixed" - } - ], - "threshold": 0.02, - "pass": false - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-fail/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "fail", - "exitCode": 1, - "error": null, - "pass": false -} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png b/example/visual/evidence/runs/android/fix-fail/surface-example-elevated-diff.png deleted file mode 100644 index 5e6290efe898e4c6efcc1b44ddb0c18c844c4d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25122 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 diff --git a/example/visual/evidence/runs/android/fix-pass-after-revert/summary.json b/example/visual/evidence/runs/android/fix-pass-after-revert/summary.json deleted file mode 100644 index d2abf96d49..0000000000 --- a/example/visual/evidence/runs/android/fix-pass-after-revert/summary.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-10T13:49:54.800Z", - "wallClockMs": 22644, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-after-revert/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json b/example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json deleted file mode 100644 index 148b8221d1..0000000000 --- a/example/visual/evidence/runs/android/fix-pass-from-other-screen/summary.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-10T13:56:22.891Z", - "wallClockMs": 33634, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-other-screen/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/fix-pass-from-surface/summary.json b/example/visual/evidence/runs/android/fix-pass-from-surface/summary.json deleted file mode 100644 index 6768bd5f7d..0000000000 --- a/example/visual/evidence/runs/android/fix-pass-from-surface/summary.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-10T13:47:33.184Z", - "wallClockMs": 24928, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/fix-pass-from-surface/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/round2-pass/stdout.log b/example/visual/evidence/runs/android/round2-pass/stdout.log deleted file mode 100644 index a74104afc2..0000000000 --- a/example/visual/evidence/runs/android/round2-pass/stdout.log +++ /dev/null @@ -1,10 +0,0 @@ -# android — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass - relaunching the app (fresh bundle from Metro) - app ready (55 app nodes) - dev launcher: pressing "http://192.168.1.151:8081" (@e53) - app ready (52 app nodes) - restored onto the Surface screen -android surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -android surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/summary.json (exit 0) diff --git a/example/visual/evidence/runs/android/round2-pass/summary.json b/example/visual/evidence/runs/android/round2-pass/summary.json deleted file mode 100644 index e01b2845e3..0000000000 --- a/example/visual/evidence/runs/android/round2-pass/summary.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/Users/juliankobrynski/Projects/react-native-paper/example/visual", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-11T08:53:38.909Z", - "wallClockMs": 31013, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round2-pass/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log b/example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log deleted file mode 100644 index ddc742a6a5..0000000000 --- a/example/visual/evidence/runs/android/round3-pass-after-tools-off/stdout.log +++ /dev/null @@ -1,10 +0,0 @@ -# android — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off - relaunching the app (fresh bundle from Metro) - app ready (55 app nodes) - dev launcher: pressing "http://192.168.1.151:8081" (@e53) - app ready (50 app nodes) - restored onto the Surface screen -android surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -android surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json (exit 0) diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json b/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json deleted file mode 100644 index 1b06d47c41..0000000000 --- a/example/visual/evidence/runs/android/round3-pass-after-tools-off/summary.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-11T10:17:24.799Z", - "wallClockMs": 16183, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png b/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-elevated.png deleted file mode 100644 index c94e2bc1b130d2115e61ca8d2451db373b1ba6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31693 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 diff --git a/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png b/example/visual/evidence/runs/android/round3-pass-after-tools-off/surface-example-flat.png deleted file mode 100644 index 4f688b4e617c3a6ee0dd2fa84e42fc3384bb8bf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23886 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 diff --git a/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-flat.png b/example/visual/evidence/runs/android/round3-pass-rerun/surface-example-flat.png deleted file mode 100644 index 4f688b4e617c3a6ee0dd2fa84e42fc3384bb8bf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23886 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 A0RR91 diff --git a/example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log b/example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log deleted file mode 100644 index c630b16939..0000000000 --- a/example/visual/evidence/runs/android/round3-tools-autodisable/stdout.log +++ /dev/null @@ -1,16 +0,0 @@ -# android — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable - relaunching the app (fresh bundle from Metro) - app ready (55 app nodes) - dev launcher: pressing "http://192.168.1.151:8081" (@e53) - app ready (52 app nodes) - app ready (45 app nodes) - dev menu: pressing "Tools button" - app ready (45 app nodes) - dev menu: pressing "Close" - app ready (50 app nodes) - dev-client floating Tools button was inside the capture area — disabled it via the dev menu - restored onto the Surface screen -android surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -android surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json (exit 0) diff --git a/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json b/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json deleted file mode 100644 index 29854f1777..0000000000 --- a/example/visual/evidence/runs/android/round3-tools-autodisable/summary.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "platform": "android", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - }, - "observedEnv": { - "apiLevel": 37, - "androidRelease": "17", - "density": 480 - }, - "startedAt": "2026-09-11T10:22:04.180Z", - "wallClockMs": 20190, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-elevated-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/android/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/android/round3-tools-autodisable/surface-example-flat-diff.png", - "totalPixels": 821760, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-fail/summary.json b/example/visual/evidence/runs/ios/fix-fail/summary.json deleted file mode 100644 index 72239cf470..0000000000 --- a/example/visual/evidence/runs/ios/fix-fail/summary.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "commit": "cbcd52f7e", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-10T13:52:19.623Z", - "wallClockMs": 12776, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 10179, - "mismatchPercentage": 1.31, - "regions": [ - { - "index": 1, - "rect": { - "x": 471, - "y": 206, - "width": 378, - "height": 378 - }, - "normalizedRect": { - "x": 39.05, - "y": 32.09, - "width": 31.34, - "height": 58.88 - }, - "differentPixels": 10175, - "shareOfDiffPercentage": 99.96, - "densityPercentage": 7.12, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#faf3fb", - "averageCurrentColorHex": "#efe8f0", - "baselineLuminance": 245, - "currentLuminance": 234, - "dominantChange": "mixed" - }, - { - "index": 2, - "rect": { - "x": 483, - "y": 215, - "width": 2, - "height": 2 - }, - "normalizedRect": { - "x": 40.05, - "y": 33.49, - "width": 0.17, - "height": 0.31 - }, - "differentPixels": 3, - "shareOfDiffPercentage": 0.03, - "densityPercentage": 75, - "shape": "compact", - "size": "small", - "location": "center", - "averageBaselineColorHex": "#fbf4fc", - "averageCurrentColorHex": "#f6eff6", - "baselineLuminance": 246, - "currentLuminance": 241, - "dominantChange": "mixed" - }, - { - "index": 3, - "rect": { - "x": 835, - "y": 213, - "width": 1, - "height": 1 - }, - "normalizedRect": { - "x": 69.24, - "y": 33.18, - "width": 0.08, - "height": 0.16 - }, - "differentPixels": 1, - "shareOfDiffPercentage": 0.01, - "densityPercentage": 100, - "shape": "compact", - "size": "small", - "location": "middle-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f7f0f8", - "baselineLuminance": 248, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "threshold": 0.02, - "pass": false - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-fail/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "fail", - "exitCode": 1, - "error": null, - "pass": false -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png b/example/visual/evidence/runs/ios/fix-fail/surface-example-elevated-diff.png deleted file mode 100644 index 02219e89f4a5993c6b06e689981910067e9544d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 diff --git a/example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json b/example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json deleted file mode 100644 index d5288cd225..0000000000 --- a/example/visual/evidence/runs/ios/fix-pass-after-revert/summary.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "commit": "cbcd52f7e", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-10T13:52:37.539Z", - "wallClockMs": 12478, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-after-revert/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json b/example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json deleted file mode 100644 index d12c1e8718..0000000000 --- a/example/visual/evidence/runs/ios/fix-pass-from-other-screen/summary.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "commit": "cbcd52f7e", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-10T13:54:59.239Z", - "wallClockMs": 35643, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-other-screen/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json b/example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json deleted file mode 100644 index 035b3171e9..0000000000 --- a/example/visual/evidence/runs/ios/fix-pass-from-surface/summary.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "commit": "cbcd52f7e", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-10T13:50:31.703Z", - "wallClockMs": 12712, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/fix-pass-from-surface/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-fail-node20/stdout.log b/example/visual/evidence/runs/ios/round2-fail-node20/stdout.log deleted file mode 100644 index e64abd0f3b..0000000000 --- a/example/visual/evidence/runs/ios/round2-fail-node20/stdout.log +++ /dev/null @@ -1,11 +0,0 @@ -v20.20.2 -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20 - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=10179 (1.31%) regions=3 threshold=0.02 → FAIL -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/summary.json (exit 1) diff --git a/example/visual/evidence/runs/ios/round2-fail-node20/summary.json b/example/visual/evidence/runs/ios/round2-fail-node20/summary.json deleted file mode 100644 index 7ebd922c52..0000000000 --- a/example/visual/evidence/runs/ios/round2-fail-node20/summary.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T08:55:29.900Z", - "wallClockMs": 16599, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 10179, - "mismatchPercentage": 1.31, - "regions": [ - { - "index": 1, - "rect": { - "x": 471, - "y": 206, - "width": 378, - "height": 378 - }, - "normalizedRect": { - "x": 39.05, - "y": 32.09, - "width": 31.34, - "height": 58.88 - }, - "differentPixels": 10175, - "shareOfDiffPercentage": 99.96, - "densityPercentage": 7.12, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#faf3fb", - "averageCurrentColorHex": "#efe8f0", - "baselineLuminance": 245, - "currentLuminance": 234, - "dominantChange": "mixed" - }, - { - "index": 2, - "rect": { - "x": 483, - "y": 215, - "width": 2, - "height": 2 - }, - "normalizedRect": { - "x": 40.05, - "y": 33.49, - "width": 0.17, - "height": 0.31 - }, - "differentPixels": 3, - "shareOfDiffPercentage": 0.03, - "densityPercentage": 75, - "shape": "compact", - "size": "small", - "location": "center", - "averageBaselineColorHex": "#fbf4fc", - "averageCurrentColorHex": "#f6eff6", - "baselineLuminance": 246, - "currentLuminance": 241, - "dominantChange": "mixed" - }, - { - "index": 3, - "rect": { - "x": 835, - "y": 213, - "width": 1, - "height": 1 - }, - "normalizedRect": { - "x": 69.24, - "y": 33.18, - "width": 0.08, - "height": 0.16 - }, - "differentPixels": 1, - "shareOfDiffPercentage": 0.01, - "densityPercentage": 100, - "shape": "compact", - "size": "small", - "location": "middle-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f7f0f8", - "baselineLuminance": 248, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "threshold": 0.02, - "pass": false - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "fail", - "exitCode": 1, - "error": null, - "pass": false -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png b/example/visual/evidence/runs/ios/round2-fail-node20/surface-example-elevated-diff.png deleted file mode 100644 index 02219e89f4a5993c6b06e689981910067e9544d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 diff --git a/example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log b/example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log deleted file mode 100644 index 85b86bdc5b..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass-after-revert/stdout.log +++ /dev/null @@ -1,11 +0,0 @@ -v20.20.2 -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json b/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json deleted file mode 100644 index 2ff0de571a..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass-after-revert/summary.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T08:55:54.204Z", - "wallClockMs": 16623, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-after-revert/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log b/example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log deleted file mode 100644 index c57213570e..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass-node20-literal/stdout.log +++ /dev/null @@ -1,10 +0,0 @@ -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json b/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json deleted file mode 100644 index 9423038b98..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass-node20-literal/summary.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T08:57:34.302Z", - "wallClockMs": 17106, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20-literal/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-pass-node20/stdout.log b/example/visual/evidence/runs/ios/round2-pass-node20/stdout.log deleted file mode 100644 index 4bcbd2b112..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass-node20/stdout.log +++ /dev/null @@ -1,11 +0,0 @@ -v20.20.2 -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20 - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass-node20/summary.json b/example/visual/evidence/runs/ios/round2-pass-node20/summary.json deleted file mode 100644 index 83ea220d6f..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass-node20/summary.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T08:54:56.543Z", - "wallClockMs": 17376, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass-node20/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round2-pass/stdout.log b/example/visual/evidence/runs/ios/round2-pass/stdout.log deleted file mode 100644 index 538e4d1aa4..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass/stdout.log +++ /dev/null @@ -1,10 +0,0 @@ -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round2-pass/summary.json b/example/visual/evidence/runs/ios/round2-pass/summary.json deleted file mode 100644 index aa3ad90e39..0000000000 --- a/example/visual/evidence/runs/ios/round2-pass/summary.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png", - "cropWidth": 1206, - "cropHeight": 642, - "logicalWidth": 402, - "logicalHeight": 214 - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "cropWidth": 1280, - "cropHeight": 642, - "totalPixels": 821760, - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T08:53:19.036Z", - "wallClockMs": 15434, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round2-pass/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log b/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log deleted file mode 100644 index 22ad177fde..0000000000 --- a/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/stdout.log +++ /dev/null @@ -1,6 +0,0 @@ -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit2-device-mismatch -error: device does not match /Users/juliankobrynski/Projects/react-native-paper/example/visual/env.json: - - udid: expected 00000000-0000-4000-8000-000000000000, observed not present in xcrun simctl list (no such simulator) -refusing to run: baselines are only comparable on the device they were captured on. Boot/point at the right device, or pass --force to continue anyway. -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json (exit 2) diff --git a/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json b/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json deleted file mode 100644 index 3e74b0bdb0..0000000000 --- a/example/visual/evidence/runs/ios/round3-exit2-device-mismatch/summary.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit2-device-mismatch", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "00000000-0000-4000-8000-000000000000", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": {}, - "startedAt": "2026-09-11T10:13:44.919Z", - "wallClockMs": 234, - "results": [], - "status": "error", - "exitCode": 2, - "error": { - "message": "device does not match /Users/juliankobrynski/Projects/react-native-paper/example/visual/env.json:\n - udid: expected 00000000-0000-4000-8000-000000000000, observed not present in xcrun simctl list (no such simulator)\nrefusing to run: baselines are only comparable on the device they were captured on. Boot/point at the right device, or pass --force to continue anyway.", - "exitCode": 2 - }, - "pass": false -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log b/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log deleted file mode 100644 index fae897d740..0000000000 --- a/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/stdout.log +++ /dev/null @@ -1,12 +0,0 @@ -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -error: surface-example-elevated: capture dimensions do not match the baseline __baselines__/ios/surface-example-elevated.png: - - width: expected 1206, actual 804 - - height: expected 642, actual 428 -a wrong-sized capture cannot be compared with the baseline. Check --crop-on/--pixel-density and the device; if the new size is the intended one, re-record the baselines with --update. (--force does not override this.) -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json (exit 3) diff --git a/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json b/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json deleted file mode 100644 index b00ce67055..0000000000 --- a/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch/summary.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-exit3-crop-mismatch", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 2, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T10:13:45.217Z", - "wallClockMs": 11559, - "results": [], - "status": "error", - "exitCode": 3, - "error": { - "message": "surface-example-elevated: capture dimensions do not match the baseline __baselines__/ios/surface-example-elevated.png:\n - width: expected 1206, actual 804\n - height: expected 642, actual 428\na wrong-sized capture cannot be compared with the baseline. Check --crop-on/--pixel-density and the device; if the new size is the intended one, re-record the baselines with --update. (--force does not override this.)", - "exitCode": 3 - }, - "pass": false -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-pass-final/stdout.log b/example/visual/evidence/runs/ios/round3-pass-final/stdout.log deleted file mode 100644 index 8b001ec3b0..0000000000 --- a/example/visual/evidence/runs/ios/round3-pass-final/stdout.log +++ /dev/null @@ -1,10 +0,0 @@ -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round3-pass-final/summary.json b/example/visual/evidence/runs/ios/round3-pass-final/summary.json deleted file mode 100644 index 37e393162b..0000000000 --- a/example/visual/evidence/runs/ios/round3-pass-final/summary.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T10:23:03.857Z", - "wallClockMs": 12804, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass-final/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/runs/ios/round3-pass/stdout.log b/example/visual/evidence/runs/ios/round3-pass/stdout.log deleted file mode 100644 index e607ebb7d7..0000000000 --- a/example/visual/evidence/runs/ios/round3-pass/stdout.log +++ /dev/null @@ -1,10 +0,0 @@ -# ios — threshold 0.02 -# output: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass - relaunching the app (fresh bundle from Metro) - app ready (77 app nodes) - dev menu: pressing "Close" (@e40) - app ready (37 app nodes) - restored onto the Surface screen -ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS -ios surface-example-flat changed=0 (0%) regions=0 threshold=0.02 → PASS -# summary: /Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/summary.json (exit 0) diff --git a/example/visual/evidence/runs/ios/round3-pass/summary.json b/example/visual/evidence/runs/ios/round3-pass/summary.json deleted file mode 100644 index 5b2014f7d6..0000000000 --- a/example/visual/evidence/runs/ios/round3-pass/summary.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "platform": "ios", - "threshold": 0.02, - "update": false, - "force": false, - "stories": [ - "surface-example-elevated", - "surface-example-flat" - ], - "outDir": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass", - "agentDeviceVersion": "agent-device@0.21.0", - "sessionCwd": "/private/tmp/claude-501/-Users-juliankobrynski-Projects-react-native-paper/fcf78f94-c11f-487d-99d7-651c4585650a/scratchpad", - "expectedEnv": { - "platform": "ios", - "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "iosVersion": "26.5", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "scale": 3, - "pixelDensity": 3, - "agentDeviceVersion": "0.21.0", - "reactNativeVersion": "0.85.3", - "branch": "poc/agent-device-visual", - "date": "2026-09-10T09:30:58Z", - "baselines": { - "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", - "surface-example-flat": "__baselines__/ios/surface-example-flat.png" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, - "android": { - "avd": "Pixel_10_Pro", - "device": "Pixel 10 Pro", - "serial": "emulator-5554", - "apiLevel": 37, - "androidRelease": "17", - "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", - "density": 480, - "screenPx": "1280x2856", - "emulatorVersion": "36.6.11.0 (build_id 15507667)", - "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", - "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", - "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", - "date": "2026-09-10T09:45:00Z", - "baselines": { - "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - } - } - }, - "observedEnv": { - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", - "name": "iPhone 17 Pro", - "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", - "state": "Booted" - }, - "startedAt": "2026-09-11T10:14:25.049Z", - "wallClockMs": 12803, - "results": [ - { - "story": "surface-example-elevated", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-elevated.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-elevated.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-elevated-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - }, - { - "story": "surface-example-flat", - "baseline": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/__baselines__/ios/surface-example-flat.png", - "current": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-flat.png", - "diff": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/runs/ios/round3-pass/surface-example-flat-diff.png", - "totalPixels": 774252, - "changedPixels": 0, - "mismatchPercentage": 0, - "regions": [], - "threshold": 0.02, - "pass": true - } - ], - "status": "pass", - "exitCode": 0, - "error": null, - "pass": true -} \ No newline at end of file diff --git a/example/visual/evidence/summarize.mjs b/example/visual/evidence/summarize.mjs deleted file mode 100644 index 97c457fda9..0000000000 --- a/example/visual/evidence/summarize.mjs +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env node -/** - * Regenerates example/visual/evidence/summary.md from the raw agent-device JSON - * kept under example/visual/evidence/. - * - * node example/visual/evidence/summarize.mjs [evidence-dir] - * - * Every *.json that reports a diff is picked up: an agent-device `diff` payload - * (`data.differentPixels`) or a run.mjs summary.json (one row per entry in - * `results`). Files are grouped into one table per directory, in walk order. - */ - -import fs from 'node:fs'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -const COLUMNS = [ - 'file', - 'total px', - 'changed px', - 'mismatch %', - 'regions', - 'match', -]; - -/** Every *.json under `dir`, depth-first, directories and files sorted. */ -function jsonFiles(dir) { - const found = []; - for (const entry of fs - .readdirSync(dir, { withFileTypes: true }) - .sort((a, b) => a.name.localeCompare(b.name))) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) found.push(...jsonFiles(full)); - else if (entry.name.endsWith('.json')) found.push(full); - } - return found; -} - -/** The diff rows a single JSON file contributes, or [] if it reports no diff. */ -function rowsOf(file) { - let json; - try { - json = JSON.parse(fs.readFileSync(file, 'utf8')); - } catch { - return []; - } - - const name = path.basename(file); - - if (json?.data?.differentPixels != null) { - const d = json.data; - return [ - { - file: name, - total: d.totalPixels, - changed: d.differentPixels, - mismatch: d.mismatchPercentage, - regions: d.regions?.length ?? 0, - match: d.match, - }, - ]; - } - - // run.mjs summary.json: the diff numbers live one level down, per story. - if (Array.isArray(json?.results)) { - return json.results - .filter((r) => r.changedPixels != null) - .map((r) => ({ - file: `${name} (${r.story})`, - total: r.totalPixels, - changed: r.changedPixels, - mismatch: r.mismatchPercentage, - regions: r.regions?.length ?? 0, - match: r.pass, - })); - } - - return []; -} - -function renderTable(rows) { - const cells = rows.map((r) => [ - r.file, - String(r.total ?? ''), - String(r.changed ?? ''), - String(r.mismatch ?? ''), - String(r.regions ?? ''), - r.match ? 'yes' : 'no', - ]); - const widths = COLUMNS.map((header, i) => - Math.max(header.length, ...cells.map((c) => c[i].length)) - ); - const line = (values) => - `| ${values.map((v, i) => v.padEnd(widths[i])).join(' | ')} |`; - - return [ - line(COLUMNS), - `| ${widths.map((w) => '-'.repeat(w)).join(' | ')} |`, - ...cells.map(line), - ].join('\n'); -} - -function main() { - const root = path.resolve( - process.argv[2] || path.dirname(fileURLToPath(import.meta.url)) - ); - - const sections = new Map(); - for (const file of jsonFiles(root)) { - const rows = rowsOf(file); - if (rows.length === 0) continue; - const section = `${path.relative(root, path.dirname(file)) || '.'}/`; - sections.set(section, [...(sections.get(section) || []), ...rows]); - } - - const out = [ - '# Evidence summary', - '', - 'generated by evidence/summarize.mjs — do not edit by hand', - '', - ...[...sections].flatMap(([section, rows]) => [ - `## ${section}`, - '', - renderTable(rows), - '', - ]), - ].join('\n'); - - const target = path.join(root, 'summary.md'); - fs.writeFileSync(target, out); - const total = [...sections.values()].reduce((n, r) => n + r.length, 0); - console.log(`${target}: ${total} rows in ${sections.size} sections`); -} - -main(); diff --git a/example/visual/evidence/summary.md b/example/visual/evidence/summary.md deleted file mode 100644 index ef609764d1..0000000000 --- a/example/visual/evidence/summary.md +++ /dev/null @@ -1,242 +0,0 @@ -# Evidence summary - -generated by evidence/summarize.mjs — do not edit by hand - -## android/ - -| file | total px | changed px | mismatch % | regions | match | -| ------------------------------ | -------- | ---------- | ---------- | ------- | ----- | -| 103-diff-relaunch-1-t0.01.json | 821760 | 0 | 0 | 0 | yes | -| 103-diff-relaunch-1-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| 103-diff-relaunch-1-t0.05.json | 821760 | 0 | 0 | 0 | yes | -| 103-diff-relaunch-1-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| 108-diff-gross-t0.01.json | 821760 | 265916 | 32.36 | 2 | no | -| 108-diff-gross-t0.02.json | 821760 | 208505 | 25.37 | 4 | no | -| 108-diff-gross-t0.05.json | 821760 | 118661 | 14.44 | 4 | no | -| 108-diff-gross-t0.1.json | 821760 | 65051 | 7.92 | 2 | no | -| 111-diff-revert1-t0.01.json | 821760 | 0 | 0 | 0 | yes | -| 111-diff-revert1-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| 111-diff-revert1-t0.05.json | 821760 | 0 | 0 | 0 | yes | -| 111-diff-revert1-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| 114-diff-realistic-t0.01.json | 821760 | 14686 | 1.79 | 1 | no | -| 114-diff-realistic-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | -| 114-diff-realistic-t0.05.json | 821760 | 1830 | 0.22 | 1 | no | -| 114-diff-realistic-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| 117-diff-revert2-t0.01.json | 821760 | 0 | 0 | 0 | yes | -| 117-diff-revert2-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| 117-diff-revert2-t0.05.json | 821760 | 0 | 0 | 0 | yes | -| 117-diff-revert2-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-1-t0.01.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-1-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-1-t0.05.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-1-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-2-t0.01.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-2-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-2-t0.05.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-2-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-3-t0.01.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-3-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-3-t0.05.json | 821760 | 0 | 0 | 0 | yes | -| 94-diff-warm-3-t0.1.json | 821760 | 0 | 0 | 0 | yes | - -## ios/ - -| file | total px | changed px | mismatch % | regions | match | -| ---------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| 26-diff.json | 86028 | 0 | 0 | 0 | yes | -| 30-diff.json | 86028 | 0 | 0 | 0 | yes | -| 37-diff.json | 774252 | 0 | 0 | 0 | yes | -| 40-diff.json | 774252 | 0 | 0 | 0 | yes | -| 43-diff.json | 774252 | 0 | 0 | 0 | yes | -| 53-diff.json | 774252 | 0 | 0 | 0 | yes | -| 59-diff.json | 774252 | 4277 | 0.55 | 1 | no | -| 60-diff.json | 774252 | 116292 | 15.02 | 3 | no | -| 63-diff.json | 774252 | 0 | 0 | 0 | yes | -| 66-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | -| 66-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | -| 69-diff.json | 774252 | 0 | 0 | 0 | yes | -| 6x-diff-relaunch-1-t002.json | 774252 | 0 | 0 | 0 | yes | -| 6x-diff-warm-1-t002.json | 774252 | 0 | 0 | 0 | yes | -| 6x-diff-warm-2-t002.json | 774252 | 0 | 0 | 0 | yes | -| 6x-diff-warm-3-t002.json | 774252 | 0 | 0 | 0 | yes | - -## runs/android/fix-fail/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 9336 | 1.14 | 1 | no | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/fix-pass-after-revert/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/fix-pass-from-other-screen/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/fix-pass-from-surface/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/round2-pass/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/round3-pass/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 2822 | 0.34 | 1 | no | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/round3-pass-after-tools-off/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/round3-pass-final/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/round3-pass-rerun/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 2822 | 0.34 | 1 | no | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/android/round3-tools-autodisable/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 821760 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 821760 | 0 | 0 | 0 | yes | - -## runs/ios/fix-fail/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 10179 | 1.31 | 3 | no | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/fix-pass-after-revert/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/fix-pass-from-other-screen/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/fix-pass-from-surface/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round2-fail-node20/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 10179 | 1.31 | 3 | no | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round2-pass/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round2-pass-after-revert/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round2-pass-node20/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round2-pass-node20-literal/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round3-pass/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## runs/ios/round3-pass-final/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| summary.json (surface-example-elevated) | 774252 | 0 | 0 | 0 | yes | -| summary.json (surface-example-flat) | 774252 | 0 | 0 | 0 | yes | - -## sensitivity/android/ - -| file | total px | changed px | mismatch % | regions | match | -| ----------------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| gross-diff-t0.02.json | 821760 | 208505 | 25.37 | 4 | no | -| gross-diff-t0.1.json | 821760 | 65051 | 7.92 | 2 | no | -| gross-probe-diff-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| gross-probe-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| realistic-1-diff-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | -| realistic-1-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| realistic-2-diff-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | -| realistic-2-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| realistic-3-diff-t0.02.json | 821760 | 9336 | 1.14 | 1 | no | -| realistic-3-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| reverted-diff-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| reverted-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | -| sanity-before-break-diff-t0.02.json | 821760 | 0 | 0 | 0 | yes | -| sanity-before-break-diff-t0.1.json | 821760 | 0 | 0 | 0 | yes | - -## sensitivity/ios/ - -| file | total px | changed px | mismatch % | regions | match | -| --------------------------- | -------- | ---------- | ---------- | ------- | ----- | -| gross-diff-t0.02.json | 774252 | 116292 | 15.02 | 3 | no | -| gross-diff-t0.1.json | 774252 | 4277 | 0.55 | 1 | no | -| realistic-1-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | -| realistic-1-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | -| realistic-2-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | -| realistic-2-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | -| realistic-3-diff-t0.02.json | 774252 | 10179 | 1.31 | 3 | no | -| realistic-3-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | -| reverted-diff-t0.02.json | 774252 | 0 | 0 | 0 | yes | -| reverted-diff-t0.1.json | 774252 | 0 | 0 | 0 | yes | diff --git a/example/visual/run.mjs b/example/visual/run.mjs deleted file mode 100644 index 1f082e28e2..0000000000 --- a/example/visual/run.mjs +++ /dev/null @@ -1,1207 +0,0 @@ -#!/usr/bin/env node -/** - * Visual regression loop for the Surface example (PoC). - * - * node example/visual/run.mjs --platform ios|android [--update] [--force] - * [--threshold 0.02] [--story surface-example-elevated,surface-example-flat] - * [--out ] - * - * Drives agent-device 0.21.0 through `npx` and parses `--json` stdout. The - * package does export `createAgentDeviceClient`, but it is not a dependency of - * this repo and is not resolvable from `example/`, and the PoC rule is "no new - * dependencies", so the CLI is spawned instead. - * - * Prerequisites (documented, not automated): the example app is already built - * and installed on a device matching example/visual/env.json, Metro is running, - * and the baselines in example/visual/__baselines__// were captured - * on that same device. - * - * Every run relaunches the app: the example app persists its navigation state - * (PERSISTENCE_KEY in example/src/index.tsx), and only a relaunch makes the app - * fetch a fresh JS bundle from Metro — Fast Refresh alone was observed not to - * reach the Android app, which made captures silently stale. - * - * Exit codes: 0 pass, 1 a story FAILed the diff, 2 setup/environment error, - * 3 a capture came back with the wrong dimensions. `summary.json` is written in - * the output directory in every one of those cases, except an argument error, - * which prints the problem and exits 2 before there are any options to summarise. - * - * Unit tests: node --test example/visual/run.test.mjs - */ - -import { spawnSync } from 'node:child_process'; -import fs from 'node:fs'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -const VISUAL_DIR = path.dirname(fileURLToPath(import.meta.url)); -const BASELINE_DIR = path.join(VISUAL_DIR, '__baselines__'); -const ENV_FILE = path.join(VISUAL_DIR, 'env.json'); -const AGENT_DEVICE = 'agent-device@0.21.0'; -const BUNDLE_ID = 'com.callstack.reactnativepaperexample'; -const DEFAULT_STORIES = ['surface-example-elevated', 'surface-example-flat']; -const DEFAULT_THRESHOLD = 0.02; // PoC finding: the CLI default of 0.1 misses soft-shadow regressions. -const SCROLL_STEP = 6; // rows per `scroll down` in the example list -const MAX_SCROLL_STEPS = 6; // bound the search so a wrong screen fails instead of looping -const MAX_BACK_STEPS = 8; // deepest example nesting is 2; 8 leaves room and still terminates -const MAX_OVERLAY_STEPS = 5; // dev menu + dev launcher, each possibly twice - -// App-ready polling. Right after `open` the tree is just the splash screen -// (iOS: 3 nodes — Application, SplashScreenLogo, "Downloading 100%…"), and -// after leaving the Android dev launcher it is an 11-node "Connecting to the -// development server…" screen, so any check that snapshots immediately reads -// the wrong screen. Node count alone is not enough: the loading screens are -// matched by label too. -const READY_TIMEOUT_MS = 30000; -const READY_POLL_MS = 1000; -const READY_MIN_NODES = 10; -const NOT_READY_LABEL = - /^(Downloading|Connecting to|Loading|Building JavaScript bundle)/i; -const NOT_READY_IDENTIFIER = /SplashScreen/i; - -// Overlay detection. The dev-menu labels are generic, so they only count when -// a dev-menu-only marker is on screen too; the dev launcher is Expo's -// "DEVELOPMENT SERVERS / RECENTLY OPENED" screen, which no dev-menu label hits. -const DEV_MENU_LABELS = ['Close', 'Continue']; -const DEV_MENU_MARKERS = [ - 'Reload', - 'Go home', - 'Fast refresh', - 'Fast Refresh', - 'TOOLS', - 'Toggle element inspector', - 'Open DevTools', -]; -const DEV_LAUNCHER_MARKERS = ['DEVELOPMENT SERVERS', 'RECENTLY OPENED']; -const METRO_PORT = '8081'; - -// The Expo dev client's floating "Tools" button: a small image control labelled -// exactly "Tools", drawn on top of the app. On Android at 480 dpi it sits in the -// top-right corner of the surface-example-elevated crop, where it diffs as a -// deterministic ~2,800-pixel "regression" with the library untouched. The dev -// menu has a "TOOLS" section of its own, so a tree showing the dev menu is -// excluded outright; its rows are text nodes, which is what the type check -// rules out (android.widget.TextView on Android, StaticText on iOS). -const FLOATING_TOOLS_LABEL = 'Tools'; -const TOOLS_TOGGLE_LABEL = 'Tools button'; // the dev menu row that toggles it -const DEV_MENU_CLOSE_LABEL = 'Close'; -const ANDROID_KEYCODE_MENU = '82'; // opens the RN dev menu via adb - -const LIST_ROOT_TITLE = 'Examples'; // Appbar title of the example-list root -const SURFACE_ROW_LABEL = 'Surface'; -const BACK_LABEL = 'Back'; - -// agent-device sessions are keyed by cwd. Point this at the directory whose -// session is already bound to the intended device to reuse that binding; -// otherwise a fresh session is created and bound by `open --udid`. -const SESSION_CWD = process.env.AGENT_DEVICE_SESSION_CWD || VISUAL_DIR; - -let commandSeq = 0; -let cmdDir = VISUAL_DIR; - -/** - * A failure with an exit code attached. Thrown rather than exiting on the spot - * so that main() can still write summary.json before the process ends. - */ -class RunFailure extends Error { - constructor(message, exitCode) { - super(message); - this.name = 'RunFailure'; - this.exitCode = exitCode; - } -} - -function fail(message, code = 2) { - throw new RunFailure(message, code); -} - -function warn(message) { - console.warn(`WARNING: ${message}`); -} - -function sleepSync(ms) { - Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); -} - -function parseArgs(argv) { - const out = { - update: false, - force: false, - threshold: DEFAULT_THRESHOLD, - stories: DEFAULT_STORIES, - outDir: null, - }; - - for (let i = 0; i < argv.length; i++) { - const arg = argv[i]; - const next = () => { - const value = argv[++i]; - if (value == null) fail(`${arg} needs a value`); - return value; - }; - - switch (arg) { - case '--platform': - out.platform = next(); - break; - case '--update': - out.update = true; - break; - case '--force': - out.force = true; - break; - case '--threshold': - out.threshold = Number(next()); - break; - case '--out': - out.outDir = path.resolve(next()); - break; - case '--story': - case '--stories': - out.stories = next() - .split(',') - .map((s) => s.trim()) - .filter(Boolean); - break; - case '--help': - case '-h': - console.log( - 'usage: node example/visual/run.mjs --platform ios|android [--update] [--force]\n' + - ' [--threshold <0-1>] [--story|--stories a,b] [--out ]\n' + - '\n' + - ' --update write the captures to __baselines__// instead of diffing\n' + - ' them (the capture-size check is skipped; the captured dimensions\n' + - ' are printed instead)\n' + - ' --force run even though the device does not match env.json. It covers the\n' + - ' device check only — a capture-size mismatch is never overridden.' - ); - process.exit(0); - break; - default: - fail(`unknown argument ${arg}`); - } - } - - if (out.platform !== 'ios' && out.platform !== 'android') { - fail('--platform must be ios or android'); - } - if ( - !Number.isFinite(out.threshold) || - out.threshold < 0 || - out.threshold > 1 - ) { - fail('--threshold must be a number between 0 and 1'); - } - if (out.outDir == null) { - out.outDir = path.join(VISUAL_DIR, 'artifacts', 'run', out.platform); - } - - return out; -} - -/** - * Environment for the nested `npx agent-device` call. When this script itself - * runs under `npx -p node@20 node run.mjs`, npx exports `npm_config_package` - * (and friends) into the child; the nested npx then reads that, installs - * node@20 and treats `agent-device@0.21.0` as a command name inside it. Strip - * every npm_config_* variable so the nested npx resolves its own package. - */ -function spawnEnv() { - const env = {}; - for (const [key, value] of Object.entries(process.env)) { - if (!key.startsWith('npm_config_')) env[key] = value; - } - return env; -} - -/** Runs one agent-device command, records its JSON, returns the parsed payload. */ -function ad(label, args, { allowFail = false } = {}) { - const argv = [AGENT_DEVICE, ...args, '--json']; - const startedAt = Date.now(); - const proc = spawnSync('npx', argv, { - cwd: SESSION_CWD, - encoding: 'utf8', - env: spawnEnv(), - maxBuffer: 256 * 1024 * 1024, - }); - const elapsedMs = Date.now() - startedAt; - const stdout = proc.stdout || ''; - - let parsed = null; - const first = stdout.indexOf('{'); - const last = stdout.lastIndexOf('}'); - if (first !== -1 && last > first) { - try { - parsed = JSON.parse(stdout.slice(first, last + 1)); - } catch { - parsed = null; - } - } - - const file = path.join( - cmdDir, - `${String(++commandSeq).padStart(3, '0')}-${label}.json` - ); - fs.writeFileSync( - file, - JSON.stringify( - { - command: ['npx', ...argv], - cwd: SESSION_CWD, - exitCode: proc.status, - elapsedMs, - response: parsed, - stdout: parsed ? undefined : stdout, - stderr: proc.stderr || undefined, - }, - null, - 2 - ) - ); - - const ok = proc.status === 0 && parsed && parsed.success !== false; - if (!ok && !allowFail) { - const reason = - parsed?.error?.details?.reason || - parsed?.error?.message || - proc.stderr?.trim() || - `exit ${proc.status}`; - fail(`agent-device ${label} failed: ${reason} (see ${file})`); - } - - return { - ok, - data: parsed?.data ?? null, - error: parsed?.error ?? null, - elapsedMs, - }; -} - -/** - * Snapshot helper. `--force-full` on every call: without it agent-device - * returns an empty `nodes` array whenever the tree is unchanged, which reads - * as "the element is gone" (PoC issue 13). - */ -function snapshot(label, globals, extra = []) { - const snap = ad(label, ['snapshot', ...extra, '--force-full', ...globals]); - return snap.data?.nodes || []; -} - -function sh(command, args) { - const proc = spawnSync(command, args, { - encoding: 'utf8', - maxBuffer: 64 * 1024 * 1024, - }); - return { - status: proc.status, - stdout: proc.stdout || '', - stderr: proc.stderr || '', - }; -} - -function adbPath() { - const home = process.env.HOME || ''; - const sdk = - process.env.ANDROID_HOME || - process.env.ANDROID_SDK_ROOT || - path.join(home, 'Library/Android/sdk'); - const candidate = path.join(sdk, 'platform-tools/adb'); - return fs.existsSync(candidate) ? candidate : 'adb'; -} - -/** - * Reads the simulator matching `expectedUdid` out of `xcrun simctl list`. - * Returns `{ observed }` on success, or `{ error }` describing why the device - * could not be inspected. - */ -function observeIos(expectedUdid) { - const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); - if (res.status !== 0) { - return { - error: { - what: 'device inspection', - expected: `xcrun simctl list to succeed for udid ${expectedUdid}`, - actual: `exit ${res.status} ${res.stderr.trim()}`, - }, - }; - } - - let devices; - try { - devices = JSON.parse(res.stdout).devices || {}; - } catch { - return { - error: { - what: 'device inspection', - expected: 'parseable xcrun simctl list output', - actual: 'unparseable JSON', - }, - }; - } - - let match = null; - for (const [runtime, list] of Object.entries(devices)) { - for (const device of list) { - if (device.udid === expectedUdid) match = { runtime, device }; - } - } - - if (!match) { - return { - error: { - what: 'udid', - expected: expectedUdid, - actual: 'not present in xcrun simctl list (no such simulator)', - }, - }; - } - - return { - observed: { - udid: match.device.udid, - name: match.device.name, - runtime: match.runtime, - state: match.device.state, - }, - }; -} - -/** Reads API level, release and density off the connected device via adb. */ -function observeAndroid() { - const adb = adbPath(); - const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); - const sdkLevel = prop('ro.build.version.sdk'); - if (!sdkLevel) { - return { - error: { - what: 'device inspection', - expected: `Android properties readable via ${adb}`, - actual: 'no response (is an emulator connected?)', - }, - }; - } - - const densityOut = sh(adb, ['shell', 'wm', 'density']).stdout; - const densityMatch = densityOut.match(/(\d+)\s*$/m); - - return { - observed: { - apiLevel: Number(sdkLevel), - androidRelease: prop('ro.build.version.release'), - density: densityMatch ? Number(densityMatch[1]) : null, - }, - }; -} - -const DEFAULT_OBSERVERS = { observeIos, observeAndroid }; - -/** - * Compares the connected device with env.json. Returns the observed values and - * the list of mismatches; the caller decides what to do with them. A device - * that cannot be inspected counts as a mismatch: baselines are only meaningful - * on a device we could actually identify. The observers are injected so the - * comparison can be tested without xcrun/adb. - */ -function checkEnvironment(platform, env, observers = DEFAULT_OBSERVERS) { - const mismatches = []; - const mismatch = (what, expected, actual) => - mismatches.push(`${what}: expected ${expected}, observed ${actual}`); - - const read = - platform === 'ios' - ? observers.observeIos(env.udid) - : observers.observeAndroid(); - if (read.error) { - mismatch(read.error.what, read.error.expected, read.error.actual); - return { observed: {}, mismatches }; - } - const observed = read.observed; - - if (platform === 'ios') { - // The runtime identifier carries the iOS version (…SimRuntime.iOS-26-5), so - // comparing it also covers env.iosVersion. - if (env.runtime && observed.runtime !== env.runtime) { - mismatch('runtime', env.runtime, observed.runtime); - } - if (env.device && observed.name !== env.device) { - mismatch('device name', env.device, observed.name); - } - if (observed.state !== 'Booted') { - mismatch('device state', 'Booted', observed.state); - } - return { observed, mismatches }; - } - - if (env.apiLevel != null && observed.apiLevel !== env.apiLevel) { - mismatch('Android API level', env.apiLevel, observed.apiLevel); - } - if (env.density != null && observed.density !== env.density) { - mismatch('Android density', env.density, observed.density ?? 'unreadable'); - } - return { observed, mismatches }; -} - -/** - * Throws unless the device matches env.json. `--force` downgrades the - * mismatches to warnings so a deliberate re-baseline on another device is - * still possible, but never by accident. This is the only check `--force` - * covers. - */ -function enforceEnvironment( - platform, - env, - force, - observers = DEFAULT_OBSERVERS -) { - const { observed, mismatches } = checkEnvironment(platform, env, observers); - if (mismatches.length === 0) return observed; - - const detail = mismatches.map((m) => ` - ${m}`).join('\n'); - if (force) { - warn(`device does not match ${ENV_FILE} (--force):\n${detail}`); - return observed; - } - fail( - `device does not match ${ENV_FILE}:\n${detail}\n` + - 'refusing to run: baselines are only comparable on the device they were captured on. ' + - 'Boot/point at the right device, or pass --force to continue anyway.' - ); - return observed; // unreachable; keeps the return type honest -} - -/** Canonical baseline path: __baselines__//.png */ -function baselinePath(platform, story) { - return path.join(BASELINE_DIR, platform, `${story}.png`); -} - -/** Normal mode: a missing baseline is a hard error naming the exact path. */ -function requireBaseline(platform, story) { - const baseline = baselinePath(platform, story); - if (!fs.existsSync(baseline)) { - fail( - `no baseline for ${story}: expected ${baseline} — ` + - 'run with --update to create it' - ); - } - return baseline; -} - -/** - * `--update` mode: write the capture to the baseline, creating it if new. The - * captured dimensions go in the log line because the size check is skipped in - * this mode (see checkCaptureSize) — this is the only place a human sees what - * the new baseline actually measures. - */ -function writeBaseline(platform, story, current, shotData) { - const baseline = baselinePath(platform, story); - const created = !fs.existsSync(baseline); - fs.mkdirSync(path.dirname(baseline), { recursive: true }); - fs.copyFileSync(current, baseline); - const size = `${shotData?.width ?? '?'}x${shotData?.height ?? '?'}`; - console.log( - `${platform} ${story} baseline ${created ? 'created' : 'updated'} (${size}) → ${path.relative(VISUAL_DIR, baseline)}` - ); - return { baseline, created }; -} - -/** - * Width and height out of a PNG's IHDR: the signature is 8 bytes, the IHDR - * length+type another 8, so the two big-endian uint32s live at bytes 16–24. No - * decoding and no dependency — the header is all this needs. - */ -function readPngSize(file) { - const header = Buffer.alloc(24); - let read = 0; - let fd; - try { - fd = fs.openSync(file, 'r'); - read = fs.readSync(fd, header, 0, 24, 0); - } catch { - return null; - } finally { - if (fd != null) fs.closeSync(fd); - } - if (read < 24 || header.toString('ascii', 12, 16) !== 'IHDR') return null; - return { width: header.readUInt32BE(16), height: header.readUInt32BE(20) }; -} - -/** - * Fails unless the capture has the same dimensions as the committed baseline it - * is about to be compared with. A wrong-sized capture would otherwise diff - * clean and read as PASS — and so would a capture whose size agent-device did - * not report at all, which is why a missing value is a failure rather than a - * warning. - * - * The expected size comes from the baseline PNG itself rather than from - * env.json: that makes it per story by construction, so a story that was just - * added and `--update`d passes, and it cannot drift from the file the diff - * actually uses. - * - * Skipped entirely in `--update` mode: the whole point of that mode is to - * record what the device produces now, and a new story has no baseline to check - * against. In diff mode there is no override — a size mismatch on a device that - * matches env.json means something is wrong that no flag should paper over, so - * `--force` does not reach this check. - */ -function checkCaptureSize( - env, - story, - shotData, - { update = false, baselineFile = null } = {} -) { - if (update) return; - - const expected = baselineFile ? readPngSize(baselineFile) : null; - const problems = []; - - if (!expected) { - fail( - `${story}: could not read the dimensions of the baseline PNG ` + - `(${baselineFile ?? 'none given'}), so the capture cannot be ` + - 'size-checked — re-record the baseline with --update', - 3 - ); - } - - const compare = (what, want, got) => { - if (got == null) { - problems.push( - `${what}: expected ${want}, agent-device reported no ${what}` - ); - return; - } - if (Number(got) !== Number(want)) { - problems.push(`${what}: expected ${want}, actual ${got}`); - } - }; - - compare('width', expected.width, shotData?.width); - compare('height', expected.height, shotData?.height); - // pixelDensity is reported (and pinnable) on iOS only. Android screenshots - // are native device pixels and env.json pins no density there, so the check - // is skipped rather than warned about. - if (env.pixelDensity != null) { - compare('pixelDensity', env.pixelDensity, shotData?.pixelDensity); - } - - if (problems.length === 0) return; - - const detail = problems.map((p) => ` - ${p}`).join('\n'); - fail( - `${story}: capture dimensions do not match the baseline ` + - `${path.relative(VISUAL_DIR, baselineFile)}:\n${detail}\n` + - 'a wrong-sized capture cannot be compared with the baseline. Check ' + - '--crop-on/--pixel-density and the device; if the new size is the intended ' + - 'one, re-record the baselines with --update. (--force does not override this.)', - 3 - ); -} - -const labelOf = (node) => (node.label || '').trim(); -const hasLabel = (nodes, label) => nodes.some((n) => labelOf(n) === label); - -/** - * Nodes that belong to the app. On Android a snapshot also carries the system - * UI status bar (~10 nodes), which is present even while the app is still - * starting, so it must not count towards readiness. - */ -function appNodes(nodes) { - return nodes.filter((n) => !n.bundleId || n.bundleId === BUNDLE_ID); -} - -function looksReady(nodes) { - const own = appNodes(nodes); - if (own.length <= READY_MIN_NODES) return false; - return !own.some( - (n) => - NOT_READY_LABEL.test(labelOf(n)) || - NOT_READY_IDENTIFIER.test(n.identifier || '') - ); -} - -/** - * Polls the accessibility tree until the app has rendered something real: - * more than READY_MIN_NODES app nodes and no splash/"Downloading" node. Bounded - * so a stuck launch fails instead of hanging. - */ -function waitForAppReady(globals, timeoutMs = READY_TIMEOUT_MS) { - const deadline = Date.now() + timeoutMs; - let nodes = snapshot('snapshot-ready', globals); - while (!looksReady(nodes) && Date.now() < deadline) { - sleepSync(READY_POLL_MS); - nodes = snapshot('snapshot-ready', globals); - } - if (!looksReady(nodes)) { - fail( - `the app did not become ready within ${timeoutMs}ms — the last snapshot ` + - `had ${appNodes(nodes).length} app nodes ` + - `(${appNodes(nodes) - .slice(0, 3) - .map((n) => labelOf(n) || n.identifier || n.type) - .join(' / ')})` - ); - } - console.log(` app ready (${appNodes(nodes).length} app nodes)`); - return nodes; -} - -/** The RN dev menu: a Close/Continue control with a dev-menu-only marker next to it. */ -function findDevMenuNode(nodes) { - const marker = nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n))); - if (!marker) return null; - return nodes.find((n) => DEV_MENU_LABELS.includes(labelOf(n))) || null; -} - -/** The floating dev-client "Tools" button, or null when it is not on screen. */ -function findFloatingToolsNode(nodes) { - if (nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n)))) return null; - return ( - nodes.find( - (n) => labelOf(n) === FLOATING_TOOLS_LABEL && !/text/i.test(n.type || '') - ) || null - ); -} - -function describeNode(node) { - const rect = node.rect || {}; - const round = (value) => Math.round(value ?? -1); - return ( - `${node.type || 'node'} label="${labelOf(node)}" at ` + - `{x:${round(rect.x)}, y:${round(rect.y)}, ` + - `w:${round(rect.width)}, h:${round(rect.height)}}` - ); -} - -/** - * Turns the floating dev-client "Tools" button off through the dev menu, once, - * and returns the settled tree. A dev overlay inside the crop must never be - * reported as a visual regression, so anything that leaves it on screen — a - * platform with no way to open the dev menu, or a toggle that did not take — - * is a setup error naming the node and the manual fix. - * - * Android opens the dev menu with KEYCODE_MENU. agent-device 0.21.0 has no - * dev-menu/shake command (checked in `help commands`), so on iOS there is - * nothing to drive and the run stops instead. - */ -function disableFloatingTools(platform, globals, nodes) { - const tools = findFloatingToolsNode(nodes); - if (!tools) return nodes; - - const giveUp = (why) => - fail( - `the dev-client floating Tools button is inside the capture area ` + - `(${describeNode(tools)}) and ${why}. Turn it off on the device: ` + - 'dev menu → Tools button.' - ); - - if (platform !== 'android') giveUp('cannot be toggled automatically on iOS'); - - const menu = sh(adbPath(), [ - 'shell', - 'input', - 'keyevent', - ANDROID_KEYCODE_MENU, - ]); - if (menu.status !== 0) { - fail( - `adb input keyevent ${ANDROID_KEYCODE_MENU} failed: ${menu.stderr.trim()}` - ); - } - - let current = waitForAppReady(globals); - for (const label of [TOOLS_TOGGLE_LABEL, DEV_MENU_CLOSE_LABEL]) { - if (!current.some((n) => labelOf(n) === label)) { - giveUp(`the dev menu has no "${label}" entry`); - } - console.log(` dev menu: pressing "${label}"`); - // By selector, not by ref: the dev menu's "Close" is a container whose - // tappable area belongs entirely to an unlabelled child, so pressing its - // own ref is rejected (covered_by_interactive_descendants). The selector - // lets agent-device resolve down to that child. - ad(`press-${label.replace(/\s+/g, '-').toLowerCase()}`, [ - 'press', - `label="${label}"`, - '--settle', - ...globals, - ]); - current = waitForAppReady(globals); - } - - if (findFloatingToolsNode(current)) - giveUp('is still on screen after one toggle'); - - console.log( - ' dev-client floating Tools button was inside the capture area — ' + - 'disabled it via the dev menu' - ); - return current; -} - -/** - * The Expo dev launcher ("DEVELOPMENT SERVERS" / "RECENTLY OPENED"). It is left - * behind by an Android relaunch and none of the dev-menu labels match it. The - * way out is the recently-opened row carrying the Metro URL; if the launcher is - * up but that row is not there, the run fails rather than pressing whatever row - * happens to be nearby, which could open a different app. - */ -function findDevLauncherNode(nodes) { - if (!nodes.some((n) => DEV_LAUNCHER_MARKERS.includes(labelOf(n)))) { - return null; - } - - const metroRow = nodes.find( - (n) => labelOf(n).startsWith('http://') && labelOf(n).includes(METRO_PORT) - ); - if (metroRow) return metroRow; - - fail( - 'the Expo dev launcher is on screen but has no recently-opened row for ' + - `http://…:${METRO_PORT} — start Metro and open the app from the launcher once` - ); - return null; // unreachable -} - -/** - * Clears the two dev overlays a relaunch can land in, handling them distinctly - * and re-checking after every press. Returns the settled tree. - */ -function dismissOverlays(globals) { - let nodes = waitForAppReady(globals); - - for (let step = 0; step < MAX_OVERLAY_STEPS; step++) { - const devMenu = findDevMenuNode(nodes); - if (devMenu) { - console.log( - ` dev menu: pressing "${labelOf(devMenu)}" (@${devMenu.ref})` - ); - ad('press-devmenu', ['press', `@${devMenu.ref}`, '--settle', ...globals]); - nodes = waitForAppReady(globals); - continue; - } - - const launcher = findDevLauncherNode(nodes); - if (launcher) { - console.log( - ` dev launcher: pressing "${labelOf(launcher)}" (@${launcher.ref})` - ); - ad('press-launcher', [ - 'press', - `@${launcher.ref}`, - '--settle', - ...globals, - ]); - nodes = waitForAppReady(globals); - continue; - } - - return nodes; - } - - fail( - `a dev overlay was still on screen after ${MAX_OVERLAY_STEPS} dismissal ` + - 'attempts (dev menu and/or Expo dev launcher)' - ); - return nodes; // unreachable -} - -function onSurfaceScreen(globals, stories) { - const nodes = snapshot('snapshot-raw', globals, ['--raw']); - return stories.every((story) => nodes.some((n) => n.identifier === story)); -} - -/** - * The example-list root is the only screen whose Appbar title is "Examples", - * and it shows the drawer button where every example screen shows "Back". Both - * signals are required: "no Back element" on its own is also true of a screen - * with no header at all, which would make any such screen read as the list. - */ -function atListRoot(nodes) { - return hasLabel(nodes, LIST_ROOT_TITLE) && !hasLabel(nodes, BACK_LABEL); -} - -/** - * Pops the navigation stack until the example list root is on screen. Uses the - * Appbar "Back" element when there is one (present on both platforms), and - * falls back to platform back navigation for a screen with no header. - */ -function goBackToListRoot(platform, globals, nodes) { - let current = nodes; - - for (let step = 0; step < MAX_BACK_STEPS; step++) { - if (atListRoot(current)) return current; - - const back = current.find((n) => labelOf(n) === BACK_LABEL); - if (back) { - console.log(` pressing "Back" (@${back.ref})`); - ad('press-back', ['press', `@${back.ref}`, '--settle', ...globals]); - } else if (platform === 'android') { - console.log(' no "Back" element — sending Android KEYCODE_BACK'); - const res = sh(adbPath(), ['shell', 'input', 'keyevent', '4']); - if (res.status !== 0) { - fail(`adb input keyevent 4 failed: ${res.stderr.trim()}`); - } - } else { - console.log(' no "Back" element — using system back'); - ad('back', ['back', '--system', '--settle', ...globals]); - } - - current = waitForAppReady(globals); - } - - fail( - `could not reach the example list: after ${MAX_BACK_STEPS} back steps the ` + - `"${LIST_ROOT_TITLE}" title was still not on screen (last screen: ` + - `${current - .map((n) => labelOf(n)) - .filter(Boolean) - .slice(0, 5) - .join(' / ')})` - ); - return current; // unreachable -} - -/** - * Picks the "Surface" LIST ROW out of a snapshot of the example list. - * - * Several nodes can carry that label, and pressing the wrong one is a no-op - * that reads as a navigation failure: the Appbar title of the Surface screen - * itself, and on Android both the row container and its inset text child. The - * row is the candidate that - * - sits below the Appbar — rect.y at or past the bottom of the - * "Examples" title node (iOS 108pt, Android 294px), which is what excludes - * any header/title node, and - * - spans the list — width at least 90% of the screen, which excludes the - * Android Appbar title (1100 of 1280px) a second way, and then the widest - * of what is left, i.e. the row container (iOS 402 of 402pt, Android 1280 - * of 1280px) rather than its inset text child (Android 1160px). - * - * With no "Examples" title in the tree this is not the list root, so there is - * no row to press and the function reports nothing rather than guessing. - */ -function findSurfaceRow(nodes) { - const titles = nodes.filter((n) => labelOf(n) === LIST_ROOT_TITLE); - if (titles.length === 0) return null; - const headerBottom = Math.max( - ...titles.map((n) => (n.rect?.y ?? 0) + (n.rect?.height ?? 0)) - ); - const screenWidth = Math.max(0, ...nodes.map((n) => n.rect?.width ?? 0)); - - const candidates = nodes.filter( - (n) => - labelOf(n) === SURFACE_ROW_LABEL && - (n.rect?.y ?? -1) >= headerBottom && - (n.rect?.width ?? 0) >= 0.9 * screenWidth - ); - if (candidates.length === 0) return null; - - return candidates.sort( - (a, b) => (b.rect?.width || 0) - (a.rect?.width || 0) - )[0]; -} - -/** - * Scrolls down the example list until the "Surface" row shows up, then opens - * it. The caller must have put the app on the list root first, since scrolling - * only ever goes down. - */ -function navigateToSurface(globals, stories) { - for (let step = 0; step <= MAX_SCROLL_STEPS; step++) { - const nodes = snapshot('snapshot-list', globals); - const target = findSurfaceRow(nodes); - - if (target) { - // Press by ref off a fresh snapshot: `find 'label="Surface"'` is - // AMBIGUOUS_MATCH on Android and taps as a side effect on iOS. - console.log( - ` pressing the "Surface" row (@${target.ref}, ${target.type}, ` + - `y=${Math.round(target.rect?.y ?? -1)}, w=${Math.round(target.rect?.width ?? -1)})` - ); - ad('press-surface', ['press', `@${target.ref}`, '--settle', ...globals]); - - if (onSurfaceScreen(globals, stories)) return; - fail( - `pressed the "Surface" row but the example screen did not appear ` + - `(expected ids: ${stories.join(', ')})` - ); - } - - if (step < MAX_SCROLL_STEPS) { - ad('scroll', [ - 'scroll', - 'down', - String(SCROLL_STEP), - '--settle', - ...globals, - ]); - } - } - - fail( - `could not find the "Surface" row after ${MAX_SCROLL_STEPS} scrolls of ` + - `${SCROLL_STEP} rows — is the example list on screen?` - ); -} - -/** - * Relaunches the app and leaves it on the Surface example screen. - * - * The relaunch is unconditional. The app persists its navigation state - * (PERSISTENCE_KEY in example/src/index.tsx), so "already on the Surface - * screen" says nothing about which screen a plain `open` will land on, and — - * more importantly — only a relaunch makes the app fetch the current JS bundle - * from Metro. Skipping it on the strength of the screen that happens to be up - * captured a stale bundle on Android. - */ -function openOnSurfaceScreen(platform, globals, stories) { - console.log(' relaunching the app (fresh bundle from Metro)'); - if (platform === 'ios') { - ad('open-relaunch', ['open', BUNDLE_ID, '--relaunch', ...globals]); - } else { - const stop = sh(adbPath(), ['shell', 'am', 'force-stop', BUNDLE_ID]); - if (stop.status !== 0) { - fail(`adb force-stop ${BUNDLE_ID} failed: ${stop.stderr.trim()}`); - } - ad('open-after-force-stop', ['open', BUNDLE_ID, ...globals]); - } - - const nodes = disableFloatingTools( - platform, - globals, - dismissOverlays(globals) - ); - - if (onSurfaceScreen(globals, stories)) { - console.log(' restored onto the Surface screen'); - return; - } - - console.log(' not on the Surface screen — going back to the example list'); - const rootNodes = goBackToListRoot(platform, globals, nodes); - console.log(` at the example list root (${rootNodes.length} nodes)`); - navigateToSurface(globals, stories); -} - -/** - * The whole device pass. Mutates `state` as it goes so main() can write a - * summary whether this returns or throws. Returns the exit code (0 or 1). - */ -function runPass(state) { - const opts = state.opts; - const { platform } = opts; - - if (!fs.existsSync(ENV_FILE)) fail(`missing ${ENV_FILE}`); - const envFile = JSON.parse(fs.readFileSync(ENV_FILE, 'utf8')); - const env = platform === 'ios' ? envFile : { ...envFile.android }; - state.env = env; - - const globals = - platform === 'ios' - ? ['--platform', 'ios', '--udid', env.udid] - : [ - '--platform', - 'android', - '--session', - env.agentDeviceSession || 'android', - ]; - - state.observedEnv = enforceEnvironment(platform, env, opts.force); - - openOnSurfaceScreen(platform, globals, opts.stories); - ad('wait-stable', ['wait', 'stable', '500', '10000', ...globals]); - sleepSync(2000); // covers the customFontLoaded theme swap, which has no node change - - let failed = false; - - for (const story of opts.stories) { - const current = path.join(opts.outDir, `${story}.png`); - const shotArgs = [ - 'screenshot', - current, - '--crop-on', - `id="${story}"`, - ...globals, - ]; - // --pixel-density is iOS-only (UNSUPPORTED_OPERATION on Android). - if (platform === 'ios') - shotArgs.push('--pixel-density', String(env.pixelDensity || 3)); - const shot = ad(`screenshot-${story}`, shotArgs); - - if (opts.update) { - checkCaptureSize(env, story, shot.data, { update: true }); - const { baseline, created } = writeBaseline( - platform, - story, - current, - shot.data - ); - state.results.push({ - story, - updated: !created, - created, - baseline, - current, - width: shot.data?.width ?? null, - height: shot.data?.height ?? null, - }); - continue; - } - - const baseline = requireBaseline(platform, story); - checkCaptureSize(env, story, shot.data, { baselineFile: baseline }); - - const diffOut = path.join(opts.outDir, `${story}-diff.png`); - const diff = ad(`diff-${story}`, [ - 'diff', - 'screenshot', - '--baseline', - baseline, - current, - '--out', - diffOut, - '--threshold', - String(opts.threshold), - ...globals, - ]); - - const changed = diff.data?.differentPixels ?? -1; - const pct = diff.data?.mismatchPercentage ?? -1; - const regions = diff.data?.regions?.length ?? 0; - const pass = diff.data?.match === true; - if (!pass) failed = true; - - console.log( - `${platform} ${story} changed=${changed} (${pct}%) regions=${regions} threshold=${opts.threshold} → ${pass ? 'PASS' : 'FAIL'}` - ); - - state.results.push({ - story, - baseline, - current, - diff: diffOut, - totalPixels: diff.data?.totalPixels ?? null, - changedPixels: changed, - mismatchPercentage: pct, - regions: diff.data?.regions ?? [], - threshold: opts.threshold, - pass, - }); - } - - return failed ? 1 : 0; -} - -function writeSummary(state, exitCode, error) { - const { opts } = state; - const summary = { - platform: opts.platform, - threshold: opts.threshold, - update: opts.update, - force: opts.force, - stories: opts.stories, - outDir: opts.outDir, - agentDeviceVersion: AGENT_DEVICE, - sessionCwd: SESSION_CWD, - expectedEnv: state.env, - observedEnv: state.observedEnv, - startedAt: new Date(state.startedAt).toISOString(), - wallClockMs: Date.now() - state.startedAt, - results: state.results, - status: exitCode === 0 ? 'pass' : exitCode === 1 ? 'fail' : 'error', - exitCode, - error, - pass: exitCode === 0, - }; - const file = path.join(opts.outDir, 'summary.json'); - fs.mkdirSync(opts.outDir, { recursive: true }); - fs.writeFileSync(file, JSON.stringify(summary, null, 2)); - return file; -} - -function main() { - const argv = process.argv.slice(2); - - // An argument error happens before there are options to summarise (not even - // an output directory), so it just prints and exits; every later failure - // goes through writeSummary below. - let opts; - try { - opts = parseArgs(argv); - } catch (thrown) { - if (!(thrown instanceof RunFailure)) throw thrown; - console.error(`error: ${thrown.message}`); - process.exit(thrown.exitCode); - } - - const state = { - opts, - env: null, - observedEnv: {}, - results: [], - startedAt: Date.now(), - }; - - cmdDir = path.join(opts.outDir, 'cmds'); - fs.mkdirSync(cmdDir, { recursive: true }); - - console.log( - `# ${opts.platform} — threshold ${opts.threshold}${opts.update ? ' (update)' : ''}${opts.force ? ' (force)' : ''}` - ); - console.log(`# output: ${opts.outDir}`); - - let exitCode = 0; - let error = null; - try { - exitCode = runPass(state); - } catch (thrown) { - if (thrown instanceof RunFailure) { - console.error(`error: ${thrown.message}`); - exitCode = thrown.exitCode; - error = { message: thrown.message, exitCode: thrown.exitCode }; - } else { - console.error(thrown?.stack || String(thrown)); - exitCode = 2; - error = { - message: thrown?.message || String(thrown), - stack: thrown?.stack, - exitCode: 2, - }; - } - } - - const summaryFile = writeSummary(state, exitCode, error); - console.log(`# summary: ${summaryFile} (exit ${exitCode})`); - process.exit(exitCode); -} - -/** - * True when this module is the process entry point. `import.meta.main` would - * say the same thing but only exists on Node >= 24.2, and this script has to - * run on the Node 20 floor in example/package.json. Both sides are realpath'd - * so a symlinked invocation still matches. - */ -function isMainModule(argvPath, moduleUrl) { - if (!argvPath) return false; - const real = (p) => { - try { - return fs.realpathSync(p); - } catch { - return path.resolve(p); - } - }; - return real(argvPath) === real(fileURLToPath(moduleUrl)); -} - -if (isMainModule(process.argv[1], import.meta.url)) { - main(); -} - -// Exported for example/visual/run.test.mjs only. -export { - RunFailure, - isMainModule, - checkCaptureSize, - enforceEnvironment, - atListRoot, - findFloatingToolsNode, - findSurfaceRow, -}; diff --git a/example/visual/run.test.mjs b/example/visual/run.test.mjs deleted file mode 100644 index 5d3f570f30..0000000000 --- a/example/visual/run.test.mjs +++ /dev/null @@ -1,218 +0,0 @@ -/** - * Unit tests for example/visual/run.mjs. No device, no adb/xcrun, no - * agent-device, no new dependencies — only the pure decision helpers are - * exercised, with the device observers faked. - * - * node --test example/visual/run.test.mjs - */ - -import assert from 'node:assert/strict'; -import fs from 'node:fs'; -import os from 'node:os'; -import path from 'node:path'; -import test from 'node:test'; -import { fileURLToPath } from 'node:url'; - -import { - RunFailure, - atListRoot, - checkCaptureSize, - enforceEnvironment, - findFloatingToolsNode, - findSurfaceRow, - isMainModule, -} from './run.mjs'; - -const HERE = path.dirname(fileURLToPath(import.meta.url)); -const RUN_URL = new URL('./run.mjs', import.meta.url); -const RUN_PATH = fileURLToPath(RUN_URL); - -const env = {}; -const wrongSize = { width: 1280, height: 700 }; - -/** - * Writes a file carrying a PNG signature and an IHDR of the given size. Only - * those first 24 bytes are what run.mjs reads, so no encoder is needed. - */ -function writePngHeader(dir, name, width, height) { - const header = Buffer.alloc(24); - Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]).copy(header, 0); - header.writeUInt32BE(13, 8); - header.write('IHDR', 12, 'ascii'); - header.writeUInt32BE(width, 16); - header.writeUInt32BE(height, 20); - const file = path.join(dir, name); - fs.writeFileSync(file, header); - return file; -} - -const TMP_DIR = fs.mkdtempSync(path.join(os.tmpdir(), 'paper-visual-')); -process.on('exit', () => fs.rmSync(TMP_DIR, { recursive: true, force: true })); - -test('isMainModule is false for another argv[1] and true for the script itself', () => { - assert.equal(isMainModule(path.join(HERE, 'other.mjs'), RUN_URL), false); - assert.equal(isMainModule(undefined, RUN_URL), false); - assert.equal(isMainModule(RUN_PATH, RUN_URL), true); -}); - -test('checkCaptureSize skips the check in update mode', () => { - // Regression: this is the gate that used to abort `--update` before - // writeBaseline ever ran, so a story with no baseline could never get one. - assert.doesNotThrow(() => - checkCaptureSize(env, 'new-story', wrongSize, { update: true }) - ); - // A brand-new story has no baseline at all; --update must still get through. - assert.doesNotThrow(() => - checkCaptureSize(env, 'new-story', wrongSize, { - update: true, - baselineFile: path.join(TMP_DIR, 'missing.png'), - }) - ); -}); - -test('checkCaptureSize fails with exit code 3 in diff mode', () => { - const baselineFile = writePngHeader(TMP_DIR, 'story.png', 1206, 642); - - assert.throws( - () => checkCaptureSize(env, 'story', wrongSize, { baselineFile }), - (thrown) => { - assert.ok(thrown instanceof RunFailure); - assert.equal(thrown.exitCode, 3); - assert.match(thrown.message, /capture dimensions do not match/); - return true; - } - ); - - assert.doesNotThrow(() => - checkCaptureSize( - env, - 'story', - { width: 1206, height: 642 }, - { - baselineFile, - } - ) - ); - - // A story added today: whatever size its freshly written baseline has is the - // size the check expects, so no env.json edit is needed to make it pass. - const fresh = writePngHeader(TMP_DIR, 'new-story.png', 837, 219); - assert.doesNotThrow(() => - checkCaptureSize( - env, - 'new-story', - { width: 837, height: 219 }, - { - baselineFile: fresh, - } - ) - ); -}); - -test('--force covers the device check but not the size check', () => { - // Fake observers: the check compares env.json with these, so the test needs - // neither adb nor xcrun on PATH. - const observers = { - observeIos: () => ({ - observed: { udid: 'fake', name: 'iPhone', runtime: 'r', state: 'Booted' }, - }), - observeAndroid: () => ({ - observed: { apiLevel: 37, androidRelease: '17', density: 480 }, - }), - }; - const mismatched = { apiLevel: -1, density: -1 }; - - assert.throws( - () => enforceEnvironment('android', mismatched, false, observers), - (thrown) => { - assert.ok(thrown instanceof RunFailure); - assert.equal(thrown.exitCode, 2); - return true; - } - ); - assert.doesNotThrow(() => - enforceEnvironment('android', mismatched, true, observers) - ); - // A matching device needs no force at all. - assert.doesNotThrow(() => - enforceEnvironment( - 'android', - { apiLevel: 37, density: 480 }, - false, - observers - ) - ); - - // The size check takes no force: a stray `force` in the options changes nothing. - assert.throws( - () => - checkCaptureSize(env, 'story', wrongSize, { - force: true, - baselineFile: writePngHeader(TMP_DIR, 'force.png', 1206, 642), - }), - RunFailure - ); -}); - -test('atListRoot needs the "Examples" title and no Back element', () => { - const title = { label: 'Examples' }; - const back = { label: 'Back' }; - - assert.equal(atListRoot([title]), true); - assert.equal(atListRoot([title, back]), false); - // A screen with no header at all is not the list root. - assert.equal(atListRoot([{ label: 'Elevated surface' }]), false); - assert.equal(atListRoot([]), false); -}); - -test('findFloatingToolsNode finds the dev-client button, not the dev menu', () => { - // Shape taken from a real Android snapshot (480 dpi, top-right of the crop). - const floating = { - ref: 'e18', - type: 'android.widget.ImageView', - label: 'Tools', - rect: { x: 1115, y: 243, width: 78, height: 78 }, - }; - - assert.equal( - findFloatingToolsNode([{ label: 'Elevated surface' }, floating])?.ref, - 'e18' - ); - // The dev menu has a "TOOLS" section of its own: not the floating button. - assert.equal( - findFloatingToolsNode([ - { type: 'android.widget.TextView', label: 'TOOLS' }, - { type: 'android.widget.TextView', label: 'Reload' }, - { type: 'android.widget.TextView', label: 'Tools' }, - ]), - null - ); - assert.equal(findFloatingToolsNode([]), null); -}); - -test('findSurfaceRow picks the list row, not the Appbar title', () => { - const nodes = [ - { - ref: 'title', - label: 'Examples', - rect: { y: 60, height: 48, width: 402 }, - }, - // Appbar title of the Surface screen: above the list, must not win. - { - ref: 'header', - label: 'Surface', - rect: { y: 60, height: 48, width: 402 }, - }, - // Inset text child: below the header but too narrow to be the row. - { - ref: 'child', - label: 'Surface', - rect: { y: 300, height: 48, width: 360 }, - }, - { ref: 'row', label: 'Surface', rect: { y: 300, height: 48, width: 402 } }, - ]; - - assert.equal(findSurfaceRow(nodes)?.ref, 'row'); - // No "Examples" title means this is not the list: report nothing. - assert.equal(findSurfaceRow(nodes.filter((n) => n.ref !== 'title')), null); -}); From 7917bdf216de0e042aa007d4aebbba5202256dbd Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Fri, 11 Sep 2026 13:22:34 +0200 Subject: [PATCH 06/18] test(example): collapse PoC evidence into one results table 96 per-threshold diff JSON files, each ~20 lines, become one evidence/results.csv with 72 rows (platform, capture, threshold, pixels, regions, match, source file). Keep one diff image per platform for the realistic and gross breaks plus the Tools-button false FAIL. Raw JSON and the other images stay on poc/agent-device-visual-runner. --- example/visual/README.md | 11 +- .../android/103-diff-relaunch-1-t0.01.json | 9 -- .../android/103-diff-relaunch-1-t0.02.json | 9 -- .../android/103-diff-relaunch-1-t0.05.json | 9 -- .../android/103-diff-relaunch-1-t0.1.json | 9 -- .../android/108-diff-gross-t0.01.json | 64 ---------- .../android/108-diff-gross-t0.02.json | 116 ------------------ .../android/108-diff-gross-t0.05.json | 116 ------------------ .../evidence/android/108-diff-gross-t0.1.json | 64 ---------- .../android/111-diff-revert1-t0.01.json | 9 -- .../android/111-diff-revert1-t0.02.json | 9 -- .../android/111-diff-revert1-t0.05.json | 9 -- .../android/111-diff-revert1-t0.1.json | 9 -- .../android/114-diff-realistic-t0.01.json | 38 ------ .../android/114-diff-realistic-t0.02.json | 38 ------ .../android/114-diff-realistic-t0.05.json | 38 ------ .../android/114-diff-realistic-t0.1.json | 9 -- .../android/117-diff-revert2-t0.01.json | 9 -- .../android/117-diff-revert2-t0.02.json | 9 -- .../android/117-diff-revert2-t0.05.json | 9 -- .../android/117-diff-revert2-t0.1.json | 9 -- .../android/94-diff-warm-1-t0.01.json | 9 -- .../android/94-diff-warm-1-t0.02.json | 9 -- .../android/94-diff-warm-1-t0.05.json | 9 -- .../evidence/android/94-diff-warm-1-t0.1.json | 9 -- .../android/94-diff-warm-2-t0.01.json | 9 -- .../android/94-diff-warm-2-t0.02.json | 9 -- .../android/94-diff-warm-2-t0.05.json | 9 -- .../evidence/android/94-diff-warm-2-t0.1.json | 9 -- .../android/94-diff-warm-3-t0.01.json | 9 -- .../android/94-diff-warm-3-t0.02.json | 9 -- .../android/94-diff-warm-3-t0.05.json | 9 -- .../evidence/android/94-diff-warm-3-t0.1.json | 9 -- .../diff-images/android-gross-t0.1.png | Bin 32694 -> 0 bytes .../diff-images/android-realistic-2-t0.02.png | Bin 25122 -> 0 bytes .../diff-images/android-realistic-3-t0.02.png | Bin 25122 -> 0 bytes .../evidence/diff-images/ios-gross-t0.1.png | Bin 120512 -> 0 bytes .../diff-images/ios-realistic-2-t0.02.png | Bin 52140 -> 0 bytes .../diff-images/ios-realistic-3-t0.02.png | Bin 52140 -> 0 bytes .../diff-images/ios-realistic-t0.02.png | Bin 52140 -> 0 bytes example/visual/evidence/ios/26-diff.json | 9 -- example/visual/evidence/ios/30-diff.json | 9 -- example/visual/evidence/ios/37-diff.json | 9 -- example/visual/evidence/ios/40-diff.json | 9 -- example/visual/evidence/ios/43-diff.json | 9 -- example/visual/evidence/ios/53-diff.json | 9 -- example/visual/evidence/ios/59-diff.json | 38 ------ example/visual/evidence/ios/60-diff.json | 90 -------------- example/visual/evidence/ios/63-diff.json | 9 -- .../visual/evidence/ios/66-diff-t0.02.json | 90 -------------- example/visual/evidence/ios/66-diff-t0.1.json | 9 -- example/visual/evidence/ios/69-diff.json | 9 -- .../evidence/ios/6x-diff-relaunch-1-t002.json | 9 -- .../evidence/ios/6x-diff-warm-1-t002.json | 9 -- .../evidence/ios/6x-diff-warm-2-t002.json | 9 -- .../evidence/ios/6x-diff-warm-3-t002.json | 9 -- example/visual/evidence/issues.md | 26 ++-- example/visual/evidence/results.csv | 73 +++++++++++ .../sensitivity/android/gross-diff-t0.02.json | 116 ------------------ .../sensitivity/android/gross-diff-t0.1.json | 64 ---------- .../android/gross-probe-diff-t0.02.json | 9 -- .../android/gross-probe-diff-t0.1.json | 9 -- .../sensitivity/android/gross-probe-shot.json | 8 -- .../sensitivity/android/gross-probe.png | Bin 31693 -> 0 bytes .../sensitivity/android/gross-shot.json | 8 -- .../evidence/sensitivity/android/gross.png | Bin 63721 -> 0 bytes .../android/realistic-1-diff-t0.02.json | 38 ------ .../android/realistic-1-diff-t0.1.json | 9 -- .../sensitivity/android/realistic-1-shot.json | 8 -- .../sensitivity/android/realistic-1.png | Bin 33878 -> 0 bytes .../android/realistic-2-diff-t0.02.json | 38 ------ .../android/realistic-2-diff-t0.1.json | 9 -- .../sensitivity/android/realistic-2-shot.json | 8 -- .../sensitivity/android/realistic-2.png | Bin 33878 -> 0 bytes .../android/realistic-3-diff-t0.02.json | 38 ------ .../android/realistic-3-diff-t0.1.json | 9 -- .../sensitivity/android/realistic-3-shot.json | 8 -- .../sensitivity/android/realistic-3.png | Bin 33878 -> 0 bytes .../android/reverted-diff-t0.02.json | 9 -- .../android/reverted-diff-t0.1.json | 9 -- .../sensitivity/android/reverted-shot.json | 8 -- .../evidence/sensitivity/android/reverted.png | Bin 31693 -> 0 bytes .../sanity-before-break-diff-t0.02.json | 9 -- .../sanity-before-break-diff-t0.1.json | 9 -- .../android/sanity-before-break-shot.json | 8 -- .../android/sanity-before-break.png | Bin 31693 -> 0 bytes .../sensitivity/ios/gross-diff-t0.02.json | 90 -------------- .../sensitivity/ios/gross-diff-t0.1.json | 38 ------ .../evidence/sensitivity/ios/gross-shot.json | 11 -- .../visual/evidence/sensitivity/ios/gross.png | Bin 259444 -> 0 bytes .../ios/realistic-1-diff-t0.02.json | 90 -------------- .../ios/realistic-1-diff-t0.1.json | 9 -- .../sensitivity/ios/realistic-1-shot.json | 11 -- .../evidence/sensitivity/ios/realistic-1.png | Bin 81121 -> 0 bytes .../ios/realistic-2-diff-t0.02.json | 90 -------------- .../ios/realistic-2-diff-t0.1.json | 9 -- .../sensitivity/ios/realistic-2-shot.json | 11 -- .../evidence/sensitivity/ios/realistic-2.png | Bin 81121 -> 0 bytes .../ios/realistic-3-diff-t0.02.json | 90 -------------- .../ios/realistic-3-diff-t0.1.json | 9 -- .../sensitivity/ios/realistic-3-shot.json | 11 -- .../evidence/sensitivity/ios/realistic-3.png | Bin 81121 -> 0 bytes .../sensitivity/ios/reverted-diff-t0.02.json | 9 -- .../sensitivity/ios/reverted-diff-t0.1.json | 9 -- .../sensitivity/ios/reverted-shot.json | 11 -- .../evidence/sensitivity/ios/reverted.png | Bin 62787 -> 0 bytes 106 files changed, 90 insertions(+), 1983 deletions(-) delete mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.01.json delete mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.02.json delete mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.05.json delete mode 100644 example/visual/evidence/android/103-diff-relaunch-1-t0.1.json delete mode 100644 example/visual/evidence/android/108-diff-gross-t0.01.json delete mode 100644 example/visual/evidence/android/108-diff-gross-t0.02.json delete mode 100644 example/visual/evidence/android/108-diff-gross-t0.05.json delete mode 100644 example/visual/evidence/android/108-diff-gross-t0.1.json delete mode 100644 example/visual/evidence/android/111-diff-revert1-t0.01.json delete mode 100644 example/visual/evidence/android/111-diff-revert1-t0.02.json delete mode 100644 example/visual/evidence/android/111-diff-revert1-t0.05.json delete mode 100644 example/visual/evidence/android/111-diff-revert1-t0.1.json delete mode 100644 example/visual/evidence/android/114-diff-realistic-t0.01.json delete mode 100644 example/visual/evidence/android/114-diff-realistic-t0.02.json delete mode 100644 example/visual/evidence/android/114-diff-realistic-t0.05.json delete mode 100644 example/visual/evidence/android/114-diff-realistic-t0.1.json delete mode 100644 example/visual/evidence/android/117-diff-revert2-t0.01.json delete mode 100644 example/visual/evidence/android/117-diff-revert2-t0.02.json delete mode 100644 example/visual/evidence/android/117-diff-revert2-t0.05.json delete mode 100644 example/visual/evidence/android/117-diff-revert2-t0.1.json delete mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.01.json delete mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.02.json delete mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.05.json delete mode 100644 example/visual/evidence/android/94-diff-warm-1-t0.1.json delete mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.01.json delete mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.02.json delete mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.05.json delete mode 100644 example/visual/evidence/android/94-diff-warm-2-t0.1.json delete mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.01.json delete mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.02.json delete mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.05.json delete mode 100644 example/visual/evidence/android/94-diff-warm-3-t0.1.json delete mode 100644 example/visual/evidence/diff-images/android-gross-t0.1.png delete mode 100644 example/visual/evidence/diff-images/android-realistic-2-t0.02.png delete mode 100644 example/visual/evidence/diff-images/android-realistic-3-t0.02.png delete mode 100644 example/visual/evidence/diff-images/ios-gross-t0.1.png delete mode 100644 example/visual/evidence/diff-images/ios-realistic-2-t0.02.png delete mode 100644 example/visual/evidence/diff-images/ios-realistic-3-t0.02.png delete mode 100644 example/visual/evidence/diff-images/ios-realistic-t0.02.png delete mode 100644 example/visual/evidence/ios/26-diff.json delete mode 100644 example/visual/evidence/ios/30-diff.json delete mode 100644 example/visual/evidence/ios/37-diff.json delete mode 100644 example/visual/evidence/ios/40-diff.json delete mode 100644 example/visual/evidence/ios/43-diff.json delete mode 100644 example/visual/evidence/ios/53-diff.json delete mode 100644 example/visual/evidence/ios/59-diff.json delete mode 100644 example/visual/evidence/ios/60-diff.json delete mode 100644 example/visual/evidence/ios/63-diff.json delete mode 100644 example/visual/evidence/ios/66-diff-t0.02.json delete mode 100644 example/visual/evidence/ios/66-diff-t0.1.json delete mode 100644 example/visual/evidence/ios/69-diff.json delete mode 100644 example/visual/evidence/ios/6x-diff-relaunch-1-t002.json delete mode 100644 example/visual/evidence/ios/6x-diff-warm-1-t002.json delete mode 100644 example/visual/evidence/ios/6x-diff-warm-2-t002.json delete mode 100644 example/visual/evidence/ios/6x-diff-warm-3-t002.json create mode 100644 example/visual/evidence/results.csv delete mode 100644 example/visual/evidence/sensitivity/android/gross-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-probe-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/gross-probe.png delete mode 100644 example/visual/evidence/sensitivity/android/gross-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/gross.png delete mode 100644 example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-1-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-1.png delete mode 100644 example/visual/evidence/sensitivity/android/realistic-2-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-2-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-2-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-2.png delete mode 100644 example/visual/evidence/sensitivity/android/realistic-3-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-3-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-3-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/realistic-3.png delete mode 100644 example/visual/evidence/sensitivity/android/reverted-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/reverted-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/reverted-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/reverted.png delete mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break-shot.json delete mode 100644 example/visual/evidence/sensitivity/android/sanity-before-break.png delete mode 100644 example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/ios/gross-shot.json delete mode 100644 example/visual/evidence/sensitivity/ios/gross.png delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-1-shot.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-1.png delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-2-shot.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-2.png delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-3-shot.json delete mode 100644 example/visual/evidence/sensitivity/ios/realistic-3.png delete mode 100644 example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json delete mode 100644 example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json delete mode 100644 example/visual/evidence/sensitivity/ios/reverted-shot.json delete mode 100644 example/visual/evidence/sensitivity/ios/reverted.png diff --git a/example/visual/README.md b/example/visual/README.md index 1e1115aa4d..f9b9a044a7 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -58,7 +58,7 @@ Three independent captures per platform (`wait stable`, 2 s, screenshot, diff), | iOS | realistic-1 / 2 / 3 | 0 | 10,179 (1.31 %) | | Android | realistic-1 / 2 / 3 | 0 | 9,336 (1.14 %) | -Bit-identical every time, and identical to the first single captures. On these targets the changed-pixel count is a deterministic function of the code. The diff image is a ring on the Elevation 1 card and nothing else (`evidence/diff-images/-realistic-*-t0.02.png`). Human visibility: borderline — noticeable only when flipping between the two images. +Bit-identical every time, and identical to the first single captures. On these targets the changed-pixel count is a deterministic function of the code. The diff image is a ring on the Elevation 1 card and nothing else (`evidence/diff-images/-realistic-1-t0.02.png`). Human visibility: borderline — noticeable only when flipping between the two images. ## Caveats @@ -112,12 +112,11 @@ Nineteen, with commands and evidence, in `evidence/issues.md`. The ones that mat ## Evidence -Every number above resolves to a file: +Every number above resolves to a row or a file: -- `evidence/ios/`, `evidence/android/` — the `diff screenshot --json` output behind the first-run tables. -- `evidence/sensitivity//` — the three repeated realistic breaks, plus the gross break and the reverts, at each threshold. -- `evidence/diff-images/` — the diff images, platform-prefixed. None exist for 0.1 diffs because `diff screenshot --out` writes nothing on a match (issue 18). +- `evidence/results.csv` — one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON files are on the runner branch. +- `evidence/diff-images/` — one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, plus the dev-client Tools-button false FAIL. No 0.1 images exist because `diff screenshot --out` writes nothing on a match (issue 18). - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json` — the nodes that matter from the accessibility trees; full trees on the runner branch. - `env.json` — the pinned devices, versions and thresholds. -The first-run JSON predates the test-id rename and says `surface-elevated` / `surface-flat`; renaming an id changes no pixel. +The first-run rows predate the test-id rename and their source files say `surface-elevated` / `surface-flat`; renaming an id changes no pixel. diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.01.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.01.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/103-diff-relaunch-1-t0.01.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.02.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/103-diff-relaunch-1-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.05.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.05.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/103-diff-relaunch-1-t0.05.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/103-diff-relaunch-1-t0.1.json b/example/visual/evidence/android/103-diff-relaunch-1-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/103-diff-relaunch-1-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/108-diff-gross-t0.01.json b/example/visual/evidence/android/108-diff-gross-t0.01.json deleted file mode 100644 index caa6bd95f7..0000000000 --- a/example/visual/evidence/android/108-diff-gross-t0.01.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.01.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 0, - "y": 187, - "width": 1280, - "height": 444 - }, - "normalizedRect": { - "x": 0, - "y": 29.13, - "width": 100, - "height": 69.16 - }, - "differentPixels": 237664, - "shareOfDiffPercentage": 89.38, - "densityPercentage": 41.82, - "shape": "large-area", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#e7e5eb", - "baselineLuminance": 248, - "currentLuminance": 230, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 24 - }, - "normalizedRect": { - "x": 0, - "y": 0, - "width": 100, - "height": 3.74 - }, - "differentPixels": 28252, - "shareOfDiffPercentage": 10.62, - "densityPercentage": 91.97, - "shape": "horizontal-band", - "size": "medium", - "location": "top-center", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#f5f3f9", - "baselineLuminance": 249, - "currentLuminance": 244, - "dominantChange": "mixed" - } - ], - "totalPixels": 821760, - "differentPixels": 265916, - "mismatchPercentage": 32.36, - "match": false - } -} diff --git a/example/visual/evidence/android/108-diff-gross-t0.02.json b/example/visual/evidence/android/108-diff-gross-t0.02.json deleted file mode 100644 index 892308d9c3..0000000000 --- a/example/visual/evidence/android/108-diff-gross-t0.02.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 8, - "y": 196, - "width": 438, - "height": 423 - }, - "normalizedRect": { - "x": 0.63, - "y": 30.53, - "width": 34.22, - "height": 65.89 - }, - "differentPixels": 115856, - "shareOfDiffPercentage": 55.57, - "densityPercentage": 62.53, - "shape": "compact", - "size": "large", - "location": "middle-left", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#dfdde2", - "baselineLuminance": 249, - "currentLuminance": 222, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 447, - "y": 196, - "width": 442, - "height": 423 - }, - "normalizedRect": { - "x": 34.92, - "y": 30.53, - "width": 34.53, - "height": 65.89 - }, - "differentPixels": 48999, - "shareOfDiffPercentage": 23.5, - "densityPercentage": 26.21, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#edebf1", - "baselineLuminance": 248, - "currentLuminance": 236, - "dominantChange": "darker" - }, - { - "index": 3, - "rect": { - "x": 890, - "y": 196, - "width": 390, - "height": 423 - }, - "normalizedRect": { - "x": 69.53, - "y": 30.53, - "width": 30.47, - "height": 65.89 - }, - "differentPixels": 30792, - "shareOfDiffPercentage": 14.77, - "densityPercentage": 18.67, - "shape": "compact", - "size": "large", - "location": "middle-right", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#eceaef", - "baselineLuminance": 245, - "currentLuminance": 235, - "dominantChange": "mixed" - }, - { - "index": 4, - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 11 - }, - "normalizedRect": { - "x": 0, - "y": 0, - "width": 100, - "height": 1.71 - }, - "differentPixels": 12858, - "shareOfDiffPercentage": 6.17, - "densityPercentage": 91.32, - "shape": "horizontal-band", - "size": "medium", - "location": "top-center", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#f3f1f7", - "baselineLuminance": 249, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "totalPixels": 821760, - "differentPixels": 208505, - "mismatchPercentage": 25.37, - "match": false - } -} diff --git a/example/visual/evidence/android/108-diff-gross-t0.05.json b/example/visual/evidence/android/108-diff-gross-t0.05.json deleted file mode 100644 index 7656b5cab0..0000000000 --- a/example/visual/evidence/android/108-diff-gross-t0.05.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.05.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 26, - "y": 206, - "width": 390, - "height": 395 - }, - "normalizedRect": { - "x": 2.03, - "y": 32.09, - "width": 30.47, - "height": 61.53 - }, - "differentPixels": 89648, - "shareOfDiffPercentage": 75.55, - "densityPercentage": 58.19, - "shape": "compact", - "size": "large", - "location": "middle-left", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#d9d7dd", - "baselineLuminance": 249, - "currentLuminance": 216, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 467, - "y": 217, - "width": 386, - "height": 384 - }, - "normalizedRect": { - "x": 36.48, - "y": 33.8, - "width": 30.16, - "height": 59.81 - }, - "differentPixels": 18619, - "shareOfDiffPercentage": 15.69, - "densityPercentage": 12.56, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#e6e4e9", - "baselineLuminance": 248, - "currentLuminance": 229, - "dominantChange": "darker" - }, - { - "index": 3, - "rect": { - "x": 927, - "y": 250, - "width": 353, - "height": 351 - }, - "normalizedRect": { - "x": 72.42, - "y": 38.94, - "width": 27.58, - "height": 54.67 - }, - "differentPixels": 9773, - "shareOfDiffPercentage": 8.24, - "densityPercentage": 7.89, - "shape": "compact", - "size": "large", - "location": "middle-right", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#e5e3e9", - "baselineLuminance": 245, - "currentLuminance": 228, - "dominantChange": "darker" - }, - { - "index": 4, - "rect": { - "x": 502, - "y": 206, - "width": 316, - "height": 2 - }, - "normalizedRect": { - "x": 39.22, - "y": 32.09, - "width": 24.69, - "height": 0.31 - }, - "differentPixels": 621, - "shareOfDiffPercentage": 0.52, - "densityPercentage": 98.26, - "shape": "horizontal-band", - "size": "small", - "location": "top-center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#eceaf0", - "baselineLuminance": 248, - "currentLuminance": 235, - "dominantChange": "darker" - } - ], - "totalPixels": 821760, - "differentPixels": 118661, - "mismatchPercentage": 14.44, - "match": false - } -} diff --git a/example/visual/evidence/android/108-diff-gross-t0.1.json b/example/visual/evidence/android/108-diff-gross-t0.1.json deleted file mode 100644 index 001375732d..0000000000 --- a/example/visual/evidence/android/108-diff-gross-t0.1.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t0.1.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 42, - "y": 225, - "width": 359, - "height": 356 - }, - "normalizedRect": { - "x": 3.28, - "y": 35.05, - "width": 28.05, - "height": 55.45 - }, - "differentPixels": 62597, - "shareOfDiffPercentage": 96.23, - "densityPercentage": 48.98, - "shape": "compact", - "size": "large", - "location": "middle-left", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#d3d1d7", - "baselineLuminance": 249, - "currentLuminance": 210, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 500, - "y": 573, - "width": 321, - "height": 8 - }, - "normalizedRect": { - "x": 39.06, - "y": 89.25, - "width": 25.08, - "height": 1.25 - }, - "differentPixels": 2454, - "shareOfDiffPercentage": 3.77, - "densityPercentage": 95.56, - "shape": "horizontal-band", - "size": "small", - "location": "bottom-center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#dcdbe0", - "baselineLuminance": 248, - "currentLuminance": 220, - "dominantChange": "darker" - } - ], - "totalPixels": 821760, - "differentPixels": 65051, - "mismatchPercentage": 7.92, - "match": false - } -} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.01.json b/example/visual/evidence/android/111-diff-revert1-t0.01.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/111-diff-revert1-t0.01.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.02.json b/example/visual/evidence/android/111-diff-revert1-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/111-diff-revert1-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.05.json b/example/visual/evidence/android/111-diff-revert1-t0.05.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/111-diff-revert1-t0.05.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/111-diff-revert1-t0.1.json b/example/visual/evidence/android/111-diff-revert1-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/111-diff-revert1-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.01.json b/example/visual/evidence/android/114-diff-realistic-t0.01.json deleted file mode 100644 index 342ae48a2a..0000000000 --- a/example/visual/evidence/android/114-diff-realistic-t0.01.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.01.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 470, - "y": 204, - "width": 380, - "height": 381 - }, - "normalizedRect": { - "x": 36.72, - "y": 31.78, - "width": 29.69, - "height": 59.35 - }, - "differentPixels": 14686, - "shareOfDiffPercentage": 100, - "densityPercentage": 10.14, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#eeecf2", - "baselineLuminance": 245, - "currentLuminance": 237, - "dominantChange": "mixed" - } - ], - "totalPixels": 821760, - "differentPixels": 14686, - "mismatchPercentage": 1.79, - "match": false - } -} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.02.json b/example/visual/evidence/android/114-diff-realistic-t0.02.json deleted file mode 100644 index 0052c4b9f6..0000000000 --- a/example/visual/evidence/android/114-diff-realistic-t0.02.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 473, - "y": 207, - "width": 374, - "height": 375 - }, - "normalizedRect": { - "x": 36.95, - "y": 32.24, - "width": 29.22, - "height": 58.41 - }, - "differentPixels": 9336, - "shareOfDiffPercentage": 100, - "densityPercentage": 6.66, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#eceaf0", - "baselineLuminance": 245, - "currentLuminance": 235, - "dominantChange": "mixed" - } - ], - "totalPixels": 821760, - "differentPixels": 9336, - "mismatchPercentage": 1.14, - "match": false - } -} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.05.json b/example/visual/evidence/android/114-diff-realistic-t0.05.json deleted file mode 100644 index 5cdd2d8e25..0000000000 --- a/example/visual/evidence/android/114-diff-realistic-t0.05.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.05.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 481, - "y": 560, - "width": 360, - "height": 17 - }, - "normalizedRect": { - "x": 37.58, - "y": 87.23, - "width": 28.13, - "height": 2.65 - }, - "differentPixels": 1830, - "shareOfDiffPercentage": 100, - "densityPercentage": 29.9, - "shape": "horizontal-band", - "size": "small", - "location": "bottom-center", - "averageBaselineColorHex": "#f5f3f9", - "averageCurrentColorHex": "#e6e4ea", - "baselineLuminance": 244, - "currentLuminance": 229, - "dominantChange": "darker" - } - ], - "totalPixels": 821760, - "differentPixels": 1830, - "mismatchPercentage": 0.22, - "match": false - } -} diff --git a/example/visual/evidence/android/114-diff-realistic-t0.1.json b/example/visual/evidence/android/114-diff-realistic-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/114-diff-realistic-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.01.json b/example/visual/evidence/android/117-diff-revert2-t0.01.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/117-diff-revert2-t0.01.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.02.json b/example/visual/evidence/android/117-diff-revert2-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/117-diff-revert2-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.05.json b/example/visual/evidence/android/117-diff-revert2-t0.05.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/117-diff-revert2-t0.05.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/117-diff-revert2-t0.1.json b/example/visual/evidence/android/117-diff-revert2-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/117-diff-revert2-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.01.json b/example/visual/evidence/android/94-diff-warm-1-t0.01.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-1-t0.01.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.02.json b/example/visual/evidence/android/94-diff-warm-1-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-1-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.05.json b/example/visual/evidence/android/94-diff-warm-1-t0.05.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-1-t0.05.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-1-t0.1.json b/example/visual/evidence/android/94-diff-warm-1-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-1-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.01.json b/example/visual/evidence/android/94-diff-warm-2-t0.01.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-2-t0.01.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.02.json b/example/visual/evidence/android/94-diff-warm-2-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-2-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.05.json b/example/visual/evidence/android/94-diff-warm-2-t0.05.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-2-t0.05.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-2-t0.1.json b/example/visual/evidence/android/94-diff-warm-2-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-2-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.01.json b/example/visual/evidence/android/94-diff-warm-3-t0.01.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-3-t0.01.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.02.json b/example/visual/evidence/android/94-diff-warm-3-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-3-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.05.json b/example/visual/evidence/android/94-diff-warm-3-t0.05.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-3-t0.05.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/android/94-diff-warm-3-t0.1.json b/example/visual/evidence/android/94-diff-warm-3-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/android/94-diff-warm-3-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/diff-images/android-gross-t0.1.png b/example/visual/evidence/diff-images/android-gross-t0.1.png deleted file mode 100644 index 23d7ed31845dc48cb4de9e13d6bf396406fef745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32694 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 diff --git a/example/visual/evidence/diff-images/android-realistic-3-t0.02.png b/example/visual/evidence/diff-images/android-realistic-3-t0.02.png deleted file mode 100644 index 5e6290efe898e4c6efcc1b44ddb0c18c844c4d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25122 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 diff --git a/example/visual/evidence/diff-images/ios-gross-t0.1.png b/example/visual/evidence/diff-images/ios-gross-t0.1.png deleted file mode 100644 index 90430d3f208eedfa4cda03ceac17cb8d214a63d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120512 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�!yV|U+2_+d>o z7X}IvS?pR@cv6Q0MQh{6`!d_4cWQe)c?^$|r%Xk+6{a!bOaCrcxlLZvrM$*ep zv~a&I5&IX^EMUzA=>m}vE%gzVgpfPW%Ued7ggyRC`4?{{J?O&&ZRvvLvo0GU$MAL_IXZEUjpP9DyECngpDKQFlbpF2A?0RH?_LE zkv8`aKzAGBTWTX*YYv3dT{?=#5%f}(N=;fC>~aaNM>8|?iMWxyKGJiLsKK}aDr42rQoW-x-2m7iib;R_38Qs_{BL9sNgHb@Q}NkMp(js*oi1m0t*f3#e9Hp zYblgR+CFOs=QTw|JWGxcOO*q@xHyb5bc)!zH0xmjck1(6J{l2t``(oi<)2`WxVng^ zGCsnoV9|r``$z!eQN5HI+VYm>dOCY|`7v>-Hn8Q_z_98S<#*+aguK@}_L2g-d|3~Z z`&-88U*9gtdHAxx8@y$=o#PEuK zrUlpZvqzpjR6-$8EzwdVMpSdbrg;l{qgQ45;fE4GTY;QIB@H!^5tls!0s`cm!>E>~ z#d5mL2N%lV;MkcJ)u%7W4c1Q2S}4>-P6kNO!IA}E@JpdbI9d=Q6b$kdQb*7oDz4U) z(NdQu?!n4nu)*+^-B({T3Ht_z?AXhCR)drisnLekUKznT8~sl|eMwNQ;n0zrxf}rz z8kRDt#52_zLg%l=Q)RL&4^=u_@r)r7Xoou>B4aHg!XFTKd!v#|wQ@8~P(Sk|%@a8_ z6xvHPCp3*%wNEdqlRjPJqh)!*0%1SGW{9(dCu71qCrBf$(uu#fL+-xGE4GC*Y#=b_ z7Sac;&V4>ejwBfiyot0#Agw}?0QNr!MTorE)Ex=>5iQj%S1>2(?1+c(GrzhsubDjN zaD&kFwc;T+X>1BTg!O*+T_=uzR$}zYJ}3B&EY2nSTZQ;7&+}@jgbG<{DzSO-mS0_T zeA5@yrJf{+hY4$gs6t)`Xm(2vx8-rimT%;YxB^{lR{Vmwoeoo_GK=M%-j%)>vDw25(BY;N}d)BawT+rNY0Yr!zT{7 z8Kcu3Ub$d((HsCHhu-kHa?U8#mX$Yel_R-#h%zIWJrefi#3?eppUrb)L9a@2d;Gab z59h_K7j>1ukFu$;z{e^1KU&Jhu{BP2q^T@~`<-Tb5*Vb@p=xsX(KKV&#> z5;_I;-o){!kK_oCbo-@fEy}f^CD7DVX;XQu)N9VpqKQ0_?d+M-UIUeP_LM^@+V&bv zv1DPReF0vcjc#b@u2Qfinv&9LIC3qq-8uuXs#z9MzpUxkth@@0?Gy2L$c4aS^zacQ z8gCSbpRdZuD+-lvJTUujd+XlJ5{BW?;_6}>Z?bGa%V=<+{4Mu7BRX1mJLe+2&FTS(iNa(9ZLCSVK}6Y>*VM;k<J_q4c{0R*IT1)h0%H*HNCu?W)>-k-7 zgnA({{sg{dyB)fY)Vrt(<_nDkBf3L~I7-v><7>hf*zOaM4NvqWd94NP76Bba zRT8nDY|FbRsR6tnxN@#Z-~!>lX2#dZVNQTWQWa$im_g2qU!{XH^rIfUrEAXeR88&` zjn`IS3}=($Jb;)$7D5@M(+R|otdM`hIrX-w68E{Gq%8kHz;eo7vUsR4yO5g6wnAG$ zOExA4Io7RPCrhsmtK=NoDc&=X;1+6xHof=z>^&+IZnT=+b_JpC#3qM=1ib}3%(lRX z6+FmW_irl_qBrf}iGJ)}j)#dU0VpDe1T8xjqDZbV_y@=h&?$d2?I3nMcmDi0V*Hm+ zfj>#&#!dE+;qec|V1x7C;GNuVj4zKgV_;(o?2YodNJ&=dA6FrC2xUGvWkwfCpx`WW zynq86l2p2Ago|IlE|1%Edk6x;5BVEFgoSYqm;y@Jlu0FvQ$lv2cyWgWS2@2rc(tVb zgD;WgK(#Avd1yIF$O9R(WVKJ9q#R(5E~dkz8uz#)y{CK5B%v#NeNsZ+CU42xh8u9j z>=ZcPi9cPC)zkKzRI)(}107wE;Ij*>e1rJT#+^mrRvlw(3!=IF)MQt7odOF^YU%ac z;(nl?K`Sz+y+%-DAeRz5IUUktQpvEi?MWrtNiC;S2eKw+)wDMnyo$Lgq1w1@OzDuk zYG;!F@()tm;{yy+OR==~-HWKDhO)Y_mO)dY)WD*(C?Q&#PRLoo$(sRhi86`L|2>_(< zaWQu+d8(miL>iU4J@*zL#0d!jGW*4iDI-ZtgSAJ?LdIUemf*|D9e5x(7`fuU8N#gIipVq^RIhOvT1pyLZ9K5VqwVND@lu>Hpwezo{$wGK`xKuys`Yb>2 za5b6zv4E~v#uB5!QH9Pmz1=Y;ycdCP;7i>6>AaMbsmViAD2E+MX*h|%H2IXHs3l4g z0uwue(03&HpZt`{o8O+Hj>ThqpDl&BBtJ2wB?4q->2%31#%ghaS!yK=)-cuhxz|{0 zoLoIq!o=FS39lZ+uPkO-h1#pm(-H_fo7kpe2_^bg6RQYZ#NVSEg&Q2pj>* z#70Vh#Nx5OGYg!}DGYOcF+GijA;zq&IYDyYYa@z5Akti47jwmgZ zs$k{*Cl=_N)pS*Ml|C8Z#+HIy0gsvl_c-4CQ|NpI;PgyZOAKI%qkVVg>I$DebUi|X zBXV|@jZpN)(4Ad^dTEMf2p?+@RRLWJX`aqwn1_tK>nu<#sxUOgdOaEHZh3R$b}sGpKBj@fQ{wgoyHa1IbFxF@ z#MpQPYGteNbdB(PgA|b04 zq0&ZCaYvDg$%$f#ov_5gJLsm!3!ucyM}sT`1ogHT327Q=(}q2;UxrMJmW1?zSEt_= z5={0_KA-7Yg4tPqB^^ zW(|cvV~nqnAfkNVW1Vz_2v&mPxZL1rP=}c^$qq(D!aJFT{&sm8O3$322eA@A{lHi$ zrQpXBr=^CFI|%UgbVrj!7+#kl+gOes|DRhMVt;d2`=9(@0H-!7BND|?#Ql(Y%0w!; zI^c&l?B1p;B&2JtH-YiaR=fubJT?THDPX842#a|sigVQ2>WvsP0Np7~?2w(wrm<)& z!Z!1a#mtXcSjmQDW_ddnr_1tpkCOs%ckxHUMI)=!Nq8I4x-CM5I-S2&KYWxk}Q8|8L1T zt`_xXQbvp@&R&xt04e-TyjzGZ=)l(68~M32#?4hR68WR*7Ac%{hx-DOJCP&u5XLYV zQiG<29I8kStpA3959Ukw_=j_-Q7TjP@CyMi!9eSdF+@(3<+}^x7IGbJfPuAqfJWWa zWbPvScM0tUJ#)edk02U}_yUzDQ>IKRe?117H?MFDjY<8#a(q#YK8@UBj}MWXlEoSa z?g220tmD=RY!Z)z)po}xR6y)@_0^IQctRfV4DrG`@0zJP-Y?F&R$VJ1oxo?UkvIaJZ5QQl|=?(wa6_%vL z0Wlb`!Jv2@j8Gj(1#Alxfyd|)pu#L4L`v{sbM8maJl*7mSe6@s{)+nIVbF4h={lwo zXDG~SvBIO!7BY*I*NMCmvJKHy$kpzBdRUp_SYv7PNN|KvcUvV!lAh!v@7oemEy!6R zsIZP@D&w@L{L8f@EYzgpXxK%G7Qoto`3g@4z(F{{XtC6Js~?;d^(~J9;7L0uj|w0Y z8oamhJ>s&~+7afjP~|go;2M6gM_M3!SbAa_X*x*3X)e~elVNfEf3Jw3ciF6y&cf%s zKEPa*!h~m8QdU4MTom>M&V#df#ez#7bO@=VrP}Ax5b8eVH2X3 z_`{u)b9_mnj7F@OMJlmFihzKWr}Ded7k zn3^zF%I2+E?t=tLG5w!SOAU(!j@@91(*Mff#RMhXT&|Qgoe(bB7(XN6_L7uMn=8~A zczE9O%bC9{oL}1c-HVgXKKDL))MdNXHvz-ie{@%0#2fb%efbn%?i1DT=6Ya{bE z$>c%Cg6&TTW=Sy_DIpBUi&uk{>;KzuJhJIOhU4*;76}7t#yBGaxi*8nBgNg+{~AZY z&Upt9(+?S{&wM;yJg4Cu#Gdlv5jE1YP6q7SR`6O-S9u|^dP{}8ot4*e;`WRpKG~yc ze<~C5ykZL@+iD>}26Gp-#P#Qs(NZd9<7AKq>CAx-epk4Ea;T?ijg8DL@9lgSLLD%tpKkIg^(b zGR;rD1DYZEB=|Cem5H(PCTL;o@&cYh=8Y5Zm~&4-z`>RS3yiEa2>XSDOr~skC#J52 z=poY~|+bj6A}yy?*}43Agc{g+{Qo9e2VPS|Xv zc|%4HyQo?3kRb-=50e?CU&^Z%$E&gVpgwO}(($gY6-F{DyI~}6UvG$3W8CG!h(+G{NbW!AL3fzt584w<+(kHug@3_9dx0$6r6Qv-QrkW9swmnsIk^ZGsBo5Ubd z86e3GzLfFy2|cR38I4+3%S9(v@V<2>gR0@m^75xaOf_ZnwG8WI1U4&`$)dd4gNe~H zpj!qH<0}LHcX4L}7v*)P{cTV|zBHRfV=Nk9w`&&?lCGQAjR?a>8WOV`s)EE&M7Nug zlAxOwMIkT&0pB%=Y?|6^nqT+`8Wcn@h9QLlss0jMyDhYRA%qF?u34K&(XeI*)FCsx z|LZ)1`Dofrns!&C4l~c3=bZcFy07~_PtLt>3}oQIS7}o=LC2#iyO71UsL?NR1n3^H=9`3g9mP)JCyQ=kR9r4x&3V4` zdZV*9Y#cd1fFY%EcCNZ(`;Ta*%>ZXB(x;b<^DKv`HezZLwr=ou++fwd@msM+dTztB zS*n_&+`#Fh8zQpl4s}3H1Fh4!W8}Cxv$P5Wj!>gsbH1(VJAR1vixxzBWvB6&SM`T_ z!BwZPxe&U~M*A;%H#J&Kl1Cdkx440$)bGHkOw(Y_kIhgo8KDp(0!{EGj-;dq-qdUq zZdxK1 zbowfRDF|U(rhUY#_bx`$qc!`VdtoD;33OWP8RMXQS$#r?Di7aAD>2ioMKgAg zUqq`1Q#e!PO1di0*<8JMjjb{$N^FZy1gm?IDEkJ1+LgQA@ z`;8{RL|sF`Rdcqs?08xRHw}0`7e(vXo;&VqwttV7hG-dBRO^F?sEDcW>`BoXz99D# z!Jv&!IaWVw00DF6rgXT5ujrDT^n(wpLEny|A`Kx^q%|EfHE2lp?eUvvB9JYxn_4@4 zFf_(;sWEsT2Scwz{Z{vNnOm`VggJ~`s=z6wPfkfMirP!O(y`q@rSeJYVvr;n9^3y? zr4D)Qbg;4MI8t=w)aYl8s6-Qp z9Qc*LFKG3rI5nD1%3SiTz(Oa-X zL!PTn<*4IG9Lh-*rIc@2hgkc2))I>eRPT2jsb;y$Og}QyjL-t-H4vD+|N0XvdMJm#EoCmE22*D|Nym=zh~QPPICRetgG~ zh{g4-NvJ67tTS>>ON;;GT#_b3qpJm z@}@(aL3K{n7k6g&P3;}2cZl?}UM}AFu?Iop6LelW@bL#hn|8=6KGY6*3}`W}#IW^i z3~2ua#tBzr#^9?=AJ(mQ0Q~OccY(~?J|fx09ooB z=PGp^Sx4((6NRuYgY>53$P;R>sE#8AY79VwY}3;KW4+RTk_h&JcE=n7-om;259@gF zL$DOF#dxf(TCKfs2#hWxVuYp?7!d}x2u_T(KNM^eeQYSJ%&VNCQ&#}Qh49>BR$p#48c zQ7VA*{YJ-;$EDLd!8F{CMh%2wx#0ntd19{QXG^1i8Fjk8!{o5^ImG@5^B2_tOBuHs zQH*i_i!{R^#}Rz$$Z_(tTTCnQt)kuPf?tIt+jXl=O(NC*pkhdvL$${AQ$?^iBA$zWvpR+0d{f$70Ssz`!ZJ`+fx z*NlF+2ta~Iq(IbUFeR&DJ1s}3^GfkL(Vc(Ux!wr|(5g(?1LGk4!n~-(hcH-iI~EGN zd3OU|$5N$wzyWEQIlu3JzuCL)7-Fb4eSl5xI@yeABWfCNaqPRXD)N<#b|)={X?h~c z8MPOiQjuWwEA(>SqgsQ=j(ibN;Us?bQetmIO~xPoF4-Z?twnX2x4-2G(GW`T7?{?DpYwXz9lR@CjpZgWuouW!N|nioI+O(>I+ zhzr-?)Fc((71z`iqZijqHy+odWt+s>2tu2Zb$&t<5C&=24+0<8v+nogqTK$`KM)DE z)S;FmcjAPKW2Rl*j>=Q8p^s&rtJVSrA89#KL~xpp4Eu3s(9^iE*c3!2FVliC#7X?1$tyNAUifd&`~ z(>J(1%_2p>K>=DK6M@z60+d&-#~lp!bZ{F<(fdd=iRJ+tC!M#@Lc4=BSx? z#MGZjOR!&x4DSG}Oi-|irm2E((-HQ44nS^6e9zXbr`wyQ-H~RPj1q*gHT04h6UW22 z)TM*)X6i$JX#9;<$FI=5(nmvVXeP+crnq(Xpa@~=qf?EcP-VcxCjETV)k#=QR%}*>CyrT z|1iIkKZ^W;LcoT`i{UOtbaW6=`iulq#1Bn3XytFHK?Q(M#vfCO_EdOOs5VW_)MABN z0!VB6o{|m_jpMNJ8kL#25JZF;>GSEP$5x#6H$DDf)fC#0_QtyJH^`x(QN(!D6bk!n zq}|#_$s^vb5^-U=8Sf_KNMRdpL$Y@(UBK49l1l3kdTm<8Jtdc>&#<9aszdOJDPJ$+ zK_}&4rX0i_t(p#*B4p?)S5FKa}%&1rF=wPipQ#8pn}4&wU=+eOe3m5 zkt6&z4JoH!nI;>hx<>|zS1KaF>Grf_j+Wy z9P}|o6vS)lRrbJrNJa8z4+#ydSL;@_9#VxJmQeDHVOh&)&9|!FkReeHytjKb^%$UT z-G!@7ZAUgW!b1V-n56mBaSYOk5Y=3b+MycOsO=+4_5N?lQ&8-0)3-@Gv<9RwYYaP9 zZc+nmToiQ3E>*llV4jPZ1v%xdChCVPizmra`#F{TwQ=$O+S&13Kwl*u#{+W^tD3se zyQqpdumc1IwoRS4U>!h#kW9Ds$M)1bZ+(QTQm&^6(^gXNXPB$_KeVD25dl;1a5!7M zQtL&B%-dESn*SM!kDlOp23$iuF25AzBc!F!ww9Dx+=|+*mVUe6nRYx%jDzo~g(LrV zucq?(@ORX$N`1;%rnNis%&8(Gh()B8>Am;YC*_uPJcp&ZIOT$|TNo3b%-$E4_PTQLBjkp)^P5Fnuz|^wnGkkEB`pqI1Wo$iGg7GMBpxTpc0&k`g zwT#Y#droBt^)Xpv?{uH1@2z1mCOS3{N3dz7xNHM9((~wja}t)bdWCwWZV|MPkERnc z?J7kGE2+K%&LuaoJfvfqtV7*Z+eDL#pYv`@q3DW8t~%FK&L4Ak*huld zWvrp;pyU7*{vVFS%Yd@ct=Kr%GP8>&nseJhk|BfZ}=-=R(_1HQOUoN zu5aQXpfQ7{$V;7XSS32PoS7hkpqR}rN{+@^O2n{9xZ{)xJ|CsFVqo*Frge9eUFoRO zH50V`A!?Ud0NizYhaM=XVJVNTW-!xEQqCT33bdG*v`3%6gO@tlkRh0e;?cwnGt@$# zv>eoUih{;td)n2rjwH|!F-XTw>aZpWY{aqHX5NYA(0lfkRDbg~qR)*0HcqhJB2a8o z$UCp}scTR{A4d}kv)e;ozXF1AdG%M`K9}7Oz9~m)xp8DI_rAn^Ie$swGape1rGPkkX=h$XFD5{{? zMU5gNTclEpKPBrzP6z(#or|$t`;2A4?>9*X4(n;EccDP#RchO2#LhRy3fM-$7esWR zFgy0Y%Z_Ht!AsX5#wL8sdEPX7wG5>P?LnbRNJV(i+bL3joMVnwhh%UY3B z)`7B#K}aHltP9qF+O5{5YD3DxM$Q;8_(&&ZRl~j!v6xJCksR7;6>NpvmU^I+X6;zN z%Ic{|mR8}QMnuF(Hp5joGn-hMmJsd$K?DKXzK4aWP80*3sKS~ly8#bkAxDhd+Ddj$ zdhgcb9tyAuv*L=T2QQ8ZLh{?t*t5Sb>8WS&kb|XaO7D5x$~yPcXH)5bG-uLXWT}EX zN~I631f%%GP4=GR?9w->JZKvn9P+W#VzO8%_Pa74A}WCFJpZa5?me$vK9

    z$o<)>1qPn{By3xHt4m&JfiSo`!AT)+o#14!gR;RTqa;j9Ha zW|fuQWf{A-SPw=`2Z=pWBi3NyJJhW>`l{aJfG@$K2*@!VP<7$Aj@UbL;&3+IyHvr6 zm2p6MDZagz&0x|IpUf0W!8GHZ#_CM zelGB~)Q&!A4?~Nqt1BdhK|vnHddp0S`zh0LRNAW^-=8b8Ps{VemM6}G0IF<7j759J z%7oW|!;OXS&ZlBgZ%wbhFRUDUmd1FX-ZT}{cW@14$Z(h?@=HxqSsAwOH_oUYraHBY^yXEg-6X z2Rr_^nRr*!9ARI~EQGd-_+t#V5Q_kJ$X0+cz*{4P8*((DaFV3MQRid|nfx^H_)#4DwBES8!G3EMm_kV0mnSyEQ zUpA(+kTK;02V3it6^`Y9Rl`cpB69_coc8;a_NWSXHdh+qW$2bz-K4j!;wVc zV3yF%$DS}Uu*%NL)+VqEa&oMj&!#K!JZE9Xf8aVH-O)dHos9p7l!Oz0?7veIzY>Sa zS6lTCVV$5xhEF^yUN?3bB4_Umh+%+y6hL?ZFRE@bFXpdZCoR8poy`4(>!hvur~VGW z5u9>F)&o)^KwGEA8A7PMT`KZg_2`#}@qD&!&^C+aU>$ZQW6N^FjlNhL|8d zt4phW^sF!#@~;mrR)YeeLbYvl&hQK$RLdKnFD^jl0!5HxI!h^a#)8k*_JzmLnpNL7 z??1}{dxe0x{lO#;1=5rFPqDHljU)!lDuI^f93)$XEonMw&<<_2M!<_v1||~H@mc5c z4*WlE=?D#{e3todXoImhm_hr);?UQN_=K#hjpv3KZF-J>n{5_a)yAQY*C5rpyB zf_ zkAhh~Ii@gEb;P+3iu*4KllWcZQTljSK!{f+*hidkhbDok=CfF%9bln75Cq_4L@fkU zNE$$r12RxAk!{37pTW_225R*t=n8TAx;s(No6+xCgDHi>?IkNPP+vnP9OwB9l2Cyp zS&%j*42NQvo_dsyQQ-(XT`^{9!$EVplb64)baniwkzzBpw-@R#MTzO^XO>)%b)7oq z2l)#W?GfJ_Y0Sq7B*>ll+T3iZ=)LVC6PN2Q4lf?WWQLWhx{|K(ST|W$OgL`a-zDK~ zvOla#y8bWfEf5QuyjWW+aGWs53-+Y z8Hl~&puzMiNTC+-K_2a%n-`vbk#blJP3&xmJ~Z^~@$*y`N{VO3qq(4-fhcc+%Y48C zK5VT*UTYIQkR5J2I5BQJ+>m%s@JL@NNxdWRVZXN;nwm`lZ{S9BP_3RlsOAAL5Gx<} zPhMtlG#L{=gAWb~EdDuPxzT+PEs*E%ZIgT}o5ndFq1Ea5rASayE*Ety7vic}+Zd*Y z{u+PmLFuBrmM8Zsm#_h>2}u}>Oe=^m+6-rH95w$sRR9h9#1|J_%Z4LF<~zGDF`g^p9O)1 z#)r-Zft`i|s!lTvM0x`ngG^HWfom8vW2C&V7RfwjiQqe+FGdqnflLqJK?{YNsUGOv zSpYLRkjTl?Bs%KKu-QQ$ z0_Y4?Q9rW;L43EbP6t+dE`rJq3a7RJSMX1#AsM>m4r$WZWrvlHDH6W&W0LDOcke?7 zc$gmdgI92yN9c4I^SPl3r)J30FlbtW#2$PHK;t@9a@BfEEq=C4#?mbGj6`o_-4)8^ z0&g-x=#`)sljG32)8Y*xJl9Ft7^7P5}&4fYuJ@LyxVJ;`b@ zO(FmcFK#sgS^)=)^_%)rDhU#FplLve0N@M?)%i0d^0+x85CO((rI!~kcSCFF?!K}wgCUh<#2#O@#1^K&iXneTgb1}H3EFJ5_%qaHq0+d>H@r7 zzt(MMrmdKNw^ry#9ab)h00V#lG9IqIZe4WGFPaXisR0Ugn%KwM>!*&&3fckdn}1bu z7`~CfHp5^D&aASa_@jnDhGc4YLu#j6OprncFZZdb~a3OIkgU?M8gtC z^(R?UP*Od(RPiv01kI~jjo}u-^FE^6twg7gxrx<#9xk5}Aqv(dojdw^s1hWxPo>>9x z(^mmr*c3-hgW!PWTI<8J3ip%{<7Hz1??4-MbVVjJ&wCat{o4&x>ZeX*&UVa~PS!1^fzmQ=tYGXQ^S@KqW*-$*``;u zJ7)vCM&!9qQbAtDOzZ<1vMU6F%NV49K}2?mK6}pWXBPoAiIrjbF#1*mECA>tHP+M- z&|rFn527KLf`a-^(dIh>sZioSS%p_VgG?`hgDC)Cdnlp6dSfx!1?SO_Ro8-sP7?h75+_`pTbsxZ^?SATTw~_NUm#q`<~I z$rcN;6&8Y}SwKluTVPl575Hvh1DT~)bthf{EKC08nn%q@^?c=rk>{^G?e7liA% zCYV4Q(g69R$z0<_<0UDJS-};K2;&L`EpXaHh(bml5{&y}T1ia{Dkfwf%ebaih-)kO6;T=@dLFBpC&1rOSvK zs7HG(t8FdZYzv$IR+}S?2_nvvx{;H_$Eo08lc+IJgR6D27y59bCVXqa!_iz0U8b!v zkTF42hDZ6Sr-=>Ct0aR3U<{y(tWHlgMS_zKOpXwCC#=fljlGP3SrMBiFN{$iK6~rn z3gEIK#0~s>v_Z_2`*++xAToh}Z##2lDt(HYXa&&qd1;Cb{uP>&7C5$h!PkH#Xw-}k zj5i&TXQK)+BQHGfNa=!wEOcUULw0|uN*|s_5AQR`@xd#VF@me1)GCX%Wa4iS zwlybnohKFxPt9vGXd5c4uiz^@?6|#P#DYic9TuhQSE2EgABX``uG#{j+VLakt>0L5jTDb{W?mgXkIAM<3=C6(BMbh!1MAzu>l)LcNTI=iMRc^lV)rW zzRZsOd)otPi1hMFX;1&I-3Y0e9`Oq*S_`=l4Z!ec5ANhIxJwa9b&K+1Km`4R8d@=Csf+&Km-VY0!VQcN$>h`?jGco8^FTv2Ij zAv#qAO~aiT9(C`J9H10XUpl}70bg6O9)gZDz`5I0%>pM|QLqqUL`rHF+HHe;xPlA#kti0(jp zJN&)ev!nab!zXjBARaDR2fBoL2^Lha`^u1v=>|tJF)>s*amE5iY4pxi;Rt5)XQeI- z_A{sft#}oV%VIsFAh7lzob6&@0F&@$-fF{}uOZwp?Rw**Xpzk}%&X@Q^KOE``tma(fR z%VUe52ILibR(O5=ou}q^#QHPB&EC|Z8seH>ZHom#Z6Isfn0#+c!erUFu@#0n=nN?5 zR1D%K7d||k&e#>%EcDk1r1iLacWhVo&paMc6<&$CAks%5CfSuA0HrH9! zZ7wO-sNkR|0(F^}xoN}*dlW$#_;!m)t&Nrep;#DE2SG8E;GMOF1f$J|N096{m@Z)u zBCZUbEd=)IELHQlDid)CGI40Ryi({DS&iti;~Ma3y@oGS#?!_F^9n($K!)tE)IlFI9Mlv1xLH?2 z)fXgyHPRVd$1y5K7%~hDk1v8rnnM=fsBM#fLimY}%@MeTQ#ZlvkJnb*Pxi(V2)A3c z9eClph4BmE>R#!HuM`T4Ljz`QHRTT=pSS($sM*P(>!Sclqq1PZ{i|+6o8Hb$E~3n- zz~Yc2cPUw2^D~GwkUAYTQ}y6f1;C_+v}P+n%2oUrpwE^z=*~#b>%PUL3u+McORF83 zoUpzJ>%9^8=&5vA0xsk3w`i5Ycp@0HKY{X{5wxW_k%WW{XZhx6TX+CrBYY&vvdo9> zmN7hF&_z|d`|SzUjU*{GEiOqfp3Tpwd-TC&@CoQj$ z+P!K#8-`9uaR&(qYPNV?WF}Il-yz%;yLSBRICL;GlrYy;_0#I1h5r*#fb)EoC}1`> zj_}jAU8PS#BC6Zvid53K(-%;k7sk!eI8UK?_tK0q+-8@}~eZ53h&u zbLd|E*N`#6`I7#g-x;uaF&$zG><1rfn*;T=Bdi!GMcFzYh@(=2tpnj2a%?PnZhngc__Aer`0LSq3M z(G;cLa~K|pjdKkO`&!wOiacXx-JDX4BZklkwEM~M-9-QY+6;znbSjw9?2!f;4~gJW z8Hx;+j2>=A!1iRE-+En}0k|GDQgB4T{urEJ75 zgijFV{^X5Wu-C3ha~O;gA$sjK6woot7-06NmJoa~5(hwncuX!w_dQS`tTn6XbGWw5&VZ&iO^gTBpEsKHNutim*VK6D8 za3nH3=*DRo8!#XI7+~WOU2E=jJgNEA&iSw-)=VV5-Mufb>9S4GZ7pS)L?ungOS@Ot>d*)D2-*#elqhgAj?J4MS zLXgkQ2k_+*wg+LBi4Lnu#*wQMxGadpX>DQfdoA9kohRg=CSZjk(f~6e%eqk>fuF^! znjQ2bx56iw0)=@M&d!UjXp|9GU7~krZ}DZ32^aqjY0{u(;AZ=cBTp?pIu&kQc9#wa z0~cp+_(zXxV5gD1z*&>Jq-yzQXhP0usy4$~m`eTK+S&dN7#`BybI=2k%E_b;XVYk*@` z#THIyiUk-HJaEWvsNj_E^jd1us05w^_xSN{T@H(>_TwUD#Y)}JOGnBpBX~A-O*m-R zm73;Q)LTF)5u=xHIxSP(MIdX5T6i@yKWm`;*kU4YX*Q*Oo(dk=o?TwdQiA!Vw5?S*k{;pFMY1!)BdiiNnVq z)~M<^2#=Uq&kUXiC~wuGsdLxC4nJ0JgE=~B&UK2+N7NvtBIc6i#Nm=by!B=g;6}=t z5h2naX(`m^`Wou6V9wt-nF$5a2&OyXDI_I?=)>g$Z`s{lsc75K&aPW*U`3wwWb0WL zX8|+V;9eRu*dXPRmPB0|CQ)D*ZPuF^MG@{`szRu4Gfp5ykA`s};(?)wO6v;5CXo24 zdxVD2Zg$&-oKiR`{pTT&ay~)=my?qE1TNQM5Ze*=_?0VdgAtiCA0h&{1lz0`(`=24 zHm;=+c%PZtfMmkX+j@@Bp5diJB~DmC`>KTR<&cc?Imm~ksxiG`c3~|*jx%)*RQeG+ zgGLhBNxU#*9AM_$fnYFfYRWUwL`VY=UYMQZ#a_Iul2law6!fRgps0XpZu&}R^BkSo z$$uMTK)6$6g&Z6hA$W+%L)Uy;0MnH-lEqvwwD8d)2po`JjgA9Vbz3k>Qot#IP;q_; zODsuMSDv+%3b9fP9s$g_nj%4qLWYngli;DHS*8(`J4;WWxfAHK>GS~=c^k1c^zc;i zA4t)Kqyx17b_jiqr_@wmX*`%dpi~ADn#LYp@KzM+u`{Gc?7wD6mp^8Fp_PdciK&m05eFN8aPmxK1PpIjmy~FTCc~hU=mj$7;QkR{K6vf$M&hA5@+`Gr zA)~X~ah62f9Ps81An~qm-Dn|n7nS^onC9y@QOrO*;QJBIl*p^BWUyVS06C}#9UbfM z*0s2nmr+y?4Q9d4j4!%VIPJxYn2m$$6Y%yMk=_dakUV%V4)#JQLxEDKj!mt|%XoSj z8vJ?kl4C57wO}7`2@DgSm^By0dGNslQhXu{ z{tJye`ueV4VwHmncbfz^k~MKQew{_%(uL-aWUfN{4I0^h9dAQ3=+h#Q=0 zDV8Y5w17+zxX-Aa?~5v2$t}=O^jyU~K~$u#Lp!2^jJ12v6olLmpQLqMo3W?I@<&o! zHqM*VNrrMOpnTkAu-^jK;!Syg;W?S+atQMcCEeYymz)aX^AJiyUPn#U9}q#R4OEsw zq;W^Z*MX=i^Q>ZG#&Nd4ESW_Dm(UmRR#w>}g2oQCbQ1<5>ulm3?i4Mb%yc<4`#tq= zoV$LgCl!i1TId%z&QU+?XT-NQLSFpGg7KIb8m(s5p_;2ylQ$N^3=zFfCe)Y=25p1H z`lloX#zie4;Jt|4mDf<3<63FSq74}D>KDNTrB%od0%HxDNuaDkqB)>)Ges{&?ZfqU zcX@-lYP|8UKltVV1=bQy59S!z5!6-%)*DaUS{^2^K|fy0;Q&aBK}@8vIKH5!WC#@t z)k(syn!;@a!N@hS;glmi+mV=n&!!KcR5(o}`6ev`rl!FL1hyZ#$qeMP+`Ci)VuY^E z3CO9-V`QM=q@GpaBAO1-?FxY=g zk5m75{b4FycvSNBR?WhdGAtj24uL;LhKkk6Slo@&33s~BQti=;uc6DJ>xMdy-7 zzLF*r-qZMlj7t20}v0F6yly9)I=u~s9!OCb9BgB-rpL4^RJcv!#h{E;cO5eS3_xS4 zNO57+t?C?ARA=2GjvnF$~~Dk9~pLTzyV}9*p^tageh1>3g44M zH#V2WyO_)5VJ@!g+)ts~hL6ft`c+8xKH~M!(f){tUQlr&$z*LHL_r*q-nKR_)w1%% z>^ccu)P(ttqpdw_4*~l`qbw=6O;~mPVefKxvD4iT9^vKEw5YtXhsiqG!z4qEy4BiR zG@&=al#quTr4~R?5VYO$`k(p*^XLy&9YXytPC=-!(HH$%T?q2 zlWOrR(_9K09z2*-DUadBkK(L6(G%7t5#u@(q%Y9j9=O5@QsWgt5lATkerecw141*r z?+n~u*@XgY=o|GB9aLED#AHVfd`t8TplGD0Q?3PfGUU!yfrH1PoKUI>KB-8lONi* z4_1&EBy|(y*9h}}8~N5ZPV_L*W9^~LMoOmpSv-|3SaQrpn!OH_!CUVX)p*RSLT#ge zOYpjMfNZvU?nO@Ivzu)(|Zc~ru;8WuZO}y~o0cN{2SLe`%?83}0 zg-7IWVfe%?69XN{E*5Ii49pXD2F9uFdkjL z)qxnsR0Mou1;Wh&K$tQX2Dl9k&qjXCWm?jile2xb9*%vg4H)6^{ZK9_%Eg`TPJ9y` z4@G6DIgw_}3#V-!57*C?SE99Wa6womNMCu4=@t_fI!nZrDd)&Ud+Ic z*C(BPTvPVFx$D8_8C^(4i`2{*A-900$`LT(Cy`OW2So>5%xg`BU6{IK01^e=-362# zJZ;ThdvsR|K)K)?+yKS3-h1{T8F9}hyv z_~XsFo6RhN(Sd3c3lAhGWFsG=;chykB^Tl<6yQ6XDQ*3zL=q3x7&>04vx83IGFY*0 z@6bhaK-bC1dz?A7SLqh8YTImW5%rD!V(#XSUF$fU2<4BtZYq>bY6w1enLXCvBek<` zhjf`r3$h?gn0}M)gDY3HFPLM*lvD32+s$dnl)MI+-e>bt@lc!19McVSAX@>vichA; z`l?d?-ZpJpITF;OR@ns)WskQn*G`_i5yrG1Kb|#nd--ox4`yDjJ(~DIqB^6PDD;*?ado6Lm}%Ik1>MJctt+tOIVXKq}!a!F3#iVe28mLKniL z3xmSX-Acts$j2>MIRWOQ!cg(h5;P;IXY;@v<4#`O?7-gktA>v6dfW;!HkVD)O17|N zfb#KjyxFN_nyctb(t>V3TdsmGAGKh!wOy4QSevc1!Uf8DpjZgyu!M#V-eI`qvo@9J zArp%&3s6|D48(uUFVhZ&POMS+>@VZV-`zM-Mo)J-I&o69z%6lRoev6rbs&l)w!P3( zfQIiB@@5FXp*~8X`1WHDHRwT6bW59ME_c(R-vzkNwS&Vp-xwk&dd7>$mt_Y}TK_oy z;HB&nPqslCHU4$CPb4+N0_&!_>y@@#ocWAmU+*MW)tl>vd%6e~bsI>hv+Vgv+!KJK zggCR>sgO_vV%m|{7&qdPd5-=+89a(i*BP(_$Zx%lwY&^~7fgXrK_DIWwJP^iOre@r zQ!q`W+%d7rR>ZL<|MFn^X8Tl_vOf96Vg_kbY_VfhT!WT?3WvM z{3Q#;S0BnET+#X$k8)ewRsAvEwvr%VU0 zy?TxutAp5mws3Oj#rWjoYzszr@b1fZqOvU7W=@SyPrttf8uh`&c}?aVC@0n93(B-_ zAR;lCa!?Ub3+Y(pcC|-`141eOH5W5=Ay6UluyNz9(xDL<2Yz zkT(t?>V_!ejc6gX6~6%sWCu)%KpFZIwoGy|s@W3Io<|USe*BgmVjA;tlV%V*-Wt)n zxMT7bSGDa3PhRP9!+z@7L;b1yGgDh#lczV#*6-rx#ObM$naTPYeYfdH>l_;GZLLQy z`gI(?u*Wf>e9BIR1Z6K0fUhDm5tJS`(0b#Vlcn0&Ve8EGkG4V?;#>vW3)fDB%*>LZ zZNV6DN``j7@0fr|mBL^b*hAYkiB*g&{9^RMfx5XQTz$DGVfM)c(k)3d?bz@* zK(R!yBnlvRz)S#Srm0agRW%P1;+$q=Vp_|WV@gJ1J7VN_z{zwPH>6j65$AUX<66S1 zld&7-8pAp0t`=_y)dI&w^`{#r?C4GKlV9GS`IBAp553n{DcJITYk55i`SYweK z8Pye%(g+z43-}pQ1`Om6^XCFQ$-SPwNtBkclDWx@C%o2m{FVUUKl}`Cd&AAhX1F~R zLX>cn`r<`8k$6gGI!16BRa6R;rs}s!ZKBf>j#~L!5@j+hoYS~D z`0lRTMNeDazq{-49~v6gyhVYK6!(N&S(uKTm)gWZCCf(UEe+GS=T$iL!^>lZnkL|Z za(<{b(Q5Fh>DCPnZ;ufN=i<*Jhork&u^~8GI1f2xC2F0gz7`j!t{dNr+g52?PEIXI zSoPJny)|>A4|26dx4>`LPJKu;l`k?6@x97$#nnRG6t{y;pLPR2ZB06vXk{WPm13yr zzSl-goh~<-J1%JUM?NsB0jZA(4M1s&yj|3(a)iPP+2u$Au(nQEWu(JPEh?%3D9J#E z{PFSe*2|Yu-Eo=Q2ttMN{!j@t6n1z;XvL}gpVh3g^>J4EMUGQz1UPVd33h;9W>GzM zl$=|6OV#c`6MfVw$EDiz?_F2k8d{BnIUp2?p$-&njl~B91%Es-vb-}!j10&n5zm?< z5Th(A?(dfKT7eHg>vGS2Ag5n?^^x=%F8VC6zf>X+9l%O>l%J~CF2JxJCmXtd7}7-i zamT=dN3`Ot<}67HME^0u?rbq$fREYH9aYU6LPlDrua@&vHQp6`%`rC1;y_51e7yk| z#N$ur9=&x(wGp3HY(P&fMSb=cIzkGXRE?jGQ!mkgZLJ^O3hn{5LVhM>wkS@xMGqlKjhb|5chN7$ zqC$cddKYHPg21~p*9vEgG2rSB(hxz)FZ3Sfduzu3FS-;7#{jwED9bblGR2!?B+w03 zOI0_~cK8FXt4EmS64&I(qlvf;mQXwlT=@2=mi9<}v)-&}MTZ&>txA0p{c{0#W(U+J z`SgJCeU%s@)o|t;RLf)5{||UEx^d6wy&w(l!4@R%fv_(vL4n6>v{>~0qf&fk;)H(s z_?Kdhzwj{}Nc+OQ)9Fr;UHIbr?0)?BSSgmw zr;+>08;*_gWN{D09-+S~e7AProZ*i=L)$b~4OCu8?f5cAbnnZmDRwhDt)@a7?fcIh z?p8D$vvJxx8F2S@(TR>P?bPvO^23I+8wy9?aosNcwBSNv{a4OLtJ(_Ei|lqUk;V)5 zO>ymUHcfgb@k2j#{jT$yA{*_{$q(y1!yo>S{Xr&~^MmevvdXVx)%1e!#nukn@8A2< zsbYy+3fb2VFPd9RV&**ihXO^ZTam^cUGkC-W#j%O4QIS?Mzgf?VU8dd+}KGVx7hINsA6O zdhVQ(^k<2U@|w4!Y*cl)?_O-Zykc>f`r=Swf0oYCXm=QQr#$-=Pn;~y}XiP?{g3e2E?!DjqIOe{j|I1a=8qGeHEPd&)W{q9_`)&Myn0jd+p004X6BXW zc^a!&5^mJAYt(P?%^BS0IG{0|4!G2U){ILDFT5;vjHzrp8=bJuy=ldV`zxm9t za-UWHgqk;YJrAEOP4T14c9G=M4F{U8`N^YgzcYL8vibUZkG4b^JNAx88TUl(_N0s}U*YAQ(7x~2(UkMi z&NG|+{Y4!=_H|BburpkhA9d~?jyHEL)9?8)<-+{=eUoPA-_h&&5wMikDc8iC;pxqZ zt`_X+52nA}FF7FeMLoVgraV_8bNpnF47M&#iRJM&a z9!!0+>7m$j%8xwDve$Q>VDDahs8OH)`uTIbp|{o>2A%qDNSvnFjj!xexjowHyIbE4 z-FdXstKWzF!<@re(Kez_1~3(W7yk+FtSx!;){%UEU&u|Te~bU**NNKx&G~*WQYwcA z#D?cVOeo{c&+}@xFKhkp_*kynt?PLgglOl1AE<_yLl%F_4w_ytxlvgaD}5M%Ov&9a#I!xaH@;`F8%cziVmw&v|^nSUO_P*MER(PVg6%QQb zWI?^dd0wkwxO!|3-@fgp)4qqV=Vc`OaqG|X)bIy>cy`@1Jypwi)rP%7Z|}(;KEkq< ze)P`0EXBJwhrTKNXigd+!Y})@jyjm`m4tU@m;?pMAK*}+Qz{#02~L(bzH;IqAW51i z{o;TAkMcf0ykF|+6Z>rAA=UrFy>?*In#%X>TD)tGEG>4aI-Y^j(61wAvFMXw!=52S zzLoaty1a_T*1D!{s}RnSrC4>I*ZuY(o-jigdh@$m$Gpz}=(OGEx%?fyur!&DYS*nI zFWmHnb3BC?EA{SNJ~t2RoOzn~huF63GarYBehJ^gy)U{>y^T{>di3p^;ksIHIDL0P zukak6{FhJYyl&Gl{<6<3^v$^*x_xHW!R~CQ?EzrM!Leom!Px zuWwZ|{Tb^%r|hj;WA#|ec;Sn~7TbThvs{=te?bT?+)G;f-G1q=#rSa*u_xa-@b1#@ zQg(V6;%BSv($#uB=$?Irrm?ZI<(>aWe$?v)7mg*{Soz@@e9~c&JoWfG{$}y|L&Hy- z9}j%F-dovz>6o+?E$+j11UZK%N1yg{f{pR`pup`J=bzXAlYYQD@&Xaava|E;&Q3!F6unqyn6@>v_D? zRK=<<^$U5>P~H?OL$a6i|4qQ>-*=ZdRPG!O@L!`{Z(8st_o^i`MP?E9u{Vd-qtLOW zLbd)Z^)v%xjl!*lJCHDoACeSU;Hm3#(+Hh5*!A4D@*eD9*fZ8w| zA~qF8K!`v<1vIU#pd2EoHSbtK3Md1pDFzINL?a-I2+CnsK|Dmn1Bw_BqE_t)647$5 z!!(spD`}~G_sev;zkh$p9)e{XAmA#+y zxZMZsy$)c1F$*m}wftzje4Io7%k~>hf1F{ldz_zGQN%Q_rm0{0MhDcd6V?vCkL``Q zIHc6V!cs&_E_|D=(l(%6&JPcDR&kqLCUPjJ8ott$O{EIO_uMx(S+xqBIjx9w+;Kfs zqr>myjJg0`LEPIfo^s5^{-`1D{jRB}v3FmvowG(8&Ze;0_=twDjj}MuG@Q-WhVw*C zR`?%9BK7UvS@su%BgRAfJhVQ>x;+(w5O?b}ukF zxJJJGb7$a`V7p4bxF=WEpNxoDiHgckN2h*wYk2vh{u??#5dKknIroGkwVfReCYLj? zs2|-P7kUH7BXioPb^Yp_&VAq~BNY+TH8F~tCvA8DzeqR(>W4gz$|}S8SJh`{Sc<-R z>AQKqrMX~)=JyG@Z)ZJ*RjpfrBQqbz-F}IeOz!SmQ%^X}>e*)UWyXA=oxk~Ge9Klo zT2el4vA%_uQ8^Yj3oQ3m79EvoudW~?IJy1|{sd66-rlOt>O#X? z6DBT;+&$QWq6?;_rHR?-i$&zr$*qe`Rtme_=OcTzrjPiBm@j!Qcd#)1ad;Ei#2Cp z__=w&{Emi;9HsCu_jGs46cT^}{U72-x9Jw&bHC8baPPkX{ZP3d{T=(<44R;wT{pY4 zbE}Q0&5r?%$*8n%xS>m6v{z?y;ik6)Q6=Gisfq>69q54}k{wQvfEhF^a!Xypy%SDU zu_9&pWA?aZsdS4OOvxM~^sBRn*D@YQ`-G{_9(K&YOU%jaR0{FHKJB1g{d}BGu1IF*O^9ftn^t@-EYcoowf4hO$WO@XcqHk8lP%Ys*=(hwk ztx86OPcqb~Ult$*@B^+7hlYSPfA8pQo%e~`vaJecPMQ?fYo5&{ z!KL=ZGV^!bqMV|Ko||jn)ur9-8CijA>vvBu(3m;#-!|jAq$yGouv(dv-12{+3lFCI z>Y4fA3T@{&b->I4AgQZFX_Hj72hHa3;RL}r0nG+_0D+Ns!vr#eR?s4CD z)n{PxkH#lCbiVLqICI=jII<;j`3?sw!!!~90#&l*ODGT z1zM+YacGXQ2UfBWgshq(K~>jMw!kNZnTC{SEs~9SQ8z?w_Er%#yqz`0MKCQ_?=e;I zn||nw?8a__LTz&2(VH@b>hZP!Z``sl`!mD=AzSPghV!69Bx`xfvGZT{LNWLPgM2|` zI*^{DrEKc2*me*bCBwM?!YE07k#YVJQFizP4H0e#xeRmnj!eJdjm(owIY*;yB=Q?? zT^4)$MU8CoVbE&X3*Z#g$UFI%aH^IyJ}%*l!HYAdDZ=Mb|yq|tkxdVURAh;Tqa%BDxc%K*+pHlaW?ZOSWI7tlFg}lKSt$z zB6((15$Na);;77X!gBB1RucpvmX!IMQQZjoBAXi?+HP7k!6`>W$g;>HhA(yfiFDr{>s#PW+T#+hYESGLSwP~hN?AH>ug{V<2VuoT=x)&L zT*U)WH$C-*gDm+~-DbNLNG;vH#U3x#=!SEqV&h>gNZeT;^Bb91yoTio`|Rr|hR6xB z$sE9@FYn(PcFHiatX#0Hf>nOHn_&qWk;prHcq*1^>p*Hsi*DdDrwDAYfb45?OD^4# zS4YmE`%fPKUtya`QC7_-%%m8`Ci(vmgNwBQh!*t)Xv|+i)_>HPf9#hCpU4Iq1!6HA zRj(rqz-M@%s_xBC168B@wS%jZ5q6)Wx?;d4D%eyA(X4r^q7^J}kE9615cXsb>OFOC zGL`{67cP&nfh50e-s(uDFdeeIjtYv7oCvwLv2P(8Td>q7xPI|9sz!1-KCo8~6 zgVN)6a%N~KDl*LQDV(&XZ6<8{z1G>@j?W!u4)CFhl74y_?^PatptS?L&L`ZcnGIG5 zB+KrRsFRq&l$rEUU>*wZe%jI=ER$y9biBi#V^d_3a~M3{&i7+@TC)Af%-o?f*)}yb zHROSPocr{+6Twkng4<2+XEd#4q}p8WcC^CTw~p^(puZ145ai7-E{@*l6n1BhXqXnF zb7@|S?@8QeRn-D67!*1D2|2HjJ6TM?LyXMRATggE4ld{pd5MuMGW{p!GIxBl-K0R= zOcc7o|+1mcDC01rpnRcR(7tIdRZaYrm4hIX=B>Iz^CX(31 z9?QT$n1)BvZgo^=^R*|C|8b)fL`uck-B>NA0)v1Q6*f0BG#MM2o{CF6i_1u(K?({V zh*RcM%12s)lMD z4v8tb;GUgE;e+EJ+hT~cLM%39+=6Y2)#;{oKL*O`i6aGjGEnv_7j9|6KBR$r0IgaD z#pQAki5KBuPxr?CkGlf<&p2I%)!0L_eEG=B)(B+utr4SdSAa|dF3ly&ora`}kurz` zfzFKB*p0sv@jH3q8B5kGfPYNB zo$jg|U=)@yw=^<&6cmZ)5%d?>^0ycB-;PQlpJ{H_VXfyRpVWE*?ID)!NfBk3fqaC` zkjE;D99ok>T!2oF@4kfO22rMZ%6Jr%9Td;wurM1MOE#KTT`6(oOC@tcSL8u#MywqT zWN3GPbJ9r^*_~hobb3|Gg5n?|RszQ+2>DTX!pr0?(4scWJqNYi-Px@U%qTL?--!{gyE28`bZQVk#bPoGu_-CKeav!HbL zi?#$Y+LG3z6o}>x%HMu)rUR8nqcBRE@7n7mA+;f~aWUoTH_5inBq5h~BZF=s5JUaP z^hRj*Y6}^c6dW>F24hPL>MW>Z(yciPB^M?e@pO(MsbdacMfV@Eb#=py zZ{jdb#1oyPd;0?2Vs(j=X+Pr@vnm0M(-M;Xg5J<&1Sx2$^9jdU+G=YJ+W1=$8`1Rp z6!cIVB;BS%_yxQXLn#k))61m}wi0}TzoS=zWG8b^oK=T6nMI!+thE@!r!*4sCi<@> zNvz^LS76$wH~?G2l}@-R3RB;J-Xdv1bSc8|1kS1 zUvAIs)VwqBEezWcD?iCZBaS;RY7UPr#rh6sIeHKThy=7uQ=rdU9Zs0fYW`*R1hM!Y zEKOZ>Zpw7j>RGBFvgXWZ+U2Gflh;LF1spXE4c*FZnn|M65G`vI%R-D(G@euKx&fT# z7WEt;ZX`J@Ti)B>zt2VGMgral5IB_BJoj%Fz$qt#NJ+B)H8+YGHonhwLiUl zSvR{i#qBH9n1UDH5-7IG5N+-YxfEP5~U^GRWyTL^OFp4W6DbdGvme>@aRQ z2m z|MIsDY(r9J3WZJ84$ktm*r;&fNXixT`t$p+=Gz;Ya24MNXMQr-E?*=m9^mY8ClQS~ z8p7<3yKws;+COmKfPh9Ovf|vkg>wFP zOkbo5v$SyF0x^2-KA^YhdJ&z!1IT365#5?4G^Sl>J3pgIAYLd%;Fm({nzymfX1Bl< zx9{UheNzoO$3%Nq&*BRbDq8V2xA}#M+d@Fcs(qmFBfZ@5mG(01ev^ z@&KjCa@P?0vNu4F9ptV94wmE51O~5!F1ooFVnzh0q8K*YExd|!g&jf8!(|fa+VIwB zS6WR4>{mR0YO8BH%rvz6SqjORVbQe4nMhJK)zwX=Cu{dEYz-!>;J z$U&cQ^<$9K9u9=Dp@ItH41^?SS089)PMWph{!k?Pz>?1RLVd_SC^CXJHwupK08u5` z9I`oRtq@6c6&awN5oKqO2gnQAaQSSueQ*#}R83Et?jx}!oEZv+h|9QV=Gh|5FF9NGv{Q2=a^UP+ z=qRnv$okh)31@rPkW3Ud|DyMgi%nQp`O9y(`dz^4y7TB6BFaY$I+rnwjYJ3LJGk2X z>3&!gS~n&`&J+X9`~i%30~-<6(^7I(=qd9AHbAp(POBg~VB-Xhmbv|*wTug9LUm)f zX`-d*?TWzQb%_#mzm>@pn7>d+^!iWS3X z{UYmi$g0*vgE}FAjU+ob?{3)2hhn?@Gk;YRCgCiZLcXsH5`M8;l^}etj*2YrDxN2y z+|_kov*7WGV)h;~&Abg~p&dMB$~xhQPP<5(%P&dx+1u0kZPNp5EOmlWH7#bq4cBhB z#!0NqG0);yj(Yw0jf03Wuuff+Z};c4+bdpI z+IZ9KdozDH>2+{*HoThu#sfroL;6=URD+ke_6j(Zl!}poh*37mq}svL-M&p003nZ*b`4 z(h@YNDsKcsdeIxTW_qSPc6~BFtJ?834iC6EPIn?%tcoHykU`WGsMdTX^OcnGon*pp8KRlo7`fW3gNFehtnsei$!<8u%USWz91Au_o3mVt0!12LUnerkv1pdmn zxh38`a)-o5nI1@GOM2=T7ZSqInG!JQF9NB4!rEdJv(3-h7612OuTNH|(4q%T-@m-|UdZ1|2 zs9U#!2I*0;Z@`11bB9|Vym9S}^B_KH{7v8RZm!GF zp`X#5+e}8?w02#I>D0OGO*YDAG!nu%fSAXEE?x#9a!N3t=BX1jgxnrYP*k`CaV;BJ zFnY*O-)f4tH6&@zEo0lq%i+5C(Kq<1Gt;mnBF;Var@bn^`o>$G9$1&*?CSk(aI*HM zA95d@>bx;sK2H&0X{w$q3mV?CEHdXEg))3|%fWXd2>Q2UL}M`upRfWK`k{+794Rti z%I&1PM$M6MJFzXzqsdIPFG78B2`6Ga4_)iNVIge+^_SMR3~doAvi>(@32?^#Soi-yBzKumh-@wiEj3ok);Q{xh z*Jm^_*>i6&?ct63<1TpFy9ONKhpa+MKq}$+1N>j*;_AKVR{G%n6zPOcb&hqW1-1KH_d4;G4aZ~cnVx%uI zVJ|EdT)CX=O;={AT*hhslltgLRofT;MIU()2#Yl10k7fjE;KO1FMrox__Y3~mfdgP|Z zC8kh5L5+)yUsUx=A$=x}XR=4!$h;}P5!`anLiQg2FPG()IO4;kxX15p*?ptP(NByx zD|`TUbDle`wBcp=_~wqmm;;qPK8UNBII8p8r`OURvHicRnE$lUJ4w^ohLL{pvLBI}LfuHAUXcMFMzm)vFF7>5~SdF`0u zPun|bFV-&fApHgxMLhV7KHU-(Z=pxBP;ARFkXbo23s$Qa)cXczQWdUXu2~VJ24U&zS5-`^l}4 zYhPaOacA)99BDvaiPM-YA@L*=pPbhgv{W#~Kdzyv?Z4XHeDIz7>zQc`tPN^se+Bi~ zeY0b5?6SY>^#8;4!gxTr3}hqJx*<{sw2y*TkxV>I440s7`=aXy3z1ly>`?KW%X+Dn~zp z5(QtOj&^y8mZe1bfX4jHoz~8dv+8zfZe6FA9B|vw9j8!P=v*YG4?5$d-2?cV)?RO9 zXby_H`4L-12i)&{mED4X#;jA^c`j?I&aS#5v5Cl?fHTW-UEdU^oN;jPTjcwJGu&q6 z$bz|P)0`Ux*Nq2=l=V|&T6uW=@P5<9!##Q3)Q+0j5-$31^F~(I%r*?yF3}Dq{LKf$ zc~`ecS=lp1uwuA9gF;n#8Qb1kW}m^o?)Im=}R@iorYyb)Kswsx#1;tC;A^FE8M%GlkOqdaa7G7pz+l zv&e+1$>9Fa+_i(Oqm4{la{3F|QCCl0j=vTfbg#q_AlmuwJ=6bCvHO2xY|ChhPxK)8 ztVCDO`mtOSKhiFc=_Of)S+f@0Q1)nMvsXn5kpd1ahN|)JeXdJu(|KX#DYmhM)4nbi z7V?=FCL%rL*~n8URGN0&!vp?8tW;)Gu+0k7cOnZ1@YS7}a1*gK5+8fB0QVJmukc3s z5!D^I`lL{Tm&>^* zBhMFk)69P&X;t~|-C1(dG1QtGiXNgf3lGwRXLYcmup`h}9c9A@H%qp11*|P(l4N-? zo2`Baom&BWD4@f{3TfoVbkhl-P8+0t(cWztmJ<(EweYhh)jO19>X8c5zZf@Z&!oNM z29jz`Ogbh*PB8(9Htm}vr*xM%QT!gC!0JFw{V>4)PiqRf9s{&wB+!#JT6-*`mz>Qm z!y;5_^yU^XqQsF%Za+6Ur_71h^xTpU@+JeI`o_opVbLKkCe@rdwEKNFKC&D8{Rl( zV(ZvsguM9Y7Cfc7^&{G26SosG`QLaNU-%nagd*N30TgN14P;3&H{wD9vFeQo4+mli z@18V0M~H%fNRagTf`m|fe&egiVFxm;MA=iZXgB|6rfQy*T|F8Zyc|@YbI0x8eXxq( zZffwhw^V`dkV+%HWxLbq7M6SumZB3iW0Iti%3cPOsTFUHg`f%ajQYm#2iEoejGkPI z&9kurftB5a}I5bsiQGz6FNEXn1VKv6v^2As6DDp3c`awza||YMe4#=uw3me>-}f+nPaf+p+!8PMX zI+J4eNe*-qG!V)5bxQ1&9ujGH=CYd;58^>i#g|GnI`W=SEz1i^L%#ZW*E5GO%c`7GAKm90g8?n^m%-&ffF;qx z%x{==DGg=jOPl>AS_Fqm45pn(q8N z&(4=w9$9U-{`MuEpnvx34MfMTi?8@ynVVt@$|_{1xmqlni#>A0Dx>sk|Fwf>s_(it zURxW6>;9lf>dJr8w}r=Y%p~r)EAmTY_ndg|)q@XHwo2pgZU6p{k8zzHr!Xm2n|vg& zDKNSqeu|{DB0q9-;2(BaKc8hd8vk_H#ROc}D4$oDPZX9i&Z*n_j^4`K^66aW|NoGp z<@2mwsceJma~g1?v=MY0ku67~#oSb4$T4$M0k@E=O;)$f&77A>#Ing3n+ou0F#I76=MHg_XH}U2?a>cTawMQ2W&iM;+rd45vy8G;>)@p<~Jp>L5+<5sVf1gdc+b8vf$&X~tYj2+$?bjvh z;w-dQ=>*Fd1|dZxl~9PK#Ka*d;oXL51Tl@z8RQPqk7NZ%3hXlpwv4Ntx#!WW_N=_* zhi6%`N9R;+eKXZbdmj19+nh7y`4moOe!d*D&_B#%Si8~hAGaNn_@;0Ng(vAMtQWQ5 zs8kJlf#~Stuh!gOA!JZl3t!Q-^yhwEYs2UwDTm_Mus|d|zmh?8EFqS@-VhvS7gbQI z6?H!wcmnB_zE?cY*s96V8HM@_3E#i}NE~MHFfiSqvJR?-^Vu>qGqG5ya9he_ka! zn;prmzAK;;cQ3q>a)ivTl6hK|*31;;DYb?FHn6i;D~g``X#pW4g{GvRXd96i9!b`k z{V^f07G7N9;~Lz?jglU0c)^d~>ERYUOVIF$6iOH8zkSa6GHs!Dk9kIMY*(gMo0+Fd zQV&yBE_{3nkPNnu$qrqt!qA?~2k z9MJWwg~m2IbF89ZTKN=-E-$k!gH@Qn$)*^pu&ZjWyy|BMANg=?gkmAPko#|*U5zyb zWtrJTdwU;DB3~;l?D*0u^XG&++`*^2mWsI7zxe9wX@h)YW!V`*yQQUXl)v-Sf=!7J z0aMC{CnLE`E9;4qzF%WWlB`=sxOykz6GBZ0%UYlV#a*IEzyH5?Sq z>Wb(#?rdM66*;Dos!-ObkN^IU;`-KWY;}_HS|K^0hqTdIiLH+gSFc<*$jKyN;<1Ih zs!AExjn=A$`0rnxqz`gc8N;nLR|>TX;$fB@)bs8O{?OB1?`vKrRLQxxdS14CUgpAv zI$g)B3o+7zAB|wriB-z{{%2oS$f|ZNAA7PbLJ!eN)|>b7U`~>P3tj%0^Z1>5kJlSk zI;3>vnU6utC8R{&|Ct zL3b08Hd%eQN~_Ixch4gVJCY%g%U6yBc3~Jk!$19G5nv-;lyFQ?cbKzBl;m=bJey#ufl;$>-e|}|{o11~ldRi4U7f;m^ zz_#LKmKMsDcRM^*N}sL_%U8;0l8^Nlfwdl#efE9K1s44|W93qM-RJ$HTWxbOqgJ;{ z|KYNjJXp0oaVas=aMIdK-4PF9VVR86789Tb3^l^kRQNfsV99_e>FR)|nM>MlyMHfU61UzP)c1v`sFnn!8RsKAm z?fAqP+z%FlLU+>gXi&RHVid_%*u{@J<}VS^3&7dL5`r?3US z4gQOk;`_Jox}G^^bJ>T8u1pdroJorA`yo;eBXY`Tb#ac`8n}ZCt+#)#@ng`N1%nOl z`}mJO@_=u4g`NKKu%0$ZU!^24k6AUZ138(Ln1ZA(5=%H1=D9CrLK2?_#ma{%WsL%n z$I9hUVwF&KZlwoy#n4}{4%Q#FrNRMSbintV8QCu7ur@B2u4RZQbU)cwYutjvMibWg zHt3CiwDs~!*cmuLHZx@o#Fbz{KUs2VWm-IJ<h|c+a9gR<5ZsyQcak?MVer$HvJdn5b2&#P?pRPk4BA?PP@o(jGv_VUW+wd$2+~cMGN!|YrEKH1hwz6_=K2iBzsak1ck*c~?RRYej9oWK zq{@CZxT;YH5g8?dVO)lhKsGQP5CWpwXnSnIXuFOKJK2POR8p|Zr4JE^P`3q)l)N`s zWp1SzE9YgGWiJHUq%n+@`4J+7=4rtUpN1EMbh|6(?|Ri6DJz$j`L9WA6^MYca_NI7 zRXXEB2QCZtNvGEf405G>mrG{pp7;X`jj;t>nVg923Jc(5cWfCDv9Es-f51Kyan6sT zu6fO9-+9lyz5N)W4)BS-LS&AD79sp9}nn5A?JT8G4UopUUX;?{?=vg7 zAwKcDdu~D)>u(|!3jcgh5S-&T%b*bo8FrcR2jrBfE5^z+*{-UxGiCjo2aN4=tyq~I zPiX8TpMF}vm2=tbRZ2NmhDq>8O5)V{!{)7tu?XY9ZvPqr{=aD^J1Q~Old2gkO2^H9AO3dR_fu4D}j1N9)^)mw-(r)zk4vl z+(uIn3@8MlO=hd}_zzv5BV)Ky*!e>qz$90@Wouu)A%%w4&vHy0M-{7ygrMTGd_H}|= zIH@dF?_clU*jSovey|2{Y?|;s-^+MS-Bwzrkmqw1`4rX(_!<`Dp1Y@j&?^gf0`1uE zJYYruYY;4r5$d^7dLhN?Rik3E>a%-;)mtQ~KYWcqX7M0iuiORL_2NBF^js?m^1gDf zSgBkVe?Ym?W~ihLfpxCDP?Gv|mqYc+;F*AOOgFlZ&o6w5FIMxXNZa%5mc9Z!UG~H5 zp>8}Jv9np8C#uiOq%r=aoN2@EJlZXJq#OCR0+H3KxIfPh&nJDf#t&J5ZiOu5`Kr4B z4sl(Qh3^mj@b&p!4h~0WQ>&NM>tFCW*H^A4FX{YR0pO46!L7*Y*&_Vm>lL55SQ(D4 z8FC7L^mU_rTjr#}G-MBV2KnmYKYj#DYhTd*6Qxg5P|A!hC`Im_)DAv?&^lHuLgHt17i_^vIV0?m+eC2>vvGZDOf8-)L!#AYzGbENvN{-AJGiu9qY zT^Z)dfps)q?~%B+LGRuu=rVBMmr&@U`N*hnjiNNRa7=JX_bUF`1(y?&rf;KJ_0P5| z5cK&6V~SSNmNt$63q=2@#n!$fyKJ6h{DKex*-fV@KG9_^AZ}v=%f)Vrv!m4c~&52`~x^ zMi8xwO(o7}oBdbQR|3L_E?6V~q1+uyIy&BW1Lr^=q_bl`-;`)^qD;0BsK2<3-QdrF z6nz)~w0Eh~RELF(Jvp-Ni5=@j0Y}$}7H&^m&V8_kUY{e&`A8^SXOOzx7oKDZJqFR& zcYY;p`#qLQ*Wn>LYU{%Yp5+5V;llgpmw;wi=hHClIjRE&3wr--#+Ij0%oi-~;7Qg6 zYn3p}?aGi|c+%mY=4-|t3IT}A$2`&z_C(z6iFBV}2Rh*IgV}Z`&Jdq(O65NINH$DY zw;?H^AiQt^3w{dt;Si0_rEib(pc5T;jWC9j4Rw255uR2x#NQh{$sZDO2e<#Hh$2U2lkmVD7tHU_kl(LRZ-m@E5nm_ka_l_Z)P zrm>===hrhBOEozS9j}0Xd}I&A!gxgHi+4L-@ztA=3eRI_<`ddX`J(=ufbQQHa#u}d zWzL&?;*6Zze&orqO>@~!tgg&$nTYFqS$bWDs943H}+KbZ;EzW&|e$~ur;sFAhcF@ z23{5KNZw|vX}u#D=^gyj@;n!}2%qGRWE`SQZ++4ink;?PJ6M~G(3m29ht(7^gF7P#kPj<#+p`9tf%e> zQ90iYD-!jt2gSyOA8l3or!hleddziSf=m5~ph2)+oi7aUKaP2<9|?N*7R}8NzNz5K znkN~_b^XSxuRp(s8GCMA#a6?YmNg4Bjk~s0?ZTg)eSfL(=U)Wz#|Y!9-d|FG{xP*~ z=Fmq^N>`f&63p!OW3Qj_l*ESD3%0p=Wwe!=+WPoIZO{IM@}UTGs+afR%l%}%2VTcw zro%U3I7-6SO)t=7h0^ad=9%YfuAF~e&{FasW+*gDdwIdo&TAf8v*7&7-sYU1AeP(z zG+F&eHB!=a39+`CMu8?DMn_!##q`%T$GOCs3J-0C`1*&}iJ@}o5K-VCQ?Lz|!7%IWbxH#t5AMDq_j&2;m*kwxn~ z>odf%f5=BuZF>&{-HJ*%2u6S(`x?w zKvRx?%t{m7Q^UXpsZfogmq%@$k`ONEDmVIZ+4MV-f=Qjz}_H+ZA~z=;{)oSx|$2VR*{>ptYU`Sqqf8@*MtgtU_84!+vC&f&Bu zwLzeqBuV~Z=aXGRlM33dQC4Rsy;>k?@{da0Kj6U_dT@Ir>DoPkXgd>kf8iG-74cEE#2Fnh8&yo$u3Q10KBRv7SEf@$MwpqEEy)a@c>lC-R?n z%>l+$xm@(vt*$`OGX>NR1&iJ=-IN0~e9BqbFyb%fX|l?5nmI4-c{!LRdXGw9>h{E1 z2+A(BLd+}n;VDlp89mga3VrPFsWZlEQWwQ%^O zbWPwXHt*zr{zlyAvBF*nH?b^e^~}CYCs$X9g}EmWsCJlhM_TkH_b&Aq!}~EO`doQd zfbDu)Yrh?4rmtGBmm-+C6}KeV-Vx{p${v+i-Mnj?2HL#+^|`weMBhIz{r81CIG*mXuRjuag5-7|2ixV(N;Rt7W@5^zF$(^jQ1qFc0C;s>k$lat^QIE z$4=vKUU0I-%fS>A3%90Z8SmkKXj3IAd!-qCF^Z_Bh-PX%DJud z^|9(JBWoPY0&)hkAVyW*s66o0YP$96WNwGKjGLy&Z%mN0ASwUoHyoZOaJe|3SGA-6 zxO#*iYun0#tk>ISnw8~Zo^>coV6 zN&2?WiI)EtZWN%#6R~-2u>an_t~|~C@cM^u3(EtY!L`)%PH@2!Ytih4N_Y8Tb%WUgE5 zlh{(o%(_5%HguihirYb^-)eJHZch+*tL+_qf;PVb?e(|&IMPFZgWE1oX_M zKXvYIw~@p}oQTzcH`>cBx`ZA{EY@yn@`+mMnoTyoT$9QLV@PSxYhLSUelc_Tq*S8t zu}3il`GF?7lgXhtrnC#9&+iFMZONUf&fj=fj{vdQK-CCS_xGqaXKXCJCjer-UEY== z%YGRB^jLm_tGe0$IyZv-$xuLS<@viSdPDgDG#J1Va-(Txh zy>BMUUD3QW)R@zZ@MtoW>lfCZ&mNhfdHsxGUeI%?BIQddrVw8KT@KwZmuN`PhI$@Z zjHJL6)3j}k`J*RLeGeorer$!aK|UZYNm-ciY*$cEOV0CB)0uOaC8*7Mg^;;kixk1n zy!lU8UmtGDW!0_h4T~x8M^fNX%gl7Gm2xW2XPX{;o&3F%%EdRefP8Swe`xX!J_A}qIs>~YF?}1&t;ZwP+!HkWuj#*bNqC)VCU|`%=d#VYS&KIL zaSh@5TV9-7sn&~u)K3Gf*gCD(=9~FE<$zv%Jppe<`(m!?#mnF1HDAh#dUMKDjt7FR zM8x$z=neae1t69^SLa{r=MOzIND8hDrPeLwk@y7uKG9aQEwO)eSYhinC6CsaX-4{Qcc> zz4X!T*y@$N9Bl=2t0Jp(6me`5e9254%~P`A{Iw7JF2&0}0I-4?Y){nt z$7KA&KPpB9Pu6o+#Ke}iU{d#;_GTh%T)unC+mndI-#q!|w z^S3~veK24B(V<{Bgdh+l1A69q=?oiqz0znBZW*}IeY2yQ{BOI$q3b*H`L#^b_G8Mt z3Z|Q1%w2?(M)!Ifb2;g-YL@hsEbv9JZboAJmU=+{s}(1KRd6YCkV{UZ&_;#Z*&`PG=ldWCP7*NVk(%LX0H#i8bWJEtQA1E zfb=97;(ebDiy$+nu;pAso^sOpP=2iT@;&{fE9Y0vDR}=5u8nPQ-+JA_N@AwpSpo9k z!Ru*x^V6uJo|3N7sHs!V^{hMH8`$po z&B!MGXT8}YDvM{u|29uE%hkrUf}KI- zo4b2^7n7E<-qU!maRW&-BwyQLy!XBF9&*>DYa4i^>*#;A)BI{6w{@U*d*X(w+}64X zUez^bVt=Cb12%qdPI$(C(${UoXGxJj*9!=>GVAI^xvW~xH9cOP|3vp~^mTo=vrU2& z&+()*`k4`F?P2b=p%PPQettekJK%zqF*+>%Tf^Vh`pH3Nu}R>?gWDr)@fc_J!`+jL zBT}3^H#cI&sd{)sWizrD=WRoeZzF=D+10@HTm8vFm;I}w^vY)c7+|>EOUVP#h)r;v z1cOs?`cCfh3fDgWUbw%zB`t=l34B;16iAS%5 zbD!7~6wa^eZW#G}!6*qOM=#thfij1ZH!5wr`eEv&y8#qls))4r1+MR{KTtsk)N%P=q@*t;Ijlrsr8NCQYVi7w#AvW;5jjLg@Dd|KL%7_m>^F&NK;Y<_J+b0;1|tk zsSog+9ZK3x!h&Tu#|OXL};m_s}IrP5yvb?SHDJWVJm1Qn`n5)hV{D=0MGo z3|6y2)2vV6-6?t48~R>@J`5>e*=o8^xc}2Rw`jfJ1;+F(*7StFFqKb_?sMWPudJz{ zuqrvm15t9*=ckY%2b#)vB#S5Uhh}IRJ1WF7S}Q%V(N&myWp)1LRbO~i;!R#}n7rXz zHCM@fq27Vqw7GZf0%TK+pc0TEo*d!x)C8yn(0&3|R@D6mi!@SLSue-G>g7mZlpm?uss9b|NK=uS0 zzLZS@n-!`*zpokXb3S=b(3jRwelwiM|tqE_$N$1@We>;5kxJ@?XpzA``MX zJ#tYmVcS(=h@%+uB>`Zv*5r$j9Fk~V%(Fuac4mOKLZ35b=JV#t-lYb!0ASp;maG>2j+fz@Rz8B%a4obs`nqEKv29lCsnsiUFO@UvM^2bH z5gFldAz9`Hx`gWvJNT%x;5y3CzGh|0%(xh+V_yri)qMD?+ccD!_Ghv5c04a+sT!zw zo{J>BKg{P{UzAat{w6nCPmOvp(pDOT!rjKcM2##oR^1G9d8Q)?rQ|Ej`kH%}#MG#~ zOEXDM3f@_{*v{}234Fp{nOPah^B<$tKC)z?K$9ye3G1B`Es4Uje zUWhR*IgW53{0JQ$Nal>PQ%e}0>rIFmX?i7;`gY39?#0g;wP@pT#&t5YZ?FG#DvC=p ztcPM011Uk@M$3s>Tu1Ahs<8v7Ku*)&;zr3fKFgV!#(!r`e0g@gDD3neC$;cN->aQu z$;X3NXBeX>@DKkv`3n-m>Xk9ERd~xFKkU!ehxI0cG}JslcK)uUulejsQ(Nh|x%_RK zOMdx$UVXW1#{3A=_5~79280^5rAv9D$K2wi|JB^rfHiey>sAJ)lscNAyTytH0%*Ij zD&~m5Q29&bPlSXW(J_SqA)Q`KDWFfAkpq>2got25HxR)ez+eIv3Y~&r;YM^%MoOoc@JSn*-SsO2NYn>Uy=xH_wMXJ9h4o~9xS}vI9nQVPm zA@$3*Z}mxlZBWzNZe)DEWi8w9i2tM&1+jZub_r9i=rlL>n{L0`a2NI*tgvfr{`>f8 z+@^lwiM6VD8Z!2!@7Droe;1LlSOS`R(v-KE@W&`TkaXi|x^3FiG`vKB~XvCaJXCqm}mvfWq@ zv#R^GBPaWFn&RLIi;b!uDIPyS*dSV??SD73{e9QT$C_kQzP;}gdhVeTUiy;>klgRx zY_~z>8zTA$v%^#>v4iv4F;nEHX-As%RW?p+C}uRZ+JD)}>_F*@9*xiV@}gHYegid} zn1BS4z4l<;A@$-|1N7R{wWjIMc=_XpiTaOzg8fE(S6y+y_^%acceu}g7>G>P?`~JG zPJo>UG!KtFGy7JO?FlxYYx93rW9dmQ47A5d*~-(X99d1N@UFyrcc(T_;~PNc`zG=L zpy&;PK8&HUM2H*Qlk9{z82j|%|Ct&h^jA(aDY!VP;}(+wp+uo`PWv1=G5Ck~z%jT$ zU6j}5e)KI(fY12;l7pKQp0tzs6DX)|NwURvr9DftwE_kPXg%(T`=l$Do_)*KI51iJ z8L#}mG5_b#LKbS!knIZaNkAuQN)ez^+|__%?1yDk0g8il(u5rv%kLt(=Hpj?eG4j@ z+fUbi8t$|BrAX1>)aMMi?-iXu1UpJWXXyLbJ?Hxf)LMHWOaKr_sfK$3q7mwVTM2{AmPmbvW@_Ukzl>D^`mgl&$ z^7aohuCJSix;57CH>tRo(5LPX&~kTLr%4EyLZ30t1y6{g-%xkIi;d0 zfkur3vuOyuLQe5PO>Ei^vfCi1hkp8fA5xh8E`nyKGP>ZBh@B7?{Q~kL+?Mz?snUSG zi6G11zqLP||9$D=^siC1bx$QV{0qU!!dFpMLn;McG}#)TbDwkO6z zpe=me)=R+k>>;d$l=g>9UOg?hOmpTUJ`9*1+pjT0P?porthHS-~L zN=uKub_)n%6ZC`0YG;oS^|uV9HW2sZmssA?#E}n?A~+lJO#pXxbXOo3EFp`KlVWCh zWpEnlGS!}MjGSOR)#l>W^(2PkjIVe>m4JQ{ud-kN2YjS@vR{o(LViNYas{-oo(X@& zagR7uXu))Ttk;V9z?R0%|B?Bd_oK_!jb^{_erUq)N{!hs_&@&RyK9?%c&+Iql?SmtZ!wclN-XSvwT$>M_d(Bu7 z@pQM^jNEAM%pS{YvUK3`LBWep**XSiGZm5=DKWTWf{}U5r)7*+`*mAzAjzngve@-- z>nmPHT-^~ z!Q5OU?>gUj>&w-X+?;L84kfF1y=Q`5J^xc}B2S~Oy&{GkaQ#OQv~Mj6?;Fr$muyc< z5P(eXrPFhpYE_^95Gu&-(U5ep`S&uqDqgn3Bgu*>h=RSV!8PyPm`zmKf4xhGr%aPo zDE*HwemmWte`~>~Q_6PQfWmA#-kxTVPBSI%PMihSv6*P3A1n&bnC}?OZt8>vYzrL1 zW;5*oDj5l^{F{PFh%Y|%s^B_CwmjBr9NvHT(80Q~l=<*=)6ALYC&RiF9Q8%$sxots zk3xw0zvy6{yFIJR6!gWe4Y;$V@D&h>Oh0Oxh8M@0L{O8 z3J)mz)*V|P+3dxKPfHZWkkjRM@Q{}_Ucgtpy`<%iWBEQGajZt{9U{|Mf!-2*tfzg| zfmsi}El`_4Pwmn{j!nQl@|XJ5XL$pC2I;l=&nzF!o*JOZ|A5sYLmnnMFN`?$J>tum zr;D14BCg%O*=9uu$Sp$??@o-)M@)uIW>#i37fIuAy8Ex484VlF!=pMguVT4nxPdPn zdpb=a>DG^Cu^!6j)9~!G1na2;nm@~$H}kaPD>sC!y}vp3m_TY>QVoPueb$ZN`Lij=2eFJD?Poq22!Z_8){+yu+I z;>4lOV8U)*&Mns9ko*W=t2eBlAREDX6rc-%LBa3ULdj!%1y5% zYa)D?ztgBcnYXs`JSOf%xP=@n7uZqze9>gj#JkBG=DgXWn!Kj#pT2f_Xa#PrP&5}Y z5BwU>_Q3x_@OMm={-FVyDfW$+!zxGb5+4V4m~d}-?ph~iPZ4MDL$Kh6#`z17F|LNN zosN^*PMZoaX%5o7SZmrg{}eby(9&wPH=f06h;Lr?qG6xi=9T`k-8XkCrGTxcFl6BS z^(?qWV|w5}-spez3U8yQ3W!6^U)M`1#UGpi4j*56vmH)DXa$-%#G4bX9}$|(;=9&~ z%bz9o23#S|2Vg@k;fNvV?Le%PCTy54#wn46RPoqZ1CKvXwoz#SJA;{nyKmkgSpX^pk9%xOpW%j?5nMUB1~~*CVZMRp$Ga1EZtM&w{Rp{A zBG?+h&u%iYV5mJ@ww|2zMEnBS(rkw^CtfxZ!Uo;MMkFZqQ}FDyYR5}WNH5&+lV+uy zPRC%b?qq(@C5P|v?5H8Moji@77TX@Wa+*xlP}`+&dbz+xoFZKq5W5vkeJMECnzf>r z28bgoEh*@1VtU7NcESJ}yziL4aS9I~f#jup{(6-{LLcMo%w9eG>{?bX6Bq|EG3=yZ z(O*l1mpgH{C?>9YX?AA5FDoYYq7u4f}1!$G7Us;ZY!KDcpm?Sn^OhhG7Y&xx-R=i zVJ{{@fFyki)<5&q^F_Nux)Y6@ z>?W98qP>%|HkL8xfqnRE0CCy@nzu&tZCAtEDz_y!^ox+UqZFPfK9z+EHIjZeSM3bdW^9*7K(x>9^4ae$n^PNV;#87LY zMD|5>JbbCz^o7^A_1O39FEL#n^9MCkdUT0RA>HvZu#Q5CfBFU|)~h8O7VPp!<03}n zT`>Xa8>W?lgNOpTlOE*G-XwfrKy`w+Ax1wAagygVKpO0{B|rnuU-IkcueI4OnEw6Re61jZMb0JNS|8kb0xg7^|7f;UoOR~K z2kV3Fm=;z#{ics+$nH^dN}ZH%>%bifR9lP+i&-4d9h$pV5qK4g05-^WZhhxPL7_x| zm>fOHm^+7<6vWc?;CH@z_WKJXf~f;Ds-xy-zqdp(Q@xARU0ZObM!Mg3HeK6;N9; z(C3$KJp~?K3?@y`fQ^)NnRfM_h%ZO+K|23y=L7G&O_0HKmQLR=`))GOU{+$s^YTjA zLtEcTE|i$_aR8fJxmO(hs~>BV@@F#(yr)8pvz1%Y_x?o6YI7hzT-dGAN^j0?w~oD= z+++7MQ%^jXp1b~LyT)Ot%UPe^XHO0T3p!ZhUQ{9cKmy8Y2q^tLKs%1YG!4bj>L#Bn z(yX5&Bmk-7XTuX@U<3~IN*!L#u2=z#?cC238w3#KGf>bS%uA-U~MKz!i#3x1eG^a0vOv}6GpkaDXMJ_s= zpo{Hg4Ne%pHh(`9cYP8d24l&bXa-<+-?-}N9|#X7OJq;8lFCFWXq-wl97Hv*RiB*+ zZG5p#%C4~mcAIw9$Z4KkBJ@IK5Y+8Vz24>^t@_(x)4#lQ+Rem8Sh=_P?gQpLT^dii zdhaIdY(oZAx!|KWXFtN96oQoFq_BX)#-VKV*VMjPYf0==Oa!TY)@$t(p}C0D^g1ck zZtElwJf0HU-0Kwo;x=^KpY1*mJ{eCu-@n@8uRhzVyJ0I(^`7{VT`#qwtWuBO_J;=) zh3}w4T65PQvOU#mZ7W2DO2s{0TWevb%y;hVZz$`vKO4_e*4LUOxR|#hVuvO@gMZ<6 zTeklXWHB4M{eG~6PFF}W3M}{T$7d+8qP40MKhi#Sdhpoac%gDN7_O<|M+n-2a4;Bc zPP+z=p0-d&)@u_o?3yvaUGLS#JC<$bB5hbqm(~=dK`lXdJ2s&p8~R8u<(GCKmT~tr zvtXa|ne#@*l48Hx4&CMl7TjXcr3`&}?#Y-FGICldv-am0qWq zl-Yc!Mub4%uDStDr|stnsEaS47tQ7k4`L^00Gs~Hd!<$KaC_)F*7Pp!HrYXEqJ)#7 zX528|P4nlx?SA0~r94AqIN4eFJwDIw$#&|QjQPYa)94+20P@t~fT=t8w+d{5bUL;K zILo~2qJ%zs{O9pq*YD*jElEsQs~Ax-K>J*PXgja|rCNI7_6MBt2EA0Mvz;Q<-)_QG z{0+E=YP7*mvspBtO0;f+*i_tHlZbE=#}%Hg*&G{?*;+`kraV#oSkU zUlv$tD87T9*!Q(G+`-mW_WU$F2Rgxe;gAN@^>j_`b+vx#tWL!7q&*UfU3TDjc5dAF7X}vBy()eGJ3oFVr|Oq) zJ|F)ML5hj6I32_{U@(|4yc!Jb%-p@{cSZpm9bjQ4N6y5->dokDpMics188eac?%=&i&6dI1lqLy7cax&{_93kI4o$e`?jeU4&(8g`D;6xU`TyA!JD{}0 z{n-^8<&4+<*%hnx)A;<^6|4Q8dT=KcL7Kh$RYzLmq_(&%HyuxAnt+k|0kXv0$XwX6 z(ou}PWl$hKnmw={P&17qYf*_$giM7{S=hMMmta{57|uQN%d9qt@xg=`qeMxx;`R)c z|FBtdFoTfcfa#N08V$;vwb(U9w#Z4@NDJ=xHHFv`Gt`I~Tym;f^lWC~L_oTArCp;v z-#ZbcNe@6afDp0m0Ap&9^5JH&mvhK4R2FLdU9gvfMH61EEfCaFvT$-Uq^;>eo)ruD$7T}?7jgRHg_F> z+*wMx{1BhigHBlxE5D{qeA#jelk>smfP~zp^nmX8rTQoDs{YN*kh(f;mDp1N?UWi1 zBDEuY=u|LmO(Ke&!w)+Hm_CK@kFR9c5M}i*UJ7*kk1hpK99P=Ez}UaqjxQTSiiehvPA#@88UU}wFpcI8gPyLi(P~?fG>7pZ+v}cjSmFl z+EI9#3^n$PwF2}kbB_er-b(1QbrhSus9{o*kNU~ZJdeF7w}?dpjt!EK#@hDF%SG_Y zgMW0yv%q_KaJMOc+Pw{yxfwuZT^52_CoES4&V+hpXRx;*f`AadlR#f7KAzLmsqwNU zjudPe8Kj5g{?&=OO)u7gX`)G$9vEz4mA8MWR7gsu(FZhzTw8B&pMMTYNn-X`5O?%_ z&U^=+#4rEf_PnAV!!JuZ z0(8Zjv$w);&L)nK9M_X9*4l?}v=bG8pU^vzUo{-Ei`U1UZeE3O#$5_|glMDHq**gx zNtVvJLP~jzwGCVE#FrmfN3*+c!1K|0kQ#q_`Mx^o+6pjW$21tT#w^7t(KG1dQpYYP zbe)L7y`kU0^8A^xO`xK<{cuaqlX3vSVonqE*pg|eRwS3fd1{@cfaqY02grBkEbg)6 zF1T)jP3@#V=;%XV=-r7pg`~^UMwBm~CPLoY3IoS$fkZnz+r(-g>|qz%fLG+>+l*k!;>$cC=B#r z!C|c{rvoUQJ#y#PB8)%3O*$TDP3%gv4~Hb6FFIa}jy6BtI{i$#O$5pVzIK4{k zXq>|710!vTJLp?rN<;D@iHx50>6!4E#m$>c`JhT`lBgq*Zs3w*L1@2WdLX%j+3mLd z;P|+aATbx#s=YD$(J?p@&H6y`gM4*gK8vazQVN)97oH$Kg`3}@$<~tF)rsfDBk*Bd zkWvYp)rea{wYOx|mXFpalyo}w*hdfYi;(BM9o&Mpf z4$wOvEOs$7^3^R9LX@%Ka{VS$@t6qdAt32YJNCev5Y_nRkA9?X+%HWkb%I^U@w08t zq>t?kzimDU1dzZX+Y9A&#pcFz-D^90L6^)y=Gu|>Pfms1{4D1h?w#FIihg9r>ZZ*% zXAgm)snf^qJ;fu65)h{mf)c>HJ03mEM&iWE+pkS5g*7SKjuo$MO1FEe!P$bb2zKu1 zy;GpMq}iV~AX{z^3F)>4f)O+ym_@hSzvlL~Zd1r%=a446Z1RH{)+B**NMJ^B-sq3A z^3Sn<6Fs|N%k+&wQv)!xs74FESQ}b11qS&`r?Lk1slP{o$D)m+AmW2}D=NIZ{cvwF z5#(y2o1v=YRp&HazlSYcLK}wGwVSY-fN4u6@)QPis5rppUoePX9#QI8mE4!XGLA zbP-PLd@uBvI4dE*&2@7Kk^!07N4DJBe6R>#Lx{~M7sv>SPzSt~Yi`Ld;}CW{#q}Qh zkp`6sxg}l(K05%UNf&yJhg^6AD=`*i`4+B3lTU#+Ag|Bh+<24Ew}5L(sVvfLhX?p~ zpS-u1?-{0zylm?YD0e?V9l2yhGX80!uX!wftSXXFJYL(r1NV44SA2kNk0R zpZm6=38qVc1-|z5xKAr6G0a`%@Q0);<+DL*(6e{qY?XTOGp#9(x9FY)VBTd-v_S6p zjoRTy&*Cmen|drVhG1mcfTsc~`;mZBrOFN{f~VDTX8-afLb|sI^ng9|m7lZgQ5l>l zNAc8!HXr&YP}7m~t06H+>}P@7Kn7B^qittEyB7pvLXtH$B%ePug^mI=FUa^La4}bG zWsqrZ?T*_pO>#OhEm2?R6zJHH!_N9Auc@>X;6eJ2=w0VFS-@+hYq9f0ZqpT;y~(z$ zJQS@K;`PZ!+@hv5?XsTYj^~f>f{7PWxuYNhpwMKm4LHAr5c_S|@Yeq(Oow?{B*Bqr zhSdrdxK{>&t|oR2g4s=fJNjSPTxIoFmzHno*5;A512_31eu0BTxHZilZ}IU%hYW&y z)gWQZnn;1sp~p5LPkWp@!EZX92PzDCbEW9NzJ$+sB-uLPkM&5x@*JG^h;fXa| z8F~_06w(axGO-@18d3bgDD>hU;ED4{x(j;I1IR+5~u+V~^hucq3@r)>+WDaU@GC5nRwg97p1o^(B}Zv;&^8 zOjjb_9O8d#HZJrVJ@TK%cFO)%3}NE1Mb{dIL=cGVBc<^5x#M@@AH0qQCpLkJ<|8{C z`$=OP^qg!4V2CHpDSo2`LZS$jV|x*4Zedp#%oawPR-|!ANa`0iW})jZ_Mr)m;O?{I zo71rIg0vA1UdA_@5h{_6dMg3n#tnRxqTPyKAFP}R0+!S_5N=>HM8Qz0Com@o#OXooO(P9wqLP~OQ5Tc_Ux;;*vM@2S7{u75xX1R?(OK*;LO;sf zdF3Q>8Cp#bPex*1R#FYFz~f%69z$NcMcDQ6NcyU#eueim=>vW0MWmoz3dvMED{ZUqZ6erqO8O7O0(J2(oOX1Zp`qj_$dr+*Z z0B4OeiuZBJkvO-qF%^EV@NhYrXcQ~(XW%hcE{~?@q+FRkRCes}3s2JgVevrM;}pe8 zT6&qTyV){jDET{-e)-D%QhlnSam|N^U%(TnF5>)cGj*o43RR+;Ynd{!!ed!s=U#g3 zt(o=Jv2I6A+!otk(wyZ^}~P6kqRZ$Md8 zz#G0Xc0V3P_ur>{Y3^2LBc+!3^)mFK*Ev;suVc&0+^v;3?Z-3euj>V4sXdHfPsNzn z@Uvwx0j=3yTitnY`tZapg~v0OwR-x+8pYgw6fa2^^QgO8smdDjRi>6G<10+hmAEMr z%a>D0!W@ZmBkQrwSAeZ@et*ryFaD|Z$-p=F(j11Dk%Q+Dke|$pGxJ}w;^-a$b4Z`6P{&%6_4-hT{?N>6nTdBh>QR;`G$yBN z*U(J;nCF_xz_O@Rhf*i*@%H;!w5}}5En3$)vtDmrjxueR!3qM8{^y$r5b!wqf-s~OOMg~*b0;9KHlxO1sr#k zPY*-a`@4qg8IE({AG@;JmYCeCjp~BEJa<=P?OvMtfa|i3q1_n{L(?ypnL-);;27}} z*oDfIDN_s1x5fyC=gYFIV6RYHf_44S%=KTv9Q-#Djma<56tz8CsEe_#&#&>-54v%a z&Sx7o#xcrB7-|sXPu)k4$h~3RJ;wLCj_bt1eDm_f!G#2)STxXe{O)^teJc4MZC2Gr zR-1+OU^w}Uj=9KvG?zbYe&vNHrw+H2eN5B7^(w5yc^eazTClVn{8(XyN$dwBGrX&x z)|os9+*~OVTl_aX?j^k(BQUnKdbVK19D_bo@L(Z?6)IJ{(CEqec}t8{Sg$nwgY0Zh zZRr)%kA-gJx|YqvZDdte_oFLl%9VC^S`^Wrx{sHX<6ZCW5`C{-+#@^YPQ}qQ9*aiP z^{*>ez_$za-aLw0{MWnApHi&{>%q3g3I1+t&7N3J1;ymx2oMO) zt(LTiMJ>Hucj0i}6qV;q?+_|CQm%M@F~ur9Sa%l|z%w?%oq3{%W_Wul62E)Y7RwRf zd3~@oeMqTHjV9=%+#kgW<}-tjjSRUDzn*%};vQ`bg|A)gd|bVa&qVyH!hfXu5&J)_ zaHmq}{vQ&Yx%+uc4n~u5_)~YF?2Z%Pi80oho@)dao8EhmvyUHZOnV_T#^G@?OJPk8qSc5<$9tz`F46~=g1hg;Ed%Jm% zQ+6QW;M_Eo!XNIy1n8?-FH9MO`QFss_cqCnbv`~5!e;<7=H;E)l8f3bNp-ByXnxyi zbVm{{q)OrPl7ubi5MR3182poq&$kpZ0uDxq0lS~HD&vJC;xL+7!Ac4qzxt_OzxQ@( zfgYimq?<`j_0xM*dSIyz`}JZiB)+LjYvFTsS<6g<^$9>pQtk^cC@*STW(=FW{Yu=% zE)+!RUlR|wVff;G=}+?VWct@S9* z^=P?j1G|34dyJN282b#`TPcJ@DW6>fuLqRu#(LC!%%NTxv^s}|Bb><{a)&dkk#2p z&Ac^}kn3HK{JW;|Nx#&6;l92kC}=v#YWU`lkjMp0?@txAwDvN}e%1ch&*6V)cL8&9 zKj02oh{FiH`EQu&5`{vzn^Mo&PQ}%Du*h8A2G|IxDMG?9W5+SkP-f`>uzinFY;PiP zyO-v_p)wtQfw`#l%ZA5=!Z!`@m8rub=QYp3LqDH+Z&QsnI#=Qia$*vPU2SR2rnbk` zsM=<(o6of(2uP&p3O{?B=T3hZTD-Jsh!S4C%4yytVXlM`z`R@+%bt7Zx2{M+ip%jP zqbXd46bziv*_fpR*@o)j;~f3QbsWw&d?aR25`l}04ZfT;mBjMEM~MhDY2{_-&%$vA zV0r<-N|ApqsD=#4==2_8c|154+|tbh+#!YP1ovZnH-p283Ycm@8nL9OUzwwYH^Uh) zHYFO<@Ckn&mA`CRSz@`nEuY6QdyM5VySg7^Ao*@!hZw8mHy za*@_SwKlR{z{w9uQcudA04%;RRgq}iKyfW^0mwbTZ^hgmx<&=8yy#vRi|M6^2;5=1 zaY`65S)aOjCyb$)g?5)^(dTCp0%0YN{_kq2 z)pUJgxk=@#kNV_KF8nO!>CRHosYeIFF&)WnE@kn?y2KH2m2Xr@IT`8wM>Cy2i$Z20 z6WD%1r7OgT76ldeW8GYingG4^rZhm|UO+TmNrJu;c^xF-08%KgG7(E4>R}dEQ8PmD z<|^Np`LS+g<1OMIMmhbf3ZZya)qsO;S7-!!tUyM;4H=OTb&fmafu2 z_yjT(_x3A?DpX&ZH`Y3?c8*L?J^XVdj7k-F=bPI>{lEFw+ijZ*A7^O6v2N$jq8OlL zU@ofKT3ZoYDqX9%2L;Z;1{xU?zc0NWapDb=NOW&IodO7;7d-)G6phc3{8tIO9Zia3 z9-YEVp|<FBLZBe^6N*Y{3|dlwe0i||ze)%`ISDl#2VR0t5hk-_P#yuXWfbK?%^>9!B6Fxff{Qyy%I%Lr zkrY*aN%FC)RroSK;}UKCM;R*VJP!o{eHLkB1?BDv1m*Ei{?>zQo?64~kVI4weu)A4 z6#p~%`9p&~H4NMdo{vRds8h9JjdU~mP{NPfW^jzSRSFF{OVL5dqKqSfcZT7(0~S%S z)SFtw_|wZH^vlJT&n&Eu0poT>gaY(DT+2Mxk@wY)B>^|p4UhPx8t%Ulb&iBC$DKwk z4N}9~jBF^#a4E-iS30#4LzJ)nXDwjO*;S}At2m0sI4-Oz(%qG&F!rP8Vk$wfRe?57 zWI0P<6vndP%lTR_s7f{L_243KDA#8wnv1es7bDC?bP$KY+zvU}8nwM;MxR=hYDfj? z1e6m)8bvMQ0;d3@0yT$sbj~CQtqIomHhpM*8XU7J=@c=&(?xM| z)Cq(w<4qu56yN0AwVy6;IWZpoeL?-k^Vhg-t=%5ct{Ab zmehZQ*}krI0z0C457CYwSEXq&9bT9utcbFv+Rwv(7FGc*Hn2MI=bD1O^k^t5RU-EA zl5!=SekZE~X|4hNg&=~eLm;R(iA9QzOXJD8RY((`Hm<2xxtIA@yNpNZX*TvkG zHHEhmHLmXOJvzG(w>wk7-S^}3=g-`{_FdC1Zk6(x%OX^SJpS-D{zi)H8b_bpT&7Aa z_fVFp;st_xCvbYMc1;(qsPqjLA1&shoMxg{GXfq@mCw|xRAc5>CYC1&UEf!GSRP#T z9M6+0DsDp!Dv%w^lR=bpuVH*MT`AU`;`%`@H^) zUMUc)zJ(fxQfogw^>8vzMnl(f6GRIGvVrEsT$JkMll!0@8FjYpNB~0OoKTF2Tk%>^ z{?ePMlaZo*RJu_`N?wk0f^3qtd04FINF8AI2#sNtPb#!)N}j635OH|LoHs~}gcLD2 z*s+(?Q@Lo|Ld!%bf}ug0Pf(6glVNjj3k2RG(ExL1cO`HMFjK|REAeNeTD7@wG7FE< zX>BbuM4Vm$^#kMa^h@Q6xT1YLD$~+D?8z+<2(4m8_&Smmpi#!0E)t?oAjWIWJPA zU=vIE{i4c)ZHTf8_4gCp6lweByw8A>0LTHz#P9FOmE!TM=%*lw zO6j|YplBGm0JzrT$G}+5e2b5K;sSXU(OC#SDCuFYekv9LGaEe0RH%^=STyW)crpv- z0pgLe`g|)7jz(Azd<%H!v>EE36c|y~2>gR{;sd9PLg%)uK-lnylLm3_vxt3C+PLF< z2nZ#l2|yPFmk7h)$Z^D(*pCO;t$^BvUs|ySC1{m?xemK4F*t9Ms7wv#z{Fqjez-#4 z@*}~;&L78dfzwnQs1zy*F)bEBh{bd$;#$2Bx+M2f(Aq=ns!YVj(3v)HfejngM3sUj zMa(TE1|#AJMMpv4CQciR0jR#b_6#oA=&|@cMvrOOXJ~U6SoWk+90ez_IWGHO7tNVbPVTY z!^5edmxn=ue=f}uYKzlG3^|nqag=U^3zVQ>A<5dAO$vdc1oH@T9V=P^6&q=B4`gk) z${r)}FJ=#^!r+f|l4}bOLQY4jy$*I7Bw`MsQb|I*6rBOThC72+d^;>+#S`QnEUw%C z&*Iuw`Z#|Uc|1`0rBu-glfrzE6eOq!K^a*BUI04evAc(m%ICasS1sFlMZNo?3g4`9 z$yu~`bHnD4{t73fah3s+e$JBmiKKAYRsb+8lx(!>PzD7;j@t(*4yVW2sipLv1m7{B z|G*ItRSyXZ84Z-oxri_}o#6tJkO+j3E0EAodNi0MJ#WGnR1J?Ti_Rem)Hie~1LI4S zU`dP36NuhiM4YFKR5cq|@;BOlaQPs(PKxvOPg6)uxCv&2ZsMHs-DZf<;d5K~j&V}^ z6s_R9AW^`$NXxG*Ic{2oM>GU9qxlu5J)@n;brXS42%{U&@J!smbh)Fa)%uIaz=~BD zJX}eG>z*ehP$GXW={hQWjNs-V7H`lMYAR7uokQ>C5n%4jes(j8s?Ez>%ErW`CL^7+ zi)e;nRri{bAXFy3{PP9sJhN#UY{z{VM5d?&4S(7=64mh#>gfB^Z zU-OAc)`Y@bhsd#=FBGB#Ag)7_E1?2J*deS0>>1Y;i+V5vqO@Wv=oYr1DMq~L-%^M_ z(Y~c9ke0?xcnS$8EH{cYy1}{i0wzbg~ zM5XiXIFw&DmIjS?EZ;!xIYV=>< zi6g%E0K>MTBF1o}6mp_%109LxCix*4256WJ(>qqdv&l3B0wKf)IJ+;S_w~)RtVMFv zWlN%@qyzRG$q!vBBu;}AD5Hx(PnNfJ1(yHfZk!vk!~h|I72pxV9B<5M-|0&z7GVPN zeiFB;u~4{0Z+L;kc|!7js!X+k!WIM!@bC;E6Q*&#-xa=$oePMt&qpK$2KX07IKa4L zt+C+&ru|h_=L~o~8AzdlgDj-19)^E*u1YtOA|C^>Vm|;8<~&HS7%G1yYPOpXNbfI zUL|8uh(*5oOW+(B29MxBDhX=w#9tU6cMYLndp3M)4EyPA=TGKEG;6G-645=#@km#q zd*^`)wpK#r(T^CQyMXB(mjK~dBTvQg&2W8^pi;u2brQyKhS}r>2fBdYGiT7oAOuyV z{S+K6>N13tVX-|BrvPvoQ0aXe-V6|k2_ym>gR@+_8^kNdyGMtKfIS78d)lmh&KIAzghZF zsc3`)0EP=typV<{bTcp+@JI|6M1=I@kQE`;6E$cPsx|Zy#Vs+&2?TVAbVG;}ER^In zBmVi(`$5!61l=L@4N>tUD;F9NoZ*~OoeQ#c{R&WMl;?<%O{_9W_~=YG69umG3&JpE z2shw`XMy3fCQ(kxawufJ@yQNS@|Y3|^g7@md;M z1$Emg%m+t6;=%VgBpA4mXTb&#_+*#Om$TJD5Xc4!=b@ZCL-G)4_MNxMuCQ0Cnjumk zq&)ukWL=P~Nz()$AtfD>EU8yion=vo86YM7i6vPG(E(ZSo3YW|#gE>2!@K9iBg&%| z$Kr(SXOFra7*_r6{XK>VhW9l6W8VzJ>$@sUpJ8ccnq!T4lHJoZcO~^a2TRr-ll#BO zW`W6;8Bs93l2ul!o>pQF(pt9um~@QiQt#=#*hy-A60xonn>Z_x)mij2AB!czf9Bl0;U}z8Ph(4l`>*g*mGMcF5SixA59I$ zJNs3J*OcBX>3(;(!_b4FP%9}saV|L*!=~u87I84Ooi#LO4wVG+R!PoI}s^erv7ox8CP{zxA#6dDh+UajUtm>%7kM*!++G|2WTi zBF*+1EEifMv|z!4?D{Q z=}AXAU@sCZ;D@Tu7q>|ce^rkNKbz-2Fhn1&!WyPui_j8dz)z;$+y{6Ze7GMTx41^#*ovfp3k`YXEr^Leu5B8DkO*5iAI#oi&r#_Da3`x42^ zU3_p`gn&g{jbZvq@((>;qGGk(^!PTD9SP=C!Z~~-%F2k_D)``Q1m(C*`eM6cd3mn) zdM#GlNKAr!4Ig=n7o~Xomn#v{a*>w_MzMOPybQ)-f9%$~8mG5gEYmQ3V;sVS2!V65 zctbK?HqwIdW(5xb{+iZb*82Cx7ABK0%|($ZL{3*Ee5j-$aNkBSc<9kt##}AxFOR*O33XEo}sy zfBkXV^qe*SCs$bRdeZzKS{ff|{!fwewIjdo-WMkJ>uy%9S@5sB4@eko{dM~m-Mfx?edyell`B^XK<(cf3cOm2aNkdH>SUp*T7J-rAfR zj>k%>fJdq1T(JIZN{iDqJb!-YnC8~Rvcd1m6mMr`EhSCW6?*k<`E~yqW#6rfmx|mD z;?DkBOSlnhmX+}IhjKeNhD#W^kwx9cPe0TKf=TaGW?+Wcy^(g)H`!<#MmitHfou3suFpZQA_N3HQb9<$(hRi=T z3QwKwmdGBdA8EUov~JCgojXq)ev-g?aKbY7*FD~lSX)-~*&M9t8F35~l?wayEbsG) zeDzS`7NQa__ln97)0$Hc)rBp8@Zi*u&KFm_&Yo3vs1iVvs)}4;7#A|r`{j#tVqGjF zFDIigJ-Drwr+%(m`Sr_}BXtS#EAQszWfm63wViCacQGMh`KgbOV(aVo?!LVGc@0+f zx~lska@=4xm@M~jQP}dehcol?u7rgxT~ocT{>z&Ta$E>k-sQ%P<0nsM!G*hbi7!;P zD+l_^Zrir)$37dIwVytHx-&W2*YNrIr7u@@o&R~yvuCezv9~v6AH}RTdfm?6{*Ssu zve?(YzL#G8txPsEs^wj4ZT_Jr65G8t6&-tZ#|)f5;eU%VRpPp`^}Z*+P06XW*SEDV zeQ7V(oLYf>`q*98#Ka`muD#;I!o~EQoTKb2!OJI)e>N>XVY#Kxrm+ZqeR$}WT~d-T zIe9MnmeeVlO{d)4;@DI|+_)niQ)3E>*EQv``>~!4H!CHwZ|*jo{nlR4otbEt zbYxD%0Z|>DH{f>GO#hmv}hqT1RELXMKxXXD+GX_T$Gl z7T-TwEfN^e@C=eRpuhQkyhCN!a?T~G@dcz~dkn;a6v`*Q4UA8?J}l~ZZ@t;6`Cc09 zmRkH++1M^H{yoLSfJxGWl9IS{Z`WoIO*G6bdp6X(!t~6HPnkjY`KF*`!4)qoYkkVb z0&WF%OIV`0BN(=M7Cz-3zOtcoN$$oHKJ~h zVs)gr)j^+Gq`lc2>#TD>hplyUU{Y!QEk)rL5FsAlOFdOPAG}q?V4pvoXz*xwHZ~M4 zZg=NeEmbIMk6Lt;#t&_Dn>0SyZzPpd|Kz*FOJhaL+QE)WwVwWm?u|*u%nlv8!b_u; zv|O>BUm)#DyIb9q-DdrNW)>II*1DC2mWuAGqS;O2GuEux#JLu4%GTueg`+9FTVbm4 zs{cUImn;4n4WtH^Ea}9b=9ky+y5VqWLS2(P;rcPKTJdGiNPpdptPT0x`Y~U2l~-up4h`cvE1f z`Ez4po%=VHa^};Ck(R`K|64sl(?x2lL z=}@=L^{LmowiB6(%6HQi&Y_R4Rq#5>x+iCcS{edw`Hl2g()079U&hDS*Sc3L-A%iw z)7SKHkg-KW*V2=eDJ-da6~^AJyv)w`V)UUWU#^IY%R5X(uXEg+ye-NBQs4jkh~4L7 z4?peINX<6Wtu)NK<-5qBtb3dAdi4mMWvj~mc$m*s$P|{+xP1TUi>+r_s{vt*(jGtF z@giEHvRUcq>YdKQN2@QV1#ts^+&S8$pfOe2Kmr#Fy?_5+$!}O`kJ@)tu(;XrnaNce z-ppgiPo8!Tx^W}9l%2{AZG4ry`FF<}OtjkMarENOwQCuLjwTl3Z z^2d9E?7!=Z#!9FjSx{YeR@t*YaIN^$5r5}Bnlzb9{P8G#rONv~_T?XB+Qsopox2{Y z_*5%x;o_wbf+m|Yc5g!yM-z^~R&Ms%AFvB%Y~O!f>GC>K7%a=o(o*;S_wT1Q#wHX8 zi$0v*nA%`TPqQajnyO!vwHsNpRCK*w+LC2)Y)qZ)X+VK2v>ePtj*oU| zeYYZMtG)W-rNYwjb)50Bf`FUcSxrq@d~+h0eZ0R%qXGQBnF86^^|E>^=TYbC_pi0m zpa6`&!=H< zC)E5W{v)j}P;ndphr418q-4SB%%^@MNxNJ&OpSEKo5nNl-etd2N!7V;*B&5hobXi7 z`Nx+xwjOWz)z1C-=3S$ROngJn#4ER;YI)5v+P9r&ub!KZ+^9O`>gF`8WMKJ)lsdaI zsahOV*%dF=6M@xUOMcpgbwp}17Z?Vo}C)fm4 z1TR@ecKuLt)6I^1sLb!%HUe2^Gxj-32>|+yB>(X<3X`APhr2EJZXk;(ySlngf31J= zXr#$!q|4H@C@^3df895q={U}oeOLWH-LD?*twr)e6}M%gij#`> zd=suwlbb|pPW_LV2 z^AG9qX--YJ3QKLjOlnZQdF$gp>eD%0P^4=Tyzcj?Rf-+Y!=*ML5VZCAwk^fCLeMb% zHFm{D4~}^GA18{A#U3c}R~u{d(ab~%hjO(0W%ezHpy3I1(}rY&?kjJzEKrp5O9fuv zbI4V`>ClvSo2u)Y;$q!R6m#?ENyk#^ol>XyLf89$u@_0uk4hZ;Tqzo#^n357{3k!x z>{ajJBba}Qh+I)R9A)?UK}%81Z#HEq=Lepo-ctWD=;rIxqO6Q?acz_TmEP>KBm#L8 z#m=rlPTa04TVaYoj=Oj6)f$n6Qco!Ysz}xakK@vG!!2^{$^)Nr0|uO+Xv&V%7CJq6 z@L(`eI<*0kNR`tS|7bGDdMKf&-mzkQ$PmBn$R7(t!v0-LIH$~QIp){(rn&}*LyAj5 z>5aFh$tF(vOF}2d1{!uYoaeU&pcj_hdV!V4ow0=4wAtwmTTXp^u+kBQPGA1Buob4N z3&|^YII#8dr`h7Fu0MZMu1iqtX`A|9&EwGhW|WsQ{qWD8B)<_=vw@(2^QwWhD`zPW zKg}+~2UEDSGo|d|ItGK0why?}QOOS7mnEjz(ROhM z$19}1G#5wR0Mb%;e8{21t$nZa&)lSyeP6$_^N!urcLv&oP&pv!99!`B=(Pp_@C>V* zeeU-@o}E&J9@Wg$SP!*MF*_?O>=uDs(H_(_;OqVdzuonuocF-Ym}h-T(Pqx~^WWuU zBTenjN&sJQvU9G#USDUN=+QnSdS>e>SCvZqrO%U16?xiTnnuWx1F zME|jTEwLbxLx&DM9nCGOL6r6RCI0)02qs^+cLK6+C_ed~cn&Fw^w*r!X#$k>=ERI> z^*B**^7NpAO58~|w;oZ&vYN<^DO&eGoaQdUYTpG>VCz1?dH3$!>v#frd@5#ooub0Q zsw|VdJKvvi1M8DKx6et9@Eb-V_IY`Ez==F=gMFT-o~(|(`Sj6oY!b?`u&~(v2B4U# zKJ}8P9}R7=fJ*rK-Mc+UJ5{N#fLGal95S|m%I-8feJp94=h9t%?3dX!@7}*3n(U0p z-tXij*TYgvUi`jUH9D)?*#fA6=T=18pk(4bK|j2Gy)|w|0{D7QeNyFel{USTP}6SQ zxN+i?q(R!1wJL>Kj7U~;o9Y$W82{zZhAxghOGLFOKVM<8^}_5-te)Q0lP+$@g1&zJ zs(P%xWm@h=;8%try8&@~&+e307f-@K$f>9-I`uW?J^k@#og<{)a>=RImp@)eWT(FP z(>ekB#^i3sQE}$k{^plaQLAFrMlQcSaeVd5S>e@NFL?H_I)KUHivdGTOkVxIJ-Tu} zR^yKFBkBR1$#Jh*FX5a^>jTEhbKfU=Hgg6mt3A404(lSwNZ$ygK%L~aJ}HTmWod4% zZ71>jaZD0m?encr@BmMeEcfn+Y`d}Dl^A;K{Hz~!*VM<6l{dWJng3`638CiSzh5K_ znD>hqH^NB2XTwNyr>R+fmgLxu+UFn&YPvksjQpJ2{PDporD{nNx8*=lg38#I{y$09 zgDnlV&oB38Tbu&o)-~d%oSot&_H3JLD@AD6*!0MpbX<3ms1{(3>I<*k*-eY64lL;Dh zcN!E=SS|eLH>v4ArVczjy{E=!r(K}ux5 z4%eJi5~;ei>wL|F;^L#cY(Gn9REbbaO129Xmy`@wx0dAHyan)gow4y&&D#cb-LH`w zQvp1CSAPBey}S3=Eg8?&+ynil(7X8PH4@|Zy|kzKX5A3t1y^(cGp6sCxVmKTw>iHv z2@n04boK^IJ{F`V$rDyk3jFH0tskdyvVU{FsH6mA;YD zrhTylXy1U932$sB{Kfe#0ohW=$2C2M^rfI8uJ2JPpINtMU;drupX+u$f_jF25NK-n z_c9IH1ub!MibKpTG*5ulP6E^2ckV?X?1{{1yTiKD~^y>pf|{+ z1IN_r|MVmgnhO>dbKT08v@Efmo1ke>L!nU4Of>`=l?TqKuHLKK!51bhQStNJhZeBI zNNPYd;7q*VFeCfr(~i+>VttRSNWt*rIN|pT^+h=Vt+K=*k&@Vh9U>G z1<=pWpJ!Jo`bEkqKC6;~)|m;U;^gSAv8x~AJ5y&nj)Dc=B*@!58onDO3r(C8k}A=p z2KAdz;Z|=uxl(tjsPpGPF0P!M4Vt}x1Y_B|rl$Db{{B0enW4bf|Fr(^);!m+E#jI- zu3I@eI_d}rn$wiqL6?o`IzrFo`M7lI)_F1{?ps!h(oKqwkBX`0jBpb4Dhd^SJ_U$E z;>7w*sd+y75f>F(1uX}Dn}C2_Ng#~BZgWxnS|i)LWz^eyhGp` zOeFEJhf-W~V#JZ4uYF%PJve8w;%IerW&v6%6cE&Bf~qdY!z$90l;Bx2NsY6=h3?DU z|MIz4Yi^R`s^4sDAkoS4hYLe~x_&TRzUKFc6PDS9isg3qF6@EXC))aBc`gaW|WWG*kMs3c#dzZ@Umbdwm z2aT|6QJ_q;5Dzz2C=(#}H#FwC_BV_Vb#8tDY;*F@j-%BU$DyY&-*V*ApaeqG4?1G3 zKdldU9NEE+kUb9Wr5ro95k=y=cvB7iZlsp1tZ-9>(3VPyT(RLQL2&9Vt)a+&!ee$n zp#6^*e;*@F(d6bid|b_M2OnH-YlS|6yuAE$rf=VYV@UEVD?WR0&Eo4xmzSs7o+h;& zEOy?;ad?}xPkF`0JcpV?bdk4+47`WqfFHlo~h?x+xl-9N;^%6^WzOpFyAsI1&yUN^G;>t9ciS7b!%HZkJLQz8Q4(lRJZEf(eEGm zTUr};yNwRCr|Q_0oX%8%CHQ^odWo18!(e^D5k?AWICS&ZhvX6ls>vj($=f>ax5ON9g!7N>lItmO{>+8^1@kU03s5N{+iaITIYJ4wUG@!-w%}NY1~< zNAIA{NbEYdGO4@R#m}$T;wPucr@c}%(04Jv14VanXdriL32gAXcP#0Nj}$0#|Mc*{ zQ%Aw6!s5IuIpsgSSN*oX2ITaCl2dB&8%)x#`P}kZADTbaI0|j=B1NC+uY1>@pB5BJ z0JDtLWW)@ipFy|4I>o?=EkAoY!h>`*Qa5^5RYhL&n7+1oH?zzBKNylRE4lyED*xV-jjs z?T(ftZx%m%Mk6WW^V+6>WTtV#Jw=-jt&b*M?2bJT4*hNay{k@j2_RSrbNdY<+i-T1 z(~0FQ8HbT>d88R@-Zj0CJ^1AGI+v!rqu(BT=N@_(UEJ4r|Lmt7jrlg!t=@h6|A&i8 z9$kh|12_Hr(^zq&Lh3NVvu$Tv{T~+>Z*~GxCfleKdAuiD%rRIE8jS`Go&?}=a8_o! zTT8`aQ5NT`OMYg+hwaJ(flZ+xmA!wwfTs^U{(;+ms#yzqdLZQh;qJ7#e^+~YcG&Uf zMuF~zpahB@kl!NVUHx0vRA12*V?g^oK_MXY!@#3UNW_ri%s}iSz>_0aoNx1%*(ITR zMjH7B(4GPHX8Y-roWc7?p;edlT>n`<$Vvqkk7ZJJ$Uw8*~74qy8)p z(zL)n2axmqe6iFv;8pPhw-39!KMg#-y1DvUw8e{cfvSK4q0s4>czKs^@6nj^~4 z%;|wN>TEANw+(>83F(8#f()mIr5&^PtVp+vEpO4R7A98~UWO_ltv9a%;P$KUF zLs+0&QNsoL@*7aktJ742+|%}KPs-L?;P3boATy)wW~toi0;xY+TFBk;spA{Nmaj9~ zj3nvD$4RuDeX)o*g1dnMI`&_`|6`y%hN5@RuWr?P-y;gvcAoOzK9t1zjXhCttaUH= zrJ^iB@uL-^pBVSPS1QV0U(9AHiHFZAK^S*(GL6aJUS5M4$)~$tB)g@R5dzhP%Sdnx6Z58LesrA65>z4)j#=Zl3Gy!cF?d-&N6=oz!Z6-%!}lDKmhd-g6Tr+9Zue1z=<$H1v4?L!~hXQEk6vokqJ zE?)EK%@i+!TsnOC@imHp0l((sUgy(KCssj0U#;%Ab*;*2UTZARO)Y9!yPw9?@KDhB z>eQL0hLNv1Ysue0_a>j7P(s@sh%A5BzSQ#Wapbz4XXDfc*17d~SC=KA;%nyu$}=<3 zmL)pd7w+Zb6aToc$;T6Q6W+xdDEp6Zef;?G@zaOvV1uc*w&x{f-@f6OFJbvJA$IijYp+qurQrL#}kGbC9l8aJ!g zpHD#>o{VoF9*$h;D`O%c%`muv$M1i3ZX0Y4B#GL2@O&}L-~H!W)RZ}X`gC_o&#jHc zpymPtKYT;&lGU(xRa{(rs^u{a(i0!NM_+$QqU{fv=pDm`KRJLd&VWb=5*g9aB7t6S zUw!l)kq5w1@~t@nS`l_uGMa7LJywaAjrh+4oIcQ?_Y`Z-QR@PpE};sPloY>#{sY`= z1~u-{=bJqv_hSP2$dVB%&)nC54OX6m<|bI_%sJT1q;4snmP4DKLf<}?#v}a!{QmK< zAFsBeCJ6smw|1_^?wB=9sf?`0H*(6);b0pn+f45sl!~k@X9%%Suygg20rk|FfFH7k z4t8iaOeKF}4T1+VAePD7iwglEp>;rZ2JK|~<9Rvf$hi+T_3T!ceCHo@bH|_GKh?42 zjD3Mi_(FRGnmSoqpngEl9BpJMxqhYmq3N1OFl5ZmDI{%55Hv2hg^g`pgfK7iVN;4ufG2?KImnvwo6io9(BSkg1YQ)sj$; zh6T$}#n5m#e|9IgW?b-!`fOEv?!n?40Q5rZJbysPd?@@n^f;!KmWoK$jFq3?CCUo8 z%D>+KDl~rHKo;+INWFXa?)VQ*BI;MNp)1(go1L1rB{h3LY^$U8eDFv^=e>yO9AdGn$&6O#LXdUky{C zZrdK+`Ob20$4Acw`_C5^_M65LY-eAZp841pjXHZrnYA=nXnyx0@xyae;>g$?LQ}vg3t#XiDd97q1^-4}WC<47pN>@y(tjodqRm$^SV{O$(V>Gn^ zf|(%su0ykN`rA}{18kl2=7GS|2$*ns%E>KyG*&j{JK1~eOKs2QeU_G$V8PPQ(<7?= z_bTVTagA}_hwtYxS{^wA|O)o&!bamdmd_xLV19 z5ADf-u>DaC>i6yaoJ*~(2T$J3QNw@=ypp{AP3z+%NJX^C4myyYx2__Uh;M%CM_PM0 zfL2m+76{4nN0p-4P-(a(*yn&*Xu})K54&Tqu`axJ`!!8wPQmG}_gB_Jm}S6bv(nMs zB!}@c1a~^D;eRrbOt3iW3uQH$oN6z-1iem6J8R?4@gdlp9n6MJ{Zk(wL^d|Qf|9q@ z1NQ%~tkHM>-5i@Y9ak~Zt1V%T=RMH|L-Zc7H;)=N$Hj} z`Ed8#HD|axcPD0~sWv1Y-AXXLqhB?^@~l_uN%5?oSQg+u_cz`@?Y>0KUqJty)v<$H zco*P5BjS_nfAi1s*Wze^`K!~RWvc(?pNc=2zaE2Ig3=U!-S^ikkzM}NhMoODA76pX zVOuiq!tbDT2P^-(`{6g+l#)v|g$t&X=}4;85W~R=eruZFCu&&b!tbGt#C^P0xRCn47<8Ij@c-#}|HC93c_B67rpxgm-l7^fF>1^>d_7kcQj%LsWw?dFJ)Nz2b zlxaN0-`YGaeKCX6y0I;0;;t(6@H zlg^b~fKOr|mROcUH#7IsTTjchxDTZlQU@|aQHSY+!x4!wHFIGIX$H_tAJ?ak=cnuF zbFhAt1S6)!zjyN7L^MkseWyruSmkfDkyPC-OJ>j=2L{Y8`#&(?e@Sahs2~nJVn@)L zmBkTLp$Jm&di$7)!G>UXpfnKa4#0P)Lf|U~1z;Bp57CSRj6$gn8{}qw!~`g)*~sD4 zOo(vCzrZ5`SQKz*fo8B;<1`1xbfge1$O=c~Zs9H5a)|7N%Kg8lLAWn?df=@U-QPM5 zQQgep0X_j7R{+0HKcogypGc~-NRmiE$c8h{OxMZOadP%W{E2lBA_(&C|N5(tI_Wx2 zYao}hAuH}vt_48?`QJ73qs-DMbakR>s8J|H7cY52gf1HC11DwB%@}4$5&&@jcUp2z ztOxC&ag(S9`c9x8fmjn~vE03(MoWf`Lyh$GnXG$2wUg|va+5j`Lq`xletHeucJjK! zKBlD-DVMs9geW~wrTw^elS^RP<)q5HzC`CRtNYGjNCSYd%waz{0qTHm@4O!v84TLU z8bk~n6)Jy~0$7GbsP-3pHzuBJ}Os3pMD28 zc()bapX~sHx;XPh0Tn7%S@Kel3v1y0LlhX);gv8_5x`ydF@4_NwlFuZ{C6!1pk~}) z+SCfv0+nYTSS8nJj#L_RG}F`5fx!z1pmhS%;2C0hjNyOaMgJt$o4tbiJkyD&0wHCU z23ZD)W5m2`b^v@z#enn5%F5_w*9B=pIN%sO0&bO72mv&Z)luCfN^Jan6NP?+;-8Hq z1&BIu5IA46EYR$JmUf!Xk_`4vP*s@@$mZD)G2=s{m#Ev83*m^XaqT>+o}=Rgq0nwp z8B-ud$vt64H+xPW-$t9goq1{X$o=%yYpwHXE&OUye%bJx$ z%2r~TB}h}G10Yh%lEb9zH0k@_-Zo1MHXpi)`2T$(2u(|fvgz?jZRU-op+dOJ|H~z9 zTFIsR!g8&KMn{ouRR_^YB&Grc(futZ?m)ayh*#~bW zFbE1DxPAgJ$of!(*oU`k^%}vxWDC;L#1vVG-~$gp()e*CmL7v(sdK0J2-a zbDG=()va<}Izmus*>wd7^Z3u#rvf|E_6tPHJ+exU+WAovP8D1H=)>?9v1>1hUCeU#}A8@pud(7(&Wj8 z6)|_@iSX+fxfyO9kh3?2zaBS6&k?2#|D_&#CEU)Z)2y5(9}f#3cZs_iA}>fJ`w}|N zlbhoP2lmJbwi{QdTqMv5+MFW7w4AFsc@ggxunZrqLHS?UG=Fn@8-x@5&kiq`$~Z+# zu1yG$=Zg(D5<8hB>>^(#n5zK!Q@ee|K|jY}9Ibd&4B-@B=7HRb$3hoh-jUPXp9gO7#{gQ>L#qYT8h$6{LJ1P_J&;rKdE*fmMwq_#As;$Rfvfj)d>=10)h zcgkbR3MLy0xV{X@*EynmoE%od5-yg;2=Jmf9X_I~LwFZ9vSUL`2q7hoI@U57a(!)8+^fz_`|G#+Fj!zC;WArS2Im@LS2l+k>ET4Xc8D1tgAZm`{)Tu~lR znBFEsKSgYJsT-p>FU8SH{7nhyKAR1X2!ekZ|34YCDsz|{ZqX7a9egz;9J$`c2GFE< zm5o?QNyMI|AsqH4f4PVU`cBCb-_PH73a0%|r=Rj%PFx8Q6;^Tz;Pz9pyd{RR9k)p4 zRL-)lO4gb4m$s4sc;FEiv$Wd~?GK!cb;Q26ok|M6UC4keusI|x0_HTOPC0G(9*qzvI&K|YYWWqiHc2@ zG(-l#;6Cx1@T88POYNP_$dIGkn{Ml9Ln&vP6*;%*QSI(==lCBVY2`+S?D6BUDoYyKN~8zi3_zii+J+Una)Joi zOq@`y8}~_r5($6JDwMOgoG_-e7QPZDLY4qopp+y*dJ}Cn{IFV2s_YBAcvbMf+Xx|g&>U_M;VaRN=)9USs zr@)bAVgfOH?iD`Py2_3#fmD!MG!{UTK(38q>SkWEZ?***=sa#Dt*-pM_Uj^Ts&OkA z)nDM_*el0o=dhCBR*BLq!t6a?HYOx>Y`HjC!?z`88Q*4w6U#2X9F#fJt`h$*FtKHa z{4tkv6Zb5=T3peX(D!(J!&aV&h{;qV8#onsicFUaApoclQyGK~5{)pulUyMyC<^%r zh36i_e>;gzk2nQ2u!KNAH5M=;bCqvP0IlJB(HwGmYHIINmmpXZUP7?9Bv&+ADcgJBKLD!30=|=vmjN=8DXa@ofTT7B36|c15cEx_rfpj=D)5fhOArnb$1BI${N7 za?7rl`i?GH*p*zOZX}3Vx<~+W$T{r&+6|X06GuZa`K8B=H)jf0%C6AaAE4wp^mW;y z8WmT+Yhu#Ed>CMW&>U0QvpQU{Z<&m(=bHoz$X0_5A@?R7y4ml=`L4RP4sVjvS}h!ExER>_L60} ziXmrS>Dw4VcCSyuRD6v}in6xDXqBC)%ec0{UitzA8gv7n*;lCgAFvbXxDi!y&7yXz zy0T2jdvTI@L7DUg|F;PSn-^ASEdWXgJ-c(2A@1XaWtfU>;;x$k4SXGS1acIe6%Gez zFPO-ZkFi)3a&dtUfK8J9XqaHJq2h0*4Jw_!II3s)X>hLYQ4`_x~1!Nora zxy91AgRct8u!KK+W#5QON;|}|#T>6Ydq`Y>4-q{<;0Y!?J#vg_BQ|>(sNF8eG=erN zSy0OFF;F=>Tp*rwVes5DXi$KX<>+cTDWA%TdO0|}G`J?CKxaYPe_4zC^M{%nFENM0 z<&b(r07$Se8V2@LQUXr0DF`(}D${l1>Q#ySWqSm!hHSAn9vAH>8q*TctaF>TEg$ln zdC@SsRA-AEbMF(2x+UffMnQCD>;>SRfa@B3zGVF1r4Y=n}#MnzyPGT>?J}!3Y$pp zdhGi|0nN{S+MDcq{=9Cci}^B_H`g9MT((@gpef3>qn5crtRf3V0Z?Bvaz*M*BeA$a z!-@fOtah1sOWfc=Ma;>IGM=$$)HXIR+yvGct3MVBN0&SMAeS|d@=fSw;0k^ zn$FI?K|#mz#1H8^c01&S)_Na0MfQ!LgBT~AB0{eQ45TSblNXd)RKrg*u!*}3jNO&| zx%e>D6yq?KJ{n~f7dB^41!8-Ms34G(_51W14?ciy;6go$UiY^v565^ucb`5===k>S zW~oAJVdF9^h6cDx6acASgxp0QFCteYgm85Xf$Z3bY1p`={VAkl(`sR#ufmI%0_8a% z@F7>I40A(GIByc%LXzxPm>1J<+vAuQlBvQ(i3pAum>fuJnDo!eY8SdtDfM@9}<@A&_(1!2_V4 zz!@g`ob%9OJ;g}Jr`vb4VZ37!Xw1&>WI1hpPTH`U9~>{qrPF^CFMbMv#7iAJSwXj^ z(2A4he$Ni?S&GHtupFMmgmJ@bbvef@CiZYhI2u}VGHjLAvTiTx@Gjr)@}_pq!GQ_$ z6OTj_r~4~{Ig<@-Aggnt-iI2uwQ zIJS1q+&Pd6p|{~q63qno!NHc+^z=Wi^xE2ZZN0$!zHiGHyU-k^Wdw=w&uev2G(poC z3{arMNrT6V2oVItGmBRV5Obmc0uVNr2mdky8W=nRZb7~B>GD9jkpQ9(( z%HOU6n0yerpu(HSeW%xK&=o6LMY$?UB)TGd-iGxj)fQ|J3?hr2gb%a{f&v1EIHTvV zl{6HpfjH!JcgY}HZ2~yPKn&u47zk2H2^zF-l>Hd_A=<7I0LSIo{zDiHx#Hk5@I7h- z7eNAyTOmOMJr{ZiJgKdbTimP%4M0Z(Cw9!aM6{zpX@Pr+Ik6!Jw{L;ihsl@Z7C*|5 z+Jmww5caCKiMz;SD9}0X(p=IC@EUg;Lc$8s_F(83g}6cUhbDRvqZen75M-J-4_5{h zN?9V5b^+9sFF{Ez?|CSMhr&CQ7cT_A+8lbIzhq*AAZlQq5-fi}I90sAg;FN?E-nNr z;lX9{Nf+Vvp}N&`F(F0P0S}mTLEr!rASS(D6$>&B0Y-sSzD&s3H&%Lj$n;K@6MOVI znxS@~kWb-MLkM)Tv|zCpE~F$xYr$d<7}EG}SuG<74Mr5~kga(+&_`8JMnN)O9P-*q zn$U6S!n8D+AECoKYxsab>SlV#RuUkR)Jl2J9dY<2d z*h2C0=l3^IYhNsAu^W`J=++4@Zaf!npI6*?uv}lCV~tBRVjA4`*pVXAIp|$BJ~^qw z1RCJ-?6L*c+}#Ru88&zH^z@hol>CT?bd0&VADn+&Db*t>P_L#(HMEzJ>$PR2v+qKJ*Q=>h z>eVn2svbhIf16einX?l|OYO?IjZbH%C=w%r;tL8CDR_uDmuFFMRH8~1BZW&e)DIOJ z(xf~kht_7M4;LxmRJZ#>wS z7aY--qFbfL9}Jswl=X154(pZ%PvhXgCmf#;3icGi+Vw=igp%j%6vfL(El-mGl? z+m1ee^R!&JDtqzvio`$Qc!gOh?7$O=i8VHQa1(4jOGb|88UXjwceW;VYwy77oSNR>r>V zkkvZilBa^)k~jL0NK~MSYIDl@aGJOtNeaF`5?nbj>Mg>ZoD^?T^}h*6Sk;Lb3Wh?- zr*b2xK^DvccqHaF8;I; zN>!F{j1XH?o2kpu)Z?Vy@vx%U5{bCPTGkmWTcXs$U?V=TXaNbcj22FXYY0o*fcm6J8TLoX3K~TVWqG{>nd-^vMN|-{oFe79t?Dv_~dR4 zzOJ>fX%42ckd1-hP_@Ndht~QKtHNuODHO=49!UkLjRh~Xogkl%&rQWL@(~~yPOx5#yD%H z0oo#`+v4zvLPH$_6{xKM!>GjOj6=BCVsD-yEJ{mfH_++RmJr*NGRsKSo<{t1$&5Odk>&-Dh$~_+FMUavyzKn@9mP znRnUH&01NuIabD_zQfB5=C)Nh5f(5tmv%NpIL~5x^ASZ=Evr24qs}3z~n_hb?<9I zz^sD<-aEWRqNOoX+2b*0*itZb4%>vd9xF9uu6;XQ%)Nf$!ih^~>a`)&+nnb;2XH}L z4+s_-QQNEaIYJg$De;DcmIiwx&6txy_l2|aFc4&J<}e0s*67M`kPM`1@{ty!V4Tmk z%yhOzDY&B)@4PgmzQcc=BxLodL$JW2;cz(X0oYC?iqeAOYOT!E00rr`csL{z9U;9* z3XA)@&j7X|{NZ2((VE%mzixf~1?2tvo+5a__y|n_xQG>{Ay`^P4B8DD=NCaq@%(au ziW2q>FObXc!0;4XKm{vz#x#M8l|s0Gc#np2*jw#TY4%-dvr-7uhZYm>)xzPMAw%Oz znitF>z!)lP<}eM8R^~%Iq*)AoVrluOh`{4*uFe?uF0XN=N;Nxmcsd-8;_7nbiGi8v z2&$u{rS(|TpZma>zv3nnP7SR`-o{BST=blE=B6jSVRUbg)!l{5?&anfN67iI>sBu#E;^!ErD57#RB5vb0phG1 zvF#3`olp|!(wbK)RWGCftiVKEe+95{=xrU21vU~A4-?1|&G!_^UL4Fzt87mZ0X(U) zX=0J~opiVd;ox3a79}6Pd1C;l0Wa2sBb@7qKs9XMzK~Vsj7Rlq(h>0e5I!hPE`Y6l zDZI3}d&v+|-yOn)vNt@34FkgIKi_3Ebdn$V&25W|(=x01QFYCkD`s%a4=(6T-?6y3 zRisIcze^O=#7wV8k`PSw;ysem3P3@4IcP(fmY_iz>uZNDTByTh0YUhJ)_G+fS%LFX zb96X&0iy*d`AHoqmo7kj_GQ8eA5RhMDkvV(fG-*ByT0_N7mXm8!+q(1X3~Jr`ERuy zoy{O%AI_Db@+=QVib!IuoQ^+5I>qzRBFMT%o130+YIOE;Z6;u;2jl4hrqms_H4aPE zbT*UFmz&K42hTrm1IOp(JglY(P`#?EV7ma6k?NaYL%a0UxrRONP`e z3pnntOtJ+|QR9=nxT1FfY)StcRBgAKZikgh1=p%6k#5fg^p+#eP(2tBL$n(3sNZ55 zz%hsn4=eQ-X)6+C5zPJa_?=<+28u4HA;oi?tlAT0jtW^hoEC!bB7|4g0=&d&8%V6CUZ~sn_DH}NVjFml{^;u& zhQ9y~A47$B@~;1TBDk4DK}AQN^M$Z9J8vLjV5@^}nbKat2(LpT<^l}70x!!vUv;>%n!6AIlm&!;_-&mF2;YG=K{lrIGTOQ-(}Mw) z&_PH!SL51YeiUB9uM7gdd0Cg)3xL!2Y;Sl$P=Nat$Rf6vG-iSX-pxpd;yncB(C5eo z-W~rMCE5XTi;C^99D=d~j3W)yF0dRkb0r?g)L{(}XXqTHk6-0#gOY@b4Lm{tB|t4M zZL2U)9F&Ofc|gbAMl+VfLkT@oCXy)hoCUOIu9!g0O!2%fA#gR7q7Vz;6Zsp(QAlUY z&YDp6^3#k_={`AE0N_BRy50+I4s}72L_RgCgKCC6MClnEEl_k0^MtGnH(=^IIRk7` zDBvat{`w9j5n_A5O}LKuDWuuJ?+|bY`yPTcLp8@@f`n?L7ak2|HJ$uAGO1%ysZtlx z9qNQ1RFqjVpnMFRE;e^(*b@1OO)(OSkgexyTO=L$DWdlnu8G!l31{dGxjbu8wau=y zI#b_)m==X%i$&Z|lMKRv=Ncwv(2HIjE9Vll3pBJ|oae^?; zVa8B8CiaGooB74V=|u2OCFH<_Vz4YCLvHhHVd&XHjY>4)(;l+y(K=I~h8EhFN5lul zaW_!tkexxG98%$AF)RVc2c^kcf5{L(VzX;ux_P6Cz|CTSH3B6k>M3wG9)p#np!|Lk z>0ec?7QQ8YMYNtYkS+-vEePl~6<8Lclf)X+n*gw2QJZ;UL`;PIOQ{TsjS;#UF7R9} zJO@=13z9Bh6-#TYi0J=}$#f`@Y@zgx?&Fzab{}k|>Tq;5^w#5m$1E8RKN5&YNn3A< z?ndXpGe8E3zyXAYu>ecHl<9alD(k1GPQ>fgtEG7In9ScpuRPNNc+UIC9JYtvl8M#f z?q~SGgb3r-@Iwd#Q}NdNe`PW(Gi?;07_ifP#kHZp%gpE4iaQV(G_7x5sy&|t77e*s z3`wN{HwAEGCR5b$8tjZY1Iy7K9qgMd z5fSs27kjUS@zE(Fn$Cda2Jkd0(DbMJps7*jR$%!;B9f&1Z^8icI8#mmU!x=1Ic!-i z>FW}}ALil)fXjUc-xqi@9{7@eCfgN87$DAu-wytqQrRml&8tEm=BTeRG0{jrq}B%; z)a?a>2nZmn+Q3|zwno@u`Je_exhCLY=tF`dg>YTj?yLE)zU770ylcu~DHtR`@K{`; zP({qdb10@>T4zxGAMmPQ2sIouf^-B=qyUL*hiU-p2ObAs_yA9#YKbK7aRD!kxdEnm2}l>KGoFI4VU98=Pl7)xK?^tH;^&QmJ;Ykbc0F42XD@s!_V?3hF zVnlH?<0S-;u--f1$TUj(c@@+I)_mJxQK}aaBNPHWh?f*Oo+9woqEtvZfOG|#O3wHt z%Jf~l4yRg}m_e^9|2rdx>dh?B%crJ>0C^qme zmDSB4ISu79&sh%RF#S4eyYk^P0_gaTm!8a=)we>0f zRppVjy|+CWu&ntqDGzZLUZYC4#Y&SZt)Tp2k$)4vN|w#Si3Q*dJ9-8I>>xj^;cJ&R zXj;&n0_yVwggulc5XRt&oAY|&SEnYZJEaoZ8AujCqz0|n0pn^q`$De-7zi;2ii#!! zNR1MF8wya`I8=)R9R?&@=QY1P7Rgz-QHWhGC_t*bjG{(mZFry8BcXaVU>IkL#z_%<{~is%L^U>Lju zl7h(9KT`!Y2P}pXgy<21321}*Lup~)z`ap z=~>iIJvUcLESOe9SoA#zFkMaNbeAxkH{?l3mDm{I`)BmMDq;mfsDNugTFv3l#9pY; zmAXqN7%PB4LJH3bK4_;}_|ZW~C=Q!19LC7NqX0I=hfg|3T!5 zXceA_2kE8`jP37?wH*{3h3;PyUX#Hd@-73W!HPjaxAUgwmnxR%-tf2D95IHOwgw)? zi9wAEA5b3#@RdqXQ6h+8?FJBg_&2o=O^Y2MVxsBNQm7{bf)A0ay`7(HpedV_CQ>7{ z2p9ZT`wqxifR1=DFRt7|Tbd4PkSKrx6c4x0RouWR5E;;WMLjp{kzXRXN~G0lhQkM#Zwl`^vvB|~Z(GLusZ5geb+kA*is?8`wEcsQg{OD1R2)dj8nR43V?{s$wq_u{CfI^dhA4V^AgpgIPKY%aQF}SI|aJ zh@VF6zKklsXUHO_pjx1cqEc3*W0B^PfS_cv8^8sxy26t&fO1i72o5?#jV$=+g)t7` ztRAmN3c0Gf1vv?PgL`w545N32*8V2RjLc7@4q5M@2)*rol4 zz5K!Epm4te=v)u6i^`ve>$mpEb0YKqr}%;g;t>k+1O1AS&f7|$pO?hS)dC@1Pd(-e z+CuvR39%%7E$S)KznIr!I^jj{9JHJNZ1!^mYT-FFU|h&3$V7HaOk_6@xGwqafsn0S zi$dL%@*sd_w>}eqxQ>T^B!fqA;C{OVJTl=7f9-XF-z^X&Avk#=Suz1<9w!ew4GZB; zU#rS^6agv44{-%vTjywo_drjBD9A3dD}kcUiz-U}A_mGKIY_IJBI0Q%Q1vmDfT)#k z)P`dR$ie_V075zE(@{HVk zax47Zs<`{Jb@Srhgk-V;@`26Nd`$(0ep!a%49q-#d#DfQlEBk1x*D$*5n02 z!r>NCUYMsac*)-V2ENG$|539n?W)6iQ|fe^3CoFvlBK@BdV>OPl2LYSSct+Woy)5l z1OLX+``|#YO0qF?@0D;1Chhec>{EXO6V><8TOc`Jr~eX)ddiyus_IWC>MJF@RyI6TQGr1rfa1s@#X>#?7|`2sfsjn;ktC_yT)e0LyRwi(pah%-lHk-nI=IY-=WE>U^fYhp zYj>wIm~e0&FAnpu{@{xQO3jBYVkPONXwB6;On(KA9_D)(Cl5=DjDCgz)haQd@1E+V z;0&l{;YmJ7+{19$UqUg#m#J7uaHo1zYOrvCI&5S~Zjd!Ja!C|TnN^LR@POo;pr|R( z7GKKJ(FoY%{2+`3UV_Y@=5XuXgQRF1)hTt~93B@J)qwTxhIt{3#5a>-%Q8(r4zAoF;s0_$klr}X6W<<6Mxv;!!^r}>bP*X% zzxu^=fB%<}@;a}K<7np1F|8ojH6GO~#d$C{quPaxgo%>MmxdG$k_LlC8=*EK$OG0; z$ApV}^4Ma36h7NS<7v}|8V>knz zSmV9dbxFul7}e;xV82A+?Gr;U^EtWFk>#TO_{s#T3$Oi(0Ye6H;eym=%%Ic^u0U=f z*cP|leHM^Mg9g@kk(j4@L}KW$;LB?LY78Dq+G?-Dk&RJfC^h^r9|ElL;P7&a+N#N% z0WzH0^rv9&CY8_z@|_V?Wzt193=@mg3UzQ_+odMjtwLGxkEgvQ%ijSn^~%GxI#b3~VqgE!^nWfc&*-)CHi zm0r#?@KZVkjt(@Z5C*n#gg7I^q{2|ANOn+_;57;i^wmjp zti^j<=|~h5wNd1oyqv-qxK~$guY%62S6nRQ-gMy>aL@iPSXhS+CCnq7!ab!5x=a;? z0T(jZjYJy7mf(ru<8-X@=kV}5r@#Ic2R|-Rp$!tsdNf56eCh* zuUyflr{DYJGL^&QN6~T&Oc4J;I@o{YAz(gn)fmq`-qsi$wQ4Mr8lNJWJX~0m=pvS- zASo$~YD5v;+|q|s88nm!0Bpo9hiaCW-AeNh$B3nd3FbdX62|2Ax=^}-vtS=3Y1!Cm~O_W~L)J;K=oDeeVu*G4pDy2g2 zCu)090DN|lOkRErZo#Ad>#3Qahy_S;T~?!{}%X&mVAo1 zU7l)uMiRSm^qQI+#bJ7y8!2?H5PH-Y4kEb^szQpT=AlGa#lPmF;}A-XJTgP^9|MF` zsKRg%S=3i7D>)hLIWe20%resZkoNkJl3oV4{S@;RVhUKtJ#P3KY4>Og6W*JXi()^C z&u%i@1rI6Vim*sX zYfUctCX@Kzr=v$!Ox#V&SiG((2{J@gc?ul*yIf`=;D-B;Wl{FcxNwn-0`C1i7z>YV zK?H-ZF%;)D$%c;~L0g5w1KLz@LRPPfGZ)h-P-y4S-u)zMe#85K=21xuzqa%Y3RI)B%uJ?vIJQ0KPV5>{XZ!0 ze^B24puGP9;8NlJ`E|qf6hE|%lt8<&~==dDx*`68fSb_&z z=iq&*3$wZ0x;$E(DN$LGUcyF@!XcAs)6)Rb<~ULig!vGLDzan-l2+qD;fual>$jJw zT4^w0JF8+Ng}N3cy;n9XZ48wv?_efMt(4;y1;vt*c9zHoHh!|kl-J+6?8u~~Mwm&H zAsmA<4M%f?@m)d=ZkrdFzQTEMpK5#$WUO>svF}QiUAl6-^1-;rz~tZp6x*29<75u1pu^3Plve zcMR(D?hnboZE(3{_D5X__I4_#D)Cc@WZ-07+`T(}UAFj&j-TaS7s*Nn98SwrPAhLs zc2=4Ej3`L2dw1apoDw$Qd~2{_Gy*%eel9R_ruUi*&beWFbQt`L|#{dhG z_InVv@de9R%=?jO1F>HpNgpjVoV2{@+WPrj>FA3$V|qGr7Zu6Q6!B(xv8ES}3#C)^ zlF8{*0|W#1;yMuzStHyW$oUZ)&YMC0=&;5UY39{eG?Jh94Cy=h%@BCQoGS6{atC1tf@%fH@ z5`vn{IIW~AsIpS}?VQ`D%hvYk+tqCvv68XvEfU`Ai(`w9uL;5Z1EtJ@4l-5qO43Vt zA-NW``W(a#ZKM59E}w#!5~wV8Yno)L{q%c(d#ETD((_f^pDrFN z8=snbEiv0Q-2EUzQ~!mOLvMn8i;N$vO2m1|0^BdVJf`1vjMeoIjy*M}D#Y`rp@-XO zQ=GDv7H!a?fLI7p+Yh~}W`BC_>#a}1+UOh}H5$a8vt($rs{Kp=#Nw^Im?%DVl{eR;}oKF?#D>DiGp$Xz=>!oXa$8O2;`63m{!J1miL;ANr`O%(~5*0CTep6EN{BE_^KK@2@9{7BksNLpLZ@1Z$HIujuIlMWg}D8Bjb90go3GqnIl&dsde(G-@v@`A!;Y)nvj=@K!b9P<^L?C?Hj0bq-p>~y$DR%kfpfP|u zn^BhaVe%~;vuX3|^K4|hmT7aJ_?4;b0)ez7XY%2?;Mc9E&hX%|o|JK#Mt{Cs6`P6| z$$)cCdG1xrTr2K&X1?|YD57n_)sNn^_m_)0wN-x`)F*sI$8vt1y1jWrdSfW$yVz{+ zNhsP1&!HlcNc#Zs3VA^Bf<-zb9q@-IgQZ6;q&>cmO-xL@>alA)vtFGdW7O$5t;Xm3 z1k<)C$VJD+_3^P&v@H6$@ImzBu2cgR6JVN=Ptz3#P_S@Na>BKamR9aa3zROI9QWH9 zdwxvRfkoZ!`xvcB|HJz4YYijM^O6s8rwIJ)?QMhuZR)1Q?XNo~JY1KV%7MddxW}qvigPEN?6%siQv)H22@Tl@u~U}xi9UfuC`yeR!ShDg=v zYRP<-u&N5o8?F<6*YSJ({zj~M+oOIf!^SrOhxA{BxQ}zkyH4`Kfsp=#Tce^|TSrCn z`=8sVh&zRNEMOvKfcI*9rfg#<7$UPHW# z=D!IBWJbrc+Dvr#6-jVy2Mi4j*>{C&CJI*}JSA*WOYuR|#zwGey-6YPrs-j9-+hG} zDM+|EqHxPUbWxUhS2eKlu5x2?S9|k=GR^H;GEF^JIZa&$>)P%XU2ipOj&Fd&RTVl; zow;2!l6gHk>vqLqlwPlhc&uKyR%ra@hbi8EX1UY04bC!cv@SWTo!MdHS2FuiS$d6= z_>&jjRcreMwyRUFxXcxa8gA4a)sODBAIzbs?jxV7%_a<kmGDTviw@?v zvfDE6K;@zU^*P6Zo3}Tgbm|;r7xpSkYcbO2^2&tME?|XNq$gr*@yUf%7R}8MIT6`>_vCqlg5;99500_JB=QPHP zsu9=2?p2PM9S1N;+X#a+R(Zn)j=%C7J>(y@H;Lx$ni4nBl!!K@2CSoO3S%1HHT>^c(7-}Ibjok3=+l{O=FTHM#0RwBkU zR>Yjfrhg)Xqh%{v6G z=@xavjmy!09`;rQLq5}8URh~-)Ur9?{nUcRwu^pxt2p791z@&v+fC8S2ic|Ldu>V+ zOamygD`syrOU>OxQ3X_`#B5z#w(2fgHdlP%wNj9YKAY1L{Xo%XS^Cf0F4ozl3&**< zY}g2z%~ii#QDVe(at3ixI|&jZW3)c4U@tW!+3+^wFjtGP<65 zQ8DhC6;l+E#zqde+tk326Dhtc#X9sf-oUIBUeCS1cfz+3E4npJeo1Ed+`T0C3#3JA z&t?Y8rRD}#Nz3h?>E)mEa~+{`ckK>IU+HtxqS@+`<8O>FwSUwraG^CA8~%Q+M!oA7 z;T}@j5`FN6Au+Z`zue(WPNX!~1{G}g9bF!L@iBHnr`F%LDi=QWg}Rv%+>Xd%hO>){ z<#gHLCLk-Z>F=MqEbB{zzn42LK5D$wtBbT2=iz>!k%9iEk|4%^#KNJzrbQjsaQes#e$_wU_P;w+)y0e!*B41QZN(KV zOL}j*e;z>}*U1P%U7E}~U-X@^1c%Z1#pV=<`yRC(EKB>;`1qTm^lml4vC8}3>fM`H ztGg!@U5&TzIhM9q^g1LNqHFcW#>V@p*|Jjjtak^=41a5HHUj8EJrbK}{wOuguNt&+ zEWN^l-n;v+h8AtdU*7}z(dLOxPqf@O2H%fqJN>H;PL9CPQ;rz8*7AXfOiMV^ViZq|16?)^)U<&|FVgH`J$hC)6JLw$-n3y!T$g zna1Jsy_HWI1qhTKXG#X-)zl$fA<`Q-O-QK46G9vSKRCJkDcTO`d3ea|ciq{O{eFS! zN!z`W(uKFD(Wjd*yjegvxni#B&|`ZN+3MRyce`Wz-FIY>LOMEcHW3wa20Q3=5Zm<_ z6f&xBZuc#({(EOiE-JbYGbL!%1I{Gf9$Iv}(JD?6KNs?Jxy!miBiaLeWI{U-u zDfE%v5o8}5CM-}!->EN|{qp00;LDAM!!kqmN!yYsjL}fQl_4~Y`ekPeNyPN^?TItew(9~2_U?)k%V?d?^)nO71ER?7FA zoyLT^k}p1cznNIpJyx-qOE@Xrpe(bcbIs?BVd)9oma@>QS~!#Q60ThnYkHAcN$r-2 zPFd5Ybgp2@fID+ghn`_V=T5s-_nqOOQu{jU)Is3{K+)VUZDE-YiYM94m6`NTKlx>|o4&}#wh4mdsZnd4kZ{|_8bEde<>kN2%mrsXez_kXt`8YInByWf6{H_hx;SdLDz$nal8KI##G=kXY5l#M&aI#E z`SU#dAr>X;E31{Ckn;dU>M~huLLlDX;cuoP;px=9_lXW=nq~c?<2EdxmY)%>uF8&A?QL)?|5g-H7`V$i;`GNh=P^eAbh(x2;yW`$%S!l zI7+vJs7iC`uaR!4_nTwKgxt3tk;k2NqT1fxzA|QbUm7I3o5t#hM#+-%h8jixlwQv@ z+B@eo=tdR4f%02K!%dkI@BzSmR?y)6cpVP7Ak71<7+ zICqV`NTT;%*_mO{o|v-P#OlB@v+sk0TFWzY?s1?*>BWhbvys-t15X}yvVMxtYW`id zGgbB8zAmAB<7$qXWp?=_)$zHW73@jhnNp(rjBJ z-siAA_qlf_l5RJ~JnS?@)DE1}+2`DQ=1SFOzs8FD+(5kJ&-FldnZyzLnO~bHJ(BF3 zFZj`OD+$@wD8hdKR4iOyR-m0PNZO8cD6~|L8?JiDlH<`oweD9%*njOw*=(%b@SNd1 z6%jz5xFkJt=U&A&_PDa^$o-YX{G(ado++VN4tVY6gZXoB=aO6*YsQG)w-0Ik zO>`Ulgm5O%TtgQIHw6aQHiW5H*!Qz)3@2M2%}a;mWGKBN2nr25Jkm8>)v!(5r#1Y{ zaE(@a$&;2Vz;ia<_T=2aYQ@sZ%2|&cSLw}l()W)h&p~a{c-Ezv1(l!Wc8h1kHUkTo zp!6i|cWaSyT{4uedw0^Dp5Ar+@2B^_;ujxfC%SJ~9*+wgj2S6v;9+jR{^OnqAlIL_ z%x_)3!O)9Bx-fAdgg+2XK;Qtpm-X{N_m1KU)r9ZFk9Mt*m5Gw}wFOQ?vxUS6%c2|S zHa0ic+c*t>hpP*|k^s)J%hrz-aS`58mmiH?7-$GMnV|A;{qXYwfMO=9qsh`?&Kqa`y3n~&1T#jFCPD>Er4aY<2BRt z#}-zV;os^4sX!`BzGmOyJ;bA7bWwcB;N)MZJim*LfAn7aSjjHSK-%=)ik!V`j&x~d z8EK0~a!po1Y?XwlEpyP8_zDv?sZcyE!R|PMmoHuBDxQ1v6AYbz3k#qK-kJ=He^{sg z=4iA(R7ISMd@yiw434{&2ihZrk;q9v68v}n5IXUqRs^%GVqE^e{_`PN(9Lg&QgOHt0#A^Z+rr?Z7U{Xvj=RF&)o(8_R65k^IW-mM zyn0FzEIFCU-;h`~BR9NoI){Vndid#_58)7CmJv<*!YaGLNOaIn1oxBm6L3=95bA#U z=djdi|1`9bq9H68p94H{_geHIVP_RgY}FFTMPJ&vRZfg>S9DHa`0L=U<3VM!m2sd% zzDBEvAkm>E-Agzq+^CD!->9kx{717_Fe${-g zV&&h8p&@)7LiF7g`s&V*bqV$S-ZF>Rwj);o^Yb?V(uC}s>bw{?@a=`wy9T3@0q4_G z*<}KUuyG#+F3i=u@?-g`{gb(X&2Xnhu>JiCfN6a|!*k-mCRk3F)+bJ{?rewF8s+r; zj$*N0qdzxWI>zR{_L@Dv9LrWEeA0t(2Tr;DY;@@4r9Xo*%X8-t;_*FjH2n7UX?TgN zBH2YqTdFEtENEZ>C~HK%P8>nJ4PwAJDJg*kgJ~A{R@;TYhNu>ypN@Pj{^vn=X}Xo;{s;er}+Ow@l=h6)4H>{s;7xdVcg*v^Fuy3IE-9^sE~nW-vE$UY9CNN;ESHmo|G_>xk*d-Wvk#MFGNn&FNy-1( zX(meeKAid)#^U^i^QLR{MZ6juku9^aLwn3^oC&{(Vro~{m+Z1xHRVrF4&wgE?H6_& zkc3mJoyLd!#Fs)9x?)r#PU?sa7m9Sn;DV)}piefF)ZKHOWF~>C`ZOLsJm1^< zhR;!3;JK<2HGA`O!s1y8k)1!f2sf>D6m^F7?UeP34;QviJoVW8xIaBJ6Q|3QDB;=S zHY9Vs%;C(4U95SMTeR_~Cwb>zym-NTMNhBb#M?}(>#c=ecP_S5<>T$~x}l0(0kznD zs+IR1B0#T_Ed)=sa9~+hK0yV2qD!VA$xW*^9WijO=VPmpF-sr$F>OYXhH3mlmJ5#YWU6 z)OyoOeSt=n^4W=CRgHL|uxxY^Yqc}Q}DTANGObxfiOSV_A z_cmv&A9RFNdhFZYr2RGWLK-JAb^E6BS+gak=It*|#N8g;s4Ec%2%OubKr2(5Z`wHC zo<_@h&~00rM)KD|{_A2%Po9vEeoOci(~9eg$!Jg2juCPvVYdGfh7+IslK0@V-2R~5 zm3K6q%ej~OK@WEO$Am6l{n>^Amzkz9nN24Nky#&G$))cKefQg!F^(FQ-ju^9zaO5H znPRzXWz`+2dr8_?(0xKizvLe4$aS;U-xsOj{>6R|1+#}=kGc7bG(Hbw$tCQKx9vGr z&OoAnZ7+{jg2qs;0xizoVWK~d(|dnJEmP?fZI!w1C7GEAR1rK{Cb(ok^TSe?k40+5!lB3VBz7#TzACEb9W>yUCp%zGHcYDK zYAFn5GsVolRZ^Rx#XmnhoZ@{j^)u*9YnFj1)zr@{?nW%UGYLk505oysX_`=zP=~9? zQ`9oibA(lpYbIc$AgHo^9bKC3kE`}3M*?onmUTx0T)rG5X?m8q{l|}5cEXZ!xU}1b z&`Nq9K5MqWti8Zoi>fIzuA4r!DMo21{dKTOT7rX#{eWGc0dJop!R_7ciWk`k=!|P* zTrv4|kCaccY+OITGn$U1I6yd@=@26Y=bjpDfHhUID)NdGNJ7=}T1J@LQ)J)>gzqRS z`%rLl1WXqh_XJup(ul8VW78aO*^nPRuE>D{9*lK`n325XK_j)uQH#|4#s88 z*G6bv?y?#e`k8&JadcYzj@HgbNmUsCjdFj@V;*gMuJh{8Tie=d{_yES7?swd@LWl~ z6sKfWs&UqME8|L(S~<&9XHHsaX>3&HwN?m1Xv=#=2cd1<~;@z#1;H;~7r7k2G6N}3FI!!LSa9oWrS_|cYc?3pNJ~r>T3S}nFS~apPUOxPx}BBj zL6swdx4)&vOU~Y@TP&zQ6DC?K_M-@Gzp*;if@t%6hnX8-6inP#Q%=cK-~%xXs%W55 z1w{?$#6Ql}R7N;Ig^u?E1D#IImbd20SFw4YL&qL|=lyUur((s#N^*HDjTano3b|#R z$fNIciEbHAe@49qmd*X)N*s-m^?+H=y3M2$VSufi24M@j4QuK zu2;EBW$K9*ye*CGXhP8etzmFS%^2a9(<=imHdI+zS^WARe9)%Eg87TU^Z_=_u*zL> z@wvIm&n$z+mA}h`4T*MhjgwCOQ@86KtCpp}P`{l{K`D)U-~rj3`&d~Qn@J$QVP$-c zFMCzYnGVQVsbF8WeR=i5rjv|`IUb3AFxwF7O`BSw>Zp-?zs@qPKpbxUEm6b|Xb%K( zN6*A);c(o7m1|saCUG-aHw6kzK2uR4Lpcpf)v~reb6PJOV`+gmGF*8jQsKOueC1T0 zcnV!t^yK6u@41}YntGp^0F58?{qSMnPWNaRPne>MJj{q6BokJ`$i30zi@blXdu2ZL z(_rm|fgPG+KPGNS)MA?pW@2#v~9UWR$z^;lmmrY?80{m6`TJd`Z%d z1Csl6bk58B4dw#I>Sqj!12r?UvPNQFhZt`JPW%x40p%o%Qpj-y7u__?S3<^HirBQG zq9~`uF=3A#NlO|e~v+Sie@2Dp*0 zQ4dA~+b@}a{lSNUOz<1+dv3DjzSVvY_J+#M=}+#Pv&!axV%GmUv5yRO)9OxK%f4|j zFs$a6ocF|A2-XEgBP8L6PhZo{n7lj1dk%|jyW03%upSFrdjrr0MkiOZ8XJHy2`m&Q z+h-Ek#Y5KGcA2N{teod`k!i=x~BNpp+yx~tq#4!;wYTwjUo>{{1 zHU?2YgKjG+A_os1jQ1E?2TP1oE4kZo$|R5x1!BE}$Itmkg}lR9-o4A!_(AQlaDX+2 zUYuyf3X{Oc6r2FJ8g6f2%erws|B2cmm~hMXwALE}5%KOl6A#R)YxcSR z@+Qac4i%OxjTORfT>!{v*-K>;bvbi zeyEeM*QGiUF6T|&8vDAQtx2G4x@KXdF;>F*RMPf0^DxD; z+szXw)V1@(E14gW&JU&aSo-v%voj)6?SxVg%V$82$ApabobNdQ=9Q}& z4sTw(I1YEZ(-3~*$Il;ahtUGG4Gh$yA4YjzrZB=ny1w&@LxKSypBzIJJcE^|DaTN( z3guBRqZbL_Nkus_l5Q)7oZA)f)o^J;xPEx5*H1j^2LcS+zAHhkQpF&R#s!-Ma@^+fA2}<>}Z*?7Bu*t1wbIIlF=;(m*Cql)<<#d!9 zf`EWwBT#F8x@68BgvOC-YHBiW%=SFz@4d`PMpaD7$w7(p;br1R$Q~jw6^g`hEBFW% zk^(sj&#vRDCV^!8^7X1flc0SR7MwnL?zaOR-W~n+?OP_%Sq#kQ=}8(AB<)9=jX@d= z1Yk}+Uxt$*7h;=lZhRKh9@N%4d-o4-sN4dR327i zFVuu`x?FzryW!;c)02s=;qq5AYN53(monMPD->(lH%;gTi^ibfr6|1qTfnk_Bm6aZ$N8gR8LL@gR za(tl9(T;(j(eO3ubSXh=HG;*qmL5%#;lH+}s5|{>Rpxb_s;d0VRyJ3i3c0hr{6nml zwS!N!_kP_+lPy|phqboX`KZ9w`W*%n^qxT$wXOa<*51}8Z#T4l)ULUEELUn@{yUQL znJk;vhy?wsCT2t+WfFE3Yxu(#k=F!R!s5(x)n>7o2NDI3CK#x;H3KH5A0+2OPvf4N=9p{KZVznp1!Y<8t9?eScH>s&l zhC^HqBxGb}y(VI#>jh6V^(&mA_3ClPAo;_G7d2qG-PbNj*s^evg+qu5gn}7pl!rZ6 z+~)_Y-U#iy(M^9a=hC8&6ou-fO!swrY|2dm`)<8TMdLoolV=}{Yv<$Dp?5t4kIPx( zdno9v83Cv7<8nDDF_d+ZPM#z7;T(VV)xoAw5E&U8zQKYJhQwWp!L_41zaQa(jCz!YUlf zXVyv>dYQVFt3crt7rQR{%isq&4bTA^M_OtJ$A%Lo8uZIEp=7j zW@b7q3fH&A_VnDKYJ7giyy?Yx{MX5j%+jGw(fkttTXfep?LEv5oO%tkIDBLmY7d1h z7ByC>nIjI*Dtr5|ukFde;SM9neOpueWj=yCt2R3ks_s`i9nIw?0|%r&Ch1eq;>_;b zSha50w>HHbAl%ma`}4E)U&_+8eNKxOz#nzqavTBHsr~Swx+JxXD_raITG@Agx~+yo zNr(Z0LCJiDOn*jmR2NcmB}x?pYB$Zsw8_?o?&>>n*58mDAtWDLa@3~CKoJ@-g(F>8AB z8m>y%YCDQJJQa*BtRU3%7QhQk_&Chvso-&o3<`l^FCSYcb9Y;{|El(OnsXUYA2Jx+ zIZ{=*-dW2uVFBR9b*VfAbykiaXC5!GVpj@b)6@%;F_nZ+^~YRqJ8*NhD&$Y?A+0wC zCHEefefh-+cp?-KlfdSJDf}UE*TUl0w}R$7&@aRXaC-Y`zu$Q>rH@>%1_D#_W{bOw zuT@S}H1oZ3&mgDi`TF;N+MjE8c~otq=%N4fYHOICRV;>AJJ>Xto5`n(3356gbZ0Jv zTTA3?a#5-l3Nv@5PM@`g>I;tph$n3E-Kg1h)rHq}%w=$N)ZiXZorbgSzEF6oYP23I5YH}l{QkIZ_v*7(~5$JvHA zgwlj8+Xfg!=ogtAiZxHH#y*GH6(q+ZY8Gn*antt9@&tdcVrf(l1h$)#73CKfk;uO6|2S z#fgRKa4XN-x&8hfV!JBkxcEm`D|~Cy!!;TW35c@0QInEW8v$zzQ(N^3RaMWJxEq?K z97dT934(y{ZXcB1coiaK|C1j$M+Jzza~H<&1M4e}_oszzQVj_^lFNT0wkAJV#UMzh zYD~n03SEWFOS)zkqf3B^4 zW;Y*w7YpFfqZ*sE-Dh69wa_U3Csct+#F<+2bljtjiL_X8D;~rJr~>*lES*06;Obzd zoA_@{<@=DSVr<8#sScggxML4aTi0!#)U@jH*DXBGrZg4`8e6~`3sB`Ny17X~x7Td8 zytMpp&4GCP6>$_75JhlH*!hPAo9nn-_wttmv{eCW! zmWjHt?)Jk?_@HNk?_*r%59)r4w~)>4)`o0MepZN-POUm#7JIlwhE0P2P(D{-zWC|1yR6-mb%_wJ?!mxP zD!15HkYD?E?H1@-#)x{bAsaJKdWc0a1|^bgrt@};v{GAi4G2g8BWVVZcDj7AIZ$Tg z3XSt8x$>K1NsfC(%$xqSXc1!nv^5Hhqz?Ag>L>@B$`W?YW#LVBy!Q3EwXg$Vg;51> zLBo~9!0ATeA-8Q!`4OT}Q=tZK#pL)k;6cZTVMRPCjaaBPky)y%Q##JfJn=SB$|b+Z zVKz^sq;H8?daE_$Z~guq#eBOFwbV;Vbw4KB$J4cvq;EbP(L!iE{{*6+k@qp)t{O`W zJSO!d`~A4r0U*N%H>+1w0cXaZTc<%Of2A(rK3CG_YKvWaQ&lQQKy&ryb zVTjXBytTyN00qr4(1W1f>TG}MdY$27>w#v|(Rcb7C~Us~k&-W5c97-ERhji;o3jP9 zIY*?Nmwp|UDSO&JU`yU2xkz1HI+V(cKHV{^Rde{}%`c^Qx*LhpA`&LlW~6&Z>@Z(;*#Q=+Nr!GMR*}udj z(CT_yf2pATw5PZhc#cx@Q7Oh1mi&{im4i}GH_NQLnussJrmM8|^?d^@8VjWNOv2yd zLu*TE(oIbzeHwBM3G09Tq`wjRc4Q=1`|L4jDi0bT7}S#gBggGj`oVFodAajei!bzz zD*%iwe0d%67e2Ydr2DD=)az}@hH@$v71Aa883tft=R(#}}OkpG(=rpEEVyv>iE&0p=b! z0xHCORg|z1umbC~Y41mh4R}?OMcB7GY3F+f`CFMBxF zlbJL8TkB>mDp?lBaUtlFFAM?mm-1kl7m%dd6Vd#)Y7S{hUUC_^KAPjPdHPn7L%&3E z%BlQ!UQ5|iO+|W!pRx${%zB3Q=NFIizkH4Qe1da?qs`7OE)%dygUKu#@x;l=yI_l| zmy#Yy82lbS>K6DahyAPI&gN0cjV>GjZ*Ac0Wu@oyw1nn=P^y@yqqd1^RYGk@_8NVO z)&}drpo6tcs*EHCnSfjgm6Ol6Rvb(0m(N!b@mC=X8qFsIWOLAFUuA! z8C;Or8n4&8-y!JH41sgp0_w)KA17r#zdv*d(^wp7jS1^Y6JpiWAjCWYtq zU?%RciYJiB<{Og;;e!J^2HB;v$BziyR8dBXnJ#D^{U*}#MtPMDpD`RP75vZAc;Y2I z&)5#_JDLxO)o%H`-s0MD2&$Wme?9g@4?7{S65hoi<+AdpIL>DHYtqezHw_UMcs$f_ z4Dv=+9alR479?#24r*?&cHZ(}g`)b^>wfaty0U?Ffq~^_M;$#qt2%Br-~1Npk=qHDZ1F6wC&TN%hL`H4bR!bny%{U*^j`mW$*e+FC?aSR; zI@_x}JTQ4@3X6-|zIVxn%u1oYvVlRK$vyymuYj-tN|1aO8@jW-aY&w{@pg9I6KCL2 z(obET|Ik@MqZ+BUmk&xJA6dYX=)Dc-(M4_|<*I}FYMgZ{@B}{wdTy74O<97hZ@{Iw z&tzp478hz8boxyfS*<@E;lK4E5;Dog%1k5R=#1H`nklF!5+XA%X7%&k(6Y;{YL)wT zSZy)%qSSzF=`V9kgDtSO27DAPa7)ciL8|C{(KPnHC~Sc;g(rTBH@m1IpT995Ul3T0 z2LcojZ!s`KT>xeS!^Tyhfm8?f7zK6w#?p*(w5k3zr{m0%-4hQl(96HPay6Mz&4*3} zmKmx@u~!uX{h(GQIGz@xV~LLds|BbW(FLFur@^mGR6P*tSy^WaqZ@y8EOR#IzY8Zr zH|L*X;ADW~TwsJlMegy03I($Ux)Z!D%7a3l0*TETc)atEk^j#QF^IOh}T98cAZgf_eWtb&N_cqdVRQBN`8t{s!AljSw@)lrU$QK#H;KuVL=oirsze3xyhY5d39v(~t85FtlJmvSuQS9}VMdEe) zSm1gfY6aS!qpD#dgBL*5!MOtd;@Z`4fOaoq9zR4egg;Lt%<& zK~#5;l*RhRe4x2-3+^5YXd{57bKEweNFhoXYZ55-f=*3QIhi|Lh4>m5>p+yn_VrGy z6kBRR4x@smoj-C6jIl;w7zbK>#_r;+;kem$XyhnIbn)oWh07LFQjzUrB=ch8Mt3!( zqT+?$G09VO(buX|hkvAFrH3Xl1gX&4U<_;xzC8>>X9UWIZ;&gXTq+OZUQI@FMFa0b z*$Wy%27?TQj@330Ehg%W1OrY{4qoTt4X<-K8%_tBGKs6jM!_Hkt|tatT+IQUibFWE z`6}p7_=C#69{Peb_pT8WhRlZ#_%!IFLO<0@j+0J)PXycyUPVqK55*fw(}8ucb~J8R zi|RTCRYo7wz{Dm8S$mNXY9Dj@>|sD+@Pr~EyN|%zi5Nge3oV8KVNNnSF(ni6WDep^ z5uc1ZvHMaNRORxjm?(!UBI87@a=;7d89XK6S!F%3bz(0-M74h;)kTW`*VAfHV%FNd zc}XXWR)3hk&Yw{5rNY~+XByyer2$0ON)Bf;;p)dm@n7I!onH%jM@?`W%G{gnN-}gbLAb}Uj z%rhux%OZPMJG^V}>L5)oj9^fHBZn8pdA*cn0HI*J%Y3UtYR zs8=6VgJp(|uk*LY=LV56(RK0o$cjf39q+%mCHgut;4U6v^1bA$@Dd@DK#EXw(^FR{ z_JaMX2EyDB-5z6bORxlpJ;@B{Cz#tNRG@AyO1e7uPBOQ=4_zoRN>T1csn4KfH08iW zPtsn8g^nVId^g6M1gdcPe1v$8Mv%}*Nz^y2Abs(~7c9JSijgFo0^V>$FhW*p`A<}a zmv^;?(FIsz=@gYADL`M%hbUj1a4@+i9aN;j2=__#?zTJ-4+UM204#YNLAeWX3lDh4 z!oSiE(Rfko6}E?t5i~Ck9%#aUh`5EPp6|gi^nwZ)z&H>gEW8g$q3%}HJA+6M|39Ls zlPkt4yv8Z~>5zC)yu{F{`HNskd; z00rU_-|hqU*<()GwpPy8SA>hSHSyP*;P?EiyGM)GNc zFqv&?RxluL=-(5+6DWDn@*}(iS^}NWcQ&=FsVJ zG|&JO2^5C3v^S4M730b2BdZPIh8P~?DSYVsg&E}ckeZOHV&qYfcY$nxHW|Rn3XIb; zFVf00w9-RZ0td*vvYQY-Ajf3%p`cRX5+(;CycUuG>>Dv{jWF?*M8gBkI1IqdTv!Gt z88M87r!x`-7FGgYT(wXS)fJGop{zi0>R*0`N)MtV)Pf-f2>-U&_26$Z6f96!yNVi z5GSEO2BLzAq1wk97J+~rC>7#FEx=S{>L^kLw2J*d?R^VelUJI)V9c79wO)M`rdZMp?@^>9`wB4)w)zb0s@Io zjiW0s;RueW}^^wn3Wal@CtdrBTzrB{P6 zB&;*St~0yPTRL)? zOccTYV_{;;PnWtP7vyoIX!JHPzO0paDUMR0XhQAk{d5jE90(x{h^e@)po@84vfN)q zssg~vLdNHyl=~P+3k+RS10hoYBM0F=@@6vGfnftg3C}GDEF35% zy#eZp$m357d``C(BEO>UUCaCoJ%dGKhca4w6D@!yDL`O{diYlad@E_dvpU*4P(NSE zR6XJicHKuKEEcJMedPVIq614=$9PP7woGZMR?ch!DGe-v1NIh_5$86dX#5{l0~3z( zBFu~;9x6W) zVAef}RHEkRfvXRtrmX@WVrT$~C!YHNrK%4w8MdmGAQ|D-4*9zp<={EfQOrLQuA(`L z>d~uftYBkf;B#8!64KNk6?(*&U3*#oj9B! zRuYeNkbr_st5oT1N<>k4%HjiVG{R-K5zG<}9go>uQoQ~d=R`BG8{F8=`QNTPN+Wut z2M_sR%4RUofrBUy0A2)Ahdc8?Mxz96;089w)36#8MZgMx{17`+&KwZadChR57BD(N zX4>Vrpnz~qHOwO1V$(qYgZl8`_n`tefzPJS=my?-Ri;yEy2SMGK{g08QKcS&{B@%> zUbYi9K#;QS(A5yK74>K8b$jY$1F^QC;`AnCx&W9Ne*mmsghK;FXG%~95Oxou64dtpkihmV-&t}*uqQ*s z?h^ENbpIxkcN7L7NwXdhIW zJZ{PeS^CD{%l5Wx72@hS*k8J`v1P7hb3mjWOPEZJayNn2A?mdrL z;3~L+;CM{*SLj4{Zi)s-N}+;h)TI6@a7-SU3q^ZVu;4A5ydgru>+wfA(cwlpzwpbo zEXWT-haH1Hp_yheDNyV<$OuIuk<)Y5A#i#rb%eN>Q+h>BiunJ26@u8v2o^Yxl@>O| zv(j3eh|+rZde24x2itE5*YZC@T_OK->Iy`3!diprDXMJLnZb!8Bgn)mxiZiy5oS0O zI35T=Do9~K#Ks}iWzmJ+Jf@Q;dlyFjJaQwDN~K^`K|q>t@4@3WBdlCryE0iJ_xOCX z08H^kaB5^%N5BS8%rU&acW3xWT132Q*HHEug@A^5MR+^nOi_bB7wQU^7t|F$3Uvi2 zqtwO`go)4-Or{x4d01~8#p85vI{QixDc?5%qbYq@IiTFXC)Jwb+2|tAUI9u zG=RS~F6(1uSR}}?d2~)!?F?nKIpI$fEJr}j6W#v-*f+=1ic-&Shg-RR-9EQxfY-PK zZ0HDMx53^i1>s954+&|n#dlrspAjK~5`}Q2P_t#}8ciig=)itu<#C$>O5CFM=kiYiw_o8 zL9KC088UN71f=2cCs0Uj3HO~E@qHREE2X-eM5o8wkjn2tH2p(v2ca&P77a|rIINVm zRyuf{mF)$|EMV^$p)Fx2Ax!CPu-X{51rn;IUk8|u3k-yx#E6)9xR+vUjU z1ou$qJSli_5q#Cb?#K)WUOBLq($WRe6e z5Q`${VNb7mMj&vPqCgoWk-`q#N2(ry1urlh>n}p;xM7H$DFI=NB!W$Zu?;a2+=hp5 zQ-d+!d0O+dvIh%5tI2~F2UJK(+d=Au zsHw?r6lQBqM8W9gpc=!<)jaYPo6wm)Au@I48c=v z-KI>B<=li5ehb&Xv2gvaOp}exM=_Tzxydsz7*8Sb;kFjCkJ+Hb1)Xqy^*rHFSz6g zh37ra8Dg7KsaOynFX&hMb7Og~DVz7}gG>50?kSfzRQN~~J->-;l;CC5uZndEzun%N zN>yVIXMVI}Y}9qSq%ZjP2c%z*bM3#~?yG9mgm!M~j8E7qe`nR!8cxe;(m~J#$6e(w z@9kJCxgqMVlZ95)8GpOIvDIAGZG2xBKRGsSvUoYNX*#-UY|?-@1YO6I@1=WK%A*sO z#NU{eyz+dCNI!YA`xc~jX?P&`_V(5@Z!S-%-CEG<7dAyBsdVC{-Jt2+^k5|Bl4kl> z4#Oc0Ts;YXK1)+rH=;?SbA}piFD8vjZ_ur+scBj7JMH3S5VxBM;+R9RvB`{|)gs=vpuic_^~jd8!B8$VRpGbs{Q_H(iP{gx~XF7{i!r5 zTOhd+z2ZEcP8e++*gzvht5ilObYFJE!?8~stMkf6s{M(c#$CBQnF<_UxV^?6yORx} zO_0K`&L^mi36O{;wCGSne0P#aTmY#U_7;$71`keFL00H+I}yxYqYp2xjb&BCZrg^? zz!MUlxj!Bn^s2cp!vf{F)bdy;pB(N|jfnBsq%4W=&NG)neYBj$) zzmkeg%Zf>!QYgd}d{P6$CzE;Jyu5vGl~c#G@j)C0r(a!xu|XiWe}O?ZAJz-n{0>Qo zdcY<~d|{H+hONE;bJQogbjL-zL{HW-t*)@CoXe{-7Nh+M4r!+CttTd?Nu^nFH$=1G zT_}`Uu)flX*yVE@v&1C?abSQq=-u5dMGCwiA3ICzQ&3e+#F5fYq!N4ChP7ZcL=;z^m&dOi55?Xt zAM)Ktm$$bb(no0{(QS8Kl4yAfKj-tY#FUOCKOE=XaOR_?F2`LhMX5Zhx#^HtzyIy? ztED$!`UDLk6UwIrN+zV}i2b-B~1-IpiF zMn%d_cYSnN-{hZ=u$#VZ3mc=bNe{hW5hTyTA*$)O0&2c5)TI=YO1ptIYmSs(>6DP* zmpy2%vP#rsHU%cQl;?4cg&GY6gze3&^W8APJFtIMVYH*Oam}5X6?k^0_mCuy6KI5s z!m@VjYK?0bLyorsWt&&b^nwW~ zBTP45ok=WFJY2B z#!@no)gAXP)l`k$!rfOe7x)*ApE&mSmmENO&L|TPup1PS!Gpx*wro+)qUr{1L5*3A6>OIi5)587)K82 z{Z|z0_SP8}B?NglPaIX|-o13cc>aL-zIR{;u>jUH3xN9dhoMqlY*Z~*w)JIttNh~Q z`&WF)$6;3+V`~&G69u9M*D^rM4RG=yz|2XYZ@Ym12Ji+T&#qe9L z^tn<`GJ-+(n%O!1SMJ4f_q~iav%i(q!pSv<^y=D{rW47;rdpw}ma))=h!(Y+{tu(E z=u%A>v4rPc%mJM4ZNVPA2EK`~Xymp_)ZCA*_I`1^=4j#)YcD4s?iiEvhx?CGsf7R# zp+s$N*Jy|_9D>i}*0-9W0*)1Puevc*_X*PF`}h<;d2}cJ4l&H!`e%_DMoR)N{9-z~ zKh_@^}sVUY_qpy|!08(SBD?hy01PnbK$e?;LMB95=y%N)srSCagTz@^*3L z{AuN!+wI>KVR*#H%1ZCvk490L|aaH-R+ zV=uzr7wgpJ3~$fbZG9c*o{%=AQ=c0ffljf0jD8B`s(Z6wGPO_ubDw0NcC78YlA6K6 znJ%UtxhKFRc<=$~x83qhz`k|qi^ojg_ws~-xyKF^#}JDEthS!mYh2&C4Tk5-@$*kS zMr{@t*etHO!))jGG~G9@weLzn^l3yA`mGz@&s zD2fUj?Lcu?`m^Y(himh=La&vE!N!__0mE?X0LBa%>?#s!tock#p)qi2G7c1k`@1Ib zzoJ~b$p`{cHhWskZ;^DZ#FCkoWqCM0_q&^kQNsD1i&81dffps2fY8QlIP-WBuy{#4 z)D7#}O|lzbZ^uL8hVk9JINc|1Rk-2k_3u-e?AvWykt|wtn&;0%iaf?D7 z-*Wn}8}*AV+*)`Bk`b|KB$9v!NPgm?kv8l{_Apr&#w_4ejuloq!3GhpT3R+fdHAU7 zmiciE4cW&Yq_45-kW!2a1o@ep$Y9v5zdN-k-B#XA3f@q2u>`dFzDsAsR6Td2e+_QrJlFHz5i`Qj=3lI@za{Na|G5c z)HB7!TiebM7;#=0+#S!%dxys@6QdH4PYf3dz!M91;@trB3P5x8-Z&mdtK{yra}ITIHE* z4!mP|Jp9_aGKPvwJ$K5JS5IUQb^%MXEQ90I7Op%9Hy}e5MY%CwOOiy|8d)6#8DxCUDTOh*>>Xa{^ZH0{NA8(vPikBCzkK!-OiEigUc`F%-QCr>Pev!PW3uYNz;YS3<~M)&R{y?SdwRsQM2QR_Q1gI@7flwG<>lkH)((I zVUQ8KA$gBQHU`CnF2*mg`hX@gqWM)I4o z+23B0qT74fjo}bg>2xShG}-C___Hf=K_A1H;`-nCTZpQXg`TABY!LBz`D=3tHl1(_Z^mG#YG7n5xe>Y z3IR!kquxHh7fCj;UgEeWf2bUB=0qH-+OdONsXuim;1 z-)6ebe%Gupoq6|8mm`xWNr_IVdmYLQZ^UwV;II$h=7o}cez;jDAGb!6zOa4%6xEE? zfU}(n>9r!&tHMP%`L*rEtzC|{KRO`xJ!Gejzq+XFRrjdVYu_H_4HbkqT*)aEN@&BzvXu)uDm!Pns>+LG?vUi^AE1Mv`uCpK&KtMT9;?ugoLVM z%BYG~A3<__l&tfxn_W47>Ha*IP0BKN^4f9hNEJ2{uso&d!Q=5(n?{Byz3VU z!Kl|KZz{W;ytsJoiaGHI-hi?ezU03ac(7l)XjH-6s<8*=)E;8h`Y)Jz7VD3M?iTxs z=7~MU<()?g9(Q*kk)Bcr4PRUL`B>eNivHf8(FbFm5j%c6f4Y-{I>Ize|~Odi|Z5Q5)YM+v?{R*r7{G z0qo|5p5c$WrtNxD=$gNxD6Tee`Qp^T4mZ2xht>P+{Ox89S1QSh6=-t*#iRdi32ZM& zgV4j5&PtU^QZ_&Mr1G6khrmr`{+nYO0yS`nIWlwV{!!k$T(q2|N~b6Z(s!C}b;sI$ zdjZzW2?=lt>&^rAgAgGBNYl6DBN@ls|Uu=*ok;E-jv6?`&7#bK)+ti2eT8 z*0DQ+mlswE5TpG4qBbg*rtsnXABn39-0_VRYQTZK=k zc3L18iNW={*H4F|>*lP*2wdmaEj}~NY2nfo$%^ygqoQ4QCt;rmfh$!ysYi{jubr4m zws=07n&d9uH!YBCf7ng5kHxko6Nc65x9zb6U9Vg+CJh_BSZHqvpARW?8$Xkk7c{!3 zj3@v+Csagj^yB*U{A+VDc7d=8cR%Yj1^c3DS#JxXPRBb24i{p>*I(xo>dGpA{QfmD zHdYWg9sB;WxR%U0y>iExD}wq8RUun-*ex*JWtLr*#7iLdnX)!|z9No4aYO(%HI8QF z*OFHvEn@|>*s>v$-KNXkfNf-{>0is@kT7FAPUQFUrpSa}9XtB=`B!JU9(d5ZyBaMb zN*@~ul*Hb-G)1XfdmX8m0QWpoM%awTNH_oH$Dj32$Vkd97bbZ0>+%`D%vhUi$g+%H zaMXQa^as;E`{1pA8+Kvf{l43yP6s_a85;laY((Bi?^%rZxO%O^qkM5_a!# zM843*sG<3JTvqCfr+$DW^7wh#ntcMu>!X)UY0Jhr;<%wNhmkqp&E&i_Ql(7ut5pQE zrP3Q`5?;1Z00}tQ=UT(1Fx|hbWk>)Lyw&Q_$8G?e!^E9OEMlMkK>d&XkW_tW(=pa^G45{ z9#J+5&t+D;6L1sC@>}(IWxHmh=%Q01b+dLLylEq~J557}a%Sz`bL*WO zuW9!P(>Eo4C)RprtRINGF+%GZt&KONhBx#!eP-~`-##CNlZwi5=I#J$LfOY1J9I&Q zgA!`D@~v?cC$_NUp5K!ttx|(Va_h@$IZ}gS=lC|dRbY_E8R*cPxVuHI4UIVVq~$%_ z1?(Ns{vXB4i2ko1H?+K@466XR+}MoH)O{hklRMJrP|9`Yz~MwXl=qfAK$Rvjt1-$; zK{U17Vf-cO!;`7F{h>a3s`+VMFFWLw?55OBz0Mfr##S{t`|BccwIPl8@qgEQmdNBS zx#F#odl?~NBW*bx1{;2X6P9x)uvLl>dV+o?u65#A08r)jd4oi%?k)JV-*j)V!@x3py+zsh zPI_MxD`W!2uoXQ#X`a?S_x7?v5>#=Gdm*^+DLI6@&}nll4#ZWKAm z6^-NOiYS(d*M`2n-qNi2INYu;(PonkYB5-Doe!E&*5TEAfAi=v2S%A9pzNK1SAIUj z5t?Fn3|k=1&ZoWY7oFJ4xSqUo!;RDRx36zj;C_@bHGE={lPW?FU!dD)stxdDb%;?a z3zTNU-6l9T%~Ck4-U+~Uv?#6nk>b&ccZT<@c^hZ3JDe@IatD6@U<`xJcuVfke?*Zx zenezJ=Sj<#XT39mMWJ7;;l<^1T?`X}VQ*!NcaEprEe`IEtRmLHy(O&%g@+S6cIHk6 z%~go9i{Mma6WM6zY`g7<;UXSm@Ys&DP@X*e%$1jXc^oE>oydE#Wc}F%XKtuvhUUCe z!^)WXxet@am3H>93~M`zBJE_6XLfX++_B5RNnfvd(>&$PX?!2ymo@L)_$duX{w$yR z!vo7ATvA)0-Ghs(IP8!AvYE&GobyL9mt}u3l>yPvK{m%0qpIY*k2>N{{oR-g=NDk0+KgoK&MGS7Y>ZyP?EGOxxLnIdMAK9*8&%*?=A555oWWiudcA3wiM3O~&l71R zwF=toMRy&v6Bc&L`JdXz6w`To>AY;_ToISgqx~czYLG?Uy>6=(_J?!793}vdPdvq+ z&G6;1xNOSRkH^Vnaxzo%C0<4^)|xyN*;GvCaR1BcdvFq|Oc*$uVo(&!g+loWz8>c~ zvhE_|m72&ENdP`_9V2Zf*8?qXNQHQoMx_N;yeUewHO!jouwKVA(u1Qpyd%Z-MzwLd z0;*AP*Y?d(^OMIp9QkJ!`1h6r=O}v6f_oN7FeuC6_Z)x_Hx*yXB8wZv+Du&k4)vcf z-lowe&Jf(BaPMofWxMHiOB4U*ji7x7x)kZp?;_6pM-5l&rG~ zF29z~HZfUDKr?<)6?c4u^-~`{rnyK|S==pbK^{M!hxC&L^uSNruRW?Da`CO6CO%hE z#O1qt%ZBCKiu=9!$W`%oR+A)W8?)?_qaE@2{8|@5-n7>kHnw)kPTalET|tS5&cMEV4DqfwgQr9vWg^v zFKuPf+C9cwQ+bmBBQWc!p83(@0`q#zS!N^a%=|kB^pC8W@7psy!J4X*8#K+h38M($ zC?fRXU!9#aQ?v1|W+TOO*vrbLvo9EEq^ImGx@~8u?UCRKRNGw*><#c(YotSsH%0yH zLta5?w=B?h1nt}KKi5~d!dznRap$=(9oT0(`zk=&YalRy8^{$R zP&lY=92S}-wQ&Y7fN+-}TeR~%C00{Z8xrfxP()Mq7uR3YW-?StXFzC@Q?GY#DlO{5 zK-R6-RQ5@WSVdo*4Wf2?qi_m|1eq*P_FH>+$U&9OP_0L4bU~yD+Yts2K|?Q=%te)( z1{A^LIP6S(Vb^%-?nas?;(c=PJ>@+nDvJPx&v=}PICDdzsKhe%!PiJx_Mlki=kH;S z86jyJAi?A=cQ)_hYvMB=6esa5xe~?)6I=x!4gp5W5elY{G_ccyDBfLsVb&{jmqGJ4 zMBxN1FT1zC%DcC!&byagtX6)YSUhEEC?mS%Vv*1o* zD1mM&R-4-t%84z&M718c+8uc&{@{DSa$jNXm+P_Q;f3;K5|lE*sBDDVA9-RwSsgRN z%)h^unEMpJSQgNOxRY%CuP$jEn+H^g(BC-Q*T23B+Xm7VhIwPg$1)1XaXj<4%%6r3H5wG2xt;0{hiqAgC{BlJlsX*_LTSfX^`u-Q(YbMd4IYn@zsj>Y+%HF@4q z6_TjWo@#GdI`5w^r7JR&ze_0`X1})!yKOf$tfI<3%^IP44=y8%3W}?@Ij9`i97b=9 zMv^5OYJATh8=t!BdE+y&!@!2Z0fHqCzOJ*ZV>@~@wRjTLc`MfsmPA3W6z;zbZeJP7j__P;VD$1DXYoJ5x>!^Qm)m@bdr_?|p+GgDZ& z&B4x=v81-nxQ%J+%j?|X;LE8#u_T{s%jU^W*q;>YC;dB6q(;OFW((Tr;HK;Szjt7; z6)bjt%vT(0rh0)!WA>4KTEsLqoQ~2?YF@xq@Cy{&)xu`UF??OD_hmEYina!D=2Agf zCv61`o`{h(`qzaz@^vb#h`WX-%Whf|cknk4u(o1(@j9zNn?kR`*QKT?M*e7a|D3{Y z%9th1d{#b_Ex280)TF;*4%I-TPpz>3rq*HfRg z?b;NUh$|FrC1bsXum6py=0qZ}w-Cu)nfkhpb)aKQV z#>EVSSa10CNrV&BvB|*hD~e2MJeGxGKT(}Qdr)!*TLB_sE1vnWhW}I0)WFCg1H9I3 z`IoX9$jTx?MKh0^!6-};LOJ=?01@d`GVCXeA)@r)ob!k%=&Yf?b}5TML6hi$(Ex?1 z8u)(*RT6^CF0ASLL|!T2LdEojm%l**8RVPk!RF=09h`$o2l!X^T(o+$7Ko!j&j=^}+WN;?&)HvUxvQm3RyLW2yB;q>htt;_0I3 z!XGd(7DB>In`7@8qQrWXub)K~qkc&27yoEt`IEjaUtW8LWQlW$PEqDCyD<(a+MZqlVI>Zn!rnWK z&c-wtf~Zo&A}<^iN7tj2gFu6dNPerR)ixQZb#YCsMPO7hWq4=d!M-*XbsCr)2IZiQ z(fjj}AU^m+6O7Fp7r{q(?cv?qE!JYc9%~Bq(WVo2o$5H8BIle7f)O#{*6E@*j%zk5 zxHL=S=Q>k$WEhgv0}twYufJ9p%{YZO4JC?|V>r(20#q_6?A>d0<08#nw;0Ax7IW8; zAhXlIsq6KUNd&cZl3TbI(~mk&2a1)*kgZU5eub;T$Q+Pm4~=?ZJjh7 zv45iMO}sLRICHpIDQ61p@|8kFz)@Q%|>WPz%#i<9DKy5=8PHh+hKXt7N_WTrbld}fu9 zWAhR-oK#|}kGr+j1Gk!-RSveQkXFMN9?poztaKS`HRU{BuIs7qMdXlFEgN^|f*q-D=MhpaF}w3B5JF z-RoyJU~3RL;~9J5iKd_Ym&}`?@|&7qh)ITON-fw^U*dZRWRR?5Dra52gm*$Mht zcr$j?o~ofs(nKT%YX<5`qC(@EkOvPKFjJu4raSl^iogH{YG^0atV2Rx7S6yzd6FhO zE~J$W)Pv)1(^*|##?8QDpT5NaTAT~w0r1k05``eUq-d7NiH#+Cb*(W+z*=^#XJ*(a84r$2p5a{kCS)2P&CTTAqpFtVM++p z2;`bjdiDirI)N)vF_0IbB_O5HxOTR)|IRLdZt{HkCu>6WRLC0!1;Z$Xs7S)!(0d%v zj!JLiRB1$QN}zta#_Y!@a5eZE&H&7Ws?`}H4=T)oMHXf4QoPfT!3#Q#2V1TywPmRG z2=%M!Rw=Xx*+!gE8}|$oARzy!P0AJ9l;?sF^~L!M(|+vJP%}k1QdJv)pg-|UrHWb zm=TY9&SIpAQp{d_eX}kWPT`>6ONtpP;HYrGVx%)Q8YB<8n1 z{cd4@E}o6X;9%M8R<&`o3bH?jTBnUXGzRc6@lyZG0V5b5S61I59xcZ(Vu5B6+B>ud z$D*WQx_W3Y`-6dcW0Np>oZO*6hc14a6ZxBx_xz)3&yjT@sp8l<29+KuZ1R(RY5w4= zxGXDdNE*jkU3ZIKWov+A-URT$g&*;t4j6qJeWEBM{+Rt4oOA&oqkZuTcT) z8h{gwDh?2ZB_ln^L9DAG6Qy(FfbyYa#z^kTrUrZ*Q$!6yRAxhwKLh~CCZ?iV7sG8! z-2-{T!co2L4B~;BtR7}cS5Y(b2XLMU3kM4Jwtd1H9;%Ihc`FkZMn1K)f1NbbgYDDsL4tEsp#Ax; z>7B}NP1zf%lA&S3Y$YL_2z@ovn8<1DrFUMs*Abs?)ju_tj1#NmJEEWcWpLjBN97LI*3RBOpl<1_U+&bg_Ub2B6 zt0kU-q=Zbgu~(BlS}^z_y8W>RRic~8?r*2&V#qa@^sS@G3~Y@u4P_2J~d^} z4&_8xcc?LJTC-ER#~8!F8-e(A>f*g`dmt67DjP{?#I#rQI&4Xw70((hjH<62&YsBp@hIGVKych(r%o#LzfYH^z4BU+yFU! z7!28Ah;y}jG9daAyc~x8waxQTHTGgOjlIAqm=3C26OBC5dJh8(MFUv><9GZGW}AhxgL^VCTqqsA{@`I}BWPkC zWOSz71!RgtLxNTO?|1&cEHjgHU|`_4?J}IbiqR(&>S8G<6rMmPNseIwM{!!041)O4 zKk5hOddwb{Mty5}Nwu1IvIb7H#|V>#s;xWV1Udj3KlcwV%B!lXOr8r23#dUQd_@T_ zLP6bzI^v>Ac$o&W*k5P$JF*%eegr(j$qrvQoYkjE+M$7u*7d^8sIaE&56Qu7c%TyX z+F>`45;lXP^a*0CQxowKKhXr^&@Qnr%IbM>WK{?N5NpXPsGK;{d>rK^kc)*R@lx1Y zyxO>p43QuP*-Rn`AWg@aTotm(c~-anJBEG-UnFg>=6subpsqIo%|9PO?9XT#1Xcfn z1_rEt95z=^;t{-dE*3hF9!wZuUuTRj)Wwq^R-#M9(aH(LndzJlo;@fvO`%G4ka-E- zj^K?j!X)rJ7u(BOBq&NvO+qwl1%ze2 z>)5moG@;d<7NF;$z=557s1ZY=VTC_vkk4lWx13?Q2ZOOrBcEGmJ*xPl4&}co zuh3^<6d~>o1ftwyj3qG%^YFm0F?tg6EcGM;LK8oOhh|tT004w&XcGyEinyzJ8;SSO z3VzLw&mwU-jD+d`%ZG;Ko-yNu*{xA(O+xp|%QSVkhf810!`}xydW})Zv$5V3D1R92Zw14)Z`Jbh5 a1_N$p_;$^3ZD9_>k0|k6(E;I`vi}G6DxP@& diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json deleted file mode 100644 index ad13e82847..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.02.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-realistic-2-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 471, - "y": 206, - "width": 378, - "height": 378 - }, - "normalizedRect": { - "x": 39.05, - "y": 32.09, - "width": 31.34, - "height": 58.88 - }, - "differentPixels": 10175, - "shareOfDiffPercentage": 99.96, - "densityPercentage": 7.12, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#faf3fb", - "averageCurrentColorHex": "#efe8f0", - "baselineLuminance": 245, - "currentLuminance": 234, - "dominantChange": "mixed" - }, - { - "index": 2, - "rect": { - "x": 483, - "y": 215, - "width": 2, - "height": 2 - }, - "normalizedRect": { - "x": 40.05, - "y": 33.49, - "width": 0.17, - "height": 0.31 - }, - "differentPixels": 3, - "shareOfDiffPercentage": 0.03, - "densityPercentage": 75, - "shape": "compact", - "size": "small", - "location": "center", - "averageBaselineColorHex": "#fbf4fc", - "averageCurrentColorHex": "#f6eff6", - "baselineLuminance": 246, - "currentLuminance": 241, - "dominantChange": "mixed" - }, - { - "index": 3, - "rect": { - "x": 835, - "y": 213, - "width": 1, - "height": 1 - }, - "normalizedRect": { - "x": 69.24, - "y": 33.18, - "width": 0.08, - "height": 0.16 - }, - "differentPixels": 1, - "shareOfDiffPercentage": 0.01, - "densityPercentage": 100, - "shape": "compact", - "size": "small", - "location": "middle-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f7f0f8", - "baselineLuminance": 248, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "totalPixels": 774252, - "differentPixels": 10179, - "mismatchPercentage": 1.31, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-2-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2-shot.json b/example/visual/evidence/sensitivity/ios/realistic-2-shot.json deleted file mode 100644 index 34513b5109..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-2-shot.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/realistic-2.png", - "width": 1206, - "height": 642, - "logicalWidth": 402, - "logicalHeight": 214, - "pixelDensity": 3 - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-2.png b/example/visual/evidence/sensitivity/ios/realistic-2.png deleted file mode 100644 index 38ab27c684caf74c931fe75aa5e5b7362b788ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81121 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 a1_N$p_;$^3ZD9_>k0|k6(E;I`vi}G6DxP@& diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json deleted file mode 100644 index 83789d5afa..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.02.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-realistic-3-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 471, - "y": 206, - "width": 378, - "height": 378 - }, - "normalizedRect": { - "x": 39.05, - "y": 32.09, - "width": 31.34, - "height": 58.88 - }, - "differentPixels": 10175, - "shareOfDiffPercentage": 99.96, - "densityPercentage": 7.12, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#faf3fb", - "averageCurrentColorHex": "#efe8f0", - "baselineLuminance": 245, - "currentLuminance": 234, - "dominantChange": "mixed" - }, - { - "index": 2, - "rect": { - "x": 483, - "y": 215, - "width": 2, - "height": 2 - }, - "normalizedRect": { - "x": 40.05, - "y": 33.49, - "width": 0.17, - "height": 0.31 - }, - "differentPixels": 3, - "shareOfDiffPercentage": 0.03, - "densityPercentage": 75, - "shape": "compact", - "size": "small", - "location": "center", - "averageBaselineColorHex": "#fbf4fc", - "averageCurrentColorHex": "#f6eff6", - "baselineLuminance": 246, - "currentLuminance": 241, - "dominantChange": "mixed" - }, - { - "index": 3, - "rect": { - "x": 835, - "y": 213, - "width": 1, - "height": 1 - }, - "normalizedRect": { - "x": 69.24, - "y": 33.18, - "width": 0.08, - "height": 0.16 - }, - "differentPixels": 1, - "shareOfDiffPercentage": 0.01, - "densityPercentage": 100, - "shape": "compact", - "size": "small", - "location": "middle-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f7f0f8", - "baselineLuminance": 248, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "totalPixels": 774252, - "differentPixels": 10179, - "mismatchPercentage": 1.31, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-3-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3-shot.json b/example/visual/evidence/sensitivity/ios/realistic-3-shot.json deleted file mode 100644 index d61a83c0ca..0000000000 --- a/example/visual/evidence/sensitivity/ios/realistic-3-shot.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/realistic-3.png", - "width": 1206, - "height": 642, - "logicalWidth": 402, - "logicalHeight": 214, - "pixelDensity": 3 - } -} diff --git a/example/visual/evidence/sensitivity/ios/realistic-3.png b/example/visual/evidence/sensitivity/ios/realistic-3.png deleted file mode 100644 index 38ab27c684caf74c931fe75aa5e5b7362b788ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81121 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 a1_N$p_;$^3ZD9_>k0|k6(E;I`vi}G6DxP@& diff --git a/example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/sensitivity/ios/reverted-diff-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/sensitivity/ios/reverted-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/ios/reverted-shot.json b/example/visual/evidence/sensitivity/ios/reverted-shot.json deleted file mode 100644 index acd05525ed..0000000000 --- a/example/visual/evidence/sensitivity/ios/reverted-shot.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/reverted.png", - "width": 1206, - "height": 642, - "logicalWidth": 402, - "logicalHeight": 214, - "pixelDensity": 3 - } -} diff --git a/example/visual/evidence/sensitivity/ios/reverted.png b/example/visual/evidence/sensitivity/ios/reverted.png deleted file mode 100644 index 5eb2aa499f39cc1ceefbe56a14fa693154ee2259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62787 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 GGyXR Date: Mon, 14 Sep 2026 10:36:12 +0200 Subject: [PATCH 07/18] test(example): validate the PoC against the ask and close the gaps - Web: actually tried. open and full-page screenshot work; --crop-on is refused (CROP_TARGET_NOT_ACCEPTED / PENDING_PIXEL_IDENTITY_EVIDENCE). Transcript in evidence/web-excerpt.json, issue 20. - One reproduction sequence for both platforms with a table of the platform-specific values, instead of two diverging command blocks; the Android dev-launcher step is now in it. Points at the runner branch as the single-script form. - Five issues filed on callstack/agent-device (#2579-#2583) and linked from issues.md. - No em dashes; three self-certifying phrases removed. --- example/visual/README.md | 126 +++++++++--------- .../diff-images/web-full-page-screenshot.png | Bin 0 -> 24073 bytes example/visual/evidence/issues.md | 82 ++++++++---- example/visual/evidence/web-excerpt.json | 33 +++++ 4 files changed, 153 insertions(+), 88 deletions(-) create mode 100644 example/visual/evidence/diff-images/web-full-page-screenshot.png create mode 100644 example/visual/evidence/web-excerpt.json diff --git a/example/visual/README.md b/example/visual/README.md index f9b9a044a7..96c2e425f6 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -1,53 +1,53 @@ -# Visual regression PoC — agent-device on the example app +# Visual regression PoC: agent-device on the example app -**Status: proof of concept, complete. Under review in #5115.** iOS and Android, one component, hand-run CLI. A hardened runner script and the full raw evidence that grew out of review live on branch `poc/agent-device-visual-runner`; they are deliberately not in this PR. +Proof of concept, under review in #5115. iOS and Android against the existing example screens, `Surface` only, agent-device and its own diff. A runner script that grew out of review, and the full raw evidence, are on branch `poc/agent-device-visual-runner`, deliberately not in this PR. ## The question, and the answer Does [agent-device](https://github.com/callstack/agent-device) capture the existing example screens deterministically enough to diff `Surface` against a baseline, and does that diff catch a realistic regression rather than only a gross one? -**Yes on both platforms, with one catch.** The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression — elevation level 1 rendering the level-2 shadow — is caught cleanly at `--threshold 0.02`, on exactly the right card, and is **bit-identical across three independent captures per platform**. But at agent-device's **default threshold (0.1) that same regression is reported as a perfect match** on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. +Yes on both platforms, with one catch. The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression, elevation level 1 rendering the level-2 shadow, is caught at `--threshold 0.02`, on exactly the right card, and gives the same pixel count on three independent captures per platform. At agent-device's default threshold (0.1) that same regression is reported as a perfect match on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. Filed as [callstack/agent-device#2579](https://github.com/callstack/agent-device/issues/2579). ## Setup - Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client, agent-device 0.21.0 via `npx`. No Storybook, no extra screens. - iPhone 17 Pro simulator (iOS 26.5, 3x) and `Pixel_10_Pro` emulator (API 37, 480 dpi, `hw.gpu.mode=auto`). Pinned in `env.json`; baselines are valid for that configuration only. -- The only app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat` — named so they cannot be mistaken for the library defaults removed in #5088 and #5099). `screenshot --crop-on 'id="…"'` then crops to exactly that section: 402x214 logical, 1206x642 px at `--pixel-density 3` on iOS; 1280x642 native px on Android. -- No animation freezing, status-bar normalisation or release build was needed for these captures. The crop excludes the status bar and LogBox. +- The only app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat`, named so they cannot be mistaken for the library defaults removed in #5088 and #5099). `screenshot --crop-on 'id="…"'` then crops to exactly that section: 402x214 logical, 1206x642 px at `--pixel-density 3` on iOS; 1280x642 native px on Android. +- No animation freezing, status-bar normalisation or release build was needed. The crop excludes the status bar and LogBox. -**Why not `accessible`.** An earlier revision also set `accessible` on the sections, assuming Android needed it. It didn't, and on iOS it collapsed each section into one VoiceOver element: 2 Elevation-labelled nodes on screen instead of 26, the section a childless leaf labelled `"Elevated surface, Elevation 0, … Elevation 5, Vertical scroll bar, 3 pages"`. `testID` alone resolves the crop to the identical rect on both platforms and has no effect on the accessibility tree. Excerpts of the four trees are in `evidence/a11y-excerpt.json`; the full dumps are on the runner branch. +Why not `accessible`: an earlier revision also set `accessible` on the sections, assuming Android needed it. It did not, and on iOS it collapsed each section into one VoiceOver element: 2 Elevation-labelled nodes on screen instead of 26, the section a childless leaf labelled `"Elevated surface, Elevation 0, … Elevation 5, Vertical scroll bar, 3 pages"`. `testID` alone resolves the crop to the identical rect on both platforms and has no effect on the accessibility tree. Excerpts in `evidence/a11y-excerpt.json`. ## iOS -Stability — four captures of `surface-example-elevated` against the baseline, 774,252 px each: +Stability, four captures of `surface-example-elevated` against the baseline, 774,252 px each: -| capture | @ 0.1 | @ 0.02 | regions | -| ------------------------------------------------- | ----- | ------ | ------- | -| warm-1 / warm-2 / warm-3 | 0 | 0 | 0 | -| relaunch-1 (`open --relaunch`, pid 27223 → 37870) | 0 | 0 | 0 | +| capture | @ 0.1 | @ 0.02 | regions | +| -------------------------------------------------- | ----- | ------ | ------- | +| warm-1 / warm-2 / warm-3 | 0 | 0 | 0 | +| relaunch-1 (`open --relaunch`, pid 27223 to 37870) | 0 | 0 | 0 | -Sensitivity — one-line changes to the iOS branch of `src/components/Surface.tsx`, reverted after each capture (revert re-diffed to 0): +Sensitivity, one-line changes to the iOS branch of `src/components/Surface.tsx`, reverted after each capture (revert re-diffed to 0): -| break | @ 0.1 (default) | @ 0.02 | -| ------------------------------------------------------ | --------------------------- | ------------------------------------------------------------------ | -| Gross — every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | -| Realistic — level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, one 378x378 region on the Elevation 1 card | +| break | @ 0.1 (default) | @ 0.02 | +| ----------------------------------------------------- | --------------------------- | ------------------------------------------------------------------ | +| Gross: every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | +| Realistic: level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, one 378x378 region on the Elevation 1 card | ## Android -Stability — four captures against the baseline, 821,760 px each, thresholds pre-declared before capturing: +Stability, four captures against the baseline, 821,760 px each, thresholds declared before capturing: -| capture | @ 0.1 | @ 0.05 | @ 0.02 | @ 0.01 | regions | -| ------------------------------------------------ | ----- | ------ | ------ | ------ | ------- | -| warm-1 / warm-2 / warm-3 | 0 | 0 | 0 | 0 | 0 | -| relaunch-1 (`open --relaunch`, pid 9944 → 10860) | 0 | 0 | 0 | 0 | 0 | +| capture | @ 0.1 | @ 0.05 | @ 0.02 | @ 0.01 | regions | +| ------------------------------------------------- | ----- | ------ | ------ | ------ | ------- | +| warm-1 / warm-2 / warm-3 | 0 | 0 | 0 | 0 | 0 | +| relaunch-1 (`open --relaunch`, pid 9944 to 10860) | 0 | 0 | 0 | 0 | 0 | -Sensitivity — one-line changes to the Android branch (`androidElevationLevels[…]`), reverted after each capture: +Sensitivity, one-line changes to the Android branch (`androidElevationLevels[…]`), reverted after each capture: -| break | @ 0.1 (default) | @ 0.05 | @ 0.02 | @ 0.01 | -| ------------------------------------------- | ----------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| Gross — every elevated surface gets level 5 | 65,051 px (7.92 %), 2 regions | 118,661 px (14.44 %), 4 regions | 208,505 px (25.37 %), 4 regions | 265,916 px (32.36 %), 2 regions | -| Realistic — level 1 renders level 2 | **0 px, `match: true`** | 1,830 px (0.22 %), 1 region | **9,336 px (1.14 %)**, 1 region | 14,686 px (1.79 %), 1 region | +| break | @ 0.1 (default) | @ 0.05 | @ 0.02 | @ 0.01 | +| ------------------------------------------ | ----------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| Gross: every elevated surface gets level 5 | 65,051 px (7.92 %), 2 regions | 118,661 px (14.44 %), 4 regions | 208,505 px (25.37 %), 4 regions | 265,916 px (32.36 %), 2 regions | +| Realistic: level 1 renders level 2 | **0 px, `match: true`** | 1,830 px (0.22 %), 1 region | **9,336 px (1.14 %)**, 1 region | 14,686 px (1.79 %), 1 region | ## The realistic break, repeated @@ -58,65 +58,65 @@ Three independent captures per platform (`wait stable`, 2 s, screenshot, diff), | iOS | realistic-1 / 2 / 3 | 0 | 10,179 (1.31 %) | | Android | realistic-1 / 2 / 3 | 0 | 9,336 (1.14 %) | -Bit-identical every time, and identical to the first single captures. On these targets the changed-pixel count is a deterministic function of the code. The diff image is a ring on the Elevation 1 card and nothing else (`evidence/diff-images/-realistic-1-t0.02.png`). Human visibility: borderline — noticeable only when flipping between the two images. +Same count every time, and the same as the first single captures. The diff image is a ring on the Elevation 1 card and nothing else (`evidence/diff-images/-realistic-1-t0.02.png`). To a human the change is borderline: noticeable only when flipping between the two images. + +## Web + +Tried once on 2026-09-14 against `expo export --platform web` of the example app, served locally, with agent-device's managed browser (`agent-device web setup`, agent-browser 0.27.1). `open` works and a full-page `screenshot` works (1280x577). `screenshot --crop-on 'id="surface-example-elevated"'` is refused: `UNSUPPORTED_OPERATION`, `CROP_TARGET_NOT_ACCEPTED`, `PENDING_PIXEL_IDENTITY_EVIDENCE`. Transcript in `evidence/web-excerpt.json`, the full-page capture in `evidence/diff-images/web-full-page-screenshot.png`. So web is not blocked, but it is a different loop, full-viewport diffs rather than per-section crops, and was not pursued for a Surface-only PoC. Filed as [callstack/agent-device#2583](https://github.com/callstack/agent-device/issues/2583). ## Caveats -- **The crop is not perfectly isolated.** Under the gross break a full-width 33 px band at the top of the crop changed: the Appbar is itself a `Surface`, and the break changed every Surface. The realistic break showed no bleed. An Appbar-only change could register against this crop; that is inherent in screenshotting real screens rather than isolated components. -- **Dev-client chrome can land in the crop.** The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sat inside the Android section and produced a deterministic 2,822 px false FAIL with `src/` clean (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`). Turning it off in the dev menu ("Tools button") restored 0. A release build would remove the whole class of dev menu, dev launcher and floating button. -- **Not measured:** swiftshader (what `ubuntu-latest` renders with), cold simulator/emulator boot, another host or day, runtime or image updates, other components, text-heavy crops, dark theme, web (`--crop-on` is refused there). +- The crop is not perfectly isolated. Under the gross break a full-width 33 px band at the top of the crop changed: the Appbar is itself a `Surface`, and the break changed every Surface. The realistic break showed no bleed. An Appbar-only change could register against this crop; that is inherent in screenshotting real screens rather than isolated components. +- Dev-client chrome can land in the crop. The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sat inside the Android section and produced a deterministic 2,822 px false FAIL with `src/` clean (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`). Turning it off in the dev menu ("Tools button") restored 0. A release build would remove the whole class of dev menu, dev launcher and floating button. Filed as [callstack/agent-device#2582](https://github.com/callstack/agent-device/issues/2582). +- Not measured: swiftshader (what `ubuntu-latest` renders with), cold simulator/emulator boot, another host or day, runtime or image updates, other components, text-heavy crops, dark theme. ## Reproducing by hand -Prerequisites: the example app built and installed on the device pinned in `env.json`, Metro running (`yarn example start`). Commands verified on 2026-09-10/11. agent-device sessions are keyed by cwd and bound to one device — use one directory per platform, or `--session ` for the second. +Prerequisites: the example app built and installed on the device pinned in `env.json`, Metro running (`yarn example start`). agent-device sessions are keyed by cwd and bound to one device, so run from one directory and give the second platform its own `--session`. The loop is the same on both platforms; only these values differ: -iOS (from the same cwd every time): +| value | iOS | Android | +| -------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `TARGET` | `--platform ios --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C` | `--platform android --session android` | +| `DENSITY` | `--pixel-density 3` | (none; Android returns native pixels) | +| overlay after `--relaunch` | dev menu, a few seconds after launch: `press 'label="Close"'` | dev launcher: `press 'label="http://:8081"'`, then wait for the bundle | +| `BASELINE` | `example/visual/__baselines__/ios` | `example/visual/__baselines__/android` | ```bash -UDID=2464A356-C17C-4B0D-99DB-CDFBDB98826C -npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --relaunch --platform ios --udid $UDID --json -# the dev menu appears a few seconds after relaunch; wait for it, then: -npx agent-device@0.21.0 wait stable 500 10000 --platform ios --udid $UDID --json -npx agent-device@0.21.0 press 'label="Close"' --platform ios --udid $UDID --json -# navigate to Surface (the app restores its last screen; if it is not Surface, press Back to the list and press the "Surface" row) -npx agent-device@0.21.0 wait stable 500 10000 --platform ios --udid $UDID --json && sleep 2 -npx agent-device@0.21.0 screenshot current.png --crop-on 'id="surface-example-elevated"' --pixel-density 3 --platform ios --udid $UDID --json -npx agent-device@0.21.0 diff screenshot --baseline example/visual/__baselines__/ios/surface-example-elevated.png current.png --out diff.png --threshold 0.02 --json +AD="npx agent-device@0.21.0" +$AD open com.callstack.reactnativepaperexample --relaunch $TARGET --json +$AD wait stable 500 10000 $TARGET --json +# dismiss the overlay for this platform (table above); the app restores its last screen, +# so if it is not the Surface example, press Back to the list and press the "Surface" row +$AD wait stable 500 10000 $TARGET --json && sleep 2 +$AD screenshot current.png --crop-on 'id="surface-example-elevated"' $DENSITY $TARGET --json +$AD diff screenshot --baseline $BASELINE/surface-example-elevated.png current.png --out diff.png --threshold 0.02 --json ``` -Android (`--session android --platform android` on every command; after `open --relaunch` the dev launcher shows — press the row labelled with the Metro URL, e.g. `http://192.168.1.151:8081`, then wait for the app to load; no `--pixel-density`): - -```bash -npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --relaunch --platform android --session android --json -npx agent-device@0.21.0 screenshot current.png --crop-on 'id="surface-example-elevated"' --platform android --session android --json -npx agent-device@0.21.0 diff screenshot --baseline example/visual/__baselines__/android/surface-example-elevated.png current.png --out diff.png --threshold 0.02 --json -``` +Expect `differentPixels: 0`. To see a failure, change `shadow(elevation, …)` to `shadow(elevation === 1 ? 2 : elevation, …)` in `src/components/Surface.tsx` (iOS) or `androidElevationLevels[elevation]` to `androidElevationLevels[elevation === 1 ? 2 : elevation]` (Android), relaunch so the app fetches the bundle, capture, diff: about 10,179 px (iOS) or 9,336 px (Android) at 0.02, and `match: true` at 0.1. `git checkout -- src/components/Surface.tsx` afterwards. -To see a failure: in `src/components/Surface.tsx` change `shadow(elevation, …)` to `shadow(elevation === 1 ? 2 : elevation, …)` (iOS) or `androidElevationLevels[elevation]` to `androidElevationLevels[elevation === 1 ? 2 : elevation]` (Android), relaunch the app so it fetches the bundle, capture, diff — expect ~10,179 px (iOS) / ~9,336 px (Android) at 0.02 and `match: true` at 0.1. `git checkout -- src/components/Surface.tsx` afterwards. +The same loop as one script for both platforms, with device pinning, overlay handling and exit codes, is `example/visual/run.mjs` on branch `poc/agent-device-visual-runner` (commit e9245dc97). It was removed from this PR only to keep the PoC small. -## What a real runner would have to handle +## What a real runner has to handle -Learned the hard way while trying to script the loop above; each is documented in `evidence/issues.md` and implemented on the runner branch, none of it is in this PR: +Each learned while scripting the loop above; documented in `evidence/issues.md`, implemented on the runner branch: -- **Relaunch before every capture.** Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. -- **The example app persists navigation state.** A relaunch lands on the last screen, so "start at the top of the list" is false; the runner has to press Back to the root and pick the Surface _row_, not the header title. -- **Dev-client chrome:** the dev menu appears seconds _after_ the app is ready, the Android relaunch lands in the dev launcher, and the floating Tools button can appear inside the crop. +- Relaunch before every capture. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. +- The example app persists navigation state. A relaunch lands on the last screen, so the runner has to press Back to the list root and pick the Surface row, not the header title. +- Dev-client chrome: the dev menu appears seconds after the app is ready, the Android relaunch lands in the dev launcher, and the floating Tools button can appear inside the crop. - `snapshot` returns an empty `nodes` array when nothing changed unless `--force-full` is passed. - Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default hides real regressions. - Pin the device (UDID, runtime, density) and refuse to compare or re-baseline on anything else; derive expected capture size from the baseline PNG, per story. -- Plain `.mjs` entry guarded by `import.meta.main` does nothing on Node 20/22; guard with an `argv[1]` comparison. +- A plain `.mjs` entry guarded by `import.meta.main` does nothing on Node 20/22; guard with an `argv[1]` comparison. -## agent-device issues found +## agent-device issues -Nineteen, with commands and evidence, in `evidence/issues.md`. The ones that matter most: the default diff threshold misses soft-shadow regressions (4); `find` taps what it finds (1); sessions are bound to one device per cwd (6); a dev-build screenshot can contain dev-client chrome the diff cannot tell apart from the app (19). +Twenty findings with commands and evidence in `evidence/issues.md`. Five are filed on callstack/agent-device: the default diff threshold misses soft-shadow regressions ([#2579](https://github.com/callstack/agent-device/issues/2579)), sessions are bound to one device per cwd ([#2580](https://github.com/callstack/agent-device/issues/2580)), the typed Node client is exported but unreachable without a dependency ([#2581](https://github.com/callstack/agent-device/issues/2581)), dev-client chrome renders into screenshots and the diff cannot tell ([#2582](https://github.com/callstack/agent-device/issues/2582)), `--crop-on` is refused on web ([#2583](https://github.com/callstack/agent-device/issues/2583)). The rest are smaller and recorded for the maintainers to pick from. ## Evidence -Every number above resolves to a row or a file: - -- `evidence/results.csv` — one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON files are on the runner branch. -- `evidence/diff-images/` — one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, plus the dev-client Tools-button false FAIL. No 0.1 images exist because `diff screenshot --out` writes nothing on a match (issue 18). -- `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json` — the nodes that matter from the accessibility trees; full trees on the runner branch. -- `env.json` — the pinned devices, versions and thresholds. +- `evidence/results.csv`: one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. +- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match (issue 18). +- `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. +- `env.json`: the pinned devices, versions and thresholds. The first-run rows predate the test-id rename and their source files say `surface-elevated` / `surface-flat`; renaming an id changes no pixel. diff --git a/example/visual/evidence/diff-images/web-full-page-screenshot.png b/example/visual/evidence/diff-images/web-full-page-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..496bc7a7822295836e1f7b3e145ec5f21f59f4d1 GIT binary patch literal 24073 zcmd>mXH-*bv@PmUj|DguM4G5Hr7BXS<|xve^j?%ET}tRh4+<*MdzW594Ly{gNN);+ z77|cOXd(0td0&F(_BZYu@7_D^9q;)kdjMwd{gt)mnscu2{ZkcL%JcN+DJUo?<>j8J zQ&5}+mnR?neiD4dvW4L&DE^?3fAUDvBY6qqZWy*tY+HrBmUDh$*)IC!(ZeATocBw+ zP~{FR`hJ*1UnyL;t+V}i3l4tjTP(LTU$RmbT%oVn^2pC5Uy#anblvZ3s>7CE=dah$|6 zj~+d;>P>zB@uMc`?{o60?jKkGc!Ju+QO_f zsKug=Vhv$=oPeXecu}3QQIs?}6t8-{PfxamF}o8`%JN8-pwMfansOa^j3UnF+T*@k z2MO{jQ5D1TN=iOAb`MY}tOXj^mxk+3(2x(ScDT*e&iARLZyingrf@27y9ddiC7*gk zWsOzJ#)XH6+i1ZK*9J-!ObrbU34RSHPo3h@DirXZWrRLGKis9mUAF`k;pguk8POeL z7INLeSxD+wv5mMd56RO9)AH)oy!hp<;r^$t?ugyK9y0CFh{7mRhaS`eK@=<31W3m6U%Tf;EzLTz+N zqR@u_9C0Dg`4bNV6YAnpP0wnsNsi)8_wfp?6iTXd%VQ0}h-XI!rw3(IT5>3p3Uqa} zBALA%zUO4`t&~e&x`4UW8bUXmt)X-LCPD;*_k!(z%p8u_`SYRDc<(FB*<;|90)9uE zI9fjA-%g*-pLbtrx@EH$5)z^{P+}hxs>5f5uJcZ7n|Gn%^tr_%=1x$8-jpv5qDB}! zT=bkjn8^uA>TJ*Mienup-nVbK=w(tXc@T7o-(#k~+Ecdi?w%{-P)Ugv zuf;w~2@4DR=wm#)F4?e`SKgNjSsW9|Hy8ah@#iL^^GqkI!PZ^ArA?JlwGu78PD^{& z@Cm()jEvM-;>~O`Yhj1MESXJug|(1ziMs7%M;gJQj@+g^2 z@tS;ru;av7l`pKBJ?I9;tKLgQU0rh8>nVM?Rrg)Pyi$R+*`EEb4U+|-yhXe(eyAwv zGKPR{;F>b=-;D8+grhGt%Z$sbV8U)laOzj&k@uq90N9IQ*YsjUx#qW1`92psH)7NB ztKziHwpILeXg#JH5O~qB#v@&HZL#lxD_=_Qx?XA-Bs8kED~|8*kok?c9|#04`&&FS zP!pZV$iiZK5D|n}?H12uC-TheU$)yx`?2s&KiFY3L#y+!;sy5c$x@|`GFHW0(as`+ z>cLj4T1Zr6rGsGu?cQr7^0!GaUIejHM_h4=G|vY?hmrO#8F?TeC^HCgkv7UJ_jThF zBTY90+@D%`NTC8NsjMetjkeKj_C*9q+wn;4zV}scUbDdvzZk zF>lB5n%wr+;80!sRvbW{8;_*z^G(b}&9YQ=Hzc#F{0;UE4hi&{2N@Y-o2#|AK=4Hi zIS$0Ax+Kl^j#DJB^u?K-4SJJDxodK!q}VV^uD=Hr!>Qfhpa51Ys*ufJgI#&EcAjOJ zZ5V`;t9RXTU2&@9OqDg?aB>CAC!aAQFUthQsa0;-Q{Z#`*^g&e*hAu4n~qKe{1xDi z$BMWe#2cy9g}~V)d|-{mBC0paqlKv#``7lPB!b?)y#aBm_bex9EKO*oM8el$NqNls zn}~%O94>Axf2zH`{ms|kqLSIm%F38TtHOfAk|bw17CVRb_V#AFVye^ZOH#LJO1LN& zgrAZon!?(vgyLYjBg)vAV)N6u;T7EJ ztVlxV;mCI{C^A^}9mHkUz0E#!p{if-n}11(03ELVmKfyaT+^r50X)G5o$a;jIPJqK zb@~*%XoFi+qM%KIV?Vv1%ukeJXWL5pU)mrkOsZkf&7 zLvHUYQCVTA6dr zX3`Ml6o+WL@vtd&m4q6vo`t;$6fxs*%Lfz9XinIm{#oKZT?IIw@z*RL8toS^@;oJ7 z*d7Sjey>Q@s@>VyG3Y3XkNwjDojzqdEO75$yr`#sTW=M7);(lFtE~7k*n`cuKqalb zl@_p}G$I?##A{>;H*!_d3WrOJp=^tgG#L+X6OBk@wYi0s3VGV=d%)g5dHN`q?{oja zzN4Mr=IP$PREglw&>O-|g%u2fb_bg}6M0ib`c>GO`o;bkMYGnBQ6%nFR*&+cuxh;c zBhID;_b^V7UR_tHZSL;xK^@mcH#atkUO&oHGvcbkn5~gU8OB5 zb#=Xayw)YxP-JE?bB1x8ifMOuI87y4JRM!&-iP(|-tLNE397KwEV;YthyAM-;0_Vr z*$Twt?PARSHdFZ4g);KPb2eC|fB(SV($aET{Cs;9N0_|I6}EK&o3U@ibmZYutuljf z%wq@Br>37zo;Eq$A|%PR?5Is<7V5#{lW@ZW-pU7|s_*=-{$cv!4p;mYU($C@Vtf-F zU;EJp1_ri#xTYb=+R?CJ)$Y z``R3}`L|b}!5~(G080L~B>R}}xof1$KQ(Gj(~~a#hX6rS(zE;{S~a~+v&k)__n03l zaR0s~ImKDQd-v`M+!KiYgFEH7 zfHz;W5PZjAcV+&YV!>%*%Imikm#@ep$+uDsH-=|#Lq>zkDIp?#9YZ$>W8{7kJWaKiiB)7H#aj? z+e>)&O5v#(M8==3%gm%;5WcqaA1q$Keytz_uD#n-IFR1%F&`BOBBw}0BKe0DTc%2y zWVR4%X4Q+M!#X=sO0g*6f~fAx;}Oe{tdcbClYE+a-$G!+AuiKT>*|b>DJdyqR62=D zIq!nqC5)-%PN4+-_QLi68isCrX zV)WaXi%{wijcLq#XtvcIxXHlE&gmeFF;`e9i{z+t$5&yWN$on%)VVGcI@}gnAK!J! zlnoW?io#V|aaq;awXAJ{7?})lKl*a|9ExeIvSi(!2`Y5Zw-N)>@if`y)vnOR>sLYz zj8@miz>py&54nSB{qaz?x9Dl7T_gpZ1S>TQbjx(MQ=N@uF&K^1^-m{G@qEzz+R|b_ zifEY{uLW=)q#6vuO=GIT%L@Q?3E#a6f)P@Ak?G>ai&sg*^XF{GB+s|>XV3PjZ5VU_Vw#@B$C*4E5OxY7qSso zlq&AI*1D)5CtB8vsZ-ha^tvV`CGz@hFm0vHu;@HJ(X;pc`}a<(t4wtx%88=VLc;^Y zX%>(=&#u`^mo6a&7R5eIsNjquBKoe7H^ZOoU8WRRf73K>gUT0bH7|dFWGL$3@=>+7 zLSc>R`(^GpKD{chmI5ej_#=~q%z30bePxmzTFyOtIz$`h5@c5ij z2^*H%*IY9iH>kFcIk}WfS1wejhbwgm(9ANa`(azsh0Eza(8Pz zM>T<+W6Jk%4~DC6whp?Q=AUp>Zr5ltdS0(HkxRQo$un9JC%(NjrM!~+Hy7Z1KkMKE zX|5A^0#0~zX}4XDjiu?-33sa#vIiKa*Xv-jpg;qe78{MuQZuVWe{bE&%^!eUbj7w} z&(m=0)@j>Ue&nu0_{=y5x#0)I8~d}I`j6N+yVmCJZ%;?CccNVv`vnzax%=~;7T0r2 zJ$`KNx%|b`%xp@?eym_|WYjI%A|n!Uem`ds&S@|-wJ};%gjP7cKRvJU`jI?gJhFck zChHEFcPhsuH7j`v)zR& zuxZCi$sXK9DO!&s{rliG*~QnB#N3yQQ|cO_X^|PSA8*{P+pLeTh?-SS%5L!UTR%{j z!MdAH@D2EjzMT7{`4PgWA>*0ktUWUrxcA2X`E&J7%HMwvzcNH)v>Cs}wi9W~5?e zvkcWRrNT<^yLa~l1$&~}lzfW?jp&CQZz>Kq7hCmt4i>7FKTUt^h{;lh4S_OgVy0e^ zvvtak5mtXHbC@Q>Wu|j;^-dg3? zsqpa0XqIO`e(>j!W|=~=-gV+6)0Hdb7;D+e0@Q&6_WR*sm2;&MUM$>I%K7cu3}FWw z0WUxtfv5^)7~DVXCRh`OzJATJ2##H+<6U?q021!c5_C+Y71a3cGBfL7Nqrg08;8q$_0h2K_a5qbWv_!94EI z{4=ug{V+uwFMMeo)b2#*fD$gnqt!nzvGL^;Bac85)pjgo13jVr9XEazopr5n6@ z8@x86BbFNwgwg8ll}pvVn5fYG=E+;fAh%i3okE-7uM(rib_zY}y3x4oyWfld+42ED zUNzMcOnZ2in(>~;r`p=x*An}v5{!azOtQG^4)x`mC`!tUN8TqvEm}DSmVp+-!l`OR zo5TLrGQ;(&gPE#)CJ+eziL(o zoi9l0S2Z?~I7%vp*~AoFX$#q|onLQm|H0*NfU1+_)7x!TPSfcVL3$oZ?NcQt%*1@e zBJs2#W$w%(H*vMI2$6ZFS4qa3ZV*hSLY zeEaR>J<{i&SAK6IeNrgjq#)x6f!7rOX@4Nq7i>&k2^49f4R7Y2kTKdTRi^4c|I=^v zfBZI*u@sC)Ry#}+Vj$-oKOA$D_i580WhyNjO;FBgW6@Q3^rEoCb;he%3o(cTNuTc{9`TWZl zx+6ycXIVR|tWo-ix|9^C#^vYP><7M!*TPPo+T7gGDbd4B?^}Y@ZmpW{wS{M!7gmfd zgbg3DYxp1S=3eaVgfjS4`%RtcXzojcqzOPfzut`++!VGS757>STff%pzqetnr1X)z z;F=iB?@BkTPw6}g&5V(wZD zJ&6L!iHNzo_Gl`h8@YYgICWRnV!GN?Q-42qF5)vsx~i)|cKv&Dq4jFGv;9F6cDTXU z0n4rXsmUQOODqjUTMH4_uhen9Y%?e@=6VbB^M_ChspiM0FPuJoI!A(rE~X-iJJ3HR z3?Oq0r>B9q)*{gFk6JR18{OK}#deQWLgpwvY) z4t`+cjN{c3#ov_*$YS*Vy#ALcbbA?d_J~>`jx(E;HrZm7UF1-K#p1Z2nqqp62&ISu7F_rCVoABB!thY5Otmw;2IM2-kvKoU zPO;%SZEsw0ihVz}5l{_aUAC$)5~27Km9$+WqX(S)3de23RkBAc4gxF zrZBkiVK08`Dz zt++H=U2U;WFsQUUCU909_;pWEQC>j%ue?erGD^}e%C19?>M^M*X$}<{cptVxE4`aG zKfS^FSbBmeC+bcR#pCAnE>f=hY>j?t3D&Q)~f? z;r|ej{afa*4)B} zNh`~33@MH%q6)U0nDam=I=T>wKgVb@r3;3HxK`=K`zuE*C6U42wOfU#CMAuSzDXvY*O#Bx-mcCv%7Ye^zszufkf+L z?R=7WL73)04_U5^%D?=Z3;4f<#P>Gp=YBQ+mri(EfX#CG5r{2sr+1V8VQjc%5umE{>8;{k;#I70=Gjj=13lg^Dp=Wwg_(DpdAP>g$SD z%l-LtO8BAOL*H5VD_5c{l@oKu-zycl>k{`99`K_o)TV%@j%$y|G>9u+C`5l}*{5Ej zCa(8&#&B*f4K)uAY94Pp3H~2!x};5Y(y&(DqEgJN*cbWe)QvOZ+{T6R>o?*8l^J$- z4`V_A^&xT?m-hJaFEp59n{VKJM(dAsJo*+v&nh@JwDC7#%nxSXTnSj zqAs`SsxtllMH{a#3%FtO2xZBh;cALB3XXvfLV=&)q4UV^)~u|ojII(RIa-UJF0%kd zLaP=BE2LevrsGXha>Q4QGG1K{}{>u5)O0dPW z)rVYNCAR)Ei#V>3jBC;so-K>#kNNs=Ub>4-mX?-ry`Ba5ckkZK7U^GPBv(f(Md})5ZHAWOFWas)j)wy1aNSNYw@lZ_Bwg`bov(yw+(yRUcz6>3#A{QZH zAG>3?bQUD06}<9M06Lra*2OrfnCUrSOY?!!hWNZB;(T1IWy!MF|HcI{-a@6VI-$ol zcKe9gzg=#iRhbolUBJ#)>nHTf3kxwroDA_YGSVGzeUuHHTdP2`e{jOFK|L4fR(HDK zX&jilzS~EbNPllS23rS*V)BTG-=On9Hx!zp(*Mqb{)gLi`wUmy{>Fltsp-=%{PR7! zfM4uR5p!2k+JMt^#ULFmi*>4v)q*po*h9lYLVAE4)y#gDt~T-fo2S#xD!qqYnatD7BcE@pi-3)xj=)F6(9v%l$EXE1%K>Q1(E!oA&%(UI2|j zacMV*&UlSf0;YDTa8DU=>((s*GGZ@nzC5+J$t>uTmHuqDzL6ZHKV70b*F<=%4g*sK zFtKsU`3uy24(8Dk-doWDK+k#rvQ(~dqmN#hjm0^HnQYkiqMOjE(v{MBOV8}y!s9_x zVJ-+wY&Ao8O73%`zjQ^4bE6i0#WaWK1k{HFZVQd+MD zY=QjHF_1Hd7+_b$V=I%6$q)8j-IJw}2gTe3hGD=S6&4mco8zQpNjH1dy>aQZDfzaN z$x1s^Wafi{8S=l2kpGWUAb(@=dz$@@K&+s?A^sE%946PUU88J-r9H4x`4z#nWKOO) z&{~DL+yEdUn~CxAWjZ=*fGZrgQ!leA{31c3`8_UFBqWU97k1yR`!Un-4DZ#^1PavS zV6>xak##azA%*C}MPrJr^Rp4YfB*YtDGY}G@oCZ&2Dh*uL;D!#eEbMm@h|;n;tn7s zMJsGgaA;9}C;)*{#X(-%OEWdl#gHUPP!rEj)H#xDXH0=_gG%)3S{D;_KL7PLQP3g7 zA!E77AqA1Enzq%jSZ&=901ETJ*@`cUrQ*Gwa;IyYvpa3vdky#f0?vqE^w6!>y^oXN zrA!i9TUYFC1*%Rcx~gjaTd#Gl2Je+C=Nd3xn=7@R8aWOVjXW9?f;KN_3gX_s?*J$U zjUIgh!oGa9?%83-anqFMJs;0?PcP$eWw#~QetZ$(m7iFOyR?j?>T&9qQv|62ut+Tm zdJ70Z_A-jty%D&4`7#yahTTBHX1$2Z=EjC78fr6^QM>QtZX}|^C^?x3{5<)m&?BR% zqP_|RUl(ew29feaD-ecoyz%bqTRe*jF;?il2s0)zp9)a-IypJgN<7w>=MbR)cBz%(udjCUiUq=sYLjrD-~2;w|f=_YeKB+4Fw}Dv;XFpVE*>3V3+s4N`FWv@B>5ueEsSb#f*e`Uuwgf?3srB z?ejF8toC&8Lqn-9UYxEXtE7K=SsbwGE}-LCQe|qGM4Wd!XMn5g`t|E_#xb91U^=tC zDPrvGUZWpo`T?ram#})R?C9KrgDBQwjyvB2-G(EHJ=nkgWEybfBKD`4mVuM{*Rbe{cMFX;0WG|`LA_w_b?yKp?0g{55#^Kg~zdO}*&hxt>d1V0`EeWxbUu7kK>e>s^)jygO z{yVI+feL%}m`42PfU`DeU|#z2CF8UErps)1zK{8h9moj6KB=;@GC9@Z9*BQ_*m2-n z6SVEul!sJjf(;=qVzG8r>eMN=2i$s%0&(xF2= zseS2JANzdkRzyTZYisMi8{w{6#*;Ay1hdOTt@m(6hsOGB4;Kb<6ln@srjU4}k4H06$snkLi7urR(=&wMxgvECH>lB|hoYYl+7YP?oIlX=*kX^ZJ=bD9eWID@+n_Ar|RA%;LC=WGCcAg^(u$GT-tb`uwL_`L?Z z{piA-a!~2pd_UL+u=b&YMjZ>uORW6_P%Bk-n4eC|hIV#^z*y{HR7bLOO#!(O;yQw= z3c&N?jNE;EgK4>hKA8{!XIHFOy*0~|1^^0h9vFgJRygHH{y?t#L;T#g#%7qt<&S^? zKp>c?&QnzZF*c{62WQba-r((yN<{G>9o1l#JWxTPA-FH^sHBPZc!qWDUciw==ElZG zuWV;E^-f-sVjqBOQ;d?&QeJD2`x8+h)tk1_F?mD}MrJ z37NKwY3+3@pSngDrvxkhgJGXvh*$fzlc8a~=-Qe^zowy&PaCgWRF2B~(D&c}sX>4r z+T7OWgdU2u2W|tO7v|=y3F}FKBR)V3fdP>0IvjPN#R10xup;>5=ap0M<>yI%&xfc| zpQrMIy8S~2zLT#1#lATw&ySqK%-|LZ*FGZ>AEIJ`}^ zW4U57ar_<7pVQ}R)kQi=OJA~ylnFbceop6W0Hnfa)JReYJ6aW-zvyh=4SBPZ)#W}~ z-gY=rR^cyNX5BUWTI!7a#aNf{n>@%!vo)f!+%TlamQTCY5u|r3Y>^I7R{DU^hs-am z-0d_y{V;^r@8jQGfPg@S?p;NrYW0>6EI}dRfrC(B=ee2RH)>sdRmkl5b5ZExZI%#v zfr>Q2wt_;`hKZkky{TGRMvM7O335+C{U=EB=qd*mqr3g7$d`{kz<{anZin?#=cx}U zuC|YRY7(7cnKIN15a89t2KVgJby@+Yh|CK=2%e|o#xu1eULRG(v46vt-f1x8- z5H$Kij_E=LTFMA?Ef9PzPiLvE2J@Nkf;v_hU#s1tAGytXU%^Otrlzs+=)Ul_Ncrse zY6A<+@Z_W^+dRrp-cii~l@Y@omhzCdODc%E1kmK(AT8!u=2hGRNk80i$nP= zWtYV@O#bMscrMXNrlqJ&Vr}yxXc#gs<2BMZW2;^b zm1aG0h6hmCAD7TbRblV;&2a86J-vAubuF7KmoE>>09K!Xt#e-=;;G!9?znO;4M0B) ze)$H(=2(S|@4Xg|cgw`pAnqg~2lYF(9!U!UN<4|ad|kjhtoVD$Rwq|Zwz|Dm)zS|Z z2Sl8=z5J?nfnpq=zaCx@xWW|H_KSOyCDw=Ncj^vY=VR8=*zv)ng6Wm2ajVH+l|Vlb zxcx7{VEjzS0MZdj1JhPX70P~g7??^ck&OXb=h{qXSEtR!*pG@#V+=wIrpXfyna557 z4@ajqu$|#inYd0A46(f+>9^#;!jkEEVYXw5Iw0syf>r+;`C^Bl>oMfMsAYU%n=} zlC@V4!hG4IqNqKtnnE0l&5b&$CwvY!K}ttS^c`5p5I>)?ME9wcAok)+NKx2k%yWI# zemJM-x54yg|LcN2)8UT-EKZ*~by$7mT4MYuJ^c{^j6jX9M8ohBGiewk?|Ys5{=V}p z=!f`Y?IEip)+dlym;z|bGpElcO)F)D%C)G=`%&mthi27)f8!l}UymH$ym=F!n5ghX zvtM2Xb;o<_+cysN`4kbW*g?Az-1@Os?R#Q-P#Cbrn;Ig@5nOr6A_yewxQOMb2v&075;JsZ$ zg7wV6Fb@*b;4&~5hZnc)x^xCzx_*@vHwyS?`7emiZ{GaYk?hQ_5ST3L+xcw0wH?dmdh3ZO+pleHilZ)F z+Oi2u_q{ZOXD5&zt6!Xw#+W=o;hdIx$chI$g~y=UBUy}=fx*^j6k#yz&?@5GzO#Cz zjhe}=5^q}9tlIXHpRptstx{ zME_<6e1jlVg02*xH&$9Zt^>!6dXI6XCA5oRFj%0cXw>s8syRihaUfU41v}+@^kvs1 zhgeurQevEM7#$7oisLe=Rxz@o#ev=g{i|i+`L@{MDu)S@R5~x@Fj8ua@mg>Qt6`2A z1xZ`bzJCK^;$Qw^{`va>U#~5{0oB}4(Ed;c;vk<%qpR4@YjiZ5M!;OmBxW&WKSG+9 zPp1=BE^`B(P5nf%VLp5e3Yo=LNUxtdOFb>z2b7Kp`z1SJF^34Jj*5lzWo3M3Q_tBh zx3#puK)J)N+|ttKzVuw!dLeo){bW|Z<76JRSdB?2vB^H zBFOxG`<@cp6y(e0^6@mho0G#pdJ0jBIGl=|J{R>t|7yzK`o^cpPdZk(?n;92i>BsR zL6-~I#)a(0+WY!Sfbr6M3vYxg{Xw`A3gVXA%G4hc5)Hv|yq(`sUhr+GBS7R{yitZ6 zDyiXIF;N#UT+oTU;=QiTqmnAB^`(Ce^o2<5ZA97?vU2!9)B5G!sUm!i9np&WxmS{^ z>~1_X5C3W^a`s&R8kYz=apE`905yq`K=}Uyz&mo~KMuTSdXjXEa5YJFwY9a$TBjF3 zsLRJ9s>vbULpWibj@1MLNiz_RVrT>gDbOUSnHCviga34ND(lwUf$HTamrFoXRZ&RM zSP_sR-mcM%hcbRI`UdyBPzjtv{g__-SVhbrXUGQ=pIcp^@fK;_S7|d8`I76s+5+Nk z+vetGSZ!@zf*>xGz?5He=ImK6`I1=$FEee}wIXxRrLRtUH$;8pRF=?0pCp@VWSYc4 zsoyDig!oai4V+%BBX-S#66vX*LgRJXfnCD2+Nu`@)MOu!lRXViEX!bpr`H0 zvz}yLdXgJ844m00w3R+iZYWHM=mDZ)6dkFM*AO{-_jkqH%C$d0J($gH$i2IudHTY&!OBx7Pwr7I z0j)*My8h1-GfefHxv-;|I7B`m5@e*M$xPlW_t4r0fWRXRV-3Z zcmvDZP_dSQXA%H0Y>Lsx6f|ATxf2h6NnwwG6jlxDJ$|?&Q4+IsYgh`-ZDoMvY;_yhP7>Az$iyB$@UQ4D zG>Ey0c1$=f4!JIj?E<@=Tb0|HGiNM4*ER@fM*!TSa+O66_X!uS@fZSuDKjvnGmeYT zAYa5KXn<<7cIf18)H0Z?SB_@| z^b^ms1XtuLsJyGi@GnQEzx7r%xMpKvy|G{}AMc*;FD=KvSV2%zZQ?OHenHs7eZ+Id zCkuab0XN)?5YH2`+%eI=S;`am??BW5O~Ri6V)bolbFR1sZ$N0MFZ1Bjs7MQXC6#~e z;y<#xT+(B|$X$Hs4G~e>p)9@)hmpBYthsISSJ(?QKrIw2ii-phlh0_pYV^KIqfe1R z)foOK_lXfgtRvuUg0`5VF;sLyn%cZJYOaepJT?a!CT`ihF*<~IN4O>bAQ}lwAtz`Y z=}8dro(zAq(D_eUWcG#^h;kzikpwPd9oI!*ziR?&^L9t}r2o=`gk+zlOp1L^7q&%( z#>3gg64eyRqGiunz6X2MH}0YRLcLHZ-zOMJYkA(&Wk*t zD0N^uHv;sF+NiYmhZDf2d0$X4M!Ya9D!Blx^YnDp?)8Me>KtjHTm z>bAu|*SDtu4NS7p2YgQ3DBs5UT(T9UK8%{?Ri)|FtTM3Z#|v8(gXKueXG9Nt=b+== zD%a>3zf4I{^wxm9cNB2OxY1b;AIq!dRo>kCxANH37DRE-=yT}9eEQ5aKJD&|cP+5K zTjU!^UjEILG`X+X&Ars~(bv6@{20*x=eb=%Q* z)NbP`bqe)&?@j*b8}L)FTW%Y7U&adBuMO6FuK)T1IlB7OW8K|L@kwLYm;F(o89NQk3raR zs2*4>7F33cO}3Xt%S&vAvCGrb#BWGI4xZZE5(cdc?`lOG@-$)5-VFDGb)4di? z395WgYEq`pwpb-<$AA)ox9jYY{DcAjy&c(XQP4F7S5i98XCAT%Pfx@q+5>X^v6K{W z;-VtHUL73-%*R24FGsBl7m<5GhPB!Sccc^xq(5HWPp`;e=}#Gpf1s4g%AAbL>w&ep z|M&ApT<1Vp@>rgiHn*&nK2|Y~lc&pfe|x?abl*o>h;VTokMnlyYMd#4WS%wTUG60Z z*-*nq=UUYg$pxV&pz`_3Y3)sqPAK~ypbiMDsTRWWfW$LBfZl@P-eDpP@!s7_AFlT0AE zSRK`6fv$08h+pymt5xWdh`Mr1Yir<}H`Cx$0C+LN^6AS``CitA^XJZ;yA>t{j+U@$ z=LjV)jRai4aeSnZ6iQfUG9~{|()sV0`5)-hC4bfbh3fYg7+k*NIaEy{IcLbLp(!`i z;1l_c|67jYVO9g|W^mnC<7L%&VA2G zf=S5__u1WUn6AOGc5Ge%Jauf#N8(e%TTEhw`oI9a@_j9a%WlbzmRtXqTw2yCMdsfQDG{Uz$vp z@|cabYHFAy)PdqfcaG{Dc5?D1aH%?lG78!b&JC7D0lURVQoReBmcZo=T%U4^z|1Y85nYQc@B{hjt&_03A7s zW?)xD`r*3cQR%*C=Z_8+`9OzE4teRWoXFazn;aR5gLlUYqLZ{s@upKwdv@u6od(jQ z&%yLL!Fv#Jz>&ctW#rHCx9flnu^+3@ssr20BH<2^{LbN{{YEE*y3E+SzJ2>9T(m+q zBS+mhr=maF&5cR~(=tFRF}Q;b=-DARxHrfxmB+J^z=NTg1W`qya1${b4b*N&w|h~2@mf(m z=+JzKOJ@Ld?*>?8(!u(2Xb?7mDDe zl`X1dtC!V}K%>Y0w;vD>4-YwmGmaCrMGmms++4Kk>hl)R2~0~zbJsSM4pIdyq4~!z ze6xHG#IS>+F3|D?5TvUkRAnBF9O&KZiQ}6vaF2|SzrObHEAZPb+mk773UdTFO@;he z2L|TT#|8t6Bk14GssDmrxqsJ-_Mh5JM>21HJNfV4^WXb}H{H}tKl}qHRvWI+GMAX2 zF@a1>hEM9WfnFF_Vi@EXI8bgqwX%DG_8PbTL)WjR0Ht{(Lvk4=eoSj3oth^<-DG>< zGo1Gs$dV>Z%wo@y?Kup7A(^NMisbnCo%N3f2^O z`x^XlC8w6X*a%34d?+V2Q_yUyQK_KSfn9h90G!1BRv>ZLDufTVy*$cgJ5;#f0Xh%@ zm8pz%O8jEQwuMdn2XeG*0f&}U?ErkuCYfF#Lp%l@qSOb>+y-Ui1%+DGyvIJzrd(dI z`D=DOfT{=Di_=)VsW7JLkKejEpuacTdt>B+LWOjSy%OT%?Iy|^8d8*9T`Ml03Ht4y z`O@ZwU~Ryuy08aMoS+wS-Z|y(4@lkpT^F?Li)|pQMz=Ni%)srf#QK71f%o)N=x+eY z%?)tPwt$B0cYs>lzc`m0x)0fK{8sTDG^{u$#Q!FK{`!5dX=;|BE{}Qj?B$)kPPLOK zPiBc(>*45y4i<2x;9sP(1AG5Eef}%QSFjme2uBTo?Uqxgq&lz8d}A4#orI7Fx~)}T zyk3F%-O5Gx;gZ#DWzby6B}i9;P@Y%E7Gh=S)m|{2ixiy{H^* zZS94@CcjhWfd9Cwr+dr!$mj+gQRwN50#pm?I@S*Kvyo4_;TUaTQs-dYd**ROst1KliW z6QRbCfHaQJ@Q(iA?T{k4Ri81Sma&K4Z-IFvL5beW%Zo&IzqWX*(cykKcy4a4wI>Pe zCPVzS$~&U2E8(vX&oWB>ta_FiAbRJKek@1?T6MYLcs2{5I)me^Y=HO+T=#5IFb%+C zKRs&H(;s49ow_3u0_ekbENFr!i#M-?K*jufC}#S(S3z@Fv5@@E@w3NY;aaplUur$TtSBHm<(f)?NamFT;!1* zU9K<#&Om-tqfviclway9OsQwbLM9FC%gPa!Ca&h2OYRf`=jKFE*u`@6-LKA!6te10 z9fdhM-bD#Hj@jY1QWo|THaDWDvr`eyoetng7~1X>g8Q~Zm}CR%10XDy7*&D_8q`Q) zRSvM{_7au{BjEHAk_QU2AP5}#8aD>NeS5k3m-OZOeaar626E!-S5vyMTm8$ zxwV+Xc!uBE8labSUE^!`F~uTFC$ZJ0K*LqLG@ioZ9s0nk&kkKy1bWT{VZ-4p3Kv5^ zeoWpQ5Fn?6PbWxvtAb1mn}qQ`E7H@CE#=FX=JMdV1o=jG)M zJFJm}|L)OpE3*BGB5~XJxOd@|fAGg&&6rI{s{h8rHvcE8osVbFPOdEynUgO;gJa(VKl_QY<^n<3sZ-26 zCbeH$d$qrmuF1cI%r?5Vz=5_|DF)oaK|Kt|dMVNn_+y_{H^YVt9VV($;&3xeq39Ch zHJj0lnFHwyyV(mahUwtf1|%htWFl)I2S3RbKEhkY$Q1fP;pis9crK^QZz% zph!jmSx>Vq<`o|9t_p%Yn>UO_y$Dn8=(v;SKLn0pAfz_H!4Y|(L4kn|Bh!=6%>}Dk z7k|)*3T#?Kz}NVBj%@>rKSZpiQKxQy;q6zgZdQdEA&P0PN)a0s@Qz zrk}ten)96&%aBqND*amZ>{N^wuoQH5grx~QDn9IkG^?hGTw!29=RJ}V>1f#B>g)s^ z8T;_DIA^ba*bPKgP=SD|YrApTh*-BL0>^!$1m~*0z*RAU>SH*>b?$}Bzp%J>nZA^J z39Q&dB87c%!fCm9$NH+rXS{=eZ|y@|5eMm#x!+?aooj;iCCvBMiG=b z!4hmy%B2V*aVn){z(9f|DC|l7k1Nu-9_|Fw~U7&{o3a(ahfp9VWF0*XxtQlof@z&s(UK84yv|GAk;q z?Z7-L27A%TZlNHC?GP_+z4+`R%!n0y566IDzDu-7_DMgQY}f*Z5Ll1Llzc(rQKHZT zH1SjV99K96wr|JQWY`ejjtBQ60|7p^6k&dS(=>UYVs0__83V-&ft7LvWxmScMvN3v zKahpeii3?ee5Em}w5)0$U$4IghKU$=(7Yc*!p*stk>B;S8bCl?r=*gcJ3vN2vG=Q@ zTcnF5LQi}G4F(iq*_6R>O50HkW+?PBp6&WgwVIIsp(Z)g#&$FCgUCiv!@3n^dT0%-tq9(I+%)m@yd`SgH|pF zJ*+fCtS)kMV2oZu!BFl;zfzJXaDtW>EKhzh*$Ae0un(`tySm%^o;_2U#Gz<6f=emS zE9%f)R&hJOm!zoa#e%c_RClGSyE|;H6gKsGNRi&6NoWD$t5azlPWw^25x3aZ_PRPk z-kQ$%6jWgTc00fNx6eUt8ic%2pivGGsC6@wczL07?fWU<1Axx1wy?E8+DxQT7U?&> zZ=xob&`iuBynMHmK#tvNqSkC zRvh~9vwnlAwF1vJQnTy{M1yZ^)0}SDr0#=Q1%$nW0q+aCo9t-ykdF_6O30ndBe0SH z%6ZcV{JcC14V1wHj$CZa%fY?%`yeMM6Q4g;W{Zq=wZ-k)HCXbtzuyiGU2-7}ik6k! znX3n(#MUXxON&zfNxtD5x{^uzn2P*Mj-RI9&wuhLc2?650!mArPP-Ru2I8y@Be(y+(i05{h8Phn=UW$2mkxRN0qO@~ zwYGhSpnG~kvqzAmZO4b+L!GZs0#PdNorpm))&{con6_aOIcr#gTt34Alh8k4Q zLlYK@>*7>R*Vj?yNk&SoLY8q=`G!5mM=)^bMTM_eQps3~y4c(>I{V?H`W~-kJS+e# zeYCAWPeNYsW?G|h8fAsZnk;E!J_Scw$R`>;JYYJZrUK*I&#?qFOIGeS#@MrKiuee| z_f>q5JBamQhnky7}<#}UniD~(B5~?A&7-AWtSm*y#qG@^A zy{WmaZHJr2cs!lXs5hDeSE>4s>aiR(03+x7Frx_-J|{aFM1O+Q$n=jbn9=>K9)C=R mTch#F6_*omVP@*a7A|;jyOCY=(P`B5D1LXqF8)su=l=%kXMD*3 literal 0 HcmV?d00001 diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index 667f1db1fd..68cf77d752 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -1,5 +1,7 @@ # agent-device dogfooding issues +Twenty findings from using agent-device 0.21.0 as a visual regression tool on the react-native-paper example app. Five are filed on callstack/agent-device (4, 6, 12, 19, 20); the rest are recorded here for the maintainers to pick from. + Tool: `agent-device` 0.21.0 (run as `npx agent-device@0.21.0`), Node v24.18. Device: iPhone 17 Pro, iOS 26.5, UDID `2464A356-C17C-4B0D-99DB-CDFBDB98826C`. Session state dir (for runner/request logs): `/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/`. @@ -38,7 +40,7 @@ Artifact: `19-find-surface.json` (also `16-find.json`, `17-find.json`). Related: when the label is not on screen, `find` fails with a generic `find did not match any element` and no indication that the element may simply be -below the fold — artifact `17-find.json`. +below the fold, artifact `17-find.json`. --- @@ -90,18 +92,20 @@ npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --platform io `open` reports success (`startup.durationMs: 1032`), artifact `45-open-relaunch.json`. The following snapshot shows the dev menu nodes (`Runtime version: exposdk:56.0.0`, -`Close`, `Reload`, `Go home`) — artifact `47-snapshot.json`. -Recovery: `press 'label="Close"'` — artifact `48-press-close.json`. +`Close`, `Reload`, `Go home`), artifact `47-snapshot.json`. +Recovery: `press 'label="Close"'`, artifact `48-press-close.json`. --- ## 4. Default `diff screenshot --threshold 0.1` misses real soft-shadow regressions +**Filed upstream:** https://github.com/callstack/agent-device/issues/2579 (2026-09-14). + New in Task B, and the most consequential finding for using this tool as a visual regression guard for Material elevation. -A realistic regression — Surface elevation level 1 rendering the level 2 spot and -ambient shadow, one step off — is reported as a **perfect match** at the default +A realistic regression, Surface elevation level 1 rendering the level 2 spot and +ambient shadow, one step off, is reported as a **perfect match** at the default threshold: ``` @@ -159,6 +163,8 @@ round-trip (`startup.durationMs` 1032). Artifacts `44-screenshot.json`, ## 6. A cwd whose session is bound to one platform cannot target another device +**Filed upstream:** https://github.com/callstack/agent-device/issues/2580 (2026-09-14). + `boot --platform android --device Pixel_10_Pro` from a cwd whose default session was bound to an iOS simulator fails with `INVALID_ARGS` ("already bound to apple device … but this request selected --platform=android"). Artifact `74-boot.json`. The hint is @@ -170,7 +176,7 @@ guide, or keying sessions by cwd+platform. ## 7. The same `find` selector is not portable across platforms `find 'label="Surface"'` resolves to exactly one node on iOS, but on Android it fails -with `AMBIGUOUS_MATCH` — the accessibility tree exposes both the row `ViewGroup` and +with `AMBIGUOUS_MATCH`, the accessibility tree exposes both the row `ViewGroup` and its child `TextView` with the same label (`83-find-surface.json`, candidates `@e21 [group] "Surface"`, `@e22 [text] "Surface"`). Any cross-platform script has to carry two selectors for one row. A role-defaulting rule (prefer the @@ -179,7 +185,7 @@ tappable ancestor) or a documented `role=` qualifier for the common case would f ## 8. Refs from an earlier snapshot are rejected with a confusing message `press '@e21'`, with the ref taken from the immediately preceding `snapshot --json`, -failed: "Ref @e21 needs a complete snapshot — the current frame only authorizes its +failed: "Ref @e21 needs a complete snapshot, the current frame only authorizes its emitted refs" (`84-press-surface.json`). Re-snapshotting and using the new ref for the same element (`@e55`) worked (`86-press-surface.json`). The message does not say what invalidated the ref or that a fresh snapshot renumbers every element. @@ -187,12 +193,12 @@ invalidated the ref or that a fresh snapshot renumbers every element. ## 9. Android relaunch lands in the Expo dev launcher, not the app Android version of issue 3. `open com.callstack.reactnativepaperexample --platform -android` on an app whose process is alive shows the Expo **dev menu** overlay — two +android` on an app whose process is alive shows the Expo **dev menu** overlay, two presses ("Continue", then "Close") were needed to reach the app (`77-`/`79-`/ `81-snapshot.json`). After `open --relaunch` (pid 9944 → 10860, `95-open-relaunch.json`) the app starts on the Expo dev launcher screen and must be reconnected by pressing the "RECENTLY OPENED" entry (`97-press-recent.json`), then the JS bundle takes several -seconds to load — `wait stable` returns immediately on the "nearly-empty tree" and only +seconds to load, `wait stable` returns immediately on the "nearly-empty tree" and only `wait text` (or a retry) reveals the app is still on "Connecting to the development server…" (`98-wait.json`). A dev-client aware `open` (or a documented recipe) would remove three commands from every relaunch. @@ -200,7 +206,7 @@ remove three commands from every relaunch. ## 10. `logs` reports success on an empty log unless `logs start` ran first `logs --json` returned `success: true` with `sizeBytes: 0`, `active: false`, -`state: "inactive"` (`104-logs.json`) — no indication that nothing was being captured. +`state: "inactive"` (`104-logs.json`), no indication that nothing was being captured. Confirming the Fast Refresh probe had to be done with `adb logcat -d | grep` (19 hits). `logs start` (`105-logs-start.json`) arms capture, but a success response for a log that is not running is misleading. @@ -210,7 +216,7 @@ for a log that is not running is misleading. `screenshot --crop-on … --pixel-density 3` on Android → `UNSUPPORTED_OPERATION`, "currently supported only on iOS-family simulators" (`91-screenshot-pd3.json`). Android already returns native device pixels (1280x642 for the crop at 480 dpi), so -nothing is lost — but the iOS default of 1x logical points remains an easy trap. +nothing is lost, but the iOS default of 1x logical points remains an easy trap. ## Threshold data point for issue 4 (Android) @@ -220,6 +226,8 @@ Unlike iOS, the gross break is caught at the default (65,051 px / 7.92 %). ## 12. The typed Node client is exported but unreachable without a dependency +**Filed upstream:** https://github.com/callstack/agent-device/issues/2581 (2026-09-14). + `agent-device@0.21.0`'s `package.json` does export the client (`exports["."] → dist/src/index.js`, which exports `createAgentDeviceClient`), so the plan's "one Node file on `createAgentDeviceClient()`" is supported in @@ -238,12 +246,12 @@ the same session. When nothing changed it returns `data.nodes: []` with `success: true`, which is indistinguishable from "the screen is empty" or "the node is gone" for any caller that greps the result for an identifier. This cost real time in the review round: a plain snapshot after the `testID` edit looked -as if the id had never reached the tree, when it had been there the whole time — +as if the id had never reached the tree, when it had been there the whole time - `--force-full` returned it (the resulting trees are excerpted in `evidence/a11y-excerpt.json`; full files on branch `poc/agent-device-visual-runner`). Anything that asks "is this node on screen?" must pass `--force-full`; the runner on that branch does so for exactly this reason. -An empty diff-mode result would be much less of a trap if the payload said so — +An empty diff-mode result would be much less of a trap if the payload said so - e.g. a `mode: "diff"` / `unchanged: true` field alongside the empty array. ## 14. `open --relaunch` restores the app's previous route @@ -256,9 +264,9 @@ not. The example app persists its navigation state in AsyncStorage on whatever screen it was on. Reproduced on both platforms in this pass: The logs of the runs that first showed this were not kept. The fixed runner on -branch `poc/agent-device-visual-runner` logs `relaunching the app … not on the Surface screen — going back to the +branch `poc/agent-device-visual-runner` logs `relaunching the app … not on the Surface screen, going back to the example list … pressing "Back" … at the example list root` when started from -another example screen, on both platforms — a branch that could not be reached if a +another example screen, on both platforms, a branch that could not be reached if a relaunch reset the route. Its run summaries are committed on that branch under `example/visual/evidence/runs/`. @@ -275,9 +283,9 @@ row by position and width. ## 15. The dev-menu check runs before the app finishes loading `dismissDevMenu()` snapshots once, immediately after the relaunch. On iOS that -snapshot came back with three nodes — `UIApplication`, `SplashScreenLogo`, -`Downloading 100%…` — so it found none of the `Close` / `Continue` labels and -returned "clean". Reproduced for the record on 2026-09-11 — +snapshot came back with three nodes, `UIApplication`, `SplashScreenLogo`, +`Downloading 100%…`, so it found none of the `Close` / `Continue` labels and +returned "clean". Reproduced for the record on 2026-09-11 - `evidence/devclient-excerpt.json`, `ios_after_open_relaunch`: immediately after `open --relaunch` the tree is 3 nodes (`React Native Paper Example`, the splash image, `Downloading 100%…`); six seconds later it is 77 nodes including the dev @@ -298,8 +306,8 @@ entry (`http://192.168.1.151:8081`), which reloads the bundle in ~20 s. On iOS every edit to `src/components/Surface.tsx` was picked up within a few seconds (first realistic-break capture already differed: 10,179 px). On Android -the same edits produced **zero** changed pixels — including the gross break, -every elevation level forced to 5 — even though Metro was serving the new code +the same edits produced **zero** changed pixels, including the gross break, +every elevation level forced to 5, even though Metro was serving the new code (`curl .../.expo/.virtual-metro-entry.bundle?platform=android` contained the probe added alongside the break) and `adb reverse --list` showed `tcp:8081 tcp:8081`. `adb logcat` carried no React Native output at all, so it @@ -307,7 +315,7 @@ is useless as a "did the edit land" probe here. Pressing **Reload** in the dev menu (`adb shell input keyevent 82`, then press the `Reload` node) made the break appear immediately at the expected magnitude (gross: 65,051 px at 0.1). Consequence for the loop: on Android, an edit must be followed by an explicit -reload — a device-runner that relies on Fast Refresh will silently compare stale +reload, a device-runner that relies on Fast Refresh will silently compare stale pixels and report PASS. ## 17. Minor: an agent-device command occasionally exits non-zero with no output @@ -330,13 +338,15 @@ diff image at 0.02 but none at 0.1, because at 0.1 it matches. The 0.1 rows in ## 19. The dev-client's floating "Tools" button lands inside the crop and reads as a regression +**Filed upstream:** https://github.com/callstack/agent-device/issues/2582 (2026-09-14). + Found 2026-09-11 while re-running the Android loop with `src/` clean after the -round-2 changes. The scripted loop reported a deterministic **FAIL** — -`surface-example-elevated changed=2822 (0.34%) regions=1` — twice in a row, +round-2 changes. The scripted loop reported a deterministic **FAIL** - +`surface-example-elevated changed=2822 (0.34%) regions=1`, twice in a row, against a baseline byte-identical to the committed one (`md5 8693c919…` in both the working tree and `HEAD`). The diff image (`evidence/diff-images/android-devclient-tools-button.png`) shows the change: a -152x74 pill at the top-right of the crop reading **Tools** — the Expo dev-client's +152x74 pill at the top-right of the crop reading **Tools**, the Expo dev-client's floating dev-tools button, `android.widget.ImageView` label `Tools`, rect `{x:1115, y:243, w:78, h:78}` (`evidence/devclient-excerpt.json`, `android_devclient_floating_tools_button`). Both failing run summaries are on branch `poc/agent-device-visual-runner`. @@ -350,7 +360,7 @@ survives a relaunch. It had been off in every earlier run today interaction flipped it is not known. Two lessons. For agent-device: a screenshot of a dev build can contain dev-client -chrome that is not part of the app, and `diff screenshot` cannot tell — worth a +chrome that is not part of the app, and `diff screenshot` cannot tell, worth a note in the docs, or a `screenshot` option that hides dev-client overlays. For any runner: a dev overlay inside the crop must never be reported as a visual regression; the runner on branch `poc/agent-device-visual-runner` looks for the floating node after dismissing the @@ -358,3 +368,25 @@ dev menu and launcher, turns it off through the dev menu when it can, and otherwise stops with a message naming the node and the manual fix. This is also the strongest argument so far for capturing from a release build rather than a dev-client once this moves past a PoC. + +## 20. web: `screenshot --crop-on` is refused + +**Filed upstream:** https://github.com/callstack/agent-device/issues/2583 (2026-09-14). + +Tried on 2026-09-14 against `expo export --platform web` of the example app served +on 127.0.0.1:4322, through `agent-device web setup` (agent-browser 0.27.1, Node +24.18). `open` works and a full-page `screenshot` returns 1280x577 +(`evidence/diff-images/web-full-page-screenshot.png`). The crop that the iOS and +Android loop is built on is refused: + +``` +npx agent-device@0.21.0 screenshot web-crop.png --crop-on 'id="surface-example-elevated"' --platform web --session web --json +→ UNSUPPORTED_OPERATION: screenshot --crop-on is not accepted on web targets + details: { reason: "CROP_TARGET_NOT_ACCEPTED", rejectionReason: "PENDING_PIXEL_IDENTITY_EVIDENCE" } +``` + +Transcript: `evidence/web-excerpt.json`. The docs say crop-on is accepted on iOS +simulators and Android emulators only, so this is expected behaviour, not a bug. +Consequence for a web leg of the suite: full-viewport diffs, a different loop from +the per-section one, and any motion on the page has to be frozen since it cannot +be cropped out. Not pursued for a Surface-only PoC. diff --git a/example/visual/evidence/web-excerpt.json b/example/visual/evidence/web-excerpt.json new file mode 100644 index 0000000000..35f8593766 --- /dev/null +++ b/example/visual/evidence/web-excerpt.json @@ -0,0 +1,33 @@ +{ + "about": "agent-device 0.21.0, --platform web (managed agent-browser 0.27.1, Node 24.18), against `expo export --platform web` of the example app served on 127.0.0.1:4322, 2026-09-14.", + "open": { + "success": true, + "device": "Agent Browser Chrome", + "startupMs": 1576 + }, + "screenshot_crop_on": { + "command": "screenshot web-crop.png --crop-on 'id=\"surface-example-elevated\"' --platform web --session web --json", + "success": false, + "error": { + "code": "UNSUPPORTED_OPERATION", + "message": "screenshot --crop-on is not accepted on web targets", + "hint": "This command is not available for the selected platform/device.", + "diagnosticId": "mu0zgqxl-62c0defe", + "logPath": "/Users/juliankobrynski/.agent-device/sessions/web/requests/4f9d41985f52c500.ndjson", + "diagnosticsRecord": { + "session": "web", + "requestId": "4f9d41985f52c500" + }, + "details": { + "reason": "CROP_TARGET_NOT_ACCEPTED", + "rejectionReason": "PENDING_PIXEL_IDENTITY_EVIDENCE" + } + } + }, + "screenshot_plain": { + "command": "screenshot web-full.png --platform web --session web --json", + "success": true, + "width": 1280, + "height": 577 + } +} From cf143f9a7d2291f03c6cac49aa31c9fd693eb2f9 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Mon, 14 Sep 2026 11:45:39 +0200 Subject: [PATCH 08/18] test(example): drop references to upstream issues that were withdrawn --- example/visual/README.md | 8 ++++---- example/visual/evidence/issues.md | 12 +----------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/example/visual/README.md b/example/visual/README.md index 96c2e425f6..9e5484af93 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -6,7 +6,7 @@ Proof of concept, under review in #5115. iOS and Android against the existing ex Does [agent-device](https://github.com/callstack/agent-device) capture the existing example screens deterministically enough to diff `Surface` against a baseline, and does that diff catch a realistic regression rather than only a gross one? -Yes on both platforms, with one catch. The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression, elevation level 1 rendering the level-2 shadow, is caught at `--threshold 0.02`, on exactly the right card, and gives the same pixel count on three independent captures per platform. At agent-device's default threshold (0.1) that same regression is reported as a perfect match on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. Filed as [callstack/agent-device#2579](https://github.com/callstack/agent-device/issues/2579). +Yes on both platforms, with one catch. The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression, elevation level 1 rendering the level-2 shadow, is caught at `--threshold 0.02`, on exactly the right card, and gives the same pixel count on three independent captures per platform. At agent-device's default threshold (0.1) that same regression is reported as a perfect match on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. ## Setup @@ -62,12 +62,12 @@ Same count every time, and the same as the first single captures. The diff image ## Web -Tried once on 2026-09-14 against `expo export --platform web` of the example app, served locally, with agent-device's managed browser (`agent-device web setup`, agent-browser 0.27.1). `open` works and a full-page `screenshot` works (1280x577). `screenshot --crop-on 'id="surface-example-elevated"'` is refused: `UNSUPPORTED_OPERATION`, `CROP_TARGET_NOT_ACCEPTED`, `PENDING_PIXEL_IDENTITY_EVIDENCE`. Transcript in `evidence/web-excerpt.json`, the full-page capture in `evidence/diff-images/web-full-page-screenshot.png`. So web is not blocked, but it is a different loop, full-viewport diffs rather than per-section crops, and was not pursued for a Surface-only PoC. Filed as [callstack/agent-device#2583](https://github.com/callstack/agent-device/issues/2583). +Tried once on 2026-09-14 against `expo export --platform web` of the example app, served locally, with agent-device's managed browser (`agent-device web setup`, agent-browser 0.27.1). `open` works and a full-page `screenshot` works (1280x577). `screenshot --crop-on 'id="surface-example-elevated"'` is refused: `UNSUPPORTED_OPERATION`, `CROP_TARGET_NOT_ACCEPTED`, `PENDING_PIXEL_IDENTITY_EVIDENCE`. Transcript in `evidence/web-excerpt.json`, the full-page capture in `evidence/diff-images/web-full-page-screenshot.png`. So web is not blocked, but it is a different loop, full-viewport diffs rather than per-section crops, and was not pursued for a Surface-only PoC. ## Caveats - The crop is not perfectly isolated. Under the gross break a full-width 33 px band at the top of the crop changed: the Appbar is itself a `Surface`, and the break changed every Surface. The realistic break showed no bleed. An Appbar-only change could register against this crop; that is inherent in screenshotting real screens rather than isolated components. -- Dev-client chrome can land in the crop. The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sat inside the Android section and produced a deterministic 2,822 px false FAIL with `src/` clean (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`). Turning it off in the dev menu ("Tools button") restored 0. A release build would remove the whole class of dev menu, dev launcher and floating button. Filed as [callstack/agent-device#2582](https://github.com/callstack/agent-device/issues/2582). +- Dev-client chrome can land in the crop. The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sat inside the Android section and produced a deterministic 2,822 px false FAIL with `src/` clean (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`). Turning it off in the dev menu ("Tools button") restored 0. A release build would remove the whole class of dev menu, dev launcher and floating button. - Not measured: swiftshader (what `ubuntu-latest` renders with), cold simulator/emulator boot, another host or day, runtime or image updates, other components, text-heavy crops, dark theme. ## Reproducing by hand @@ -110,7 +110,7 @@ Each learned while scripting the loop above; documented in `evidence/issues.md`, ## agent-device issues -Twenty findings with commands and evidence in `evidence/issues.md`. Five are filed on callstack/agent-device: the default diff threshold misses soft-shadow regressions ([#2579](https://github.com/callstack/agent-device/issues/2579)), sessions are bound to one device per cwd ([#2580](https://github.com/callstack/agent-device/issues/2580)), the typed Node client is exported but unreachable without a dependency ([#2581](https://github.com/callstack/agent-device/issues/2581)), dev-client chrome renders into screenshots and the diff cannot tell ([#2582](https://github.com/callstack/agent-device/issues/2582)), `--crop-on` is refused on web ([#2583](https://github.com/callstack/agent-device/issues/2583)). The rest are smaller and recorded for the maintainers to pick from. +Twenty findings with commands and evidence in `evidence/issues.md`, none filed upstream yet. The four that matter most: the default diff threshold misses soft-shadow regressions (4), sessions are bound to one device per cwd (6), dev-client chrome renders into screenshots and the diff cannot tell (19), `--crop-on` is refused on web (20). ## Evidence diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index 68cf77d752..2679291f9b 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -1,6 +1,6 @@ # agent-device dogfooding issues -Twenty findings from using agent-device 0.21.0 as a visual regression tool on the react-native-paper example app. Five are filed on callstack/agent-device (4, 6, 12, 19, 20); the rest are recorded here for the maintainers to pick from. +Twenty findings from using agent-device 0.21.0 as a visual regression tool on the react-native-paper example app. They are recorded here; none is filed upstream. Tool: `agent-device` 0.21.0 (run as `npx agent-device@0.21.0`), Node v24.18. Device: iPhone 17 Pro, iOS 26.5, UDID `2464A356-C17C-4B0D-99DB-CDFBDB98826C`. @@ -99,8 +99,6 @@ Recovery: `press 'label="Close"'`, artifact `48-press-close.json`. ## 4. Default `diff screenshot --threshold 0.1` misses real soft-shadow regressions -**Filed upstream:** https://github.com/callstack/agent-device/issues/2579 (2026-09-14). - New in Task B, and the most consequential finding for using this tool as a visual regression guard for Material elevation. @@ -163,8 +161,6 @@ round-trip (`startup.durationMs` 1032). Artifacts `44-screenshot.json`, ## 6. A cwd whose session is bound to one platform cannot target another device -**Filed upstream:** https://github.com/callstack/agent-device/issues/2580 (2026-09-14). - `boot --platform android --device Pixel_10_Pro` from a cwd whose default session was bound to an iOS simulator fails with `INVALID_ARGS` ("already bound to apple device … but this request selected --platform=android"). Artifact `74-boot.json`. The hint is @@ -226,8 +222,6 @@ Unlike iOS, the gross break is caught at the default (65,051 px / 7.92 %). ## 12. The typed Node client is exported but unreachable without a dependency -**Filed upstream:** https://github.com/callstack/agent-device/issues/2581 (2026-09-14). - `agent-device@0.21.0`'s `package.json` does export the client (`exports["."] → dist/src/index.js`, which exports `createAgentDeviceClient`), so the plan's "one Node file on `createAgentDeviceClient()`" is supported in @@ -338,8 +332,6 @@ diff image at 0.02 but none at 0.1, because at 0.1 it matches. The 0.1 rows in ## 19. The dev-client's floating "Tools" button lands inside the crop and reads as a regression -**Filed upstream:** https://github.com/callstack/agent-device/issues/2582 (2026-09-14). - Found 2026-09-11 while re-running the Android loop with `src/` clean after the round-2 changes. The scripted loop reported a deterministic **FAIL** - `surface-example-elevated changed=2822 (0.34%) regions=1`, twice in a row, @@ -371,8 +363,6 @@ dev-client once this moves past a PoC. ## 20. web: `screenshot --crop-on` is refused -**Filed upstream:** https://github.com/callstack/agent-device/issues/2583 (2026-09-14). - Tried on 2026-09-14 against `expo export --platform web` of the example app served on 127.0.0.1:4322, through `agent-device web setup` (agent-browser 0.27.1, Node 24.18). `open` works and a full-page `screenshot` returns 1280x577 From 731699e25da84d5ab509ec2079a4b022c3372d6b Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Tue, 15 Sep 2026 16:00:31 +0200 Subject: [PATCH 09/18] test(example): drop the Node-client entry from the agent-device findings --- example/visual/README.md | 4 ++-- example/visual/evidence/issues.md | 33 ++++++++++--------------------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/example/visual/README.md b/example/visual/README.md index 9e5484af93..2a42a85e49 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -110,12 +110,12 @@ Each learned while scripting the loop above; documented in `evidence/issues.md`, ## agent-device issues -Twenty findings with commands and evidence in `evidence/issues.md`, none filed upstream yet. The four that matter most: the default diff threshold misses soft-shadow regressions (4), sessions are bound to one device per cwd (6), dev-client chrome renders into screenshots and the diff cannot tell (19), `--crop-on` is refused on web (20). +Nineteen findings with commands and evidence in `evidence/issues.md`, none filed upstream. The four that matter most: the default diff threshold misses soft-shadow regressions (4), sessions are bound to one device per cwd (6), dev-client chrome renders into screenshots and the diff cannot tell (18), `--crop-on` is refused on web (19). ## Evidence - `evidence/results.csv`: one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. -- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match (issue 18). +- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match (issue 17). - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. - `env.json`: the pinned devices, versions and thresholds. diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index 2679291f9b..cb30fc561b 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -1,6 +1,6 @@ # agent-device dogfooding issues -Twenty findings from using agent-device 0.21.0 as a visual regression tool on the react-native-paper example app. They are recorded here; none is filed upstream. +Nineteen findings from using agent-device 0.21.0 as a visual regression tool on the react-native-paper example app. They are recorded here; none is filed upstream. Tool: `agent-device` 0.21.0 (run as `npx agent-device@0.21.0`), Node v24.18. Device: iPhone 17 Pro, iOS 26.5, UDID `2464A356-C17C-4B0D-99DB-CDFBDB98826C`. @@ -116,7 +116,7 @@ Committed evidence: `evidence/results.csv` rows `ios / realistic / 0.1` (0 chang `match: true`) and `ios / realistic / 0.02` (10,179 changed pixels) are the two diffs of the same capture; the three repeats are the `ios / realistic-{1,2,3}` rows at both thresholds; the diff image at 0.02 is `evidence/diff-images/ios-realistic-1-t0.02.png`. -There is no 0.1 image because `diff screenshot --out` writes nothing on a match (issue 18). +There is no 0.1 image because `diff screenshot --out` writes nothing on a match (issue 17). The raw capture PNG was not committed. ```json @@ -220,20 +220,7 @@ Android repeats the iOS finding for the realistic break: 0 changed pixels and `match: true` at the default 0.1, 9,336 px at 0.02 (`results.csv`, `android / realistic`). Unlike iOS, the gross break is caught at the default (65,051 px / 7.92 %). -## 12. The typed Node client is exported but unreachable without a dependency - -`agent-device@0.21.0`'s `package.json` does export the client -(`exports["."] → dist/src/index.js`, which exports `createAgentDeviceClient`), so -the plan's "one Node file on `createAgentDeviceClient()`" is supported in -principle. In practice the package only exists in the `npx` cache -(`~/.npm/_npx//node_modules/agent-device`); `import('agent-device')` from -`example/` fails with `ERR_MODULE_NOT_FOUND`. Reaching the typed API therefore -means adding a devDependency, which the PoC forbade, so the runner (on branch `poc/agent-device-visual-runner`) -spawns the CLI with `--json` instead. Worth a documented "run the client without -installing" story (or a `npx agent-device init`-style scaffold), since the CLI -path costs an `npx` resolution per command and loses all the result types. - -## 13. `snapshot` returns an empty `nodes` array when the tree is unchanged +## 12. `snapshot` returns an empty `nodes` array when the tree is unchanged A plain `snapshot` only reports nodes that changed since the previous snapshot in the same session. When nothing changed it returns `data.nodes: []` with @@ -248,7 +235,7 @@ exactly this reason. An empty diff-mode result would be much less of a trap if the payload said so - e.g. a `mode: "diff"` / `unchanged: true` field alongside the empty array. -## 14. `open --relaunch` restores the app's previous route +## 13. `open --relaunch` restores the app's previous route The first scripted loop assumed a relaunch puts the example list back at the top, so it could scroll down a fixed number of rows to reach "Surface". It does @@ -274,7 +261,7 @@ kept either; the trap is encoded as a unit test in the runner on branch `poc/age (`findSurfaceRow picks the list row, not the Appbar title`), whose fix picks the row by position and width. -## 15. The dev-menu check runs before the app finishes loading +## 14. The dev-menu check runs before the app finishes loading `dismissDevMenu()` snapshots once, immediately after the relaunch. On iOS that snapshot came back with three nodes, `UIApplication`, `SplashScreenLogo`, @@ -296,7 +283,7 @@ On Android the same step fails differently and confirms issue 9: after labels differ from the dev menu's. Recovery is to press the recently-opened entry (`http://192.168.1.151:8081`), which reloads the bundle in ~20 s. -## 16. Fast Refresh did not reach the Android app; a manual Reload was required +## 15. Fast Refresh did not reach the Android app; a manual Reload was required On iOS every edit to `src/components/Surface.tsx` was picked up within a few seconds (first realistic-break capture already differed: 10,179 px). On Android @@ -312,7 +299,7 @@ Consequence for the loop: on Android, an edit must be followed by an explicit reload, a device-runner that relies on Fast Refresh will silently compare stale pixels and report PASS. -## 17. Minor: an agent-device command occasionally exits non-zero with no output +## 16. Minor: an agent-device command occasionally exits non-zero with no output Twice in this pass (`press '@e2'`, `press 'label="Close"'`, both on iOS) the CLI exited 1 with completely empty stdout _and_ stderr. Re-running the identical @@ -321,7 +308,7 @@ caller cannot distinguish this from a crash, and that a runner's "parse the first `{`..`}` out of stdout" fallback turns it into a `null` response rather than a clear error. -## 18. Minor: `diff screenshot --out` writes nothing when the images match +## 17. Minor: `diff screenshot --out` writes nothing when the images match `--out` is silently ignored on a `match: true` diff, and the response omits `diffPath` as well. That is defensible (there is nothing to draw), but it means @@ -330,7 +317,7 @@ per-threshold sweep produces a gappy set of files: the realistic break has a diff image at 0.02 but none at 0.1, because at 0.1 it matches. The 0.1 rows in `evidence/results.csv` are the record for those. -## 19. The dev-client's floating "Tools" button lands inside the crop and reads as a regression +## 18. The dev-client's floating "Tools" button lands inside the crop and reads as a regression Found 2026-09-11 while re-running the Android loop with `src/` clean after the round-2 changes. The scripted loop reported a deterministic **FAIL** - @@ -361,7 +348,7 @@ otherwise stops with a message naming the node and the manual fix. This is also the strongest argument so far for capturing from a release build rather than a dev-client once this moves past a PoC. -## 20. web: `screenshot --crop-on` is refused +## 19. web: `screenshot --crop-on` is refused Tried on 2026-09-14 against `expo export --platform web` of the example app served on 127.0.0.1:4322, through `agent-device web setup` (agent-browser 0.27.1, Node From 21dc2ab214ad7470f002883a9e6666725fa4a6fc Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Tue, 15 Sep 2026 16:37:38 +0200 Subject: [PATCH 10/18] test(example): re-verify the agent-device findings All 19 re-checked against 0.21.3 docs and source, the emulator, and the upstream tracker. None was an unreported agent-device bug: one fixed upstream (#2580), two documented, the rest our build, our runner, or not reproducible. File restructured accordingly; original numbers kept in brackets. --- example/visual/evidence/issues.md | 376 ++---------------------------- 1 file changed, 25 insertions(+), 351 deletions(-) diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index cb30fc561b..0d09a2be23 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -1,369 +1,43 @@ -# agent-device dogfooding issues +# agent-device findings from the PoC, verified -Nineteen findings from using agent-device 0.21.0 as a visual regression tool on the react-native-paper example app. They are recorded here; none is filed upstream. +Nineteen observations were recorded while using agent-device 0.21.0 (`npx agent-device@0.21.0`) as a visual regression tool on the example app, on an iPhone 17 Pro simulator (iOS 26.5) and a `Pixel_10_Pro` emulator (API 37). On 2026-09-15 every one was re-checked against the 0.21.3 docs and source, the emulator, and the upstream issue tracker, with one question: is this agent-device's fault, or ours? -Tool: `agent-device` 0.21.0 (run as `npx agent-device@0.21.0`), Node v24.18. -Device: iPhone 17 Pro, iOS 26.5, UDID `2464A356-C17C-4B0D-99DB-CDFBDB98826C`. -Session state dir (for runner/request logs): `/Users/juliankobrynski/.agent-device/sessions/cwd_4a6658db6e09aaf6_default/`. +Result: **none was an unreported agent-device bug.** One was a real ergonomic gap and has since been fixed upstream. Two are documented behaviour worth knowing. The rest were our own build, our runner, React Native, or claims that did not survive re-testing. They are kept below because most of them are things anyone scripting this loop will hit. Original numbers are in brackets so the README references still resolve. ---- +## What holds up -## 1. `find` taps the match instead of just locating it +**The default diff threshold is too loose for shadows; we use 0.02 [4].** Documented, deterministic behaviour, not a defect: `--threshold` "sets the per-pixel RGB tolerance (default 0.1)", and the implementation maps it to a colour distance of about 44 RGB units. A one-step Material elevation change moves a shadow by a few units per channel, so at 0.1 the realistic Surface regression diffs to 0 changed pixels and `match: true` on both platforms, while 0.02 catches it (10,179 px on iOS, 9,336 px on Android, identical on three captures each, noise floor 0 at every threshold down to 0.01). Full numbers in `results.csv`, images in `diff-images/`. Any suite built on this must set the threshold explicitly and verify noise at it. One small upstream ask survives: the diff result JSON does not record which threshold produced it, so a saved diff cannot say what tolerance it was run at. -`find` is documented/named as a query, but a successful match performs a tap, so -navigation happens as a side effect. There is no way to locate an element without -acting on it (you have to fall back to `snapshot`). +**Implicit sessions were keyed by cwd only [6], fixed upstream.** Driving iOS and Android from one checkout needed a hand-named `--session` on every command. Reported as callstack/agent-device#2580 and fixed: the unreleased changelog entry keys the implicit session by workspace and platform (not yet released as of 0.21.3). Our iOS commands also omitted `--platform`, which parked the session on the platform-less default and made the conflict worse. -Command: +**`diff screenshot --out` writes the image only when pixels differ [17].** On a match it writes nothing and deletes any stale file at that path, so a previous run's diff can never be mistaken for the current one. `diffPath` in the response is the signal, not file existence. The docs say it "writes a diff PNG when `--out` is provided" without the on-mismatch qualifier; that is the only remark. -``` -npx agent-device@0.21.0 find 'label="Surface"' --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C --json -``` +**`--crop-on` is refused on web [19].** Documented: accepted on iOS simulators and Android emulators only, refused before any device work (`CROP_TARGET_NOT_ACCEPTED`). `open` and full-page `screenshot` work on web (`web-excerpt.json`). A web leg would be full-viewport diffs, a different loop, with page motion frozen since it cannot be cropped out. -Output (note `"Tapped …"`): +## Our build and our runner, not the tool -```json -{ - "success": true, - "data": { - "ref": "@e13", - "locator": "any", - "query": "label=\"Surface\"", - "x": 201, - "y": 501, - "message": "Tapped @e13 (201, 501)" - } -} -``` +**Expo dev-client chrome ends up in screenshots [3, 9, 14, 18].** A dev build cold-starts into the Expo dev launcher on Android and shows the dev menu on iOS a few seconds after the bundle loads. Reproduced with plain `adb shell am force-stop` and `monkey`, no agent-device involved. The dev-client's floating "Tools" button, toggled by the dev menu entry "Tools button", sat inside the Android crop and produced a deterministic 2,822 px false FAIL with `src/` clean (`diff-images/android-devclient-tools-button.png`, `devclient-excerpt.json`). agent-device already flags the loading state: `wait stable` returned "Settled on a nearly-empty tree, the app may still be loading. Wait for specific content." A runner must reconnect to the dev server after any relaunch, wait for real content, dismiss the menu, and check for the floating button. A release build removes the whole class. -Artifact: `19-find-surface.json` (also `16-find.json`, `17-find.json`). +**Fast Refresh did not reach the Android app after a relaunch [15].** Metro served the new bundle; the app kept the old one until a Reload. Metro and Expo behaviour, and agent-device documents the remedy we did by hand through the dev menu: `agent-device metro reload`, "before `open --relaunch`". A runner should use that, never Fast Refresh. -Related: when the label is not on screen, `find` fails with a generic -`find did not match any element` and no indication that the element may simply be -below the fold, artifact `17-find.json`. +**The example app restores its last route on relaunch [13].** `PERSISTENCE_KEY = 'NAVIGATION_STATE'` in `example/src/index.tsx`. A runner cannot assume the list is at the top after `open --relaunch`; it has to press Back to the root and pick the "Surface" row, not the header title with the same label. ---- +**Android exposes the same label on a row and its text child [7].** React Native's accessibility output, visible on every example row and on the Expo launcher itself, so `find 'label="Surface"'` is `AMBIGUOUS_MATCH` there and unique on iOS. agent-device documents the disambiguators: `--first`, `--last`, a `role=` qualifier, and the read-only `list` action that returns the candidates without tapping. -## 2. `scroll bottom` hits a safety limit and leaves the Expo dev menu open +**`scroll bottom` hit its pass limit on the example list [2].** A documented, bounded edge-seek that refuses to swipe forever; the dev menu was on screen absorbing the gestures, which is also why the edge was never reached. Use `scroll down 6 --settle`, or `scroll

    --until ` on 0.21.1 and later. -`scroll bottom` on the example-list screen never reports reaching the edge, aborts -on a safety limit, and the repeated scrolling gesture is interpreted by the Expo -dev client as the "open dev menu" gesture. The app is then left with the dev-menu -sheet on top, which silently poisons any screenshot taken afterwards. +## Withdrawn after re-verification -Command: +These were recorded as agent-device problems and are not. -``` -npx agent-device@0.21.0 scroll bottom --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C --json -``` +- **`find` taps its match [1].** `find` is documented as `find ` with `click` as the default action and a read-only `list` action that never taps. Upstream #1625 raised the same complaint and was closed in August with `list` as the answer. We ran bare `find` and got the documented default. +- **No timing in `screenshot --json` [5].** Per-command durations are in the session event log (`agent-device events`, `request.finished` with `durationMs`); `open` returns `startup.durationMs` as well. +- **Stale refs rejected with a confusing message [8].** The response carries `hint: "Capture a fresh interactive snapshot (snapshot -i) or use a stable selector, then retry."`, a reason code, and the set of refs the frame does accept. The message says exactly what to do. +- **`logs` reports success on an inactive log [10].** Bare `logs` is documented as an info query; `success: true` means the query ran, and `active`, `state` and `sizeBytes` are the answer. Logging is documented as off until `logs start`. +- **`--pixel-density` is iOS-only [11].** Documented in the CLI help; Android returns native pixels anyway. +- **`snapshot` returns empty `nodes` when the tree is unchanged [12].** Not reproducible: two consecutive `snapshot --json` returned the full 57 nodes both times, and the source never empties `nodes`, only adds an `unchanged` metadata field. The text-mode "unchanged" acknowledgement is documented. The empty result we saw most likely came from a `--scope` that matched nothing. +- **Occasional exit 1 with empty stdout and stderr [16].** Two unlogged occurrences on iOS; 0 of 40 rapid calls on Android reproduced it; nothing upstream. Not supportable. -Output: +## Filing history -```json -{ - "success": false, - "error": { - "code": "COMMAND_FAILED", - "message": "scroll bottom reached the safety limit before the snapshot showed the edge", - "hint": "The scoped scroll container still reports hidden content. Use a smaller manual scroll + snapshot loop to inspect the current state." - } -} -``` - -Artifact: `16-scroll.json`. Recovery: `press 'label="Close"'` (artifact `18-press-close.json`). -Workaround used for the PoC: `scroll down 6 --settle` twice instead of `scroll bottom`. - ---- - -## 3. `open --relaunch` leaves the Expo dev menu open on the restarted app - -New in Task B. After `open … --relaunch` the app process is genuinely restarted -(PID 27223 -> 37870) and React Navigation restores the previous screen, but the -Expo dev-client menu sheet is on screen. A capture taken right after the relaunch -would include it. There is no signal in the `open --json` payload that the app is -not in a clean state; only a `snapshot` reveals it. - -Command: - -``` -npx agent-device@0.21.0 open com.callstack.reactnativepaperexample --platform ios \ - --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C --relaunch --json -``` - -`open` reports success (`startup.durationMs: 1032`), artifact `45-open-relaunch.json`. -The following snapshot shows the dev menu nodes (`Runtime version: exposdk:56.0.0`, -`Close`, `Reload`, `Go home`), artifact `47-snapshot.json`. -Recovery: `press 'label="Close"'`, artifact `48-press-close.json`. - ---- - -## 4. Default `diff screenshot --threshold 0.1` misses real soft-shadow regressions - -New in Task B, and the most consequential finding for using this tool as a visual -regression guard for Material elevation. - -A realistic regression, Surface elevation level 1 rendering the level 2 spot and -ambient shadow, one step off, is reported as a **perfect match** at the default -threshold: - -``` -npx agent-device@0.21.0 diff screenshot \ - --baseline example/visual/__baselines__/ios/surface-example-elevated.png \ - --out --threshold 0.1 --json -``` - -Committed evidence: `evidence/results.csv` rows `ios / realistic / 0.1` (0 changed pixels, -`match: true`) and `ios / realistic / 0.02` (10,179 changed pixels) are the two diffs of the -same capture; the three repeats are the `ios / realistic-{1,2,3}` rows at both thresholds; -the diff image at 0.02 is `evidence/diff-images/ios-realistic-1-t0.02.png`. -There is no 0.1 image because `diff screenshot --out` writes nothing on a match (issue 17). -The raw capture PNG was not committed. - -```json -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} -``` - -The same pair at `--threshold 0.02` reports 10179 different pixels (1.31%) in a -single 378x378 region exactly around the affected surface (`results.csv`, -`ios / realistic`; image `ios-realistic-1-t0.02.png`). - -The gross break (every elevated surface forced to the level 5 shadow) is also -badly under-reported at the default threshold: 4277 px / 0.55% in one 316x17 band -versus 116292 px / 15.02% in 3 regions at 0.02 (`results.csv`, `ios / gross`; -image `ios-gross-t0.02.png`). At the default threshold, a change that is -plainly visible to the eye across the whole screen registers as a thin sliver. - -Suggestion: either lower the default, or document that the default threshold is -unsuitable for low-contrast/anti-aliased content such as shadows and gradients, -and surface the threshold actually used in the JSON output (it is not echoed today). - ---- - -## 5. Minor: no way to time a capture from the JSON output - -`screenshot --json` returns path and dimensions but no timing, so wall-clock has to -be measured around the process. Measured externally for the record: single -`screenshot --crop-on … --pixel-density 3` = 673-737 ms; `open --relaunch` = 1539 ms -round-trip (`startup.durationMs` 1032). Artifacts `44-screenshot.json`, -`45-open-relaunch.json`. - ---- - -# Android (Fri 2026-09-10, agent-device 0.21.0, Pixel_10_Pro API 37) - -## 6. A cwd whose session is bound to one platform cannot target another device - -`boot --platform android --device Pixel_10_Pro` from a cwd whose default session was -bound to an iOS simulator fails with `INVALID_ARGS` ("already bound to apple device -… but this request selected --platform=android"). Artifact `74-boot.json`. The hint is -good (pass a different `--session`), and `--session android` worked (`75-boot.json`), -but a session keyed only by cwd means one checkout cannot drive iOS and Android -without inventing session names by hand. Worth documenting in the multi-platform -guide, or keying sessions by cwd+platform. - -## 7. The same `find` selector is not portable across platforms - -`find 'label="Surface"'` resolves to exactly one node on iOS, but on Android it fails -with `AMBIGUOUS_MATCH`, the accessibility tree exposes both the row `ViewGroup` and -its child `TextView` with the same label (`83-find-surface.json`, -candidates `@e21 [group] "Surface"`, `@e22 [text] "Surface"`). Any cross-platform -script has to carry two selectors for one row. A role-defaulting rule (prefer the -tappable ancestor) or a documented `role=` qualifier for the common case would fix it. - -## 8. Refs from an earlier snapshot are rejected with a confusing message - -`press '@e21'`, with the ref taken from the immediately preceding `snapshot --json`, -failed: "Ref @e21 needs a complete snapshot, the current frame only authorizes its -emitted refs" (`84-press-surface.json`). Re-snapshotting and using the new ref for the -same element (`@e55`) worked (`86-press-surface.json`). The message does not say what -invalidated the ref or that a fresh snapshot renumbers every element. - -## 9. Android relaunch lands in the Expo dev launcher, not the app - -Android version of issue 3. `open com.callstack.reactnativepaperexample --platform -android` on an app whose process is alive shows the Expo **dev menu** overlay, two -presses ("Continue", then "Close") were needed to reach the app (`77-`/`79-`/ -`81-snapshot.json`). After `open --relaunch` (pid 9944 → 10860, `95-open-relaunch.json`) -the app starts on the Expo dev launcher screen and must be reconnected by pressing the -"RECENTLY OPENED" entry (`97-press-recent.json`), then the JS bundle takes several -seconds to load, `wait stable` returns immediately on the "nearly-empty tree" and only -`wait text` (or a retry) reveals the app is still on "Connecting to the development -server…" (`98-wait.json`). A dev-client aware `open` (or a documented recipe) would -remove three commands from every relaunch. - -## 10. `logs` reports success on an empty log unless `logs start` ran first - -`logs --json` returned `success: true` with `sizeBytes: 0`, `active: false`, -`state: "inactive"` (`104-logs.json`), no indication that nothing was being captured. -Confirming the Fast Refresh probe had to be done with `adb logcat -d | grep` -(19 hits). `logs start` (`105-logs-start.json`) arms capture, but a success response -for a log that is not running is misleading. - -## 11. Recorded, not a bug: `--pixel-density` is iOS-only - -`screenshot --crop-on … --pixel-density 3` on Android → `UNSUPPORTED_OPERATION`, -"currently supported only on iOS-family simulators" (`91-screenshot-pd3.json`). -Android already returns native device pixels (1280x642 for the crop at 480 dpi), so -nothing is lost, but the iOS default of 1x logical points remains an easy trap. - -## Threshold data point for issue 4 (Android) - -Android repeats the iOS finding for the realistic break: 0 changed pixels and -`match: true` at the default 0.1, 9,336 px at 0.02 (`results.csv`, `android / realistic`). -Unlike iOS, the gross break is caught at the default (65,051 px / 7.92 %). - -## 12. `snapshot` returns an empty `nodes` array when the tree is unchanged - -A plain `snapshot` only reports nodes that changed since the previous snapshot in -the same session. When nothing changed it returns `data.nodes: []` with -`success: true`, which is indistinguishable from "the screen is empty" or "the -node is gone" for any caller that greps the result for an identifier. This cost -real time in the review round: a plain snapshot after the `testID` edit looked -as if the id had never reached the tree, when it had been there the whole time - -`--force-full` returned it (the resulting trees are excerpted in -`evidence/a11y-excerpt.json`; full files on branch `poc/agent-device-visual-runner`). Anything that asks "is this node -on screen?" must pass `--force-full`; the runner on that branch does so for -exactly this reason. -An empty diff-mode result would be much less of a trap if the payload said so - -e.g. a `mode: "diff"` / `unchanged: true` field alongside the empty array. - -## 13. `open --relaunch` restores the app's previous route - -The first scripted loop assumed a relaunch puts the example list back at the -top, so it could scroll down a fixed number of rows to reach "Surface". It does -not. The example app persists its navigation state in AsyncStorage -(`PERSISTENCE_KEY = 'NAVIGATION_STATE'` in `example/src/index.tsx`), so after -`open --relaunch` (iOS) or `am force-stop` + `open` (Android) the app comes back -on whatever screen it was on. Reproduced on both platforms in this pass: - -The logs of the runs that first showed this were not kept. The fixed runner on -branch `poc/agent-device-visual-runner` logs `relaunching the app … not on the Surface screen, going back to the -example list … pressing "Back" … at the example list root` when started from -another example screen, on both platforms, a branch that could not be reached if a -relaunch reset the route. Its run summaries are committed on that branch under -`example/visual/evidence/runs/`. - -This is a runner bug, not an agent-device bug: navigation has to be driven -back to the list explicitly (press `Back` until no `Back` control is left, then -scroll for the row), not implied by a relaunch. Related trap: because -`navigateToSurface()` matches on `label === 'Surface'` and picks the largest -match, on the restored _Surface_ screen it pressed the nav header title -(`RCTParagraphComponentView "Surface"`) instead of a list row. That log was not -kept either; the trap is encoded as a unit test in the runner on branch `poc/agent-device-visual-runner` -(`findSurfaceRow picks the list row, not the Appbar title`), whose fix picks the -row by position and width. - -## 14. The dev-menu check runs before the app finishes loading - -`dismissDevMenu()` snapshots once, immediately after the relaunch. On iOS that -snapshot came back with three nodes, `UIApplication`, `SplashScreenLogo`, -`Downloading 100%…`, so it found none of the `Close` / `Continue` labels and -returned "clean". Reproduced for the record on 2026-09-11 - -`evidence/devclient-excerpt.json`, `ios_after_open_relaunch`: immediately after -`open --relaunch` the tree is 3 nodes (`React Native Paper Example`, the splash -image, `Downloading 100%…`); six seconds later it is 77 nodes including the dev -menu's `Close` (`identifier: "xmark"`). Full snapshots on branch `poc/agent-device-visual-runner` under -`example/visual/evidence/runner/`. The dev menu appears _after_ the bundle finishes downloading; a -check that snapshots once at open time cannot see it, and it then swallows every -subsequent scroll. The check has to -wait for the app to be ready first, and be repeated inside the navigation loop -rather than run once. - -On Android the same step fails differently and confirms issue 9: after -`am force-stop` + `open`, the app is the Expo **dev launcher** -(`DEVELOPMENT SERVERS` / `Fetch development servers` / `RECENTLY OPENED`), whose -labels differ from the dev menu's. Recovery is to press the recently-opened -entry (`http://192.168.1.151:8081`), which reloads the bundle in ~20 s. - -## 15. Fast Refresh did not reach the Android app; a manual Reload was required - -On iOS every edit to `src/components/Surface.tsx` was picked up within a few -seconds (first realistic-break capture already differed: 10,179 px). On Android -the same edits produced **zero** changed pixels, including the gross break, -every elevation level forced to 5, even though Metro was serving the new code -(`curl .../.expo/.virtual-metro-entry.bundle?platform=android` contained the -probe added alongside the break) and `adb reverse --list` showed -`tcp:8081 tcp:8081`. `adb logcat` carried no React Native output at all, so it -is useless as a "did the edit land" probe here. Pressing **Reload** in the dev -menu (`adb shell input keyevent 82`, then press the `Reload` node) made the -break appear immediately at the expected magnitude (gross: 65,051 px at 0.1). -Consequence for the loop: on Android, an edit must be followed by an explicit -reload, a device-runner that relies on Fast Refresh will silently compare stale -pixels and report PASS. - -## 16. Minor: an agent-device command occasionally exits non-zero with no output - -Twice in this pass (`press '@e2'`, `press 'label="Close"'`, both on iOS) the CLI -exited 1 with completely empty stdout _and_ stderr. Re-running the identical -command immediately afterwards succeeded. Nothing to act on beyond noting that a -caller cannot distinguish this from a crash, and that a runner's "parse the -first `{`..`}` out of stdout" fallback turns it into a `null` response rather -than a clear error. - -## 17. Minor: `diff screenshot --out` writes nothing when the images match - -`--out` is silently ignored on a `match: true` diff, and the response omits -`diffPath` as well. That is defensible (there is nothing to draw), but it means -"the diff image exists" cannot be used as evidence that a diff ran, and a -per-threshold sweep produces a gappy set of files: the realistic break has a -diff image at 0.02 but none at 0.1, because at 0.1 it matches. The 0.1 rows in -`evidence/results.csv` are the record for those. - -## 18. The dev-client's floating "Tools" button lands inside the crop and reads as a regression - -Found 2026-09-11 while re-running the Android loop with `src/` clean after the -round-2 changes. The scripted loop reported a deterministic **FAIL** - -`surface-example-elevated changed=2822 (0.34%) regions=1`, twice in a row, -against a baseline byte-identical to the committed one (`md5 8693c919…` in both -the working tree and `HEAD`). The diff image -(`evidence/diff-images/android-devclient-tools-button.png`) shows the change: a -152x74 pill at the top-right of the crop reading **Tools**, the Expo dev-client's -floating dev-tools button, `android.widget.ImageView` label `Tools`, rect -`{x:1115, y:243, w:78, h:78}` (`evidence/devclient-excerpt.json`, -`android_devclient_floating_tools_button`). Both failing run summaries are on branch `poc/agent-device-visual-runner`. - -It is a dev-client setting, toggled by the dev menu entry **"Tools button"** -(the dev menu lists `Close`, `Reload`, `TOOLS`, `Tools button`, `Toggle Dev Menu`, …). -Pressing it and then `Close` removed the node (60 nodes, no `Tools`), and the next -run passed with `changed=0` on both stories. The setting -survives a relaunch. It had been off in every earlier run today -(`round2-pass`, 08:53 UTC, 0 px) and was on by 10:14 UTC; which earlier dev-menu -interaction flipped it is not known. - -Two lessons. For agent-device: a screenshot of a dev build can contain dev-client -chrome that is not part of the app, and `diff screenshot` cannot tell, worth a -note in the docs, or a `screenshot` option that hides dev-client overlays. For -any runner: a dev overlay inside the crop must never be reported as a visual -regression; the runner on branch `poc/agent-device-visual-runner` looks for the floating node after dismissing the -dev menu and launcher, turns it off through the dev menu when it can, and -otherwise stops with a message naming the node and the manual fix. This is also -the strongest argument so far for capturing from a release build rather than a -dev-client once this moves past a PoC. - -## 19. web: `screenshot --crop-on` is refused - -Tried on 2026-09-14 against `expo export --platform web` of the example app served -on 127.0.0.1:4322, through `agent-device web setup` (agent-browser 0.27.1, Node -24.18). `open` works and a full-page `screenshot` returns 1280x577 -(`evidence/diff-images/web-full-page-screenshot.png`). The crop that the iOS and -Android loop is built on is refused: - -``` -npx agent-device@0.21.0 screenshot web-crop.png --crop-on 'id="surface-example-elevated"' --platform web --session web --json -→ UNSUPPORTED_OPERATION: screenshot --crop-on is not accepted on web targets - details: { reason: "CROP_TARGET_NOT_ACCEPTED", rejectionReason: "PENDING_PIXEL_IDENTITY_EVIDENCE" } -``` - -Transcript: `evidence/web-excerpt.json`. The docs say crop-on is accepted on iOS -simulators and Android emulators only, so this is expected behaviour, not a bug. -Consequence for a web leg of the suite: full-viewport diffs, a different loop from -the per-section one, and any motion on the page has to be frozen since it cannot -be cropped out. Not pursued for a Surface-only PoC. +Five of these were filed on callstack/agent-device on 2026-09-14 (#2579 to #2583) and withdrawn the same day. One (#2581, the Node client "unreachable" without a dependency) was simply wrong and a maintainer closed it within the hour; it has been removed from this file. #2580 was fixed upstream regardless. Nothing else is filed, and nothing will be without a maintainer of this repo deciding to. From 28b477918f6330f2ee3602e73c0aed382783faaa Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 09:15:21 +0200 Subject: [PATCH 11/18] test(example): iOS re-verification of the findings; README matches Baselines hold bit-for-bit on Xcode 27.0 once dev-client chrome is off; the realistic break still measures 10,179 px at 0.02 and 0 at 0.1. Corrections from the iOS pass: the iOS dev menu is a one-time onboarding scrim, not a per-relaunch sheet; the floating Tools button also crosses the iOS crop (3,916 px); scroll bottom succeeds on a clean screen; the stale-ref hint quote was wrong; a no-match --scope returns empty nodes with success. README no longer calls any finding an agent-device issue. --- example/visual/README.md | 13 ++++++------- example/visual/evidence/issues.md | 12 ++++++------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/example/visual/README.md b/example/visual/README.md index 2a42a85e49..4d74a09e3e 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -98,24 +98,23 @@ The same loop as one script for both platforms, with device pinning, overlay han ## What a real runner has to handle -Each learned while scripting the loop above; documented in `evidence/issues.md`, implemented on the runner branch: +Each learned while scripting the loop above and documented in `evidence/issues.md`; implemented on the runner branch. None of them is an agent-device bug: -- Relaunch before every capture. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. +- Reload before every capture with `agent-device metro reload`, then `open --relaunch`. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. - The example app persists navigation state. A relaunch lands on the last screen, so the runner has to press Back to the list root and pick the Surface row, not the header title. - Dev-client chrome: the dev menu appears seconds after the app is ready, the Android relaunch lands in the dev launcher, and the floating Tools button can appear inside the crop. -- `snapshot` returns an empty `nodes` array when nothing changed unless `--force-full` is passed. -- Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default hides real regressions. +- Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default 0.1 is documented as a 44-unit RGB tolerance, far looser than a one-step shadow change. - Pin the device (UDID, runtime, density) and refuse to compare or re-baseline on anything else; derive expected capture size from the baseline PNG, per story. - A plain `.mjs` entry guarded by `import.meta.main` does nothing on Node 20/22; guard with an `argv[1]` comparison. -## agent-device issues +## agent-device findings -Nineteen findings with commands and evidence in `evidence/issues.md`, none filed upstream. The four that matter most: the default diff threshold misses soft-shadow regressions (4), sessions are bound to one device per cwd (6), dev-client chrome renders into screenshots and the diff cannot tell (18), `--crop-on` is refused on web (19). +Nineteen observations were recorded during the PoC and every one was re-verified on 2026-09-15 against the 0.21.3 docs and source, the devices, and the upstream tracker (`evidence/issues.md`). None was an unreported agent-device bug. One was a real ergonomic gap, sessions keyed by cwd only [6], and has been fixed upstream. The threshold result [4] stands as our calibration of documented behaviour, with one small ask left: the diff JSON does not record the threshold it was run at. Everything else was documented behaviour, our own build or runner, React Native, or did not survive re-testing; the file says which. ## Evidence - `evidence/results.csv`: one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. -- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match (issue 17). +- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match and deletes any stale file at that path [17]. - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. - `env.json`: the pinned devices, versions and thresholds. diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index 0d09a2be23..1c7f9de3d1 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -1,6 +1,6 @@ # agent-device findings from the PoC, verified -Nineteen observations were recorded while using agent-device 0.21.0 (`npx agent-device@0.21.0`) as a visual regression tool on the example app, on an iPhone 17 Pro simulator (iOS 26.5) and a `Pixel_10_Pro` emulator (API 37). On 2026-09-15 every one was re-checked against the 0.21.3 docs and source, the emulator, and the upstream issue tracker, with one question: is this agent-device's fault, or ours? +Nineteen observations were recorded while using agent-device 0.21.0 (`npx agent-device@0.21.0`) as a visual regression tool on the example app, on an iPhone 17 Pro simulator (iOS 26.5) and a `Pixel_10_Pro` emulator (API 37). On 2026-09-15 and 16 every one was re-checked against the 0.21.3 docs and source, the Android emulator and the iOS simulator (Xcode 27.0), and the upstream issue tracker, with one question: is this agent-device's fault, or ours? Result: **none was an unreported agent-device bug.** One was a real ergonomic gap and has since been fixed upstream. Two are documented behaviour worth knowing. The rest were our own build, our runner, React Native, or claims that did not survive re-testing. They are kept below because most of them are things anyone scripting this loop will hit. Original numbers are in brackets so the README references still resolve. @@ -16,15 +16,15 @@ Result: **none was an unreported agent-device bug.** One was a real ergonomic ga ## Our build and our runner, not the tool -**Expo dev-client chrome ends up in screenshots [3, 9, 14, 18].** A dev build cold-starts into the Expo dev launcher on Android and shows the dev menu on iOS a few seconds after the bundle loads. Reproduced with plain `adb shell am force-stop` and `monkey`, no agent-device involved. The dev-client's floating "Tools" button, toggled by the dev menu entry "Tools button", sat inside the Android crop and produced a deterministic 2,822 px false FAIL with `src/` clean (`diff-images/android-devclient-tools-button.png`, `devclient-excerpt.json`). agent-device already flags the loading state: `wait stable` returned "Settled on a nearly-empty tree, the app may still be loading. Wait for specific content." A runner must reconnect to the dev server after any relaunch, wait for real content, dismiss the menu, and check for the floating button. A release build removes the whole class. +**Expo dev-client chrome ends up in screenshots [3, 9, 14, 18].** Three distinct things, all the dev-client's, none agent-device's. On Android a cold start lands in the Expo dev launcher; reproduced with plain `adb shell am force-stop` and `monkey`, no agent-device involved, and there `wait stable` does warn: "Settled on a nearly-empty tree, the app may still be loading." On iOS the dev menu is not shown on every relaunch as this file first claimed; it appears once, as a first-run onboarding sheet that dims the whole app behind a scrim, and `wait stable` reports that as settled with no warning because the tree has real content (39 nodes) under the scrim. Every capture behind it differs 100 %. The floating "Tools" button, toggled by the dev menu entry "Tools button", sits inside the crop on both platforms: 2,822 px on Android (`diff-images/android-devclient-tools-button.png`), 3,916 px on iOS where its bottom arc crosses the crop's top edge; the `flat` section lower on the same screen diffs 0 in both cases. A runner must reconnect to the dev server after a relaunch, dismiss whatever sheet is up, turn the floating button off, and only then capture. A release build removes the whole class. -**Fast Refresh did not reach the Android app after a relaunch [15].** Metro served the new bundle; the app kept the old one until a Reload. Metro and Expo behaviour, and agent-device documents the remedy we did by hand through the dev menu: `agent-device metro reload`, "before `open --relaunch`". A runner should use that, never Fast Refresh. +**Fast Refresh did not reach the Android app after a relaunch [15].** Metro served the new bundle; the app kept the old one until a Reload. Metro and Expo behaviour, and agent-device documents the remedy we did by hand through the dev menu: `agent-device metro reload`, "before `open --relaunch`". Verified on 0.21.0 on iOS: `reloaded: true` and the edited shadow appeared on the next capture. A runner should use that, never Fast Refresh. **The example app restores its last route on relaunch [13].** `PERSISTENCE_KEY = 'NAVIGATION_STATE'` in `example/src/index.tsx`. A runner cannot assume the list is at the top after `open --relaunch`; it has to press Back to the root and pick the "Surface" row, not the header title with the same label. **Android exposes the same label on a row and its text child [7].** React Native's accessibility output, visible on every example row and on the Expo launcher itself, so `find 'label="Surface"'` is `AMBIGUOUS_MATCH` there and unique on iOS. agent-device documents the disambiguators: `--first`, `--last`, a `role=` qualifier, and the read-only `list` action that returns the candidates without tapping. -**`scroll bottom` hit its pass limit on the example list [2].** A documented, bounded edge-seek that refuses to swipe forever; the dev menu was on screen absorbing the gestures, which is also why the edge was never reached. Use `scroll down 6 --settle`, or `scroll --until ` on 0.21.1 and later. +**`scroll bottom` hit its pass limit on the example list [2].** On a clean screen it reaches the bottom in two passes and returns success (re-run on iOS, `passes: 2`). The failure we saw was the dev-client sheet absorbing the gestures; the pass limit is a documented, bounded edge-seek doing its job. Nothing to change in the tool; a runner should dismiss overlays first. ## Withdrawn after re-verification @@ -32,10 +32,10 @@ These were recorded as agent-device problems and are not. - **`find` taps its match [1].** `find` is documented as `find ` with `click` as the default action and a read-only `list` action that never taps. Upstream #1625 raised the same complaint and was closed in August with `list` as the answer. We ran bare `find` and got the documented default. - **No timing in `screenshot --json` [5].** Per-command durations are in the session event log (`agent-device events`, `request.finished` with `durationMs`); `open` returns `startup.durationMs` as well. -- **Stale refs rejected with a confusing message [8].** The response carries `hint: "Capture a fresh interactive snapshot (snapshot -i) or use a stable selector, then retry."`, a reason code, and the set of refs the frame does accept. The message says exactly what to do. +- **Stale refs rejected with a confusing message [8].** Every rejection carries a `hint` and a `details.reason` (three seen: `ref_generation_mismatch`, `plain_ref_requires_complete_frame`, an expired frame), for example `"Ref @e12 was minted from snapshot s210062 but the session's ref frame is now s210063 — re-run snapshot -i."` The message says exactly what happened and what to do. - **`logs` reports success on an inactive log [10].** Bare `logs` is documented as an info query; `success: true` means the query ran, and `active`, `state` and `sizeBytes` are the answer. Logging is documented as off until `logs start`. - **`--pixel-density` is iOS-only [11].** Documented in the CLI help; Android returns native pixels anyway. -- **`snapshot` returns empty `nodes` when the tree is unchanged [12].** Not reproducible: two consecutive `snapshot --json` returned the full 57 nodes both times, and the source never empties `nodes`, only adds an `unchanged` metadata field. The text-mode "unchanged" acknowledgement is documented. The empty result we saw most likely came from a `--scope` that matched nothing. +- **`snapshot` returns empty `nodes` when the tree is unchanged [12].** Not reproducible: two consecutive `snapshot --json` returned the full tree both times (57 nodes on Android, 22 on iOS), and the source never empties `nodes`; the "unchanged" acknowledgement is text-mode only and documented. The empty result we saw was a `--scope` that matched nothing: `snapshot --json --scope 'id="does-not-exist"'` returns `success: true`, `nodes: []`, `totalNodeCount: 0`, with no diagnostic. That is the one thing worth a sentence for a runner: assert on node count, a no-match scope is not an error. - **Occasional exit 1 with empty stdout and stderr [16].** Two unlogged occurrences on iOS; 0 of 40 rapid calls on Android reproduced it; nothing upstream. Not supportable. ## Filing history From a7dbc70935de2a0b8f9900a3c28512029885823a Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 12:00:42 +0200 Subject: [PATCH 12/18] test(example): extend the dev-client caveat to the ios chrome --- example/visual/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/visual/README.md b/example/visual/README.md index 4d74a09e3e..b0aede9202 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -67,7 +67,7 @@ Tried once on 2026-09-14 against `expo export --platform web` of the example app ## Caveats - The crop is not perfectly isolated. Under the gross break a full-width 33 px band at the top of the crop changed: the Appbar is itself a `Surface`, and the break changed every Surface. The realistic break showed no bleed. An Appbar-only change could register against this crop; that is inherent in screenshotting real screens rather than isolated components. -- Dev-client chrome can land in the crop. The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sat inside the Android section and produced a deterministic 2,822 px false FAIL with `src/` clean (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`). Turning it off in the dev menu ("Tools button") restored 0. A release build would remove the whole class of dev menu, dev launcher and floating button. +- Dev-client chrome can land in the crop. The Expo dev-client's floating "Tools" button, switched on by a stray dev-menu press, sits inside the elevated section on both platforms and produced deterministic false FAILs with `src/` clean: 2,822 px on Android (`evidence/diff-images/android-devclient-tools-button.png`, `evidence/devclient-excerpt.json`) and 3,916 px on iOS. Turning it off in the dev menu ("Tools button") restored 0 on both. On iOS the dev-client's first-run onboarding sheet also dims the whole app, and `wait stable` reports that as settled. A release build would remove the whole class of dev menu, dev launcher, onboarding sheet and floating button. - Not measured: swiftshader (what `ubuntu-latest` renders with), cold simulator/emulator boot, another host or day, runtime or image updates, other components, text-heavy crops, dark theme. ## Reproducing by hand From a81fde39dc110c62069f4960cf3e958c8808105d Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 13:37:39 +0200 Subject: [PATCH 13/18] test(example): drop the agent-device findings file Re-verification showed none of the recorded observations was an agent-device bug, so the file documented nothing. The practical lessons that survive are in the README's runner section. --- example/visual/README.md | 11 +++----- example/visual/evidence/issues.md | 43 ------------------------------- 2 files changed, 4 insertions(+), 50 deletions(-) delete mode 100644 example/visual/evidence/issues.md diff --git a/example/visual/README.md b/example/visual/README.md index b0aede9202..9c361986d1 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -98,23 +98,20 @@ The same loop as one script for both platforms, with device pinning, overlay han ## What a real runner has to handle -Each learned while scripting the loop above and documented in `evidence/issues.md`; implemented on the runner branch. None of them is an agent-device bug: +Each learned while scripting the loop above; implemented on the runner branch. None of them is an agent-device bug: - Reload before every capture with `agent-device metro reload`, then `open --relaunch`. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. - The example app persists navigation state. A relaunch lands on the last screen, so the runner has to press Back to the list root and pick the Surface row, not the header title. -- Dev-client chrome: the dev menu appears seconds after the app is ready, the Android relaunch lands in the dev launcher, and the floating Tools button can appear inside the crop. +- Dev-client chrome: on Android a relaunch lands in the dev launcher; on iOS the first-run onboarding sheet dims the whole app and `wait stable` reports it as settled; on both, the floating Tools button can sit inside the crop. Dismiss all of it before capturing, or capture from a release build. - Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default 0.1 is documented as a 44-unit RGB tolerance, far looser than a one-step shadow change. +- Use `find … list` to locate without tapping, `--first` or a `role=` qualifier where Android exposes the same label on a row and its text child, and assert on node count after `snapshot --scope`, which returns success with empty nodes when nothing matches. - Pin the device (UDID, runtime, density) and refuse to compare or re-baseline on anything else; derive expected capture size from the baseline PNG, per story. - A plain `.mjs` entry guarded by `import.meta.main` does nothing on Node 20/22; guard with an `argv[1]` comparison. -## agent-device findings - -Nineteen observations were recorded during the PoC and every one was re-verified on 2026-09-15 against the 0.21.3 docs and source, the devices, and the upstream tracker (`evidence/issues.md`). None was an unreported agent-device bug. One was a real ergonomic gap, sessions keyed by cwd only [6], and has been fixed upstream. The threshold result [4] stands as our calibration of documented behaviour, with one small ask left: the diff JSON does not record the threshold it was run at. Everything else was documented behaviour, our own build or runner, React Native, or did not survive re-testing; the file says which. - ## Evidence - `evidence/results.csv`: one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. -- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match and deletes any stale file at that path [17]. +- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match and deletes any stale file at that path. - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. - `env.json`: the pinned devices, versions and thresholds. diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md deleted file mode 100644 index 1c7f9de3d1..0000000000 --- a/example/visual/evidence/issues.md +++ /dev/null @@ -1,43 +0,0 @@ -# agent-device findings from the PoC, verified - -Nineteen observations were recorded while using agent-device 0.21.0 (`npx agent-device@0.21.0`) as a visual regression tool on the example app, on an iPhone 17 Pro simulator (iOS 26.5) and a `Pixel_10_Pro` emulator (API 37). On 2026-09-15 and 16 every one was re-checked against the 0.21.3 docs and source, the Android emulator and the iOS simulator (Xcode 27.0), and the upstream issue tracker, with one question: is this agent-device's fault, or ours? - -Result: **none was an unreported agent-device bug.** One was a real ergonomic gap and has since been fixed upstream. Two are documented behaviour worth knowing. The rest were our own build, our runner, React Native, or claims that did not survive re-testing. They are kept below because most of them are things anyone scripting this loop will hit. Original numbers are in brackets so the README references still resolve. - -## What holds up - -**The default diff threshold is too loose for shadows; we use 0.02 [4].** Documented, deterministic behaviour, not a defect: `--threshold` "sets the per-pixel RGB tolerance (default 0.1)", and the implementation maps it to a colour distance of about 44 RGB units. A one-step Material elevation change moves a shadow by a few units per channel, so at 0.1 the realistic Surface regression diffs to 0 changed pixels and `match: true` on both platforms, while 0.02 catches it (10,179 px on iOS, 9,336 px on Android, identical on three captures each, noise floor 0 at every threshold down to 0.01). Full numbers in `results.csv`, images in `diff-images/`. Any suite built on this must set the threshold explicitly and verify noise at it. One small upstream ask survives: the diff result JSON does not record which threshold produced it, so a saved diff cannot say what tolerance it was run at. - -**Implicit sessions were keyed by cwd only [6], fixed upstream.** Driving iOS and Android from one checkout needed a hand-named `--session` on every command. Reported as callstack/agent-device#2580 and fixed: the unreleased changelog entry keys the implicit session by workspace and platform (not yet released as of 0.21.3). Our iOS commands also omitted `--platform`, which parked the session on the platform-less default and made the conflict worse. - -**`diff screenshot --out` writes the image only when pixels differ [17].** On a match it writes nothing and deletes any stale file at that path, so a previous run's diff can never be mistaken for the current one. `diffPath` in the response is the signal, not file existence. The docs say it "writes a diff PNG when `--out` is provided" without the on-mismatch qualifier; that is the only remark. - -**`--crop-on` is refused on web [19].** Documented: accepted on iOS simulators and Android emulators only, refused before any device work (`CROP_TARGET_NOT_ACCEPTED`). `open` and full-page `screenshot` work on web (`web-excerpt.json`). A web leg would be full-viewport diffs, a different loop, with page motion frozen since it cannot be cropped out. - -## Our build and our runner, not the tool - -**Expo dev-client chrome ends up in screenshots [3, 9, 14, 18].** Three distinct things, all the dev-client's, none agent-device's. On Android a cold start lands in the Expo dev launcher; reproduced with plain `adb shell am force-stop` and `monkey`, no agent-device involved, and there `wait stable` does warn: "Settled on a nearly-empty tree, the app may still be loading." On iOS the dev menu is not shown on every relaunch as this file first claimed; it appears once, as a first-run onboarding sheet that dims the whole app behind a scrim, and `wait stable` reports that as settled with no warning because the tree has real content (39 nodes) under the scrim. Every capture behind it differs 100 %. The floating "Tools" button, toggled by the dev menu entry "Tools button", sits inside the crop on both platforms: 2,822 px on Android (`diff-images/android-devclient-tools-button.png`), 3,916 px on iOS where its bottom arc crosses the crop's top edge; the `flat` section lower on the same screen diffs 0 in both cases. A runner must reconnect to the dev server after a relaunch, dismiss whatever sheet is up, turn the floating button off, and only then capture. A release build removes the whole class. - -**Fast Refresh did not reach the Android app after a relaunch [15].** Metro served the new bundle; the app kept the old one until a Reload. Metro and Expo behaviour, and agent-device documents the remedy we did by hand through the dev menu: `agent-device metro reload`, "before `open --relaunch`". Verified on 0.21.0 on iOS: `reloaded: true` and the edited shadow appeared on the next capture. A runner should use that, never Fast Refresh. - -**The example app restores its last route on relaunch [13].** `PERSISTENCE_KEY = 'NAVIGATION_STATE'` in `example/src/index.tsx`. A runner cannot assume the list is at the top after `open --relaunch`; it has to press Back to the root and pick the "Surface" row, not the header title with the same label. - -**Android exposes the same label on a row and its text child [7].** React Native's accessibility output, visible on every example row and on the Expo launcher itself, so `find 'label="Surface"'` is `AMBIGUOUS_MATCH` there and unique on iOS. agent-device documents the disambiguators: `--first`, `--last`, a `role=` qualifier, and the read-only `list` action that returns the candidates without tapping. - -**`scroll bottom` hit its pass limit on the example list [2].** On a clean screen it reaches the bottom in two passes and returns success (re-run on iOS, `passes: 2`). The failure we saw was the dev-client sheet absorbing the gestures; the pass limit is a documented, bounded edge-seek doing its job. Nothing to change in the tool; a runner should dismiss overlays first. - -## Withdrawn after re-verification - -These were recorded as agent-device problems and are not. - -- **`find` taps its match [1].** `find` is documented as `find ` with `click` as the default action and a read-only `list` action that never taps. Upstream #1625 raised the same complaint and was closed in August with `list` as the answer. We ran bare `find` and got the documented default. -- **No timing in `screenshot --json` [5].** Per-command durations are in the session event log (`agent-device events`, `request.finished` with `durationMs`); `open` returns `startup.durationMs` as well. -- **Stale refs rejected with a confusing message [8].** Every rejection carries a `hint` and a `details.reason` (three seen: `ref_generation_mismatch`, `plain_ref_requires_complete_frame`, an expired frame), for example `"Ref @e12 was minted from snapshot s210062 but the session's ref frame is now s210063 — re-run snapshot -i."` The message says exactly what happened and what to do. -- **`logs` reports success on an inactive log [10].** Bare `logs` is documented as an info query; `success: true` means the query ran, and `active`, `state` and `sizeBytes` are the answer. Logging is documented as off until `logs start`. -- **`--pixel-density` is iOS-only [11].** Documented in the CLI help; Android returns native pixels anyway. -- **`snapshot` returns empty `nodes` when the tree is unchanged [12].** Not reproducible: two consecutive `snapshot --json` returned the full tree both times (57 nodes on Android, 22 on iOS), and the source never empties `nodes`; the "unchanged" acknowledgement is text-mode only and documented. The empty result we saw was a `--scope` that matched nothing: `snapshot --json --scope 'id="does-not-exist"'` returns `success: true`, `nodes: []`, `totalNodeCount: 0`, with no diagnostic. That is the one thing worth a sentence for a runner: assert on node count, a no-match scope is not an error. -- **Occasional exit 1 with empty stdout and stderr [16].** Two unlogged occurrences on iOS; 0 of 40 rapid calls on Android reproduced it; nothing upstream. Not supportable. - -## Filing history - -Five of these were filed on callstack/agent-device on 2026-09-14 (#2579 to #2583) and withdrawn the same day. One (#2581, the Node client "unreachable" without a dependency) was simply wrong and a maintainer closed it within the hour; it has been removed from this file. #2580 was fixed upstream regardless. Nothing else is filed, and nothing will be without a maintainer of this repo deciding to. From bd9de7baaeb8644fb2c2572b9bb3ac62c94371ca Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 14:10:34 +0200 Subject: [PATCH 14/18] test(example): back the dev-client numbers, fix the region count Two results.csv rows for the Tools-button false FAILs (Android 2,822 px, iOS 3,916 px); the iOS realistic break has 3 regions, not one; state that the Node client was not used and why. --- example/visual/README.md | 16 ++++++++-------- example/visual/evidence/results.csv | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/example/visual/README.md b/example/visual/README.md index 9c361986d1..93ebae205b 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -2,15 +2,15 @@ Proof of concept, under review in #5115. iOS and Android against the existing example screens, `Surface` only, agent-device and its own diff. A runner script that grew out of review, and the full raw evidence, are on branch `poc/agent-device-visual-runner`, deliberately not in this PR. -## The question, and the answer +## Result Does [agent-device](https://github.com/callstack/agent-device) capture the existing example screens deterministically enough to diff `Surface` against a baseline, and does that diff catch a realistic regression rather than only a gross one? -Yes on both platforms, with one catch. The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression, elevation level 1 rendering the level-2 shadow, is caught at `--threshold 0.02`, on exactly the right card, and gives the same pixel count on three independent captures per platform. At agent-device's default threshold (0.1) that same regression is reported as a perfect match on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. +On iOS and Android, yes, with one catch. The noise floor is 0 pixels on iOS and Android, across warm captures and a process relaunch, at every threshold tried. A realistic Surface regression, elevation level 1 rendering the level-2 shadow, is caught at `--threshold 0.02`, on exactly the right card, and gives the same pixel count on three independent captures per platform. At agent-device's default threshold (0.1) that same regression is reported as a perfect match on both platforms. Any suite built on this must set the threshold explicitly and verify noise at that threshold. ## Setup -- Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client, agent-device 0.21.0 via `npx`. No Storybook, no extra screens. +- Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client, agent-device 0.21.0 driven through its CLI via `npx`. Its Node client (`createAgentDeviceClient`) was not used: reaching it means adding agent-device as a dependency of this repo, which a PoC that wanted to try the tool without installing it did not do. A runner that adopts the tool should use the client. No Storybook, no extra screens. - iPhone 17 Pro simulator (iOS 26.5, 3x) and `Pixel_10_Pro` emulator (API 37, 480 dpi, `hw.gpu.mode=auto`). Pinned in `env.json`; baselines are valid for that configuration only. - The only app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat`, named so they cannot be mistaken for the library defaults removed in #5088 and #5099). `screenshot --crop-on 'id="…"'` then crops to exactly that section: 402x214 logical, 1206x642 px at `--pixel-density 3` on iOS; 1280x642 native px on Android. - No animation freezing, status-bar normalisation or release build was needed. The crop excludes the status bar and LogBox. @@ -28,10 +28,10 @@ Stability, four captures of `surface-example-elevated` against the baseline, 774 Sensitivity, one-line changes to the iOS branch of `src/components/Surface.tsx`, reverted after each capture (revert re-diffed to 0): -| break | @ 0.1 (default) | @ 0.02 | -| ----------------------------------------------------- | --------------------------- | ------------------------------------------------------------------ | -| Gross: every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | -| Realistic: level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, one 378x378 region on the Elevation 1 card | +| break | @ 0.1 (default) | @ 0.02 | +| ----------------------------------------------------- | --------------------------- | ----------------------------------------------------------------------------------- | +| Gross: every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | +| Realistic: level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, 3 regions, the dominant one 378x378 on the Elevation 1 card | ## Android @@ -110,7 +110,7 @@ Each learned while scripting the loop above; implemented on the runner branch. N ## Evidence -- `evidence/results.csv`: one row per `diff screenshot` run (72 rows): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. +- `evidence/results.csv`: one row per `diff screenshot` run (74 rows, including the two dev-client false FAILs): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. - `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match and deletes any stale file at that path. - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. - `env.json`: the pinned devices, versions and thresholds. diff --git a/example/visual/evidence/results.csv b/example/visual/evidence/results.csv index 5e8efe206c..7c35425cca 100644 --- a/example/visual/evidence/results.csv +++ b/example/visual/evidence/results.csv @@ -71,3 +71,5 @@ android,re-measured,reverted,0.02,821760,0,0,0,True,evidence/sensitivity/android android,re-measured,reverted,0.1,821760,0,0,0,True,evidence/sensitivity/android/reverted-diff-t0.1.json android,re-measured,sanity-before-break,0.02,821760,0,0,0,True,evidence/sensitivity/android/sanity-before-break-diff-t0.02.json android,re-measured,sanity-before-break,0.1,821760,0,0,0,True,evidence/sensitivity/android/sanity-before-break-diff-t0.1.json +android,dev-client-chrome,tools-button-on,0.02,821760,2822,0.34,1,False,runner-branch:evidence/runs/android/round3-pass/summary.json +ios,dev-client-chrome,tools-button-on,0.02,774252,3916,0.51,1,False,verify/ios/a11-diff.json (2026-09-16 re-verification, not committed) From f138b25dd7fc7ba7edc71a2f29f93444c61fc5ab Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 15:04:37 +0200 Subject: [PATCH 15/18] test(example): bring the runner back into the PoC run.mjs (one script for both platforms), run.test.mjs (seven node:test cases) and evidence/summarize.mjs return from the runner branch unchanged; example/package.json gains test:visual. The raw JSON and tree dumps stay on that branch. Verified today: both platforms PASS through the script against the committed baselines. --- example/package.json | 3 +- example/visual/README.md | 31 +- example/visual/evidence/summarize.mjs | 135 +++ example/visual/run.mjs | 1207 +++++++++++++++++++++++++ example/visual/run.test.mjs | 218 +++++ 5 files changed, 1590 insertions(+), 4 deletions(-) create mode 100644 example/visual/evidence/summarize.mjs create mode 100644 example/visual/run.mjs create mode 100644 example/visual/run.test.mjs diff --git a/example/package.json b/example/package.json index 8d32e2a364..4ca0d985b4 100644 --- a/example/package.json +++ b/example/package.json @@ -8,7 +8,8 @@ "eas-build-pre-install": "cd .. && yarn", "start": "EXPO_NO_TYPESCRIPT_SETUP=1 expo start --dev-client", "android": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:android", - "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios" + "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios", + "test:visual": "node --test visual/run.test.mjs" }, "dependencies": { "@expo/metro-config": "~56.0.0", diff --git a/example/visual/README.md b/example/visual/README.md index 93ebae205b..f56d65ccc6 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -1,6 +1,6 @@ # Visual regression PoC: agent-device on the example app -Proof of concept, under review in #5115. iOS and Android against the existing example screens, `Surface` only, agent-device and its own diff. A runner script that grew out of review, and the full raw evidence, are on branch `poc/agent-device-visual-runner`, deliberately not in this PR. +Proof of concept, under review in #5115. iOS and Android against the existing example screens, `Surface` only, agent-device and its own diff. One script, `run.mjs`, drives both platforms. The raw per-command JSON and accessibility-tree dumps behind the evidence are on branch `poc/agent-device-visual-runner`; this PR keeps the summaries. ## Result @@ -94,11 +94,36 @@ $AD diff screenshot --baseline $BASELINE/surface-example-elevated.png current.pn Expect `differentPixels: 0`. To see a failure, change `shadow(elevation, …)` to `shadow(elevation === 1 ? 2 : elevation, …)` in `src/components/Surface.tsx` (iOS) or `androidElevationLevels[elevation]` to `androidElevationLevels[elevation === 1 ? 2 : elevation]` (Android), relaunch so the app fetches the bundle, capture, diff: about 10,179 px (iOS) or 9,336 px (Android) at 0.02, and `match: true` at 0.1. `git checkout -- src/components/Surface.tsx` afterwards. -The same loop as one script for both platforms, with device pinning, overlay handling and exit codes, is `example/visual/run.mjs` on branch `poc/agent-device-visual-runner` (commit e9245dc97). It was removed from this PR only to keep the PoC small. +## Running it + +`example/visual/run.mjs` is the loop above as one script for both platforms, plain ESM on Node 20 or newer, no new dependencies. It spawns `npx agent-device@0.21.0 … --json` and parses the output. + +```bash +node example/visual/run.mjs --platform ios +node example/visual/run.mjs --platform android +``` + +It relaunches the app so the bundle is fresh, waits for the app to be ready, dismisses the dev menu, dev launcher and floating Tools button if present, goes Back to the example list root and presses the Surface row if the app restored another screen, then captures and diffs each story and prints one line per story: + +``` +ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS +``` + +Exit codes: 1 if any story fails the diff, 2 if the connected device does not match `env.json` (`--force` downgrades that to a warning), 3 if a capture's size does not match its baseline PNG. `--update` writes the captures as baselines, creating missing ones. `--out ` sets where captures, diff images and `summary.json` go (default `example/visual/artifacts/run/`, gitignored). `summary.json` is written on every exit. + +Prerequisites are the same as for the hand-run loop: app built and installed on the pinned device, Metro running. Set `AGENT_DEVICE_SESSION_CWD` to the directory whose agent-device session is bound to the device, or let the script bind a fresh one. + +The pure helpers have seven `node:test` cases, no device needed: + +```bash +yarn example test:visual +``` + +Not run by Jest, the pre-commit hook or CI. `evidence/summarize.mjs` regenerates a results table from a directory of `diff screenshot` JSON; `results.csv` in this PR was produced from the raw JSON on the runner branch. ## What a real runner has to handle -Each learned while scripting the loop above; implemented on the runner branch. None of them is an agent-device bug: +Each learned while scripting `run.mjs`, and handled there. None of them is an agent-device bug: - Reload before every capture with `agent-device metro reload`, then `open --relaunch`. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. - The example app persists navigation state. A relaunch lands on the last screen, so the runner has to press Back to the list root and pick the Surface row, not the header title. diff --git a/example/visual/evidence/summarize.mjs b/example/visual/evidence/summarize.mjs new file mode 100644 index 0000000000..97c457fda9 --- /dev/null +++ b/example/visual/evidence/summarize.mjs @@ -0,0 +1,135 @@ +#!/usr/bin/env node +/** + * Regenerates example/visual/evidence/summary.md from the raw agent-device JSON + * kept under example/visual/evidence/. + * + * node example/visual/evidence/summarize.mjs [evidence-dir] + * + * Every *.json that reports a diff is picked up: an agent-device `diff` payload + * (`data.differentPixels`) or a run.mjs summary.json (one row per entry in + * `results`). Files are grouped into one table per directory, in walk order. + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const COLUMNS = [ + 'file', + 'total px', + 'changed px', + 'mismatch %', + 'regions', + 'match', +]; + +/** Every *.json under `dir`, depth-first, directories and files sorted. */ +function jsonFiles(dir) { + const found = []; + for (const entry of fs + .readdirSync(dir, { withFileTypes: true }) + .sort((a, b) => a.name.localeCompare(b.name))) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) found.push(...jsonFiles(full)); + else if (entry.name.endsWith('.json')) found.push(full); + } + return found; +} + +/** The diff rows a single JSON file contributes, or [] if it reports no diff. */ +function rowsOf(file) { + let json; + try { + json = JSON.parse(fs.readFileSync(file, 'utf8')); + } catch { + return []; + } + + const name = path.basename(file); + + if (json?.data?.differentPixels != null) { + const d = json.data; + return [ + { + file: name, + total: d.totalPixels, + changed: d.differentPixels, + mismatch: d.mismatchPercentage, + regions: d.regions?.length ?? 0, + match: d.match, + }, + ]; + } + + // run.mjs summary.json: the diff numbers live one level down, per story. + if (Array.isArray(json?.results)) { + return json.results + .filter((r) => r.changedPixels != null) + .map((r) => ({ + file: `${name} (${r.story})`, + total: r.totalPixels, + changed: r.changedPixels, + mismatch: r.mismatchPercentage, + regions: r.regions?.length ?? 0, + match: r.pass, + })); + } + + return []; +} + +function renderTable(rows) { + const cells = rows.map((r) => [ + r.file, + String(r.total ?? ''), + String(r.changed ?? ''), + String(r.mismatch ?? ''), + String(r.regions ?? ''), + r.match ? 'yes' : 'no', + ]); + const widths = COLUMNS.map((header, i) => + Math.max(header.length, ...cells.map((c) => c[i].length)) + ); + const line = (values) => + `| ${values.map((v, i) => v.padEnd(widths[i])).join(' | ')} |`; + + return [ + line(COLUMNS), + `| ${widths.map((w) => '-'.repeat(w)).join(' | ')} |`, + ...cells.map(line), + ].join('\n'); +} + +function main() { + const root = path.resolve( + process.argv[2] || path.dirname(fileURLToPath(import.meta.url)) + ); + + const sections = new Map(); + for (const file of jsonFiles(root)) { + const rows = rowsOf(file); + if (rows.length === 0) continue; + const section = `${path.relative(root, path.dirname(file)) || '.'}/`; + sections.set(section, [...(sections.get(section) || []), ...rows]); + } + + const out = [ + '# Evidence summary', + '', + 'generated by evidence/summarize.mjs — do not edit by hand', + '', + ...[...sections].flatMap(([section, rows]) => [ + `## ${section}`, + '', + renderTable(rows), + '', + ]), + ].join('\n'); + + const target = path.join(root, 'summary.md'); + fs.writeFileSync(target, out); + const total = [...sections.values()].reduce((n, r) => n + r.length, 0); + console.log(`${target}: ${total} rows in ${sections.size} sections`); +} + +main(); diff --git a/example/visual/run.mjs b/example/visual/run.mjs new file mode 100644 index 0000000000..1f082e28e2 --- /dev/null +++ b/example/visual/run.mjs @@ -0,0 +1,1207 @@ +#!/usr/bin/env node +/** + * Visual regression loop for the Surface example (PoC). + * + * node example/visual/run.mjs --platform ios|android [--update] [--force] + * [--threshold 0.02] [--story surface-example-elevated,surface-example-flat] + * [--out ] + * + * Drives agent-device 0.21.0 through `npx` and parses `--json` stdout. The + * package does export `createAgentDeviceClient`, but it is not a dependency of + * this repo and is not resolvable from `example/`, and the PoC rule is "no new + * dependencies", so the CLI is spawned instead. + * + * Prerequisites (documented, not automated): the example app is already built + * and installed on a device matching example/visual/env.json, Metro is running, + * and the baselines in example/visual/__baselines__// were captured + * on that same device. + * + * Every run relaunches the app: the example app persists its navigation state + * (PERSISTENCE_KEY in example/src/index.tsx), and only a relaunch makes the app + * fetch a fresh JS bundle from Metro — Fast Refresh alone was observed not to + * reach the Android app, which made captures silently stale. + * + * Exit codes: 0 pass, 1 a story FAILed the diff, 2 setup/environment error, + * 3 a capture came back with the wrong dimensions. `summary.json` is written in + * the output directory in every one of those cases, except an argument error, + * which prints the problem and exits 2 before there are any options to summarise. + * + * Unit tests: node --test example/visual/run.test.mjs + */ + +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const VISUAL_DIR = path.dirname(fileURLToPath(import.meta.url)); +const BASELINE_DIR = path.join(VISUAL_DIR, '__baselines__'); +const ENV_FILE = path.join(VISUAL_DIR, 'env.json'); +const AGENT_DEVICE = 'agent-device@0.21.0'; +const BUNDLE_ID = 'com.callstack.reactnativepaperexample'; +const DEFAULT_STORIES = ['surface-example-elevated', 'surface-example-flat']; +const DEFAULT_THRESHOLD = 0.02; // PoC finding: the CLI default of 0.1 misses soft-shadow regressions. +const SCROLL_STEP = 6; // rows per `scroll down` in the example list +const MAX_SCROLL_STEPS = 6; // bound the search so a wrong screen fails instead of looping +const MAX_BACK_STEPS = 8; // deepest example nesting is 2; 8 leaves room and still terminates +const MAX_OVERLAY_STEPS = 5; // dev menu + dev launcher, each possibly twice + +// App-ready polling. Right after `open` the tree is just the splash screen +// (iOS: 3 nodes — Application, SplashScreenLogo, "Downloading 100%…"), and +// after leaving the Android dev launcher it is an 11-node "Connecting to the +// development server…" screen, so any check that snapshots immediately reads +// the wrong screen. Node count alone is not enough: the loading screens are +// matched by label too. +const READY_TIMEOUT_MS = 30000; +const READY_POLL_MS = 1000; +const READY_MIN_NODES = 10; +const NOT_READY_LABEL = + /^(Downloading|Connecting to|Loading|Building JavaScript bundle)/i; +const NOT_READY_IDENTIFIER = /SplashScreen/i; + +// Overlay detection. The dev-menu labels are generic, so they only count when +// a dev-menu-only marker is on screen too; the dev launcher is Expo's +// "DEVELOPMENT SERVERS / RECENTLY OPENED" screen, which no dev-menu label hits. +const DEV_MENU_LABELS = ['Close', 'Continue']; +const DEV_MENU_MARKERS = [ + 'Reload', + 'Go home', + 'Fast refresh', + 'Fast Refresh', + 'TOOLS', + 'Toggle element inspector', + 'Open DevTools', +]; +const DEV_LAUNCHER_MARKERS = ['DEVELOPMENT SERVERS', 'RECENTLY OPENED']; +const METRO_PORT = '8081'; + +// The Expo dev client's floating "Tools" button: a small image control labelled +// exactly "Tools", drawn on top of the app. On Android at 480 dpi it sits in the +// top-right corner of the surface-example-elevated crop, where it diffs as a +// deterministic ~2,800-pixel "regression" with the library untouched. The dev +// menu has a "TOOLS" section of its own, so a tree showing the dev menu is +// excluded outright; its rows are text nodes, which is what the type check +// rules out (android.widget.TextView on Android, StaticText on iOS). +const FLOATING_TOOLS_LABEL = 'Tools'; +const TOOLS_TOGGLE_LABEL = 'Tools button'; // the dev menu row that toggles it +const DEV_MENU_CLOSE_LABEL = 'Close'; +const ANDROID_KEYCODE_MENU = '82'; // opens the RN dev menu via adb + +const LIST_ROOT_TITLE = 'Examples'; // Appbar title of the example-list root +const SURFACE_ROW_LABEL = 'Surface'; +const BACK_LABEL = 'Back'; + +// agent-device sessions are keyed by cwd. Point this at the directory whose +// session is already bound to the intended device to reuse that binding; +// otherwise a fresh session is created and bound by `open --udid`. +const SESSION_CWD = process.env.AGENT_DEVICE_SESSION_CWD || VISUAL_DIR; + +let commandSeq = 0; +let cmdDir = VISUAL_DIR; + +/** + * A failure with an exit code attached. Thrown rather than exiting on the spot + * so that main() can still write summary.json before the process ends. + */ +class RunFailure extends Error { + constructor(message, exitCode) { + super(message); + this.name = 'RunFailure'; + this.exitCode = exitCode; + } +} + +function fail(message, code = 2) { + throw new RunFailure(message, code); +} + +function warn(message) { + console.warn(`WARNING: ${message}`); +} + +function sleepSync(ms) { + Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); +} + +function parseArgs(argv) { + const out = { + update: false, + force: false, + threshold: DEFAULT_THRESHOLD, + stories: DEFAULT_STORIES, + outDir: null, + }; + + for (let i = 0; i < argv.length; i++) { + const arg = argv[i]; + const next = () => { + const value = argv[++i]; + if (value == null) fail(`${arg} needs a value`); + return value; + }; + + switch (arg) { + case '--platform': + out.platform = next(); + break; + case '--update': + out.update = true; + break; + case '--force': + out.force = true; + break; + case '--threshold': + out.threshold = Number(next()); + break; + case '--out': + out.outDir = path.resolve(next()); + break; + case '--story': + case '--stories': + out.stories = next() + .split(',') + .map((s) => s.trim()) + .filter(Boolean); + break; + case '--help': + case '-h': + console.log( + 'usage: node example/visual/run.mjs --platform ios|android [--update] [--force]\n' + + ' [--threshold <0-1>] [--story|--stories a,b] [--out ]\n' + + '\n' + + ' --update write the captures to __baselines__// instead of diffing\n' + + ' them (the capture-size check is skipped; the captured dimensions\n' + + ' are printed instead)\n' + + ' --force run even though the device does not match env.json. It covers the\n' + + ' device check only — a capture-size mismatch is never overridden.' + ); + process.exit(0); + break; + default: + fail(`unknown argument ${arg}`); + } + } + + if (out.platform !== 'ios' && out.platform !== 'android') { + fail('--platform must be ios or android'); + } + if ( + !Number.isFinite(out.threshold) || + out.threshold < 0 || + out.threshold > 1 + ) { + fail('--threshold must be a number between 0 and 1'); + } + if (out.outDir == null) { + out.outDir = path.join(VISUAL_DIR, 'artifacts', 'run', out.platform); + } + + return out; +} + +/** + * Environment for the nested `npx agent-device` call. When this script itself + * runs under `npx -p node@20 node run.mjs`, npx exports `npm_config_package` + * (and friends) into the child; the nested npx then reads that, installs + * node@20 and treats `agent-device@0.21.0` as a command name inside it. Strip + * every npm_config_* variable so the nested npx resolves its own package. + */ +function spawnEnv() { + const env = {}; + for (const [key, value] of Object.entries(process.env)) { + if (!key.startsWith('npm_config_')) env[key] = value; + } + return env; +} + +/** Runs one agent-device command, records its JSON, returns the parsed payload. */ +function ad(label, args, { allowFail = false } = {}) { + const argv = [AGENT_DEVICE, ...args, '--json']; + const startedAt = Date.now(); + const proc = spawnSync('npx', argv, { + cwd: SESSION_CWD, + encoding: 'utf8', + env: spawnEnv(), + maxBuffer: 256 * 1024 * 1024, + }); + const elapsedMs = Date.now() - startedAt; + const stdout = proc.stdout || ''; + + let parsed = null; + const first = stdout.indexOf('{'); + const last = stdout.lastIndexOf('}'); + if (first !== -1 && last > first) { + try { + parsed = JSON.parse(stdout.slice(first, last + 1)); + } catch { + parsed = null; + } + } + + const file = path.join( + cmdDir, + `${String(++commandSeq).padStart(3, '0')}-${label}.json` + ); + fs.writeFileSync( + file, + JSON.stringify( + { + command: ['npx', ...argv], + cwd: SESSION_CWD, + exitCode: proc.status, + elapsedMs, + response: parsed, + stdout: parsed ? undefined : stdout, + stderr: proc.stderr || undefined, + }, + null, + 2 + ) + ); + + const ok = proc.status === 0 && parsed && parsed.success !== false; + if (!ok && !allowFail) { + const reason = + parsed?.error?.details?.reason || + parsed?.error?.message || + proc.stderr?.trim() || + `exit ${proc.status}`; + fail(`agent-device ${label} failed: ${reason} (see ${file})`); + } + + return { + ok, + data: parsed?.data ?? null, + error: parsed?.error ?? null, + elapsedMs, + }; +} + +/** + * Snapshot helper. `--force-full` on every call: without it agent-device + * returns an empty `nodes` array whenever the tree is unchanged, which reads + * as "the element is gone" (PoC issue 13). + */ +function snapshot(label, globals, extra = []) { + const snap = ad(label, ['snapshot', ...extra, '--force-full', ...globals]); + return snap.data?.nodes || []; +} + +function sh(command, args) { + const proc = spawnSync(command, args, { + encoding: 'utf8', + maxBuffer: 64 * 1024 * 1024, + }); + return { + status: proc.status, + stdout: proc.stdout || '', + stderr: proc.stderr || '', + }; +} + +function adbPath() { + const home = process.env.HOME || ''; + const sdk = + process.env.ANDROID_HOME || + process.env.ANDROID_SDK_ROOT || + path.join(home, 'Library/Android/sdk'); + const candidate = path.join(sdk, 'platform-tools/adb'); + return fs.existsSync(candidate) ? candidate : 'adb'; +} + +/** + * Reads the simulator matching `expectedUdid` out of `xcrun simctl list`. + * Returns `{ observed }` on success, or `{ error }` describing why the device + * could not be inspected. + */ +function observeIos(expectedUdid) { + const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); + if (res.status !== 0) { + return { + error: { + what: 'device inspection', + expected: `xcrun simctl list to succeed for udid ${expectedUdid}`, + actual: `exit ${res.status} ${res.stderr.trim()}`, + }, + }; + } + + let devices; + try { + devices = JSON.parse(res.stdout).devices || {}; + } catch { + return { + error: { + what: 'device inspection', + expected: 'parseable xcrun simctl list output', + actual: 'unparseable JSON', + }, + }; + } + + let match = null; + for (const [runtime, list] of Object.entries(devices)) { + for (const device of list) { + if (device.udid === expectedUdid) match = { runtime, device }; + } + } + + if (!match) { + return { + error: { + what: 'udid', + expected: expectedUdid, + actual: 'not present in xcrun simctl list (no such simulator)', + }, + }; + } + + return { + observed: { + udid: match.device.udid, + name: match.device.name, + runtime: match.runtime, + state: match.device.state, + }, + }; +} + +/** Reads API level, release and density off the connected device via adb. */ +function observeAndroid() { + const adb = adbPath(); + const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); + const sdkLevel = prop('ro.build.version.sdk'); + if (!sdkLevel) { + return { + error: { + what: 'device inspection', + expected: `Android properties readable via ${adb}`, + actual: 'no response (is an emulator connected?)', + }, + }; + } + + const densityOut = sh(adb, ['shell', 'wm', 'density']).stdout; + const densityMatch = densityOut.match(/(\d+)\s*$/m); + + return { + observed: { + apiLevel: Number(sdkLevel), + androidRelease: prop('ro.build.version.release'), + density: densityMatch ? Number(densityMatch[1]) : null, + }, + }; +} + +const DEFAULT_OBSERVERS = { observeIos, observeAndroid }; + +/** + * Compares the connected device with env.json. Returns the observed values and + * the list of mismatches; the caller decides what to do with them. A device + * that cannot be inspected counts as a mismatch: baselines are only meaningful + * on a device we could actually identify. The observers are injected so the + * comparison can be tested without xcrun/adb. + */ +function checkEnvironment(platform, env, observers = DEFAULT_OBSERVERS) { + const mismatches = []; + const mismatch = (what, expected, actual) => + mismatches.push(`${what}: expected ${expected}, observed ${actual}`); + + const read = + platform === 'ios' + ? observers.observeIos(env.udid) + : observers.observeAndroid(); + if (read.error) { + mismatch(read.error.what, read.error.expected, read.error.actual); + return { observed: {}, mismatches }; + } + const observed = read.observed; + + if (platform === 'ios') { + // The runtime identifier carries the iOS version (…SimRuntime.iOS-26-5), so + // comparing it also covers env.iosVersion. + if (env.runtime && observed.runtime !== env.runtime) { + mismatch('runtime', env.runtime, observed.runtime); + } + if (env.device && observed.name !== env.device) { + mismatch('device name', env.device, observed.name); + } + if (observed.state !== 'Booted') { + mismatch('device state', 'Booted', observed.state); + } + return { observed, mismatches }; + } + + if (env.apiLevel != null && observed.apiLevel !== env.apiLevel) { + mismatch('Android API level', env.apiLevel, observed.apiLevel); + } + if (env.density != null && observed.density !== env.density) { + mismatch('Android density', env.density, observed.density ?? 'unreadable'); + } + return { observed, mismatches }; +} + +/** + * Throws unless the device matches env.json. `--force` downgrades the + * mismatches to warnings so a deliberate re-baseline on another device is + * still possible, but never by accident. This is the only check `--force` + * covers. + */ +function enforceEnvironment( + platform, + env, + force, + observers = DEFAULT_OBSERVERS +) { + const { observed, mismatches } = checkEnvironment(platform, env, observers); + if (mismatches.length === 0) return observed; + + const detail = mismatches.map((m) => ` - ${m}`).join('\n'); + if (force) { + warn(`device does not match ${ENV_FILE} (--force):\n${detail}`); + return observed; + } + fail( + `device does not match ${ENV_FILE}:\n${detail}\n` + + 'refusing to run: baselines are only comparable on the device they were captured on. ' + + 'Boot/point at the right device, or pass --force to continue anyway.' + ); + return observed; // unreachable; keeps the return type honest +} + +/** Canonical baseline path: __baselines__//.png */ +function baselinePath(platform, story) { + return path.join(BASELINE_DIR, platform, `${story}.png`); +} + +/** Normal mode: a missing baseline is a hard error naming the exact path. */ +function requireBaseline(platform, story) { + const baseline = baselinePath(platform, story); + if (!fs.existsSync(baseline)) { + fail( + `no baseline for ${story}: expected ${baseline} — ` + + 'run with --update to create it' + ); + } + return baseline; +} + +/** + * `--update` mode: write the capture to the baseline, creating it if new. The + * captured dimensions go in the log line because the size check is skipped in + * this mode (see checkCaptureSize) — this is the only place a human sees what + * the new baseline actually measures. + */ +function writeBaseline(platform, story, current, shotData) { + const baseline = baselinePath(platform, story); + const created = !fs.existsSync(baseline); + fs.mkdirSync(path.dirname(baseline), { recursive: true }); + fs.copyFileSync(current, baseline); + const size = `${shotData?.width ?? '?'}x${shotData?.height ?? '?'}`; + console.log( + `${platform} ${story} baseline ${created ? 'created' : 'updated'} (${size}) → ${path.relative(VISUAL_DIR, baseline)}` + ); + return { baseline, created }; +} + +/** + * Width and height out of a PNG's IHDR: the signature is 8 bytes, the IHDR + * length+type another 8, so the two big-endian uint32s live at bytes 16–24. No + * decoding and no dependency — the header is all this needs. + */ +function readPngSize(file) { + const header = Buffer.alloc(24); + let read = 0; + let fd; + try { + fd = fs.openSync(file, 'r'); + read = fs.readSync(fd, header, 0, 24, 0); + } catch { + return null; + } finally { + if (fd != null) fs.closeSync(fd); + } + if (read < 24 || header.toString('ascii', 12, 16) !== 'IHDR') return null; + return { width: header.readUInt32BE(16), height: header.readUInt32BE(20) }; +} + +/** + * Fails unless the capture has the same dimensions as the committed baseline it + * is about to be compared with. A wrong-sized capture would otherwise diff + * clean and read as PASS — and so would a capture whose size agent-device did + * not report at all, which is why a missing value is a failure rather than a + * warning. + * + * The expected size comes from the baseline PNG itself rather than from + * env.json: that makes it per story by construction, so a story that was just + * added and `--update`d passes, and it cannot drift from the file the diff + * actually uses. + * + * Skipped entirely in `--update` mode: the whole point of that mode is to + * record what the device produces now, and a new story has no baseline to check + * against. In diff mode there is no override — a size mismatch on a device that + * matches env.json means something is wrong that no flag should paper over, so + * `--force` does not reach this check. + */ +function checkCaptureSize( + env, + story, + shotData, + { update = false, baselineFile = null } = {} +) { + if (update) return; + + const expected = baselineFile ? readPngSize(baselineFile) : null; + const problems = []; + + if (!expected) { + fail( + `${story}: could not read the dimensions of the baseline PNG ` + + `(${baselineFile ?? 'none given'}), so the capture cannot be ` + + 'size-checked — re-record the baseline with --update', + 3 + ); + } + + const compare = (what, want, got) => { + if (got == null) { + problems.push( + `${what}: expected ${want}, agent-device reported no ${what}` + ); + return; + } + if (Number(got) !== Number(want)) { + problems.push(`${what}: expected ${want}, actual ${got}`); + } + }; + + compare('width', expected.width, shotData?.width); + compare('height', expected.height, shotData?.height); + // pixelDensity is reported (and pinnable) on iOS only. Android screenshots + // are native device pixels and env.json pins no density there, so the check + // is skipped rather than warned about. + if (env.pixelDensity != null) { + compare('pixelDensity', env.pixelDensity, shotData?.pixelDensity); + } + + if (problems.length === 0) return; + + const detail = problems.map((p) => ` - ${p}`).join('\n'); + fail( + `${story}: capture dimensions do not match the baseline ` + + `${path.relative(VISUAL_DIR, baselineFile)}:\n${detail}\n` + + 'a wrong-sized capture cannot be compared with the baseline. Check ' + + '--crop-on/--pixel-density and the device; if the new size is the intended ' + + 'one, re-record the baselines with --update. (--force does not override this.)', + 3 + ); +} + +const labelOf = (node) => (node.label || '').trim(); +const hasLabel = (nodes, label) => nodes.some((n) => labelOf(n) === label); + +/** + * Nodes that belong to the app. On Android a snapshot also carries the system + * UI status bar (~10 nodes), which is present even while the app is still + * starting, so it must not count towards readiness. + */ +function appNodes(nodes) { + return nodes.filter((n) => !n.bundleId || n.bundleId === BUNDLE_ID); +} + +function looksReady(nodes) { + const own = appNodes(nodes); + if (own.length <= READY_MIN_NODES) return false; + return !own.some( + (n) => + NOT_READY_LABEL.test(labelOf(n)) || + NOT_READY_IDENTIFIER.test(n.identifier || '') + ); +} + +/** + * Polls the accessibility tree until the app has rendered something real: + * more than READY_MIN_NODES app nodes and no splash/"Downloading" node. Bounded + * so a stuck launch fails instead of hanging. + */ +function waitForAppReady(globals, timeoutMs = READY_TIMEOUT_MS) { + const deadline = Date.now() + timeoutMs; + let nodes = snapshot('snapshot-ready', globals); + while (!looksReady(nodes) && Date.now() < deadline) { + sleepSync(READY_POLL_MS); + nodes = snapshot('snapshot-ready', globals); + } + if (!looksReady(nodes)) { + fail( + `the app did not become ready within ${timeoutMs}ms — the last snapshot ` + + `had ${appNodes(nodes).length} app nodes ` + + `(${appNodes(nodes) + .slice(0, 3) + .map((n) => labelOf(n) || n.identifier || n.type) + .join(' / ')})` + ); + } + console.log(` app ready (${appNodes(nodes).length} app nodes)`); + return nodes; +} + +/** The RN dev menu: a Close/Continue control with a dev-menu-only marker next to it. */ +function findDevMenuNode(nodes) { + const marker = nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n))); + if (!marker) return null; + return nodes.find((n) => DEV_MENU_LABELS.includes(labelOf(n))) || null; +} + +/** The floating dev-client "Tools" button, or null when it is not on screen. */ +function findFloatingToolsNode(nodes) { + if (nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n)))) return null; + return ( + nodes.find( + (n) => labelOf(n) === FLOATING_TOOLS_LABEL && !/text/i.test(n.type || '') + ) || null + ); +} + +function describeNode(node) { + const rect = node.rect || {}; + const round = (value) => Math.round(value ?? -1); + return ( + `${node.type || 'node'} label="${labelOf(node)}" at ` + + `{x:${round(rect.x)}, y:${round(rect.y)}, ` + + `w:${round(rect.width)}, h:${round(rect.height)}}` + ); +} + +/** + * Turns the floating dev-client "Tools" button off through the dev menu, once, + * and returns the settled tree. A dev overlay inside the crop must never be + * reported as a visual regression, so anything that leaves it on screen — a + * platform with no way to open the dev menu, or a toggle that did not take — + * is a setup error naming the node and the manual fix. + * + * Android opens the dev menu with KEYCODE_MENU. agent-device 0.21.0 has no + * dev-menu/shake command (checked in `help commands`), so on iOS there is + * nothing to drive and the run stops instead. + */ +function disableFloatingTools(platform, globals, nodes) { + const tools = findFloatingToolsNode(nodes); + if (!tools) return nodes; + + const giveUp = (why) => + fail( + `the dev-client floating Tools button is inside the capture area ` + + `(${describeNode(tools)}) and ${why}. Turn it off on the device: ` + + 'dev menu → Tools button.' + ); + + if (platform !== 'android') giveUp('cannot be toggled automatically on iOS'); + + const menu = sh(adbPath(), [ + 'shell', + 'input', + 'keyevent', + ANDROID_KEYCODE_MENU, + ]); + if (menu.status !== 0) { + fail( + `adb input keyevent ${ANDROID_KEYCODE_MENU} failed: ${menu.stderr.trim()}` + ); + } + + let current = waitForAppReady(globals); + for (const label of [TOOLS_TOGGLE_LABEL, DEV_MENU_CLOSE_LABEL]) { + if (!current.some((n) => labelOf(n) === label)) { + giveUp(`the dev menu has no "${label}" entry`); + } + console.log(` dev menu: pressing "${label}"`); + // By selector, not by ref: the dev menu's "Close" is a container whose + // tappable area belongs entirely to an unlabelled child, so pressing its + // own ref is rejected (covered_by_interactive_descendants). The selector + // lets agent-device resolve down to that child. + ad(`press-${label.replace(/\s+/g, '-').toLowerCase()}`, [ + 'press', + `label="${label}"`, + '--settle', + ...globals, + ]); + current = waitForAppReady(globals); + } + + if (findFloatingToolsNode(current)) + giveUp('is still on screen after one toggle'); + + console.log( + ' dev-client floating Tools button was inside the capture area — ' + + 'disabled it via the dev menu' + ); + return current; +} + +/** + * The Expo dev launcher ("DEVELOPMENT SERVERS" / "RECENTLY OPENED"). It is left + * behind by an Android relaunch and none of the dev-menu labels match it. The + * way out is the recently-opened row carrying the Metro URL; if the launcher is + * up but that row is not there, the run fails rather than pressing whatever row + * happens to be nearby, which could open a different app. + */ +function findDevLauncherNode(nodes) { + if (!nodes.some((n) => DEV_LAUNCHER_MARKERS.includes(labelOf(n)))) { + return null; + } + + const metroRow = nodes.find( + (n) => labelOf(n).startsWith('http://') && labelOf(n).includes(METRO_PORT) + ); + if (metroRow) return metroRow; + + fail( + 'the Expo dev launcher is on screen but has no recently-opened row for ' + + `http://…:${METRO_PORT} — start Metro and open the app from the launcher once` + ); + return null; // unreachable +} + +/** + * Clears the two dev overlays a relaunch can land in, handling them distinctly + * and re-checking after every press. Returns the settled tree. + */ +function dismissOverlays(globals) { + let nodes = waitForAppReady(globals); + + for (let step = 0; step < MAX_OVERLAY_STEPS; step++) { + const devMenu = findDevMenuNode(nodes); + if (devMenu) { + console.log( + ` dev menu: pressing "${labelOf(devMenu)}" (@${devMenu.ref})` + ); + ad('press-devmenu', ['press', `@${devMenu.ref}`, '--settle', ...globals]); + nodes = waitForAppReady(globals); + continue; + } + + const launcher = findDevLauncherNode(nodes); + if (launcher) { + console.log( + ` dev launcher: pressing "${labelOf(launcher)}" (@${launcher.ref})` + ); + ad('press-launcher', [ + 'press', + `@${launcher.ref}`, + '--settle', + ...globals, + ]); + nodes = waitForAppReady(globals); + continue; + } + + return nodes; + } + + fail( + `a dev overlay was still on screen after ${MAX_OVERLAY_STEPS} dismissal ` + + 'attempts (dev menu and/or Expo dev launcher)' + ); + return nodes; // unreachable +} + +function onSurfaceScreen(globals, stories) { + const nodes = snapshot('snapshot-raw', globals, ['--raw']); + return stories.every((story) => nodes.some((n) => n.identifier === story)); +} + +/** + * The example-list root is the only screen whose Appbar title is "Examples", + * and it shows the drawer button where every example screen shows "Back". Both + * signals are required: "no Back element" on its own is also true of a screen + * with no header at all, which would make any such screen read as the list. + */ +function atListRoot(nodes) { + return hasLabel(nodes, LIST_ROOT_TITLE) && !hasLabel(nodes, BACK_LABEL); +} + +/** + * Pops the navigation stack until the example list root is on screen. Uses the + * Appbar "Back" element when there is one (present on both platforms), and + * falls back to platform back navigation for a screen with no header. + */ +function goBackToListRoot(platform, globals, nodes) { + let current = nodes; + + for (let step = 0; step < MAX_BACK_STEPS; step++) { + if (atListRoot(current)) return current; + + const back = current.find((n) => labelOf(n) === BACK_LABEL); + if (back) { + console.log(` pressing "Back" (@${back.ref})`); + ad('press-back', ['press', `@${back.ref}`, '--settle', ...globals]); + } else if (platform === 'android') { + console.log(' no "Back" element — sending Android KEYCODE_BACK'); + const res = sh(adbPath(), ['shell', 'input', 'keyevent', '4']); + if (res.status !== 0) { + fail(`adb input keyevent 4 failed: ${res.stderr.trim()}`); + } + } else { + console.log(' no "Back" element — using system back'); + ad('back', ['back', '--system', '--settle', ...globals]); + } + + current = waitForAppReady(globals); + } + + fail( + `could not reach the example list: after ${MAX_BACK_STEPS} back steps the ` + + `"${LIST_ROOT_TITLE}" title was still not on screen (last screen: ` + + `${current + .map((n) => labelOf(n)) + .filter(Boolean) + .slice(0, 5) + .join(' / ')})` + ); + return current; // unreachable +} + +/** + * Picks the "Surface" LIST ROW out of a snapshot of the example list. + * + * Several nodes can carry that label, and pressing the wrong one is a no-op + * that reads as a navigation failure: the Appbar title of the Surface screen + * itself, and on Android both the row container and its inset text child. The + * row is the candidate that + * - sits below the Appbar — rect.y at or past the bottom of the + * "Examples" title node (iOS 108pt, Android 294px), which is what excludes + * any header/title node, and + * - spans the list — width at least 90% of the screen, which excludes the + * Android Appbar title (1100 of 1280px) a second way, and then the widest + * of what is left, i.e. the row container (iOS 402 of 402pt, Android 1280 + * of 1280px) rather than its inset text child (Android 1160px). + * + * With no "Examples" title in the tree this is not the list root, so there is + * no row to press and the function reports nothing rather than guessing. + */ +function findSurfaceRow(nodes) { + const titles = nodes.filter((n) => labelOf(n) === LIST_ROOT_TITLE); + if (titles.length === 0) return null; + const headerBottom = Math.max( + ...titles.map((n) => (n.rect?.y ?? 0) + (n.rect?.height ?? 0)) + ); + const screenWidth = Math.max(0, ...nodes.map((n) => n.rect?.width ?? 0)); + + const candidates = nodes.filter( + (n) => + labelOf(n) === SURFACE_ROW_LABEL && + (n.rect?.y ?? -1) >= headerBottom && + (n.rect?.width ?? 0) >= 0.9 * screenWidth + ); + if (candidates.length === 0) return null; + + return candidates.sort( + (a, b) => (b.rect?.width || 0) - (a.rect?.width || 0) + )[0]; +} + +/** + * Scrolls down the example list until the "Surface" row shows up, then opens + * it. The caller must have put the app on the list root first, since scrolling + * only ever goes down. + */ +function navigateToSurface(globals, stories) { + for (let step = 0; step <= MAX_SCROLL_STEPS; step++) { + const nodes = snapshot('snapshot-list', globals); + const target = findSurfaceRow(nodes); + + if (target) { + // Press by ref off a fresh snapshot: `find 'label="Surface"'` is + // AMBIGUOUS_MATCH on Android and taps as a side effect on iOS. + console.log( + ` pressing the "Surface" row (@${target.ref}, ${target.type}, ` + + `y=${Math.round(target.rect?.y ?? -1)}, w=${Math.round(target.rect?.width ?? -1)})` + ); + ad('press-surface', ['press', `@${target.ref}`, '--settle', ...globals]); + + if (onSurfaceScreen(globals, stories)) return; + fail( + `pressed the "Surface" row but the example screen did not appear ` + + `(expected ids: ${stories.join(', ')})` + ); + } + + if (step < MAX_SCROLL_STEPS) { + ad('scroll', [ + 'scroll', + 'down', + String(SCROLL_STEP), + '--settle', + ...globals, + ]); + } + } + + fail( + `could not find the "Surface" row after ${MAX_SCROLL_STEPS} scrolls of ` + + `${SCROLL_STEP} rows — is the example list on screen?` + ); +} + +/** + * Relaunches the app and leaves it on the Surface example screen. + * + * The relaunch is unconditional. The app persists its navigation state + * (PERSISTENCE_KEY in example/src/index.tsx), so "already on the Surface + * screen" says nothing about which screen a plain `open` will land on, and — + * more importantly — only a relaunch makes the app fetch the current JS bundle + * from Metro. Skipping it on the strength of the screen that happens to be up + * captured a stale bundle on Android. + */ +function openOnSurfaceScreen(platform, globals, stories) { + console.log(' relaunching the app (fresh bundle from Metro)'); + if (platform === 'ios') { + ad('open-relaunch', ['open', BUNDLE_ID, '--relaunch', ...globals]); + } else { + const stop = sh(adbPath(), ['shell', 'am', 'force-stop', BUNDLE_ID]); + if (stop.status !== 0) { + fail(`adb force-stop ${BUNDLE_ID} failed: ${stop.stderr.trim()}`); + } + ad('open-after-force-stop', ['open', BUNDLE_ID, ...globals]); + } + + const nodes = disableFloatingTools( + platform, + globals, + dismissOverlays(globals) + ); + + if (onSurfaceScreen(globals, stories)) { + console.log(' restored onto the Surface screen'); + return; + } + + console.log(' not on the Surface screen — going back to the example list'); + const rootNodes = goBackToListRoot(platform, globals, nodes); + console.log(` at the example list root (${rootNodes.length} nodes)`); + navigateToSurface(globals, stories); +} + +/** + * The whole device pass. Mutates `state` as it goes so main() can write a + * summary whether this returns or throws. Returns the exit code (0 or 1). + */ +function runPass(state) { + const opts = state.opts; + const { platform } = opts; + + if (!fs.existsSync(ENV_FILE)) fail(`missing ${ENV_FILE}`); + const envFile = JSON.parse(fs.readFileSync(ENV_FILE, 'utf8')); + const env = platform === 'ios' ? envFile : { ...envFile.android }; + state.env = env; + + const globals = + platform === 'ios' + ? ['--platform', 'ios', '--udid', env.udid] + : [ + '--platform', + 'android', + '--session', + env.agentDeviceSession || 'android', + ]; + + state.observedEnv = enforceEnvironment(platform, env, opts.force); + + openOnSurfaceScreen(platform, globals, opts.stories); + ad('wait-stable', ['wait', 'stable', '500', '10000', ...globals]); + sleepSync(2000); // covers the customFontLoaded theme swap, which has no node change + + let failed = false; + + for (const story of opts.stories) { + const current = path.join(opts.outDir, `${story}.png`); + const shotArgs = [ + 'screenshot', + current, + '--crop-on', + `id="${story}"`, + ...globals, + ]; + // --pixel-density is iOS-only (UNSUPPORTED_OPERATION on Android). + if (platform === 'ios') + shotArgs.push('--pixel-density', String(env.pixelDensity || 3)); + const shot = ad(`screenshot-${story}`, shotArgs); + + if (opts.update) { + checkCaptureSize(env, story, shot.data, { update: true }); + const { baseline, created } = writeBaseline( + platform, + story, + current, + shot.data + ); + state.results.push({ + story, + updated: !created, + created, + baseline, + current, + width: shot.data?.width ?? null, + height: shot.data?.height ?? null, + }); + continue; + } + + const baseline = requireBaseline(platform, story); + checkCaptureSize(env, story, shot.data, { baselineFile: baseline }); + + const diffOut = path.join(opts.outDir, `${story}-diff.png`); + const diff = ad(`diff-${story}`, [ + 'diff', + 'screenshot', + '--baseline', + baseline, + current, + '--out', + diffOut, + '--threshold', + String(opts.threshold), + ...globals, + ]); + + const changed = diff.data?.differentPixels ?? -1; + const pct = diff.data?.mismatchPercentage ?? -1; + const regions = diff.data?.regions?.length ?? 0; + const pass = diff.data?.match === true; + if (!pass) failed = true; + + console.log( + `${platform} ${story} changed=${changed} (${pct}%) regions=${regions} threshold=${opts.threshold} → ${pass ? 'PASS' : 'FAIL'}` + ); + + state.results.push({ + story, + baseline, + current, + diff: diffOut, + totalPixels: diff.data?.totalPixels ?? null, + changedPixels: changed, + mismatchPercentage: pct, + regions: diff.data?.regions ?? [], + threshold: opts.threshold, + pass, + }); + } + + return failed ? 1 : 0; +} + +function writeSummary(state, exitCode, error) { + const { opts } = state; + const summary = { + platform: opts.platform, + threshold: opts.threshold, + update: opts.update, + force: opts.force, + stories: opts.stories, + outDir: opts.outDir, + agentDeviceVersion: AGENT_DEVICE, + sessionCwd: SESSION_CWD, + expectedEnv: state.env, + observedEnv: state.observedEnv, + startedAt: new Date(state.startedAt).toISOString(), + wallClockMs: Date.now() - state.startedAt, + results: state.results, + status: exitCode === 0 ? 'pass' : exitCode === 1 ? 'fail' : 'error', + exitCode, + error, + pass: exitCode === 0, + }; + const file = path.join(opts.outDir, 'summary.json'); + fs.mkdirSync(opts.outDir, { recursive: true }); + fs.writeFileSync(file, JSON.stringify(summary, null, 2)); + return file; +} + +function main() { + const argv = process.argv.slice(2); + + // An argument error happens before there are options to summarise (not even + // an output directory), so it just prints and exits; every later failure + // goes through writeSummary below. + let opts; + try { + opts = parseArgs(argv); + } catch (thrown) { + if (!(thrown instanceof RunFailure)) throw thrown; + console.error(`error: ${thrown.message}`); + process.exit(thrown.exitCode); + } + + const state = { + opts, + env: null, + observedEnv: {}, + results: [], + startedAt: Date.now(), + }; + + cmdDir = path.join(opts.outDir, 'cmds'); + fs.mkdirSync(cmdDir, { recursive: true }); + + console.log( + `# ${opts.platform} — threshold ${opts.threshold}${opts.update ? ' (update)' : ''}${opts.force ? ' (force)' : ''}` + ); + console.log(`# output: ${opts.outDir}`); + + let exitCode = 0; + let error = null; + try { + exitCode = runPass(state); + } catch (thrown) { + if (thrown instanceof RunFailure) { + console.error(`error: ${thrown.message}`); + exitCode = thrown.exitCode; + error = { message: thrown.message, exitCode: thrown.exitCode }; + } else { + console.error(thrown?.stack || String(thrown)); + exitCode = 2; + error = { + message: thrown?.message || String(thrown), + stack: thrown?.stack, + exitCode: 2, + }; + } + } + + const summaryFile = writeSummary(state, exitCode, error); + console.log(`# summary: ${summaryFile} (exit ${exitCode})`); + process.exit(exitCode); +} + +/** + * True when this module is the process entry point. `import.meta.main` would + * say the same thing but only exists on Node >= 24.2, and this script has to + * run on the Node 20 floor in example/package.json. Both sides are realpath'd + * so a symlinked invocation still matches. + */ +function isMainModule(argvPath, moduleUrl) { + if (!argvPath) return false; + const real = (p) => { + try { + return fs.realpathSync(p); + } catch { + return path.resolve(p); + } + }; + return real(argvPath) === real(fileURLToPath(moduleUrl)); +} + +if (isMainModule(process.argv[1], import.meta.url)) { + main(); +} + +// Exported for example/visual/run.test.mjs only. +export { + RunFailure, + isMainModule, + checkCaptureSize, + enforceEnvironment, + atListRoot, + findFloatingToolsNode, + findSurfaceRow, +}; diff --git a/example/visual/run.test.mjs b/example/visual/run.test.mjs new file mode 100644 index 0000000000..5d3f570f30 --- /dev/null +++ b/example/visual/run.test.mjs @@ -0,0 +1,218 @@ +/** + * Unit tests for example/visual/run.mjs. No device, no adb/xcrun, no + * agent-device, no new dependencies — only the pure decision helpers are + * exercised, with the device observers faked. + * + * node --test example/visual/run.test.mjs + */ + +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import test from 'node:test'; +import { fileURLToPath } from 'node:url'; + +import { + RunFailure, + atListRoot, + checkCaptureSize, + enforceEnvironment, + findFloatingToolsNode, + findSurfaceRow, + isMainModule, +} from './run.mjs'; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +const RUN_URL = new URL('./run.mjs', import.meta.url); +const RUN_PATH = fileURLToPath(RUN_URL); + +const env = {}; +const wrongSize = { width: 1280, height: 700 }; + +/** + * Writes a file carrying a PNG signature and an IHDR of the given size. Only + * those first 24 bytes are what run.mjs reads, so no encoder is needed. + */ +function writePngHeader(dir, name, width, height) { + const header = Buffer.alloc(24); + Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]).copy(header, 0); + header.writeUInt32BE(13, 8); + header.write('IHDR', 12, 'ascii'); + header.writeUInt32BE(width, 16); + header.writeUInt32BE(height, 20); + const file = path.join(dir, name); + fs.writeFileSync(file, header); + return file; +} + +const TMP_DIR = fs.mkdtempSync(path.join(os.tmpdir(), 'paper-visual-')); +process.on('exit', () => fs.rmSync(TMP_DIR, { recursive: true, force: true })); + +test('isMainModule is false for another argv[1] and true for the script itself', () => { + assert.equal(isMainModule(path.join(HERE, 'other.mjs'), RUN_URL), false); + assert.equal(isMainModule(undefined, RUN_URL), false); + assert.equal(isMainModule(RUN_PATH, RUN_URL), true); +}); + +test('checkCaptureSize skips the check in update mode', () => { + // Regression: this is the gate that used to abort `--update` before + // writeBaseline ever ran, so a story with no baseline could never get one. + assert.doesNotThrow(() => + checkCaptureSize(env, 'new-story', wrongSize, { update: true }) + ); + // A brand-new story has no baseline at all; --update must still get through. + assert.doesNotThrow(() => + checkCaptureSize(env, 'new-story', wrongSize, { + update: true, + baselineFile: path.join(TMP_DIR, 'missing.png'), + }) + ); +}); + +test('checkCaptureSize fails with exit code 3 in diff mode', () => { + const baselineFile = writePngHeader(TMP_DIR, 'story.png', 1206, 642); + + assert.throws( + () => checkCaptureSize(env, 'story', wrongSize, { baselineFile }), + (thrown) => { + assert.ok(thrown instanceof RunFailure); + assert.equal(thrown.exitCode, 3); + assert.match(thrown.message, /capture dimensions do not match/); + return true; + } + ); + + assert.doesNotThrow(() => + checkCaptureSize( + env, + 'story', + { width: 1206, height: 642 }, + { + baselineFile, + } + ) + ); + + // A story added today: whatever size its freshly written baseline has is the + // size the check expects, so no env.json edit is needed to make it pass. + const fresh = writePngHeader(TMP_DIR, 'new-story.png', 837, 219); + assert.doesNotThrow(() => + checkCaptureSize( + env, + 'new-story', + { width: 837, height: 219 }, + { + baselineFile: fresh, + } + ) + ); +}); + +test('--force covers the device check but not the size check', () => { + // Fake observers: the check compares env.json with these, so the test needs + // neither adb nor xcrun on PATH. + const observers = { + observeIos: () => ({ + observed: { udid: 'fake', name: 'iPhone', runtime: 'r', state: 'Booted' }, + }), + observeAndroid: () => ({ + observed: { apiLevel: 37, androidRelease: '17', density: 480 }, + }), + }; + const mismatched = { apiLevel: -1, density: -1 }; + + assert.throws( + () => enforceEnvironment('android', mismatched, false, observers), + (thrown) => { + assert.ok(thrown instanceof RunFailure); + assert.equal(thrown.exitCode, 2); + return true; + } + ); + assert.doesNotThrow(() => + enforceEnvironment('android', mismatched, true, observers) + ); + // A matching device needs no force at all. + assert.doesNotThrow(() => + enforceEnvironment( + 'android', + { apiLevel: 37, density: 480 }, + false, + observers + ) + ); + + // The size check takes no force: a stray `force` in the options changes nothing. + assert.throws( + () => + checkCaptureSize(env, 'story', wrongSize, { + force: true, + baselineFile: writePngHeader(TMP_DIR, 'force.png', 1206, 642), + }), + RunFailure + ); +}); + +test('atListRoot needs the "Examples" title and no Back element', () => { + const title = { label: 'Examples' }; + const back = { label: 'Back' }; + + assert.equal(atListRoot([title]), true); + assert.equal(atListRoot([title, back]), false); + // A screen with no header at all is not the list root. + assert.equal(atListRoot([{ label: 'Elevated surface' }]), false); + assert.equal(atListRoot([]), false); +}); + +test('findFloatingToolsNode finds the dev-client button, not the dev menu', () => { + // Shape taken from a real Android snapshot (480 dpi, top-right of the crop). + const floating = { + ref: 'e18', + type: 'android.widget.ImageView', + label: 'Tools', + rect: { x: 1115, y: 243, width: 78, height: 78 }, + }; + + assert.equal( + findFloatingToolsNode([{ label: 'Elevated surface' }, floating])?.ref, + 'e18' + ); + // The dev menu has a "TOOLS" section of its own: not the floating button. + assert.equal( + findFloatingToolsNode([ + { type: 'android.widget.TextView', label: 'TOOLS' }, + { type: 'android.widget.TextView', label: 'Reload' }, + { type: 'android.widget.TextView', label: 'Tools' }, + ]), + null + ); + assert.equal(findFloatingToolsNode([]), null); +}); + +test('findSurfaceRow picks the list row, not the Appbar title', () => { + const nodes = [ + { + ref: 'title', + label: 'Examples', + rect: { y: 60, height: 48, width: 402 }, + }, + // Appbar title of the Surface screen: above the list, must not win. + { + ref: 'header', + label: 'Surface', + rect: { y: 60, height: 48, width: 402 }, + }, + // Inset text child: below the header but too narrow to be the row. + { + ref: 'child', + label: 'Surface', + rect: { y: 300, height: 48, width: 360 }, + }, + { ref: 'row', label: 'Surface', rect: { y: 300, height: 48, width: 402 } }, + ]; + + assert.equal(findSurfaceRow(nodes)?.ref, 'row'); + // No "Examples" title means this is not the list: report nothing. + assert.equal(findSurfaceRow(nodes.filter((n) => n.ref !== 'title')), null); +}); From 4abbd01932edbe2326c3288f3e8c4d107c997b48 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 15:22:06 +0200 Subject: [PATCH 16/18] test(example): drop the unrunnable summarizer, one node-client story --- example/visual/README.md | 10 +- example/visual/evidence/summarize.mjs | 135 -------------------------- example/visual/run.mjs | 8 +- 3 files changed, 9 insertions(+), 144 deletions(-) delete mode 100644 example/visual/evidence/summarize.mjs diff --git a/example/visual/README.md b/example/visual/README.md index f56d65ccc6..fb1b3d614e 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -10,7 +10,7 @@ On iOS and Android, yes, with one catch. The noise floor is 0 pixels on iOS and ## Setup -- Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client, agent-device 0.21.0 driven through its CLI via `npx`. Its Node client (`createAgentDeviceClient`) was not used: reaching it means adding agent-device as a dependency of this repo, which a PoC that wanted to try the tool without installing it did not do. A runner that adopts the tool should use the client. No Storybook, no extra screens. +- Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client. agent-device 0.21.0 through its CLI via `npx`; its Node client was not used because it requires adding agent-device as a dependency, which this PoC avoided. If the approach is adopted, the runner should switch to the client. The docs and source were re-checked against 0.21.3. No Storybook, no extra screens. - iPhone 17 Pro simulator (iOS 26.5, 3x) and `Pixel_10_Pro` emulator (API 37, 480 dpi, `hw.gpu.mode=auto`). Pinned in `env.json`; baselines are valid for that configuration only. - The only app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat`, named so they cannot be mistaken for the library defaults removed in #5088 and #5099). `screenshot --crop-on 'id="…"'` then crops to exactly that section: 402x214 logical, 1206x642 px at `--pixel-density 3` on iOS; 1280x642 native px on Android. - No animation freezing, status-bar normalisation or release build was needed. The crop excludes the status bar and LogBox. @@ -62,7 +62,7 @@ Same count every time, and the same as the first single captures. The diff image ## Web -Tried once on 2026-09-14 against `expo export --platform web` of the example app, served locally, with agent-device's managed browser (`agent-device web setup`, agent-browser 0.27.1). `open` works and a full-page `screenshot` works (1280x577). `screenshot --crop-on 'id="surface-example-elevated"'` is refused: `UNSUPPORTED_OPERATION`, `CROP_TARGET_NOT_ACCEPTED`, `PENDING_PIXEL_IDENTITY_EVIDENCE`. Transcript in `evidence/web-excerpt.json`, the full-page capture in `evidence/diff-images/web-full-page-screenshot.png`. So web is not blocked, but it is a different loop, full-viewport diffs rather than per-section crops, and was not pursued for a Surface-only PoC. +Tried once on 2026-09-14 against `expo export --platform web` of the example app, served locally, with agent-device's managed browser (`agent-device web setup`, agent-browser 0.27.1). `open` works and a full-page `screenshot` works (1280x577). `screenshot --crop-on 'id="surface-example-elevated"'` is refused: `UNSUPPORTED_OPERATION`, `CROP_TARGET_NOT_ACCEPTED`, `PENDING_PIXEL_IDENTITY_EVIDENCE`. Transcript in `evidence/web-excerpt.json`, the full-page capture in `evidence/diff-images/web-full-page-screenshot.png`. A web leg would therefore diff full viewports rather than per-section crops. Not pursued for a Surface-only PoC. ## Caveats @@ -96,7 +96,7 @@ Expect `differentPixels: 0`. To see a failure, change `shadow(elevation, …)` t ## Running it -`example/visual/run.mjs` is the loop above as one script for both platforms, plain ESM on Node 20 or newer, no new dependencies. It spawns `npx agent-device@0.21.0 … --json` and parses the output. +`example/visual/run.mjs` runs the loop above on either platform: plain ESM on Node 20 or newer, no new dependencies, spawning `npx agent-device@0.21.0 … --json` and parsing the output. ```bash node example/visual/run.mjs --platform ios @@ -119,11 +119,11 @@ The pure helpers have seven `node:test` cases, no device needed: yarn example test:visual ``` -Not run by Jest, the pre-commit hook or CI. `evidence/summarize.mjs` regenerates a results table from a directory of `diff screenshot` JSON; `results.csv` in this PR was produced from the raw JSON on the runner branch. +Not run by Jest, the pre-commit hook or CI. `results.csv` was produced from the raw `diff screenshot` JSON on the runner branch. ## What a real runner has to handle -Each learned while scripting `run.mjs`, and handled there. None of them is an agent-device bug: +Things `run.mjs` had to deal with. None is an agent-device bug: - Reload before every capture with `agent-device metro reload`, then `open --relaunch`. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. - The example app persists navigation state. A relaunch lands on the last screen, so the runner has to press Back to the list root and pick the Surface row, not the header title. diff --git a/example/visual/evidence/summarize.mjs b/example/visual/evidence/summarize.mjs deleted file mode 100644 index 97c457fda9..0000000000 --- a/example/visual/evidence/summarize.mjs +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env node -/** - * Regenerates example/visual/evidence/summary.md from the raw agent-device JSON - * kept under example/visual/evidence/. - * - * node example/visual/evidence/summarize.mjs [evidence-dir] - * - * Every *.json that reports a diff is picked up: an agent-device `diff` payload - * (`data.differentPixels`) or a run.mjs summary.json (one row per entry in - * `results`). Files are grouped into one table per directory, in walk order. - */ - -import fs from 'node:fs'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -const COLUMNS = [ - 'file', - 'total px', - 'changed px', - 'mismatch %', - 'regions', - 'match', -]; - -/** Every *.json under `dir`, depth-first, directories and files sorted. */ -function jsonFiles(dir) { - const found = []; - for (const entry of fs - .readdirSync(dir, { withFileTypes: true }) - .sort((a, b) => a.name.localeCompare(b.name))) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) found.push(...jsonFiles(full)); - else if (entry.name.endsWith('.json')) found.push(full); - } - return found; -} - -/** The diff rows a single JSON file contributes, or [] if it reports no diff. */ -function rowsOf(file) { - let json; - try { - json = JSON.parse(fs.readFileSync(file, 'utf8')); - } catch { - return []; - } - - const name = path.basename(file); - - if (json?.data?.differentPixels != null) { - const d = json.data; - return [ - { - file: name, - total: d.totalPixels, - changed: d.differentPixels, - mismatch: d.mismatchPercentage, - regions: d.regions?.length ?? 0, - match: d.match, - }, - ]; - } - - // run.mjs summary.json: the diff numbers live one level down, per story. - if (Array.isArray(json?.results)) { - return json.results - .filter((r) => r.changedPixels != null) - .map((r) => ({ - file: `${name} (${r.story})`, - total: r.totalPixels, - changed: r.changedPixels, - mismatch: r.mismatchPercentage, - regions: r.regions?.length ?? 0, - match: r.pass, - })); - } - - return []; -} - -function renderTable(rows) { - const cells = rows.map((r) => [ - r.file, - String(r.total ?? ''), - String(r.changed ?? ''), - String(r.mismatch ?? ''), - String(r.regions ?? ''), - r.match ? 'yes' : 'no', - ]); - const widths = COLUMNS.map((header, i) => - Math.max(header.length, ...cells.map((c) => c[i].length)) - ); - const line = (values) => - `| ${values.map((v, i) => v.padEnd(widths[i])).join(' | ')} |`; - - return [ - line(COLUMNS), - `| ${widths.map((w) => '-'.repeat(w)).join(' | ')} |`, - ...cells.map(line), - ].join('\n'); -} - -function main() { - const root = path.resolve( - process.argv[2] || path.dirname(fileURLToPath(import.meta.url)) - ); - - const sections = new Map(); - for (const file of jsonFiles(root)) { - const rows = rowsOf(file); - if (rows.length === 0) continue; - const section = `${path.relative(root, path.dirname(file)) || '.'}/`; - sections.set(section, [...(sections.get(section) || []), ...rows]); - } - - const out = [ - '# Evidence summary', - '', - 'generated by evidence/summarize.mjs — do not edit by hand', - '', - ...[...sections].flatMap(([section, rows]) => [ - `## ${section}`, - '', - renderTable(rows), - '', - ]), - ].join('\n'); - - const target = path.join(root, 'summary.md'); - fs.writeFileSync(target, out); - const total = [...sections.values()].reduce((n, r) => n + r.length, 0); - console.log(`${target}: ${total} rows in ${sections.size} sections`); -} - -main(); diff --git a/example/visual/run.mjs b/example/visual/run.mjs index 1f082e28e2..94572a74cf 100644 --- a/example/visual/run.mjs +++ b/example/visual/run.mjs @@ -6,10 +6,10 @@ * [--threshold 0.02] [--story surface-example-elevated,surface-example-flat] * [--out ] * - * Drives agent-device 0.21.0 through `npx` and parses `--json` stdout. The - * package does export `createAgentDeviceClient`, but it is not a dependency of - * this repo and is not resolvable from `example/`, and the PoC rule is "no new - * dependencies", so the CLI is spawned instead. + * Drives agent-device 0.21.0 through `npx` and parses `--json` stdout. Its + * Node client was not used because it requires adding agent-device as a + * dependency, which this PoC avoided; a runner that adopts the tool should + * switch to the client. * * Prerequisites (documented, not automated): the example app is already built * and installed on a device matching example/visual/env.json, Metro is running, From 393780c2fb0fc9f36089cbb3cc91c36c436ff769 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 19:17:43 +0200 Subject: [PATCH 17/18] test(example): resolve the device from its profile, drop --force env.json pins the simulator name plus runtime and the AVD name, API level and density; no UDID or serial. run.mjs resolves the instance through simctl and agent-device devices, boots it with agent-device boot, binds fixed sessions paper-visual-ios / paper-visual-android on open, retries open once when the session is bound to a device that is gone, and sets adb reverse after an Android boot. --force is removed; a wrong Android image is exit 2 with the re-baseline steps. Three new node:test cases with captured device shapes. yarn example visual is the entry point. --- example/package.json | 1 + example/visual/README.md | 25 ++- example/visual/env.json | 4 - example/visual/run.mjs | 399 +++++++++++++++++++++--------------- example/visual/run.test.mjs | 135 +++++++++--- 5 files changed, 355 insertions(+), 209 deletions(-) diff --git a/example/package.json b/example/package.json index 4ca0d985b4..b24663d85e 100644 --- a/example/package.json +++ b/example/package.json @@ -9,6 +9,7 @@ "start": "EXPO_NO_TYPESCRIPT_SETUP=1 expo start --dev-client", "android": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:android", "ios": "EXPO_NO_TYPESCRIPT_SETUP=1 expo run:ios", + "visual": "node visual/run.mjs", "test:visual": "node --test visual/run.test.mjs" }, "dependencies": { diff --git a/example/visual/README.md b/example/visual/README.md index fb1b3d614e..65c224e7e2 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -11,7 +11,7 @@ On iOS and Android, yes, with one catch. The noise floor is 0 pixels on iOS and ## Setup - Branch `poc/agent-device-visual`, React Native 0.85.3, Expo 56, Debug dev-client. agent-device 0.21.0 through its CLI via `npx`; its Node client was not used because it requires adding agent-device as a dependency, which this PoC avoided. If the approach is adopted, the runner should switch to the client. The docs and source were re-checked against 0.21.3. No Storybook, no extra screens. -- iPhone 17 Pro simulator (iOS 26.5, 3x) and `Pixel_10_Pro` emulator (API 37, 480 dpi, `hw.gpu.mode=auto`). Pinned in `env.json`; baselines are valid for that configuration only. +- iPhone 17 Pro simulator (iOS 26.5, 3x) and `Pixel_10_Pro` emulator (API 37, 480 dpi, `hw.gpu.mode=auto`). `env.json` pins that profile, not the instance: no UDID and no serial. The runner resolves the simulator by name plus runtime through `xcrun simctl`, and the emulator by AVD name through `agent-device devices`, and boots it if it is down. iOS therefore works on any Mac with an iPhone 17 Pro on the iOS 26.5 runtime; Android works wherever the AVD is named exactly `Pixel_10_Pro` (an AVD name is the only handle agent-device exposes for a stopped emulator) and `adb` and `emulator` are reachable, on `PATH` or through `ANDROID_HOME`, which the runner defaults to `~/Library/Android/sdk` when unset. Baselines stay valid for that configuration only. - The only app change: a `testID` on the "Elevated surface" and "Flat surface" `List.Section`s in `SurfaceExample.tsx` (`surface-example-elevated` / `surface-example-flat`, named so they cannot be mistaken for the library defaults removed in #5088 and #5099). `screenshot --crop-on 'id="…"'` then crops to exactly that section: 402x214 logical, 1206x642 px at `--pixel-density 3` on iOS; 1280x642 native px on Android. - No animation freezing, status-bar normalisation or release build was needed. The crop excludes the status bar and LogBox. @@ -72,17 +72,18 @@ Tried once on 2026-09-14 against `expo export --platform web` of the example app ## Reproducing by hand -Prerequisites: the example app built and installed on the device pinned in `env.json`, Metro running (`yarn example start`). agent-device sessions are keyed by cwd and bound to one device, so run from one directory and give the second platform its own `--session`. The loop is the same on both platforms; only these values differ: +Prerequisites: the example app built and installed on a device matching the profile in `env.json`, Metro running (`yarn example start`). Each platform gets its own named session, `paper-visual-ios` and `paper-visual-android`, the same names the runner uses. An agent-device session is bound to one device, so if another session on the machine still claims the device, `open` is refused; close that session (`npx agent-device@0.21.0 close --session `) and try again. Start by listing the devices to get the UDID or serial; the loop is the same on both platforms and only these values differ: | value | iOS | Android | | -------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `TARGET` | `--platform ios --udid 2464A356-C17C-4B0D-99DB-CDFBDB98826C` | `--platform android --session android` | +| `TARGET` | `--platform ios --session paper-visual-ios --udid ` | `--platform android --session paper-visual-android --serial ` | | `DENSITY` | `--pixel-density 3` | (none; Android returns native pixels) | | overlay after `--relaunch` | dev menu, a few seconds after launch: `press 'label="Close"'` | dev launcher: `press 'label="http://:8081"'`, then wait for the bundle | | `BASELINE` | `example/visual/__baselines__/ios` | `example/visual/__baselines__/android` | ```bash AD="npx agent-device@0.21.0" +$AD devices --platform ios --json # or --platform android; yields the UDID or serial $AD open com.callstack.reactnativepaperexample --relaunch $TARGET --json $AD wait stable 500 10000 $TARGET --json # dismiss the overlay for this platform (table above); the app restores its last screen, @@ -99,26 +100,28 @@ Expect `differentPixels: 0`. To see a failure, change `shadow(elevation, …)` t `example/visual/run.mjs` runs the loop above on either platform: plain ESM on Node 20 or newer, no new dependencies, spawning `npx agent-device@0.21.0 … --json` and parsing the output. ```bash -node example/visual/run.mjs --platform ios -node example/visual/run.mjs --platform android +yarn example visual --platform ios +yarn example visual --platform android ``` -It relaunches the app so the bundle is fresh, waits for the app to be ready, dismisses the dev menu, dev launcher and floating Tools button if present, goes Back to the example list root and presses the Surface row if the app restored another screen, then captures and diffs each story and prints one line per story: +It resolves and boots the device from the profile in `env.json`, relaunches the app so the bundle is fresh, waits for the app to be ready, dismisses the dev menu, dev launcher and floating Tools button if present, goes Back to the example list root and presses the Surface row if the app restored another screen, then captures and diffs each story and prints one line per story: ``` ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS ``` -Exit codes: 1 if any story fails the diff, 2 if the connected device does not match `env.json` (`--force` downgrades that to a warning), 3 if a capture's size does not match its baseline PNG. `--update` writes the captures as baselines, creating missing ones. `--out ` sets where captures, diff images and `summary.json` go (default `example/visual/artifacts/run/`, gitignored). `summary.json` is written on every exit. +Exit codes: 1 if any story fails the diff, 2 for a setup error (no simulator with that name on that runtime, no AVD with that name, an emulator whose API level or density is not the one the baselines were captured on, a failed boot, or an `open` that agent-device refused because another session claims the device), 3 if a capture's size does not match its baseline PNG. `--update` writes the captures as baselines, creating missing ones. `--out ` sets where captures, diff images and `summary.json` go (default `example/visual/artifacts/run/`, gitignored). `summary.json` is written on every exit. -Prerequisites are the same as for the hand-run loop: app built and installed on the pinned device, Metro running. Set `AGENT_DEVICE_SESSION_CWD` to the directory whose agent-device session is bound to the device, or let the script bind a fresh one. +Prerequisites are the same as for the hand-run loop: the app built and installed on a device matching the profile, an AVD named exactly `Pixel_10_Pro` on Android with `adb` and `emulator` reachable, and Metro running. After an Android boot the runner sets `adb reverse tcp:8081 tcp:8081` itself, since a cold emulator has no route to Metro. A simulator that has never booted runs Apple's first-boot migration, which can take longer than agent-device's 120 s boot cap; boot it once from Xcode before the first run. -The pure helpers have seven `node:test` cases, no device needed: +The pure helpers have ten `node:test` cases, no device needed (boot and the `open` retry are not covered): ```bash yarn example test:visual ``` +Left as follow-ups: creating the simulator or AVD when it is missing, per-profile baseline directories, `open --metro-port` in place of dismissing the dev launcher, and CI. + Not run by Jest, the pre-commit hook or CI. `results.csv` was produced from the raw `diff screenshot` JSON on the runner branch. ## What a real runner has to handle @@ -130,7 +133,7 @@ Things `run.mjs` had to deal with. None is an agent-device bug: - Dev-client chrome: on Android a relaunch lands in the dev launcher; on iOS the first-run onboarding sheet dims the whole app and `wait stable` reports it as settled; on both, the floating Tools button can sit inside the crop. Dismiss all of it before capturing, or capture from a release build. - Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default 0.1 is documented as a 44-unit RGB tolerance, far looser than a one-step shadow change. - Use `find … list` to locate without tapping, `--first` or a `role=` qualifier where Android exposes the same label on a row and its text child, and assert on node count after `snapshot --scope`, which returns success with empty nodes when nothing matches. -- Pin the device (UDID, runtime, density) and refuse to compare or re-baseline on anything else; derive expected capture size from the baseline PNG, per story. +- Pin the device profile, resolve the instance through `simctl` and `agent-device devices` and boot it, and refuse to compare or re-baseline on a different image; derive expected capture size from the baseline PNG, per story. - A plain `.mjs` entry guarded by `import.meta.main` does nothing on Node 20/22; guard with an `argv[1]` comparison. ## Evidence @@ -138,6 +141,6 @@ Things `run.mjs` had to deal with. None is an agent-device bug: - `evidence/results.csv`: one row per `diff screenshot` run (74 rows, including the two dev-client false FAILs): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. - `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match and deletes any stale file at that path. - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. -- `env.json`: the pinned devices, versions and thresholds. +- `env.json`: the pinned device profiles, versions and thresholds. The first-run rows predate the test-id rename and their source files say `surface-elevated` / `surface-flat`; renaming an id changes no pixel. diff --git a/example/visual/env.json b/example/visual/env.json index 453b33ef14..218c07a1d4 100644 --- a/example/visual/env.json +++ b/example/visual/env.json @@ -1,7 +1,6 @@ { "platform": "ios", "device": "iPhone 17 Pro", - "udid": "2464A356-C17C-4B0D-99DB-CDFBDB98826C", "iosVersion": "26.5", "runtime": "com.apple.CoreSimulator.SimRuntime.iOS-26-5", "scale": 3, @@ -21,7 +20,6 @@ "android": { "avd": "Pixel_10_Pro", "device": "Pixel 10 Pro", - "serial": "emulator-5554", "apiLevel": 37, "androidRelease": "17", "systemImage": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a/", @@ -30,9 +28,7 @@ "emulatorVersion": "36.6.11.0 (build_id 15507667)", "gpuMode": "auto (hw.gpu.enabled=yes, hw.gpu.mode=auto; swiftshader NOT measured)", "agentDeviceVersion": "0.21.0", - "agentDeviceSession": "android", "reactNativeVersion": "0.85.3", - "metroHost": "http://192.168.1.151:8081", "date": "2026-09-10T09:45:00Z", "baselines": { "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", diff --git a/example/visual/run.mjs b/example/visual/run.mjs index 94572a74cf..29805114b7 100644 --- a/example/visual/run.mjs +++ b/example/visual/run.mjs @@ -2,7 +2,7 @@ /** * Visual regression loop for the Surface example (PoC). * - * node example/visual/run.mjs --platform ios|android [--update] [--force] + * node example/visual/run.mjs --platform ios|android [--update] * [--threshold 0.02] [--story surface-example-elevated,surface-example-flat] * [--out ] * @@ -11,10 +11,14 @@ * dependency, which this PoC avoided; a runner that adopts the tool should * switch to the client. * + * The device is resolved from the profile in example/visual/env.json (simulator + * name plus runtime on iOS, AVD name on Android) and booted if needed, so no + * UDID or serial is pinned anywhere. + * * Prerequisites (documented, not automated): the example app is already built * and installed on a device matching example/visual/env.json, Metro is running, * and the baselines in example/visual/__baselines__// were captured - * on that same device. + * on that same device profile. * * Every run relaunches the app: the example app persists its navigation state * (PERSISTENCE_KEY in example/src/index.tsx), and only a relaunch makes the app @@ -91,10 +95,9 @@ const LIST_ROOT_TITLE = 'Examples'; // Appbar title of the example-list root const SURFACE_ROW_LABEL = 'Surface'; const BACK_LABEL = 'Back'; -// agent-device sessions are keyed by cwd. Point this at the directory whose -// session is already bound to the intended device to reuse that binding; -// otherwise a fresh session is created and bound by `open --udid`. -const SESSION_CWD = process.env.AGENT_DEVICE_SESSION_CWD || VISUAL_DIR; +// One fixed session name per platform, so a run is reproducible from any +// directory and the README's hand-run commands address the same session. +const sessionName = (platform) => `paper-visual-${platform}`; let commandSeq = 0; let cmdDir = VISUAL_DIR; @@ -115,10 +118,6 @@ function fail(message, code = 2) { throw new RunFailure(message, code); } -function warn(message) { - console.warn(`WARNING: ${message}`); -} - function sleepSync(ms) { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); } @@ -126,7 +125,6 @@ function sleepSync(ms) { function parseArgs(argv) { const out = { update: false, - force: false, threshold: DEFAULT_THRESHOLD, stories: DEFAULT_STORIES, outDir: null, @@ -147,9 +145,6 @@ function parseArgs(argv) { case '--update': out.update = true; break; - case '--force': - out.force = true; - break; case '--threshold': out.threshold = Number(next()); break; @@ -166,14 +161,12 @@ function parseArgs(argv) { case '--help': case '-h': console.log( - 'usage: node example/visual/run.mjs --platform ios|android [--update] [--force]\n' + + 'usage: node example/visual/run.mjs --platform ios|android [--update]\n' + ' [--threshold <0-1>] [--story|--stories a,b] [--out ]\n' + '\n' + ' --update write the captures to __baselines__// instead of diffing\n' + ' them (the capture-size check is skipped; the captured dimensions\n' + - ' are printed instead)\n' + - ' --force run even though the device does not match env.json. It covers the\n' + - ' device check only — a capture-size mismatch is never overridden.' + ' are printed instead)' ); process.exit(0); break; @@ -211,6 +204,14 @@ function spawnEnv() { for (const [key, value] of Object.entries(process.env)) { if (!key.startsWith('npm_config_')) env[key] = value; } + // A documented lookup path for the Android SDK: agent-device needs the + // `emulator` binary to list stopped AVDs at all, and looks for the SDK under + // ANDROID_SDK_ROOT, ANDROID_HOME and ~/Android/Sdk. The standard macOS + // install is at neither, so point it there when the user has set nothing. + const sdk = path.join(process.env.HOME || '', 'Library/Android/sdk'); + if (!env.ANDROID_HOME && !env.ANDROID_SDK_ROOT && fs.existsSync(sdk)) { + env.ANDROID_HOME = sdk; + } return env; } @@ -219,7 +220,7 @@ function ad(label, args, { allowFail = false } = {}) { const argv = [AGENT_DEVICE, ...args, '--json']; const startedAt = Date.now(); const proc = spawnSync('npx', argv, { - cwd: SESSION_CWD, + cwd: VISUAL_DIR, encoding: 'utf8', env: spawnEnv(), maxBuffer: 256 * 1024 * 1024, @@ -247,7 +248,7 @@ function ad(label, args, { allowFail = false } = {}) { JSON.stringify( { command: ['npx', ...argv], - cwd: SESSION_CWD, + cwd: VISUAL_DIR, exitCode: proc.status, elapsedMs, response: parsed, @@ -309,164 +310,189 @@ function adbPath() { return fs.existsSync(candidate) ? candidate : 'adb'; } +/** adb addressed at the resolved device, so a second emulator cannot take the call. */ +const adb = (device, args) => sh(adbPath(), ['-s', device.id, ...args]); + /** - * Reads the simulator matching `expectedUdid` out of `xcrun simctl list`. - * Returns `{ observed }` on success, or `{ error }` describing why the device - * could not be inspected. + * Picks the simulator the baselines belong to out of a parsed + * `xcrun simctl list -j devices`: the pinned name on the pinned runtime, a + * booted one first so a second clone is not started for nothing. Pure, so it + * can be tested against a captured listing. `elsewhere` collects the runtimes + * that do carry that name, which is the useful half of a "not found" message. */ -function observeIos(expectedUdid) { +function pickIosCandidate(listing, env) { + const candidates = []; + const elsewhere = new Set(); + + for (const [runtime, list] of Object.entries(listing?.devices || {})) { + for (const device of list) { + if (device.name !== env.device || device.isAvailable === false) continue; + if (runtime === env.runtime) { + candidates.push({ + id: device.udid, + name: device.name, + runtime, + state: device.state, + booted: device.state === 'Booted', + }); + } else { + elsewhere.add(runtime); + } + } + } + + return { + device: candidates.find((c) => c.booted) || candidates[0] || null, + elsewhere: [...elsewhere], + }; +} + +/** Resolves the iOS simulator from the profile. The runtime check is part of it. */ +function resolveIos(env) { const res = sh('xcrun', ['simctl', 'list', '-j', 'devices']); if (res.status !== 0) { - return { - error: { - what: 'device inspection', - expected: `xcrun simctl list to succeed for udid ${expectedUdid}`, - actual: `exit ${res.status} ${res.stderr.trim()}`, - }, - }; + fail(`xcrun simctl list failed: exit ${res.status} ${res.stderr.trim()}`); } - let devices; + let listing; try { - devices = JSON.parse(res.stdout).devices || {}; + listing = JSON.parse(res.stdout); } catch { - return { - error: { - what: 'device inspection', - expected: 'parseable xcrun simctl list output', - actual: 'unparseable JSON', - }, - }; + fail('xcrun simctl list did not return parseable JSON'); } - let match = null; - for (const [runtime, list] of Object.entries(devices)) { - for (const device of list) { - if (device.udid === expectedUdid) match = { runtime, device }; - } + const { device, elsewhere } = pickIosCandidate(listing, env); + if (!device) { + fail( + `no simulator named ${env.device} on ${env.runtime}` + + (elsewhere.length + ? `; that name exists on ${elsewhere.join(', ')}` + : '') + + '; create one in Xcode (Devices and Simulators)' + ); } + return device; +} - if (!match) { - return { - error: { - what: 'udid', - expected: expectedUdid, - actual: 'not present in xcrun simctl list (no such simulator)', - }, - }; +/** + * Picks the emulator or stopped AVD matching the profile. agent-device reports + * a running emulator under its serial and the AVD name as `name`, and a stopped + * one under the AVD name twice, so both handles are accepted; a physical device + * with the same marketing name is not an AVD and is ignored. Pure, exported for + * the tests. + */ +function pickAndroid(devices, env) { + const candidates = (devices || []).filter( + (d) => d.kind === 'emulator' && (d.id === env.avd || d.name === env.device) + ); + return candidates.find((d) => d.booted) || candidates[0] || null; +} + +/** Resolves the Android emulator from the profile, booting the AVD if it is stopped. */ +function resolveAndroid(env, adFn = ad) { + const list = adFn('devices-android', ['devices', '--platform', 'android']); + const found = pickAndroid(list.data?.devices, env); + if (!found) { + fail( + `no AVD named ${env.avd} (agent-device lists stopped AVDs only when the ` + + 'emulator binary is on PATH or ANDROID_HOME is set); create one in ' + + `Android Studio with ${env.systemImage}` + ); } + if (found.booted) return { id: found.id, name: found.name }; + + // No --session on boot: the session may still be bound to a serial from an + // earlier emulator, and a selector naming another identity is INVALID_ARGS. + const boot = adFn( + 'boot-android', + ['boot', '--platform', 'android', '--device', found.id], + { allowFail: true } + ); + if (!boot.ok) failAd(`boot ${found.id}`, boot); + return { id: boot.data?.id || found.id, name: found.name }; +} - return { - observed: { - udid: match.device.udid, - name: match.device.name, - runtime: match.runtime, - state: match.device.state, - }, - }; +/** Reports an agent-device failure with its own message and hint, verbatim. */ +function failAd(what, res) { + fail( + `agent-device ${what} failed: ${res.error?.message || 'no message'}` + + (res.error?.hint ? `\nhint: ${res.error.hint}` : '') + ); } -/** Reads API level, release and density off the connected device via adb. */ -function observeAndroid() { - const adb = adbPath(); - const prop = (name) => sh(adb, ['shell', 'getprop', name]).stdout.trim(); +/** Reads API level, release and density off the resolved device via adb. */ +function observeAndroid(serial) { + const adbBin = adbPath(); + const prop = (name) => + sh(adbBin, ['-s', serial, 'shell', 'getprop', name]).stdout.trim(); const sdkLevel = prop('ro.build.version.sdk'); if (!sdkLevel) { return { error: { what: 'device inspection', - expected: `Android properties readable via ${adb}`, - actual: 'no response (is an emulator connected?)', + expected: `Android properties readable via ${adbBin} -s ${serial}`, + actual: 'no response (is the emulator still up?)', }, }; } - const densityOut = sh(adb, ['shell', 'wm', 'density']).stdout; - const densityMatch = densityOut.match(/(\d+)\s*$/m); + // An override set with `wm density` is what the screen actually renders at, + // so it wins over the physical density of the image. + const densityOut = sh(adbBin, [ + '-s', + serial, + 'shell', + 'wm', + 'density', + ]).stdout; + const density = + densityOut.match(/Override density:\s*(\d+)/) || + densityOut.match(/Physical density:\s*(\d+)/); return { observed: { apiLevel: Number(sdkLevel), androidRelease: prop('ro.build.version.release'), - density: densityMatch ? Number(densityMatch[1]) : null, + density: density ? Number(density[1]) : null, }, }; } -const DEFAULT_OBSERVERS = { observeIos, observeAndroid }; +const DEFAULT_OBSERVERS = { observeAndroid }; /** - * Compares the connected device with env.json. Returns the observed values and - * the list of mismatches; the caller decides what to do with them. A device - * that cannot be inspected counts as a mismatch: baselines are only meaningful - * on a device we could actually identify. The observers are injected so the - * comparison can be tested without xcrun/adb. - */ -function checkEnvironment(platform, env, observers = DEFAULT_OBSERVERS) { - const mismatches = []; - const mismatch = (what, expected, actual) => - mismatches.push(`${what}: expected ${expected}, observed ${actual}`); - - const read = - platform === 'ios' - ? observers.observeIos(env.udid) - : observers.observeAndroid(); - if (read.error) { - mismatch(read.error.what, read.error.expected, read.error.actual); - return { observed: {}, mismatches }; - } - const observed = read.observed; - - if (platform === 'ios') { - // The runtime identifier carries the iOS version (…SimRuntime.iOS-26-5), so - // comparing it also covers env.iosVersion. - if (env.runtime && observed.runtime !== env.runtime) { - mismatch('runtime', env.runtime, observed.runtime); - } - if (env.device && observed.name !== env.device) { - mismatch('device name', env.device, observed.name); - } - if (observed.state !== 'Booted') { - mismatch('device state', 'Booted', observed.state); - } - return { observed, mismatches }; - } - - if (env.apiLevel != null && observed.apiLevel !== env.apiLevel) { - mismatch('Android API level', env.apiLevel, observed.apiLevel); - } - if (env.density != null && observed.density !== env.density) { - mismatch('Android density', env.density, observed.density ?? 'unreadable'); - } - return { observed, mismatches }; -} - -/** - * Throws unless the device matches env.json. `--force` downgrades the - * mismatches to warnings so a deliberate re-baseline on another device is - * still possible, but never by accident. This is the only check `--force` - * covers. + * The one check left after resolution, and Android only: an AVD name says + * nothing about the system image behind it, so the API level and the density + * the baselines were captured on are still compared. iOS needs nothing here, + * because resolving the simulator already matched the name and the runtime. + * The observer is injected so this can be tested without adb. */ function enforceEnvironment( platform, env, - force, + device, observers = DEFAULT_OBSERVERS ) { - const { observed, mismatches } = checkEnvironment(platform, env, observers); - if (mismatches.length === 0) return observed; + if (platform !== 'android') return {}; - const detail = mismatches.map((m) => ` - ${m}`).join('\n'); - if (force) { - warn(`device does not match ${ENV_FILE} (--force):\n${detail}`); - return observed; + const read = observers.observeAndroid(device.id); + if (read.error) { + fail( + `${read.error.what}: expected ${read.error.expected}, ` + + `observed ${read.error.actual}` + ); } - fail( - `device does not match ${ENV_FILE}:\n${detail}\n` + - 'refusing to run: baselines are only comparable on the device they were captured on. ' + - 'Boot/point at the right device, or pass --force to continue anyway.' - ); - return observed; // unreachable; keeps the return type honest + const observed = read.observed; + + if (observed.apiLevel !== env.apiLevel || observed.density !== env.density) { + fail( + `AVD ${env.avd} reports API ${observed.apiLevel} / ` + + `${observed.density ?? 'unreadable'} dpi, baselines were captured on ` + + `API ${env.apiLevel} / ${env.density} dpi. To re-baseline on this ` + + 'image, set apiLevel and density in env.json and run with --update' + ); + } + return observed; } /** Canonical baseline path: __baselines__//.png */ @@ -539,9 +565,8 @@ function readPngSize(file) { * * Skipped entirely in `--update` mode: the whole point of that mode is to * record what the device produces now, and a new story has no baseline to check - * against. In diff mode there is no override — a size mismatch on a device that - * matches env.json means something is wrong that no flag should paper over, so - * `--force` does not reach this check. + * against. In diff mode there is no override: a size mismatch on a device that + * matches env.json means something is wrong that no flag should paper over. */ function checkCaptureSize( env, @@ -592,7 +617,7 @@ function checkCaptureSize( `${path.relative(VISUAL_DIR, baselineFile)}:\n${detail}\n` + 'a wrong-sized capture cannot be compared with the baseline. Check ' + '--crop-on/--pixel-density and the device; if the new size is the intended ' + - 'one, re-record the baselines with --update. (--force does not override this.)', + 'one, re-record the baselines with --update.', 3 ); } @@ -683,7 +708,7 @@ function describeNode(node) { * dev-menu/shake command (checked in `help commands`), so on iOS there is * nothing to drive and the run stops instead. */ -function disableFloatingTools(platform, globals, nodes) { +function disableFloatingTools(platform, globals, device, nodes) { const tools = findFloatingToolsNode(nodes); if (!tools) return nodes; @@ -696,7 +721,7 @@ function disableFloatingTools(platform, globals, nodes) { if (platform !== 'android') giveUp('cannot be toggled automatically on iOS'); - const menu = sh(adbPath(), [ + const menu = adb(device, [ 'shell', 'input', 'keyevent', @@ -824,7 +849,7 @@ function atListRoot(nodes) { * Appbar "Back" element when there is one (present on both platforms), and * falls back to platform back navigation for a screen with no header. */ -function goBackToListRoot(platform, globals, nodes) { +function goBackToListRoot(platform, globals, device, nodes) { let current = nodes; for (let step = 0; step < MAX_BACK_STEPS; step++) { @@ -836,7 +861,7 @@ function goBackToListRoot(platform, globals, nodes) { ad('press-back', ['press', `@${back.ref}`, '--settle', ...globals]); } else if (platform === 'android') { console.log(' no "Back" element — sending Android KEYCODE_BACK'); - const res = sh(adbPath(), ['shell', 'input', 'keyevent', '4']); + const res = adb(device, ['shell', 'input', 'keyevent', '4']); if (res.status !== 0) { fail(`adb input keyevent 4 failed: ${res.stderr.trim()}`); } @@ -942,6 +967,29 @@ function navigateToSurface(globals, stories) { ); } +/** + * Opens the app and binds the session to the resolved device in the same call. + * A session left over from an earlier run can still be bound to a device that + * is gone (a re-created emulator gets a new serial), and agent-device rejects + * the selector rather than rebinding, so that one case is recovered by closing + * the session and opening again. Everything else is a setup error carrying + * agent-device's own message and hint, a foreign claim on the device included. + */ +function openApp(label, extra, globals, bind) { + const args = ['open', BUNDLE_ID, ...extra, ...globals, ...bind]; + const first = ad(label, args, { allowFail: true }); + if (first.ok) return; + + const code = first.error?.code; + if (code !== 'INVALID_ARGS' && code !== 'DEVICE_NOT_FOUND') + failAd(label, first); + + console.log(` ${code} from open, closing the session and retrying once`); + ad('close-session', ['close', ...globals], { allowFail: true }); + const retry = ad(`${label}-retry`, args, { allowFail: true }); + if (!retry.ok) failAd(`${label} (after close)`, retry); +} + /** * Relaunches the app and leaves it on the Surface example screen. * @@ -952,21 +1000,22 @@ function navigateToSurface(globals, stories) { * from Metro. Skipping it on the strength of the screen that happens to be up * captured a stale bundle on Android. */ -function openOnSurfaceScreen(platform, globals, stories) { +function openOnSurfaceScreen(platform, globals, bind, device, stories) { console.log(' relaunching the app (fresh bundle from Metro)'); if (platform === 'ios') { - ad('open-relaunch', ['open', BUNDLE_ID, '--relaunch', ...globals]); + openApp('open-relaunch', ['--relaunch'], globals, bind); } else { - const stop = sh(adbPath(), ['shell', 'am', 'force-stop', BUNDLE_ID]); + const stop = adb(device, ['shell', 'am', 'force-stop', BUNDLE_ID]); if (stop.status !== 0) { fail(`adb force-stop ${BUNDLE_ID} failed: ${stop.stderr.trim()}`); } - ad('open-after-force-stop', ['open', BUNDLE_ID, ...globals]); + openApp('open-after-force-stop', [], globals, bind); } const nodes = disableFloatingTools( platform, globals, + device, dismissOverlays(globals) ); @@ -976,7 +1025,7 @@ function openOnSurfaceScreen(platform, globals, stories) { } console.log(' not on the Surface screen — going back to the example list'); - const rootNodes = goBackToListRoot(platform, globals, nodes); + const rootNodes = goBackToListRoot(platform, globals, device, nodes); console.log(` at the example list root (${rootNodes.length} nodes)`); navigateToSurface(globals, stories); } @@ -994,19 +1043,40 @@ function runPass(state) { const env = platform === 'ios' ? envFile : { ...envFile.android }; state.env = env; - const globals = - platform === 'ios' - ? ['--platform', 'ios', '--udid', env.udid] - : [ - '--platform', - 'android', - '--session', - env.agentDeviceSession || 'android', - ]; + // Resolve the instance from the profile, boot it if it is down, and only + // then bind a session to it: `boot` takes a selector and no session, because + // a session left bound to another identity would reject the selector. + const device = platform === 'ios' ? resolveIos(env) : resolveAndroid(env); + if (platform === 'ios' && !device.booted) { + const boot = ad( + 'boot-ios', + ['boot', '--platform', 'ios', '--udid', device.id], + { allowFail: true } + ); + if (!boot.ok) failAd(`boot ${device.id}`, boot); + } + state.device = { id: device.id, name: device.name }; + console.log(`# ${platform} ${device.name} (${device.id})`); + if (platform === 'android') { + // A cold-booted emulator has no tunnel to Metro; the dev launcher's + // http://localhost:8081 row loads nothing without it. + const reverse = adb(device, ['reverse', 'tcp:8081', 'tcp:8081']); + if (reverse.status !== 0) { + console.log(` adb reverse failed: ${reverse.stderr.trim()}`); + } + } + console.log( + `# threshold ${opts.threshold}${opts.update ? ' (update)' : ''}, output: ${opts.outDir}` + ); + + // `open` binds the session to the device; every later command addresses the + // session alone, so no selector can conflict with that binding mid-run. + const globals = ['--platform', platform, '--session', sessionName(platform)]; + const bind = [platform === 'ios' ? '--udid' : '--serial', device.id]; - state.observedEnv = enforceEnvironment(platform, env, opts.force); + state.observedEnv = enforceEnvironment(platform, env, device); - openOnSurfaceScreen(platform, globals, opts.stories); + openOnSurfaceScreen(platform, globals, bind, device, opts.stories); ad('wait-stable', ['wait', 'stable', '500', '10000', ...globals]); sleepSync(2000); // covers the customFontLoaded theme swap, which has no node change @@ -1096,11 +1166,11 @@ function writeSummary(state, exitCode, error) { platform: opts.platform, threshold: opts.threshold, update: opts.update, - force: opts.force, stories: opts.stories, outDir: opts.outDir, agentDeviceVersion: AGENT_DEVICE, - sessionCwd: SESSION_CWD, + session: sessionName(opts.platform), + device: state.device, expectedEnv: state.env, observedEnv: state.observedEnv, startedAt: new Date(state.startedAt).toISOString(), @@ -1135,6 +1205,7 @@ function main() { const state = { opts, env: null, + device: null, observedEnv: {}, results: [], startedAt: Date.now(), @@ -1143,11 +1214,6 @@ function main() { cmdDir = path.join(opts.outDir, 'cmds'); fs.mkdirSync(cmdDir, { recursive: true }); - console.log( - `# ${opts.platform} — threshold ${opts.threshold}${opts.update ? ' (update)' : ''}${opts.force ? ' (force)' : ''}` - ); - console.log(`# output: ${opts.outDir}`); - let exitCode = 0; let error = null; try { @@ -1201,6 +1267,9 @@ export { isMainModule, checkCaptureSize, enforceEnvironment, + pickAndroid, + pickIosCandidate, + resolveAndroid, atListRoot, findFloatingToolsNode, findSurfaceRow, diff --git a/example/visual/run.test.mjs b/example/visual/run.test.mjs index 5d3f570f30..21d4a635cc 100644 --- a/example/visual/run.test.mjs +++ b/example/visual/run.test.mjs @@ -21,6 +21,9 @@ import { findFloatingToolsNode, findSurfaceRow, isMainModule, + pickAndroid, + pickIosCandidate, + resolveAndroid, } from './run.mjs'; const HERE = path.dirname(fileURLToPath(import.meta.url)); @@ -109,49 +112,123 @@ test('checkCaptureSize fails with exit code 3 in diff mode', () => { ); }); -test('--force covers the device check but not the size check', () => { - // Fake observers: the check compares env.json with these, so the test needs - // neither adb nor xcrun on PATH. +test('enforceEnvironment compares the image of the device it resolved', () => { + // Fake observer: the check compares env.json with this, so the test needs no + // adb on PATH. It also records the serial it was addressed with. + const seen = []; const observers = { - observeIos: () => ({ - observed: { udid: 'fake', name: 'iPhone', runtime: 'r', state: 'Booted' }, - }), - observeAndroid: () => ({ - observed: { apiLevel: 37, androidRelease: '17', density: 480 }, - }), + observeAndroid: (serial) => { + seen.push(serial); + return { observed: { apiLevel: 37, androidRelease: '17', density: 480 } }; + }, }; - const mismatched = { apiLevel: -1, density: -1 }; + const device = { id: 'emulator-5556', name: 'Pixel 10 Pro' }; + const check = (apiLevel, density) => + enforceEnvironment( + 'android', + { avd: 'Pixel_10_Pro', apiLevel, density }, + device, + observers + ); assert.throws( - () => enforceEnvironment('android', mismatched, false, observers), + () => check(36, 420), (thrown) => { assert.ok(thrown instanceof RunFailure); assert.equal(thrown.exitCode, 2); + // Both the observed and the expected image are named. + assert.match(thrown.message, /API 37 \/ 480 dpi/); + assert.match(thrown.message, /API 36 \/ 420 dpi/); return true; } ); - assert.doesNotThrow(() => - enforceEnvironment('android', mismatched, true, observers) + assert.doesNotThrow(() => check(37, 480)); + // adb was addressed at the resolved emulator, not at adb's default device. + assert.deepEqual(seen, ['emulator-5556', 'emulator-5556']); + // iOS is fully resolved by then, so there is nothing left to observe. + assert.deepEqual(enforceEnvironment('ios', {}, device, observers), {}); + assert.equal(seen.length, 2); +}); + +// Shapes captured from `agent-device devices --platform android --json`: a +// running emulator is listed under its serial, a stopped AVD under its name. +const emu = (id, name, booted, kind = 'emulator') => ({ + id, + name, + kind, + booted, +}); +const COLD = emu('Pixel_10_Pro', 'Pixel_10_Pro', false); +const WARM = emu('emulator-5554', 'Pixel 10 Pro', true); +const PROFILE = { avd: 'Pixel_10_Pro', device: 'Pixel 10 Pro' }; + +test('pickAndroid finds the AVD warm or cold and ignores a real device', () => { + assert.equal(pickAndroid([COLD], PROFILE)?.id, 'Pixel_10_Pro'); + assert.equal(pickAndroid([WARM], PROFILE)?.id, 'emulator-5554'); + // A booted emulator wins over the stopped AVD entry for the same profile. + assert.equal(pickAndroid([COLD, WARM], PROFILE)?.id, 'emulator-5554'); + // A physical phone with the same marketing name is not the AVD. + assert.equal( + pickAndroid([emu('R5CT80', 'Pixel 10 Pro', true, 'device')], PROFILE), + null ); - // A matching device needs no force at all. - assert.doesNotThrow(() => - enforceEnvironment( - 'android', - { apiLevel: 37, density: 480 }, - false, - observers - ) + assert.equal(pickAndroid([], PROFILE), null); +}); + +test('pickIosCandidate matches the name on the pinned runtime only', () => { + // Shape of `xcrun simctl list -j devices`, trimmed to what the picker reads. + const sim = (udid, name, state) => ({ udid, name, state, isAvailable: true }); + const PINNED = 'com.apple.CoreSimulator.SimRuntime.iOS-26-5'; + const OTHER = 'com.apple.CoreSimulator.SimRuntime.iOS-26-4'; + const profile = { device: 'iPhone 17 Pro', runtime: PINNED }; + const listing = (proState) => ({ + devices: { + [PINNED]: [ + sim('U-PRO', 'iPhone 17 Pro', proState), + sim('U-MAX', 'iPhone 17 Pro Max', 'Shutdown'), + sim('U-17', 'iPhone 17', 'Shutdown'), + ], + [OTHER]: [sim('U-OLD', 'iPhone 17 Pro', 'Booted')], + }, + }); + + const picked = pickIosCandidate(listing('Booted'), profile); + assert.equal(picked.device.id, 'U-PRO'); + assert.equal(picked.device.booted, true); + // The other runtime's simulator is not chosen even when it is the only + // Booted one, and neither is the Pro Max on the pinned runtime. + assert.equal( + pickIosCandidate(listing('Shutdown'), profile).device.id, + 'U-PRO' ); - // The size check takes no force: a stray `force` in the options changes nothing. - assert.throws( - () => - checkCaptureSize(env, 'story', wrongSize, { - force: true, - baselineFile: writePngHeader(TMP_DIR, 'force.png', 1206, 642), - }), - RunFailure + // Nothing on the pinned runtime: report the runtimes that do have the name. + const missing = pickIosCandidate( + { devices: { [OTHER]: [sim('U-OLD', 'iPhone 17 Pro', 'Booted')] } }, + profile ); + assert.equal(missing.device, null); + assert.deepEqual(missing.elsewhere, [OTHER]); +}); + +test('resolveAndroid boots a stopped AVD by name and takes the serial back', () => { + const calls = []; + const fakeAd = (label, args) => { + calls.push(args); + return label === 'devices-android' + ? { ok: true, data: { devices: [COLD] } } + : { ok: true, data: { id: 'emulator-5554', booted: true } }; + }; + + assert.equal(resolveAndroid(PROFILE, fakeAd).id, 'emulator-5554'); + // A session on boot would collide with a binding left from an earlier run. + assert.deepEqual(calls[1], [ + 'boot', + '--platform', + 'android', + '--device', + 'Pixel_10_Pro', + ]); }); test('atListRoot needs the "Examples" title and no Back element', () => { From 5c8ad73a64385d3dd6a21b98cb355a03f6217e50 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Wed, 16 Sep 2026 19:53:58 +0200 Subject: [PATCH 18/18] test(example): address review, settle after adb keys, reject empty story Runner: poll the tree after adb keyevents instead of snapshotting at once; reject an empty --story list, which produced a green run with no captures; exit 2 with a summary-less message when --out cannot be created; fail on a diff response without a boolean match; verify the PNG signature; keep the Android block out of the iOS summary; clearer scroll-budget and unparseable-output messages; remove em dashes. Tests: parseArgs and isAvailable cases, 11 total. README: relaunch not metro reload, gross-break 0.1 images, flags, summary.json caveat, npx as a CI blocker in follow-ups, results.csv provenance. results.csv: one wrong threshold, one unquoted field. env.json: drop dead diffThresholds and a note masquerading as a baseline. --- example/visual/README.md | 18 +-- example/visual/env.json | 11 +- example/visual/evidence/a11y-excerpt.json | 2 +- .../visual/evidence/devclient-excerpt.json | 8 +- example/visual/evidence/results.csv | 6 +- example/visual/run.mjs | 130 +++++++++++++----- example/visual/run.test.mjs | 29 ++-- 7 files changed, 131 insertions(+), 73 deletions(-) diff --git a/example/visual/README.md b/example/visual/README.md index 65c224e7e2..c5ed95f69c 100644 --- a/example/visual/README.md +++ b/example/visual/README.md @@ -1,6 +1,6 @@ # Visual regression PoC: agent-device on the example app -Proof of concept, under review in #5115. iOS and Android against the existing example screens, `Surface` only, agent-device and its own diff. One script, `run.mjs`, drives both platforms. The raw per-command JSON and accessibility-tree dumps behind the evidence are on branch `poc/agent-device-visual-runner`; this PR keeps the summaries. +Proof of concept. iOS and Android against the existing example screens, `Surface` only, agent-device and its own diff. One script, `run.mjs`, drives both platforms. The raw per-command JSON and accessibility-tree dumps behind the evidence are on branch `poc/agent-device-visual-runner`; this PR keeps the summaries. ## Result @@ -30,7 +30,7 @@ Sensitivity, one-line changes to the iOS branch of `src/components/Surface.tsx`, | break | @ 0.1 (default) | @ 0.02 | | ----------------------------------------------------- | --------------------------- | ----------------------------------------------------------------------------------- | -| Gross: every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15 %), 3 regions | +| Gross: every elevated surface gets the level-5 shadow | 4,277 px (0.55 %), 1 region | 116,292 px (15.02 %), 3 regions | | Realistic: level 1 renders the level-2 shadow | **0 px, `match: true`** | **10,179 px (1.31 %)**, 3 regions, the dominant one 378x378 on the Elevation 1 card | ## Android @@ -110,7 +110,7 @@ It resolves and boots the device from the profile in `env.json`, relaunches the ios surface-example-elevated changed=0 (0%) regions=0 threshold=0.02 → PASS ``` -Exit codes: 1 if any story fails the diff, 2 for a setup error (no simulator with that name on that runtime, no AVD with that name, an emulator whose API level or density is not the one the baselines were captured on, a failed boot, or an `open` that agent-device refused because another session claims the device), 3 if a capture's size does not match its baseline PNG. `--update` writes the captures as baselines, creating missing ones. `--out ` sets where captures, diff images and `summary.json` go (default `example/visual/artifacts/run/`, gitignored). `summary.json` is written on every exit. +Exit codes: 1 if any story fails the diff, 2 for a setup error (no simulator with that name on that runtime, no AVD with that name, an emulator whose API level or density is not the one the baselines were captured on, a failed boot, or an `open` that agent-device refused because another session claims the device), 3 if a capture's size does not match its baseline PNG. `--update` writes the captures as baselines, creating missing ones. `--out ` sets where captures, diff images and `summary.json` go (default `example/visual/artifacts/run/`, gitignored). `--threshold <0-1>` overrides the 0.02 default and `--story a,b` limits the run to some stories; `--help` lists them all. `summary.json` is written on every exit except an argument error, which exits 2 before an output directory is known. Prerequisites are the same as for the hand-run loop: the app built and installed on a device matching the profile, an AVD named exactly `Pixel_10_Pro` on Android with `adb` and `emulator` reachable, and Metro running. After an Android boot the runner sets `adb reverse tcp:8081 tcp:8081` itself, since a cold emulator has no route to Metro. A simulator that has never booted runs Apple's first-boot migration, which can take longer than agent-device's 120 s boot cap; boot it once from Xcode before the first run. @@ -120,17 +120,17 @@ The pure helpers have ten `node:test` cases, no device needed (boot and the `ope yarn example test:visual ``` -Left as follow-ups: creating the simulator or AVD when it is missing, per-profile baseline directories, `open --metro-port` in place of dismissing the dev launcher, and CI. +Left as follow-ups: creating the simulator or AVD when it is missing, per-profile baseline directories, `open --metro-port` in place of dismissing the dev launcher, a release-build variant of the example app, and CI. Before anything runs this in CI, `npx agent-device@0.21.0` has to become a locked dependency: today the runner executes a package fetched from the network on every run with no lockfile entry. -Not run by Jest, the pre-commit hook or CI. `results.csv` was produced from the raw `diff screenshot` JSON on the runner branch. +Not run by Jest, the pre-commit hook or CI. `results.csv` was transcribed from the raw `diff screenshot` JSON; its last column is the path of that JSON on branch `poc/agent-device-visual-runner`, not in this PR, except one iOS dev-client row from an uncommitted 2026-09-16 re-verification. ## What a real runner has to handle Things `run.mjs` had to deal with. None is an agent-device bug: -- Reload before every capture with `agent-device metro reload`, then `open --relaunch`. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. +- Relaunch before every capture (`open --relaunch` on iOS, `am force-stop` plus `open` on Android) so the app fetches the current bundle. Fast Refresh silently stopped reaching the Android app; without a fresh bundle a stale screen reads as PASS. `agent-device metro reload` exists for the same purpose and works, but the runner relaunches anyway because the app persists its navigation state. - The example app persists navigation state. A relaunch lands on the last screen, so the runner has to press Back to the list root and pick the Surface row, not the header title. -- Dev-client chrome: on Android a relaunch lands in the dev launcher; on iOS the first-run onboarding sheet dims the whole app and `wait stable` reports it as settled; on both, the floating Tools button can sit inside the crop. Dismiss all of it before capturing, or capture from a release build. +- Dev-client chrome: on Android a relaunch lands in the dev launcher; on iOS the first-run onboarding sheet dims the whole app and `wait stable` reports it as settled; on both, the floating Tools button can sit inside the crop. Dismiss all of it before capturing, or capture from a release build. The runner keeps the dismissal code because the example app is only built as a dev client here; a release-build variant is a follow-up. - Set `--threshold` explicitly (0.02 for soft shadows) and verify noise at it; the default 0.1 is documented as a 44-unit RGB tolerance, far looser than a one-step shadow change. - Use `find … list` to locate without tapping, `--first` or a `role=` qualifier where Android exposes the same label on a row and its text child, and assert on node count after `snapshot --scope`, which returns success with empty nodes when nothing matches. - Pin the device profile, resolve the instance through `simctl` and `agent-device devices` and boot it, and refuse to compare or re-baseline on a different image; derive expected capture size from the baseline PNG, per story. @@ -138,8 +138,8 @@ Things `run.mjs` had to deal with. None is an agent-device bug: ## Evidence -- `evidence/results.csv`: one row per `diff screenshot` run (74 rows, including the two dev-client false FAILs): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the name of the raw JSON it came from. The raw per-command JSON is on the runner branch. -- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. No 0.1 images exist because `diff screenshot --out` writes nothing on a match and deletes any stale file at that path. +- `evidence/results.csv`: one row per `diff screenshot` run (74 rows, including the two dev-client false FAILs): platform, capture, threshold, total and changed pixels, mismatch %, regions, match, and the path of the raw JSON it came from on the runner branch (one iOS dev-client row comes from an uncommitted re-verification). +- `evidence/diff-images/`: one diff image per platform for the realistic break (ring on the Elevation 1 card) and the gross break, both at 0.02, the dev-client Tools-button false FAIL, and the full-page web capture. There is no 0.1 image of the realistic break because it matches at 0.1 and `diff screenshot --out` writes nothing on a match, deleting any stale file at that path; the gross break did produce 0.1 images and they were not kept. - `evidence/a11y-excerpt.json`, `evidence/devclient-excerpt.json`, `evidence/web-excerpt.json`: the nodes and responses that matter; full trees on the runner branch. - `env.json`: the pinned device profiles, versions and thresholds. diff --git a/example/visual/env.json b/example/visual/env.json index 218c07a1d4..c99db567ff 100644 --- a/example/visual/env.json +++ b/example/visual/env.json @@ -13,10 +13,6 @@ "surface-example-elevated": "__baselines__/ios/surface-example-elevated.png", "surface-example-flat": "__baselines__/ios/surface-example-flat.png" }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 - }, "android": { "avd": "Pixel_10_Pro", "device": "Pixel 10 Pro", @@ -32,12 +28,7 @@ "date": "2026-09-10T09:45:00Z", "baselines": { "surface-example-elevated": "__baselines__/android/surface-example-elevated.png", - "surface-example-flat": "__baselines__/android/surface-example-flat.png", - "pixelDensityFlag": "unsupported on Android (screenshots are native device pixels)" - }, - "diffThresholds": { - "cliDefault": 0.1, - "usedForShadowRegressions": 0.02 + "surface-example-flat": "__baselines__/android/surface-example-flat.png" } } } diff --git a/example/visual/evidence/a11y-excerpt.json b/example/visual/evidence/a11y-excerpt.json index d2d253df10..7e6bd24500 100644 --- a/example/visual/evidence/a11y-excerpt.json +++ b/example/visual/evidence/a11y-excerpt.json @@ -71,4 +71,4 @@ ] } } -} \ No newline at end of file +} diff --git a/example/visual/evidence/devclient-excerpt.json b/example/visual/evidence/devclient-excerpt.json index 33a0499075..d9f3f47a87 100644 --- a/example/visual/evidence/devclient-excerpt.json +++ b/example/visual/evidence/devclient-excerpt.json @@ -3,11 +3,7 @@ "ios_after_open_relaunch": { "immediately": { "total_nodes": 3, - "labels": [ - "React Native Paper Example", - null, - "Downloading 100%\u2026" - ] + "labels": ["React Native Paper Example", null, "Downloading 100%\u2026"] }, "six_seconds_later": { "total_nodes": 77, @@ -39,4 +35,4 @@ } } ] -} \ No newline at end of file +} diff --git a/example/visual/evidence/results.csv b/example/visual/evidence/results.csv index 7c35425cca..c022cf582a 100644 --- a/example/visual/evidence/results.csv +++ b/example/visual/evidence/results.csv @@ -1,4 +1,4 @@ -platform,group,capture,threshold,totalPixels,differentPixels,mismatchPercent,regions,match,source +platform,group,capture,threshold,totalPixels,differentPixels,mismatchPercent,regions,match,sourceOnRunnerBranch ios,first-run,a-vs-b (density 1),0.1,86028,0,0,0,True,evidence/ios/26-diff.json ios,first-run,flat a-vs-b (density 1),0.1,86028,0,0,0,True,evidence/ios/30-diff.json ios,first-run,warm-1,0.1,774252,0,0,0,True,evidence/ios/37-diff.json @@ -6,7 +6,7 @@ ios,first-run,warm-2,0.1,774252,0,0,0,True,evidence/ios/40-diff.json ios,first-run,warm-3,0.1,774252,0,0,0,True,evidence/ios/43-diff.json ios,first-run,relaunch-1,0.1,774252,0,0,0,True,evidence/ios/53-diff.json ios,first-run,gross,0.1,774252,4277,0.55,1,False,evidence/ios/59-diff.json -ios,first-run,gross,0.1,774252,116292,15.02,3,False,evidence/ios/60-diff.json +ios,first-run,gross,0.02,774252,116292,15.02,3,False,evidence/ios/60-diff.json ios,first-run,revert-1,0.1,774252,0,0,0,True,evidence/ios/63-diff.json ios,first-run,realistic,0.02,774252,10179,1.31,3,False,evidence/ios/66-diff-t0.02.json ios,first-run,realistic,0.1,774252,0,0,0,True,evidence/ios/66-diff-t0.1.json @@ -72,4 +72,4 @@ android,re-measured,reverted,0.1,821760,0,0,0,True,evidence/sensitivity/android/ android,re-measured,sanity-before-break,0.02,821760,0,0,0,True,evidence/sensitivity/android/sanity-before-break-diff-t0.02.json android,re-measured,sanity-before-break,0.1,821760,0,0,0,True,evidence/sensitivity/android/sanity-before-break-diff-t0.1.json android,dev-client-chrome,tools-button-on,0.02,821760,2822,0.34,1,False,runner-branch:evidence/runs/android/round3-pass/summary.json -ios,dev-client-chrome,tools-button-on,0.02,774252,3916,0.51,1,False,verify/ios/a11-diff.json (2026-09-16 re-verification, not committed) +ios,dev-client-chrome,tools-button-on,0.02,774252,3916,0.51,1,False,"verify/ios/a11-diff.json (2026-09-16 re-verification, not committed)" diff --git a/example/visual/run.mjs b/example/visual/run.mjs index 29805114b7..67cf876950 100644 --- a/example/visual/run.mjs +++ b/example/visual/run.mjs @@ -22,7 +22,7 @@ * * Every run relaunches the app: the example app persists its navigation state * (PERSISTENCE_KEY in example/src/index.tsx), and only a relaunch makes the app - * fetch a fresh JS bundle from Metro — Fast Refresh alone was observed not to + * fetch a fresh JS bundle from Metro, Fast Refresh alone was observed not to * reach the Android app, which made captures silently stale. * * Exit codes: 0 pass, 1 a story FAILed the diff, 2 setup/environment error, @@ -51,7 +51,7 @@ const MAX_BACK_STEPS = 8; // deepest example nesting is 2; 8 leaves room and sti const MAX_OVERLAY_STEPS = 5; // dev menu + dev launcher, each possibly twice // App-ready polling. Right after `open` the tree is just the splash screen -// (iOS: 3 nodes — Application, SplashScreenLogo, "Downloading 100%…"), and +// (iOS: 3 nodes, Application, SplashScreenLogo, "Downloading 100%…"), and // after leaving the Android dev launcher it is an 11-node "Connecting to the // development server…" screen, so any check that snapshots immediately reads // the wrong screen. Node count alone is not enough: the loading screens are @@ -59,6 +59,7 @@ const MAX_OVERLAY_STEPS = 5; // dev menu + dev launcher, each possibly twice const READY_TIMEOUT_MS = 30000; const READY_POLL_MS = 1000; const READY_MIN_NODES = 10; +const SETTLE_TIMEOUT_MS = 5000; // adb keyevents have no --settle; poll this long const NOT_READY_LABEL = /^(Downloading|Connecting to|Loading|Building JavaScript bundle)/i; const NOT_READY_IDENTIFIER = /SplashScreen/i; @@ -157,6 +158,8 @@ function parseArgs(argv) { .split(',') .map((s) => s.trim()) .filter(Boolean); + if (out.stories.length === 0) + fail(`${arg} needs at least one story id`); break; case '--help': case '-h': @@ -266,7 +269,9 @@ function ad(label, args, { allowFail = false } = {}) { parsed?.error?.details?.reason || parsed?.error?.message || proc.stderr?.trim() || - `exit ${proc.status}`; + (proc.status === 0 + ? 'exit 0 but stdout was not parseable JSON' + : `exit ${proc.status}`); fail(`agent-device ${label} failed: ${reason} (see ${file})`); } @@ -279,9 +284,9 @@ function ad(label, args, { allowFail = false } = {}) { } /** - * Snapshot helper. `--force-full` on every call: without it agent-device - * returns an empty `nodes` array whenever the tree is unchanged, which reads - * as "the element is gone" (PoC issue 13). + * Snapshot helper. `--force-full` asks for the complete tree rather than a + * delta. A `--scope` that matches nothing returns success with empty nodes, so + * callers assert on node count rather than on success. */ function snapshot(label, globals, extra = []) { const snap = ad(label, ['snapshot', ...extra, '--force-full', ...globals]); @@ -415,7 +420,7 @@ function resolveAndroid(env, adFn = ad) { /** Reports an agent-device failure with its own message and hint, verbatim. */ function failAd(what, res) { fail( - `agent-device ${what} failed: ${res.error?.message || 'no message'}` + + `agent-device ${what} failed: ${res.error?.message || res.error?.code || 'no error object in the response'}` + (res.error?.hint ? `\nhint: ${res.error.hint}` : '') ); } @@ -505,7 +510,7 @@ function requireBaseline(platform, story) { const baseline = baselinePath(platform, story); if (!fs.existsSync(baseline)) { fail( - `no baseline for ${story}: expected ${baseline} — ` + + `no baseline for ${story}: expected ${baseline}, ` + 'run with --update to create it' ); } @@ -515,7 +520,7 @@ function requireBaseline(platform, story) { /** * `--update` mode: write the capture to the baseline, creating it if new. The * captured dimensions go in the log line because the size check is skipped in - * this mode (see checkCaptureSize) — this is the only place a human sees what + * this mode (see checkCaptureSize), this is the only place a human sees what * the new baseline actually measures. */ function writeBaseline(platform, story, current, shotData) { @@ -533,7 +538,7 @@ function writeBaseline(platform, story, current, shotData) { /** * Width and height out of a PNG's IHDR: the signature is 8 bytes, the IHDR * length+type another 8, so the two big-endian uint32s live at bytes 16–24. No - * decoding and no dependency — the header is all this needs. + * decoding and no dependency, the header is all this needs. */ function readPngSize(file) { const header = Buffer.alloc(24); @@ -547,14 +552,21 @@ function readPngSize(file) { } finally { if (fd != null) fs.closeSync(fd); } - if (read < 24 || header.toString('ascii', 12, 16) !== 'IHDR') return null; + const signature = '89504e470d0a1a0a'; + if ( + read < 24 || + header.toString('hex', 0, 8) !== signature || + header.toString('ascii', 12, 16) !== 'IHDR' + ) { + return null; + } return { width: header.readUInt32BE(16), height: header.readUInt32BE(20) }; } /** * Fails unless the capture has the same dimensions as the committed baseline it * is about to be compared with. A wrong-sized capture would otherwise diff - * clean and read as PASS — and so would a capture whose size agent-device did + * clean and read as PASS, and so would a capture whose size agent-device did * not report at all, which is why a missing value is a failure rather than a * warning. * @@ -583,7 +595,7 @@ function checkCaptureSize( fail( `${story}: could not read the dimensions of the baseline PNG ` + `(${baselineFile ?? 'none given'}), so the capture cannot be ` + - 'size-checked — re-record the baseline with --update', + 'size-checked, re-record the baseline with --update', 3 ); } @@ -624,6 +636,7 @@ function checkCaptureSize( const labelOf = (node) => (node.label || '').trim(); const hasLabel = (nodes, label) => nodes.some((n) => labelOf(n) === label); +const signatureOf = (nodes) => nodes.map(labelOf).join('|'); /** * Nodes that belong to the app. On Android a snapshot also carries the system @@ -658,7 +671,7 @@ function waitForAppReady(globals, timeoutMs = READY_TIMEOUT_MS) { } if (!looksReady(nodes)) { fail( - `the app did not become ready within ${timeoutMs}ms — the last snapshot ` + + `the app did not become ready within ${timeoutMs}ms, the last snapshot ` + `had ${appNodes(nodes).length} app nodes ` + `(${appNodes(nodes) .slice(0, 3) @@ -671,6 +684,22 @@ function waitForAppReady(globals, timeoutMs = READY_TIMEOUT_MS) { } /** The RN dev menu: a Close/Continue control with a dev-menu-only marker next to it. */ +/** + * Polls the tree until `predicate(nodes)` holds or the timeout passes, and + * returns the last snapshot either way. Used after an adb keyevent, which has + * no `--settle`: the first snapshot can still show the screen from before the + * key was injected. + */ +function waitUntil(globals, predicate, timeoutMs = SETTLE_TIMEOUT_MS) { + const deadline = Date.now() + timeoutMs; + let nodes = snapshot('snapshot-settle', globals); + while (!predicate(nodes) && Date.now() < deadline) { + sleepSync(READY_POLL_MS); + nodes = snapshot('snapshot-settle', globals); + } + return nodes; +} + function findDevMenuNode(nodes) { const marker = nodes.some((n) => DEV_MENU_MARKERS.includes(labelOf(n))); if (!marker) return null; @@ -700,8 +729,8 @@ function describeNode(node) { /** * Turns the floating dev-client "Tools" button off through the dev menu, once, * and returns the settled tree. A dev overlay inside the crop must never be - * reported as a visual regression, so anything that leaves it on screen — a - * platform with no way to open the dev menu, or a toggle that did not take — + * reported as a visual regression, so anything that leaves it on screen, a + * platform with no way to open the dev menu, or a toggle that did not take, * is a setup error naming the node and the manual fix. * * Android opens the dev menu with KEYCODE_MENU. agent-device 0.21.0 has no @@ -733,7 +762,9 @@ function disableFloatingTools(platform, globals, device, nodes) { ); } - let current = waitForAppReady(globals); + let current = waitUntil(globals, (nodes) => + hasLabel(nodes, TOOLS_TOGGLE_LABEL) + ); for (const label of [TOOLS_TOGGLE_LABEL, DEV_MENU_CLOSE_LABEL]) { if (!current.some((n) => labelOf(n) === label)) { giveUp(`the dev menu has no "${label}" entry`); @@ -756,7 +787,7 @@ function disableFloatingTools(platform, globals, device, nodes) { giveUp('is still on screen after one toggle'); console.log( - ' dev-client floating Tools button was inside the capture area — ' + + ' dev-client floating Tools button was inside the capture area, ' + 'disabled it via the dev menu' ); return current; @@ -781,7 +812,7 @@ function findDevLauncherNode(nodes) { fail( 'the Expo dev launcher is on screen but has no recently-opened row for ' + - `http://…:${METRO_PORT} — start Metro and open the app from the launcher once` + `http://…:${METRO_PORT}, start Metro and open the app from the launcher once` ); return null; // unreachable } @@ -860,13 +891,20 @@ function goBackToListRoot(platform, globals, device, nodes) { console.log(` pressing "Back" (@${back.ref})`); ad('press-back', ['press', `@${back.ref}`, '--settle', ...globals]); } else if (platform === 'android') { - console.log(' no "Back" element — sending Android KEYCODE_BACK'); + console.log(' no "Back" element, sending Android KEYCODE_BACK'); const res = adb(device, ['shell', 'input', 'keyevent', '4']); if (res.status !== 0) { fail(`adb input keyevent 4 failed: ${res.stderr.trim()}`); } + // No --settle on a keyevent: wait for the screen to actually change. + const before = signatureOf(current); + current = waitUntil( + globals, + (nodes) => atListRoot(nodes) || signatureOf(nodes) !== before + ); + continue; } else { - console.log(' no "Back" element — using system back'); + console.log(' no "Back" element, using system back'); ad('back', ['back', '--system', '--settle', ...globals]); } @@ -892,10 +930,10 @@ function goBackToListRoot(platform, globals, device, nodes) { * that reads as a navigation failure: the Appbar title of the Surface screen * itself, and on Android both the row container and its inset text child. The * row is the candidate that - * - sits below the Appbar — rect.y at or past the bottom of the + * - sits below the Appbar, rect.y at or past the bottom of the * "Examples" title node (iOS 108pt, Android 294px), which is what excludes * any header/title node, and - * - spans the list — width at least 90% of the screen, which excludes the + * - spans the list, width at least 90% of the screen, which excludes the * Android Appbar title (1100 of 1280px) a second way, and then the widest * of what is left, i.e. the row container (iOS 402 of 402pt, Android 1280 * of 1280px) rather than its inset text child (Android 1160px). @@ -935,8 +973,9 @@ function navigateToSurface(globals, stories) { const target = findSurfaceRow(nodes); if (target) { - // Press by ref off a fresh snapshot: `find 'label="Surface"'` is - // AMBIGUOUS_MATCH on Android and taps as a side effect on iOS. + // Press by ref off a fresh snapshot: bare `find` presses its match + // (`find ... list` is the read-only form), and on Android the row and + // its text child share the label, which is AMBIGUOUS_MATCH. console.log( ` pressing the "Surface" row (@${target.ref}, ${target.type}, ` + `y=${Math.round(target.rect?.y ?? -1)}, w=${Math.round(target.rect?.width ?? -1)})` @@ -963,7 +1002,8 @@ function navigateToSurface(globals, stories) { fail( `could not find the "Surface" row after ${MAX_SCROLL_STEPS} scrolls of ` + - `${SCROLL_STEP} rows — is the example list on screen?` + `${SCROLL_STEP} rows. Either the example list is not on screen or the ` + + 'list grew past the scroll budget (MAX_SCROLL_STEPS)' ); } @@ -995,8 +1035,8 @@ function openApp(label, extra, globals, bind) { * * The relaunch is unconditional. The app persists its navigation state * (PERSISTENCE_KEY in example/src/index.tsx), so "already on the Surface - * screen" says nothing about which screen a plain `open` will land on, and — - * more importantly — only a relaunch makes the app fetch the current JS bundle + * screen" says nothing about which screen a plain `open` will land on, and, + * more importantly, only a relaunch makes the app fetch the current JS bundle * from Metro. Skipping it on the strength of the screen that happens to be up * captured a stale bundle on Android. */ @@ -1024,7 +1064,7 @@ function openOnSurfaceScreen(platform, globals, bind, device, stories) { return; } - console.log(' not on the Surface screen — going back to the example list'); + console.log(' not on the Surface screen, going back to the example list'); const rootNodes = goBackToListRoot(platform, globals, device, nodes); console.log(` at the example list root (${rootNodes.length} nodes)`); navigateToSurface(globals, stories); @@ -1040,7 +1080,10 @@ function runPass(state) { if (!fs.existsSync(ENV_FILE)) fail(`missing ${ENV_FILE}`); const envFile = JSON.parse(fs.readFileSync(ENV_FILE, 'utf8')); - const env = platform === 'ios' ? envFile : { ...envFile.android }; + const env = + platform === 'ios' + ? { ...envFile, android: undefined } + : { ...envFile.android }; state.env = env; // Resolve the instance from the profile, boot it if it is down, and only @@ -1136,7 +1179,13 @@ function runPass(state) { const changed = diff.data?.differentPixels ?? -1; const pct = diff.data?.mismatchPercentage ?? -1; const regions = diff.data?.regions?.length ?? 0; - const pass = diff.data?.match === true; + if (typeof diff.data?.match !== 'boolean') { + fail( + `diff screenshot for ${story} returned no boolean "match" ` + + `(got ${JSON.stringify(diff.data)}); is agent-device still ${AGENT_DEVICE}?` + ); + } + const pass = diff.data.match; if (!pass) failed = true; console.log( @@ -1211,12 +1260,15 @@ function main() { startedAt: Date.now(), }; - cmdDir = path.join(opts.outDir, 'cmds'); - fs.mkdirSync(cmdDir, { recursive: true }); - let exitCode = 0; let error = null; try { + cmdDir = path.join(opts.outDir, 'cmds'); + try { + fs.mkdirSync(cmdDir, { recursive: true }); + } catch (thrown) { + fail(`cannot create ${cmdDir}: ${thrown.message}`); + } exitCode = runPass(state); } catch (thrown) { if (thrown instanceof RunFailure) { @@ -1234,8 +1286,13 @@ function main() { } } - const summaryFile = writeSummary(state, exitCode, error); - console.log(`# summary: ${summaryFile} (exit ${exitCode})`); + try { + const summaryFile = writeSummary(state, exitCode, error); + console.log(`# summary: ${summaryFile} (exit ${exitCode})`); + } catch (thrown) { + // The output directory itself is unusable; the error above already says so. + console.error(`no summary written: ${thrown.message}`); + } process.exit(exitCode); } @@ -1264,6 +1321,7 @@ if (isMainModule(process.argv[1], import.meta.url)) { // Exported for example/visual/run.test.mjs only. export { RunFailure, + parseArgs, isMainModule, checkCaptureSize, enforceEnvironment, diff --git a/example/visual/run.test.mjs b/example/visual/run.test.mjs index 21d4a635cc..6b5b0db4cc 100644 --- a/example/visual/run.test.mjs +++ b/example/visual/run.test.mjs @@ -1,6 +1,6 @@ /** * Unit tests for example/visual/run.mjs. No device, no adb/xcrun, no - * agent-device, no new dependencies — only the pure decision helpers are + * agent-device, no new dependencies, only the pure decision helpers are * exercised, with the device observers faked. * * node --test example/visual/run.test.mjs @@ -21,6 +21,7 @@ import { findFloatingToolsNode, findSurfaceRow, isMainModule, + parseArgs, pickAndroid, pickIosCandidate, resolveAndroid, @@ -64,12 +65,19 @@ test('checkCaptureSize skips the check in update mode', () => { assert.doesNotThrow(() => checkCaptureSize(env, 'new-story', wrongSize, { update: true }) ); - // A brand-new story has no baseline at all; --update must still get through. - assert.doesNotThrow(() => - checkCaptureSize(env, 'new-story', wrongSize, { - update: true, - baselineFile: path.join(TMP_DIR, 'missing.png'), - }) +}); + +test('parseArgs rejects an empty story list and unknown flags', () => { + const exit2 = (thrown) => + thrown instanceof RunFailure && thrown.exitCode === 2; + // A typo here used to yield zero stories, zero captures and a green summary. + assert.throws(() => parseArgs(['--platform', 'ios', '--story', '']), exit2); + assert.throws(() => parseArgs(['--platform', 'ios', '--story', ',,']), exit2); + assert.throws(() => parseArgs(['--platform', 'ios', '--force']), exit2); + assert.throws(() => parseArgs(['--platform', 'web']), exit2); + assert.deepEqual( + parseArgs(['--platform', 'android', '--story', ' a, b ']).stories, + ['a', 'b'] ); }); @@ -177,7 +185,12 @@ test('pickAndroid finds the AVD warm or cold and ignores a real device', () => { test('pickIosCandidate matches the name on the pinned runtime only', () => { // Shape of `xcrun simctl list -j devices`, trimmed to what the picker reads. - const sim = (udid, name, state) => ({ udid, name, state, isAvailable: true }); + const sim = (udid, name, state, isAvailable = true) => ({ + udid, + name, + state, + isAvailable, + }); const PINNED = 'com.apple.CoreSimulator.SimRuntime.iOS-26-5'; const OTHER = 'com.apple.CoreSimulator.SimRuntime.iOS-26-4'; const profile = { device: 'iPhone 17 Pro', runtime: PINNED };

    @Zb#QWEQuo5fu|k*yhy& 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 C*bg)S diff --git a/example/visual/evidence/diff-images/ios-realistic-2-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-2-t0.02.png deleted file mode 100644 index 02219e89f4a5993c6b06e689981910067e9544d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 diff --git a/example/visual/evidence/diff-images/ios-realistic-3-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-3-t0.02.png deleted file mode 100644 index 02219e89f4a5993c6b06e689981910067e9544d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 diff --git a/example/visual/evidence/diff-images/ios-realistic-t0.02.png b/example/visual/evidence/diff-images/ios-realistic-t0.02.png deleted file mode 100644 index 02219e89f4a5993c6b06e689981910067e9544d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52140 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%0D9&4VMYL>b%EzicbXf)rW2#t;P+`mEGgnUB? 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 Gtp8WV?H5=8 diff --git a/example/visual/evidence/ios/26-diff.json b/example/visual/evidence/ios/26-diff.json deleted file mode 100644 index 0553f9663b..0000000000 --- a/example/visual/evidence/ios/26-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 86028, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/30-diff.json b/example/visual/evidence/ios/30-diff.json deleted file mode 100644 index 0553f9663b..0000000000 --- a/example/visual/evidence/ios/30-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 86028, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/37-diff.json b/example/visual/evidence/ios/37-diff.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/37-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/40-diff.json b/example/visual/evidence/ios/40-diff.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/40-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/43-diff.json b/example/visual/evidence/ios/43-diff.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/43-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/53-diff.json b/example/visual/evidence/ios/53-diff.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/53-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/59-diff.json b/example/visual/evidence/ios/59-diff.json deleted file mode 100644 index af93e20798..0000000000 --- a/example/visual/evidence/ios/59-diff.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 502, - "y": 573, - "width": 316, - "height": 17 - }, - "normalizedRect": { - "x": 41.63, - "y": 89.25, - "width": 26.2, - "height": 2.65 - }, - "differentPixels": 4277, - "shareOfDiffPercentage": 100, - "densityPercentage": 79.62, - "shape": "horizontal-band", - "size": "small", - "location": "bottom-center", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#dfd9e0", - "baselineLuminance": 248, - "currentLuminance": 219, - "dominantChange": "darker" - } - ], - "totalPixels": 774252, - "differentPixels": 4277, - "mismatchPercentage": 0.55, - "match": false - } -} diff --git a/example/visual/evidence/ios/60-diff.json b/example/visual/evidence/ios/60-diff.json deleted file mode 100644 index 592e479f6c..0000000000 --- a/example/visual/evidence/ios/60-diff.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-gross-t002.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 443, - "y": 223, - "width": 763, - "height": 404 - }, - "normalizedRect": { - "x": 36.73, - "y": 34.74, - "width": 63.27, - "height": 62.93 - }, - "differentPixels": 70986, - "shareOfDiffPercentage": 61.04, - "densityPercentage": 23.03, - "shape": "large-area", - "size": "large", - "location": "middle-right", - "averageBaselineColorHex": "#fcf5fd", - "averageCurrentColorHex": "#eee7ef", - "baselineLuminance": 247, - "currentLuminance": 233, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 0, - "y": 0, - "width": 1206, - "height": 33 - }, - "normalizedRect": { - "x": 0, - "y": 0, - "width": 100, - "height": 5.14 - }, - "differentPixels": 36741, - "shareOfDiffPercentage": 31.59, - "densityPercentage": 92.32, - "shape": "horizontal-band", - "size": "large", - "location": "top-center", - "averageBaselineColorHex": "#fef7ff", - "averageCurrentColorHex": "#f2ebf3", - "baselineLuminance": 249, - "currentLuminance": 237, - "dominantChange": "darker" - }, - { - "index": 3, - "rect": { - "x": 463, - "y": 190, - "width": 743, - "height": 33 - }, - "normalizedRect": { - "x": 38.39, - "y": 29.6, - "width": 61.61, - "height": 5.14 - }, - "differentPixels": 8565, - "shareOfDiffPercentage": 7.37, - "densityPercentage": 34.93, - "shape": "horizontal-band", - "size": "medium", - "location": "top-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f5eef6", - "baselineLuminance": 248, - "currentLuminance": 240, - "dominantChange": "mixed" - } - ], - "totalPixels": 774252, - "differentPixels": 116292, - "mismatchPercentage": 15.02, - "match": false - } -} diff --git a/example/visual/evidence/ios/63-diff.json b/example/visual/evidence/ios/63-diff.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/63-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/66-diff-t0.02.json b/example/visual/evidence/ios/66-diff-t0.02.json deleted file mode 100644 index 0f9ff78f90..0000000000 --- a/example/visual/evidence/ios/66-diff-t0.02.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/artifacts/diff-realistic-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 471, - "y": 206, - "width": 378, - "height": 378 - }, - "normalizedRect": { - "x": 39.05, - "y": 32.09, - "width": 31.34, - "height": 58.88 - }, - "differentPixels": 10175, - "shareOfDiffPercentage": 99.96, - "densityPercentage": 7.12, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#faf3fb", - "averageCurrentColorHex": "#efe8f0", - "baselineLuminance": 245, - "currentLuminance": 234, - "dominantChange": "mixed" - }, - { - "index": 2, - "rect": { - "x": 483, - "y": 215, - "width": 2, - "height": 2 - }, - "normalizedRect": { - "x": 40.05, - "y": 33.49, - "width": 0.17, - "height": 0.31 - }, - "differentPixels": 3, - "shareOfDiffPercentage": 0.03, - "densityPercentage": 75, - "shape": "compact", - "size": "small", - "location": "center", - "averageBaselineColorHex": "#fbf4fc", - "averageCurrentColorHex": "#f6eff6", - "baselineLuminance": 246, - "currentLuminance": 241, - "dominantChange": "mixed" - }, - { - "index": 3, - "rect": { - "x": 835, - "y": 213, - "width": 1, - "height": 1 - }, - "normalizedRect": { - "x": 69.24, - "y": 33.18, - "width": 0.08, - "height": 0.16 - }, - "differentPixels": 1, - "shareOfDiffPercentage": 0.01, - "densityPercentage": 100, - "shape": "compact", - "size": "small", - "location": "middle-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f7f0f8", - "baselineLuminance": 248, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "totalPixels": 774252, - "differentPixels": 10179, - "mismatchPercentage": 1.31, - "match": false - } -} diff --git a/example/visual/evidence/ios/66-diff-t0.1.json b/example/visual/evidence/ios/66-diff-t0.1.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/66-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/69-diff.json b/example/visual/evidence/ios/69-diff.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/69-diff.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/6x-diff-relaunch-1-t002.json b/example/visual/evidence/ios/6x-diff-relaunch-1-t002.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/6x-diff-relaunch-1-t002.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/6x-diff-warm-1-t002.json b/example/visual/evidence/ios/6x-diff-warm-1-t002.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/6x-diff-warm-1-t002.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/6x-diff-warm-2-t002.json b/example/visual/evidence/ios/6x-diff-warm-2-t002.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/6x-diff-warm-2-t002.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/ios/6x-diff-warm-3-t002.json b/example/visual/evidence/ios/6x-diff-warm-3-t002.json deleted file mode 100644 index bc503fff86..0000000000 --- a/example/visual/evidence/ios/6x-diff-warm-3-t002.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 774252, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/issues.md b/example/visual/evidence/issues.md index 4e272baf3d..667f1db1fd 100644 --- a/example/visual/evidence/issues.md +++ b/example/visual/evidence/issues.md @@ -110,10 +110,10 @@ npx agent-device@0.21.0 diff screenshot \ --out --threshold 0.1 --json ``` -Committed evidence: `evidence/ios/66-diff-t0.1.json` (0 changed pixels, `match: true`) and -`evidence/ios/66-diff-t0.02.json` (10,179 changed pixels) are the two diffs of the same -capture; the three repeats are `evidence/sensitivity/ios/realistic-{1,2,3}-diff-t0.1.json` -and `-t0.02.json`; the diff image at 0.02 is `evidence/diff-images/ios-realistic-t0.02.png`. +Committed evidence: `evidence/results.csv` rows `ios / realistic / 0.1` (0 changed pixels, +`match: true`) and `ios / realistic / 0.02` (10,179 changed pixels) are the two diffs of the +same capture; the three repeats are the `ios / realistic-{1,2,3}` rows at both thresholds; +the diff image at 0.02 is `evidence/diff-images/ios-realistic-1-t0.02.png`. There is no 0.1 image because `diff screenshot --out` writes nothing on a match (issue 18). The raw capture PNG was not committed. @@ -130,13 +130,13 @@ The raw capture PNG was not committed. ``` The same pair at `--threshold 0.02` reports 10179 different pixels (1.31%) in a -single 378x378 region exactly around the affected surface — artifacts -`66-diff-t0.1.json`, `66-diff-t0.02.json`, `diff-realistic-t0.02.png`. +single 378x378 region exactly around the affected surface (`results.csv`, +`ios / realistic`; image `ios-realistic-1-t0.02.png`). The gross break (every elevated surface forced to the level 5 shadow) is also badly under-reported at the default threshold: 4277 px / 0.55% in one 316x17 band -(`59-diff.json`, `diff-gross.png`) versus 116292 px / 15.02% in 3 regions at 0.02 -(`60-diff.json`, `diff-gross-t002.png`). At the default threshold, a change that is +versus 116292 px / 15.02% in 3 regions at 0.02 (`results.csv`, `ios / gross`; +image `ios-gross-t0.02.png`). At the default threshold, a change that is plainly visible to the eye across the whole screen registers as a thin sliver. Suggestion: either lower the default, or document that the default threshold is @@ -215,7 +215,7 @@ nothing is lost — but the iOS default of 1x logical points remains an easy tra ## Threshold data point for issue 4 (Android) Android repeats the iOS finding for the realistic break: 0 changed pixels and -`match: true` at the default 0.1, 9,336 px at 0.02 (`114-diff-realistic-*.json`). +`match: true` at the default 0.1, 9,336 px at 0.02 (`results.csv`, `android / realistic`). Unlike iOS, the gross break is caught at the default (65,051 px / 7.92 %). ## 12. The typed Node client is exported but unreachable without a dependency @@ -324,11 +324,9 @@ than a clear error. `--out` is silently ignored on a `match: true` diff, and the response omits `diffPath` as well. That is defensible (there is nothing to draw), but it means "the diff image exists" cannot be used as evidence that a diff ran, and a -per-threshold sweep produces a gappy set of files: this pass has -`evidence/diff-images/-realistic--t0.02.png` for all six failing -diffs but no `-t0.1.png` counterparts, because at 0.1 the realistic break -matches. The `-diff-t0.1.json` files under `evidence/sensitivity//` -are the record for those. +per-threshold sweep produces a gappy set of files: the realistic break has a +diff image at 0.02 but none at 0.1, because at 0.1 it matches. The 0.1 rows in +`evidence/results.csv` are the record for those. ## 19. The dev-client's floating "Tools" button lands inside the crop and reads as a regression diff --git a/example/visual/evidence/results.csv b/example/visual/evidence/results.csv new file mode 100644 index 0000000000..5e8efe206c --- /dev/null +++ b/example/visual/evidence/results.csv @@ -0,0 +1,73 @@ +platform,group,capture,threshold,totalPixels,differentPixels,mismatchPercent,regions,match,source +ios,first-run,a-vs-b (density 1),0.1,86028,0,0,0,True,evidence/ios/26-diff.json +ios,first-run,flat a-vs-b (density 1),0.1,86028,0,0,0,True,evidence/ios/30-diff.json +ios,first-run,warm-1,0.1,774252,0,0,0,True,evidence/ios/37-diff.json +ios,first-run,warm-2,0.1,774252,0,0,0,True,evidence/ios/40-diff.json +ios,first-run,warm-3,0.1,774252,0,0,0,True,evidence/ios/43-diff.json +ios,first-run,relaunch-1,0.1,774252,0,0,0,True,evidence/ios/53-diff.json +ios,first-run,gross,0.1,774252,4277,0.55,1,False,evidence/ios/59-diff.json +ios,first-run,gross,0.1,774252,116292,15.02,3,False,evidence/ios/60-diff.json +ios,first-run,revert-1,0.1,774252,0,0,0,True,evidence/ios/63-diff.json +ios,first-run,realistic,0.02,774252,10179,1.31,3,False,evidence/ios/66-diff-t0.02.json +ios,first-run,realistic,0.1,774252,0,0,0,True,evidence/ios/66-diff-t0.1.json +ios,first-run,revert-2,0.1,774252,0,0,0,True,evidence/ios/69-diff.json +ios,first-run,relaunch-1,0.02,774252,0,0,0,True,evidence/ios/6x-diff-relaunch-1-t002.json +ios,first-run,warm-1,0.02,774252,0,0,0,True,evidence/ios/6x-diff-warm-1-t002.json +ios,first-run,warm-2,0.02,774252,0,0,0,True,evidence/ios/6x-diff-warm-2-t002.json +ios,first-run,warm-3,0.02,774252,0,0,0,True,evidence/ios/6x-diff-warm-3-t002.json +android,first-run,relaunch-1,0.01,821760,0,0,0,True,evidence/android/103-diff-relaunch-1-t0.01.json +android,first-run,relaunch-1,0.02,821760,0,0,0,True,evidence/android/103-diff-relaunch-1-t0.02.json +android,first-run,relaunch-1,0.05,821760,0,0,0,True,evidence/android/103-diff-relaunch-1-t0.05.json +android,first-run,relaunch-1,0.1,821760,0,0,0,True,evidence/android/103-diff-relaunch-1-t0.1.json +android,first-run,gross,0.01,821760,265916,32.36,2,False,evidence/android/108-diff-gross-t0.01.json +android,first-run,gross,0.02,821760,208505,25.37,4,False,evidence/android/108-diff-gross-t0.02.json +android,first-run,gross,0.05,821760,118661,14.44,4,False,evidence/android/108-diff-gross-t0.05.json +android,first-run,gross,0.1,821760,65051,7.92,2,False,evidence/android/108-diff-gross-t0.1.json +android,first-run,revert1,0.01,821760,0,0,0,True,evidence/android/111-diff-revert1-t0.01.json +android,first-run,revert1,0.02,821760,0,0,0,True,evidence/android/111-diff-revert1-t0.02.json +android,first-run,revert1,0.05,821760,0,0,0,True,evidence/android/111-diff-revert1-t0.05.json +android,first-run,revert1,0.1,821760,0,0,0,True,evidence/android/111-diff-revert1-t0.1.json +android,first-run,realistic,0.01,821760,14686,1.79,1,False,evidence/android/114-diff-realistic-t0.01.json +android,first-run,realistic,0.02,821760,9336,1.14,1,False,evidence/android/114-diff-realistic-t0.02.json +android,first-run,realistic,0.05,821760,1830,0.22,1,False,evidence/android/114-diff-realistic-t0.05.json +android,first-run,realistic,0.1,821760,0,0,0,True,evidence/android/114-diff-realistic-t0.1.json +android,first-run,revert2,0.01,821760,0,0,0,True,evidence/android/117-diff-revert2-t0.01.json +android,first-run,revert2,0.02,821760,0,0,0,True,evidence/android/117-diff-revert2-t0.02.json +android,first-run,revert2,0.05,821760,0,0,0,True,evidence/android/117-diff-revert2-t0.05.json +android,first-run,revert2,0.1,821760,0,0,0,True,evidence/android/117-diff-revert2-t0.1.json +android,first-run,warm-1,0.01,821760,0,0,0,True,evidence/android/94-diff-warm-1-t0.01.json +android,first-run,warm-1,0.02,821760,0,0,0,True,evidence/android/94-diff-warm-1-t0.02.json +android,first-run,warm-1,0.05,821760,0,0,0,True,evidence/android/94-diff-warm-1-t0.05.json +android,first-run,warm-1,0.1,821760,0,0,0,True,evidence/android/94-diff-warm-1-t0.1.json +android,first-run,warm-2,0.01,821760,0,0,0,True,evidence/android/94-diff-warm-2-t0.01.json +android,first-run,warm-2,0.02,821760,0,0,0,True,evidence/android/94-diff-warm-2-t0.02.json +android,first-run,warm-2,0.05,821760,0,0,0,True,evidence/android/94-diff-warm-2-t0.05.json +android,first-run,warm-2,0.1,821760,0,0,0,True,evidence/android/94-diff-warm-2-t0.1.json +android,first-run,warm-3,0.01,821760,0,0,0,True,evidence/android/94-diff-warm-3-t0.01.json +android,first-run,warm-3,0.02,821760,0,0,0,True,evidence/android/94-diff-warm-3-t0.02.json +android,first-run,warm-3,0.05,821760,0,0,0,True,evidence/android/94-diff-warm-3-t0.05.json +android,first-run,warm-3,0.1,821760,0,0,0,True,evidence/android/94-diff-warm-3-t0.1.json +ios,re-measured,gross,0.02,774252,116292,15.02,3,False,evidence/sensitivity/ios/gross-diff-t0.02.json +ios,re-measured,gross,0.1,774252,4277,0.55,1,False,evidence/sensitivity/ios/gross-diff-t0.1.json +ios,re-measured,realistic-1,0.02,774252,10179,1.31,3,False,evidence/sensitivity/ios/realistic-1-diff-t0.02.json +ios,re-measured,realistic-1,0.1,774252,0,0,0,True,evidence/sensitivity/ios/realistic-1-diff-t0.1.json +ios,re-measured,realistic-2,0.02,774252,10179,1.31,3,False,evidence/sensitivity/ios/realistic-2-diff-t0.02.json +ios,re-measured,realistic-2,0.1,774252,0,0,0,True,evidence/sensitivity/ios/realistic-2-diff-t0.1.json +ios,re-measured,realistic-3,0.02,774252,10179,1.31,3,False,evidence/sensitivity/ios/realistic-3-diff-t0.02.json +ios,re-measured,realistic-3,0.1,774252,0,0,0,True,evidence/sensitivity/ios/realistic-3-diff-t0.1.json +ios,re-measured,reverted,0.02,774252,0,0,0,True,evidence/sensitivity/ios/reverted-diff-t0.02.json +ios,re-measured,reverted,0.1,774252,0,0,0,True,evidence/sensitivity/ios/reverted-diff-t0.1.json +android,re-measured,gross,0.02,821760,208505,25.37,4,False,evidence/sensitivity/android/gross-diff-t0.02.json +android,re-measured,gross,0.1,821760,65051,7.92,2,False,evidence/sensitivity/android/gross-diff-t0.1.json +android,re-measured,gross-probe,0.02,821760,0,0,0,True,evidence/sensitivity/android/gross-probe-diff-t0.02.json +android,re-measured,gross-probe,0.1,821760,0,0,0,True,evidence/sensitivity/android/gross-probe-diff-t0.1.json +android,re-measured,realistic-1,0.02,821760,9336,1.14,1,False,evidence/sensitivity/android/realistic-1-diff-t0.02.json +android,re-measured,realistic-1,0.1,821760,0,0,0,True,evidence/sensitivity/android/realistic-1-diff-t0.1.json +android,re-measured,realistic-2,0.02,821760,9336,1.14,1,False,evidence/sensitivity/android/realistic-2-diff-t0.02.json +android,re-measured,realistic-2,0.1,821760,0,0,0,True,evidence/sensitivity/android/realistic-2-diff-t0.1.json +android,re-measured,realistic-3,0.02,821760,9336,1.14,1,False,evidence/sensitivity/android/realistic-3-diff-t0.02.json +android,re-measured,realistic-3,0.1,821760,0,0,0,True,evidence/sensitivity/android/realistic-3-diff-t0.1.json +android,re-measured,reverted,0.02,821760,0,0,0,True,evidence/sensitivity/android/reverted-diff-t0.02.json +android,re-measured,reverted,0.1,821760,0,0,0,True,evidence/sensitivity/android/reverted-diff-t0.1.json +android,re-measured,sanity-before-break,0.02,821760,0,0,0,True,evidence/sensitivity/android/sanity-before-break-diff-t0.02.json +android,re-measured,sanity-before-break,0.1,821760,0,0,0,True,evidence/sensitivity/android/sanity-before-break-diff-t0.1.json diff --git a/example/visual/evidence/sensitivity/android/gross-diff-t0.02.json b/example/visual/evidence/sensitivity/android/gross-diff-t0.02.json deleted file mode 100644 index 008f28ef86..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-diff-t0.02.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/android-gross-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 8, - "y": 196, - "width": 438, - "height": 423 - }, - "normalizedRect": { - "x": 0.63, - "y": 30.53, - "width": 34.22, - "height": 65.89 - }, - "differentPixels": 115861, - "shareOfDiffPercentage": 55.57, - "densityPercentage": 62.53, - "shape": "compact", - "size": "large", - "location": "middle-left", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#dfdde2", - "baselineLuminance": 249, - "currentLuminance": 222, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 447, - "y": 196, - "width": 442, - "height": 423 - }, - "normalizedRect": { - "x": 34.92, - "y": 30.53, - "width": 34.53, - "height": 65.89 - }, - "differentPixels": 48994, - "shareOfDiffPercentage": 23.5, - "densityPercentage": 26.2, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#edebf1", - "baselineLuminance": 248, - "currentLuminance": 236, - "dominantChange": "darker" - }, - { - "index": 3, - "rect": { - "x": 890, - "y": 196, - "width": 390, - "height": 423 - }, - "normalizedRect": { - "x": 69.53, - "y": 30.53, - "width": 30.47, - "height": 65.89 - }, - "differentPixels": 30792, - "shareOfDiffPercentage": 14.77, - "densityPercentage": 18.67, - "shape": "compact", - "size": "large", - "location": "middle-right", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#eceaef", - "baselineLuminance": 245, - "currentLuminance": 235, - "dominantChange": "mixed" - }, - { - "index": 4, - "rect": { - "x": 0, - "y": 0, - "width": 1280, - "height": 11 - }, - "normalizedRect": { - "x": 0, - "y": 0, - "width": 100, - "height": 1.71 - }, - "differentPixels": 12858, - "shareOfDiffPercentage": 6.17, - "densityPercentage": 91.32, - "shape": "horizontal-band", - "size": "medium", - "location": "top-center", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#f3f1f7", - "baselineLuminance": 249, - "currentLuminance": 242, - "dominantChange": "mixed" - } - ], - "totalPixels": 821760, - "differentPixels": 208505, - "mismatchPercentage": 25.37, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-diff-t0.1.json b/example/visual/evidence/sensitivity/android/gross-diff-t0.1.json deleted file mode 100644 index 81c21af27a..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-diff-t0.1.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/android-gross-t0.1.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 42, - "y": 225, - "width": 359, - "height": 356 - }, - "normalizedRect": { - "x": 3.28, - "y": 35.05, - "width": 28.05, - "height": 55.45 - }, - "differentPixels": 62597, - "shareOfDiffPercentage": 96.23, - "densityPercentage": 48.98, - "shape": "compact", - "size": "large", - "location": "middle-left", - "averageBaselineColorHex": "#faf8fe", - "averageCurrentColorHex": "#d3d1d7", - "baselineLuminance": 249, - "currentLuminance": 210, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 500, - "y": 573, - "width": 321, - "height": 8 - }, - "normalizedRect": { - "x": 39.06, - "y": 89.25, - "width": 25.08, - "height": 1.25 - }, - "differentPixels": 2454, - "shareOfDiffPercentage": 3.77, - "densityPercentage": 95.56, - "shape": "horizontal-band", - "size": "small", - "location": "bottom-center", - "averageBaselineColorHex": "#f9f7fd", - "averageCurrentColorHex": "#dcdbe0", - "baselineLuminance": 248, - "currentLuminance": 220, - "dominantChange": "darker" - } - ], - "totalPixels": 821760, - "differentPixels": 65051, - "mismatchPercentage": 7.92, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json b/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json b/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-probe-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-probe-shot.json b/example/visual/evidence/sensitivity/android/gross-probe-shot.json deleted file mode 100644 index de0774fea4..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-probe-shot.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/gross-probe.png", - "width": 1280, - "height": 642 - } -} diff --git a/example/visual/evidence/sensitivity/android/gross-probe.png b/example/visual/evidence/sensitivity/android/gross-probe.png deleted file mode 100644 index c94e2bc1b130d2115e61ca8d2451db373b1ba6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31693 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 diff --git a/example/visual/evidence/sensitivity/android/gross-shot.json b/example/visual/evidence/sensitivity/android/gross-shot.json deleted file mode 100644 index 2ea78df8d2..0000000000 --- a/example/visual/evidence/sensitivity/android/gross-shot.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/gross.png", - "width": 1280, - "height": 642 - } -} diff --git a/example/visual/evidence/sensitivity/android/gross.png b/example/visual/evidence/sensitivity/android/gross.png deleted file mode 100644 index 331812d66017a6ac1a21a3fe88a6beb34757fae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63721 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 diff --git a/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json b/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json deleted file mode 100644 index 8a5f54ddec..0000000000 --- a/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.02.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/android-realistic-1-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 473, - "y": 207, - "width": 374, - "height": 375 - }, - "normalizedRect": { - "x": 36.95, - "y": 32.24, - "width": 29.22, - "height": 58.41 - }, - "differentPixels": 9336, - "shareOfDiffPercentage": 100, - "densityPercentage": 6.66, - "shape": "compact", - "size": "large", - "location": "center", - "averageBaselineColorHex": "#f6f4fa", - "averageCurrentColorHex": "#eceaf0", - "baselineLuminance": 245, - "currentLuminance": 235, - "dominantChange": "mixed" - } - ], - "totalPixels": 821760, - "differentPixels": 9336, - "mismatchPercentage": 1.14, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json b/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/sensitivity/android/realistic-1-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/android/realistic-1-shot.json b/example/visual/evidence/sensitivity/android/realistic-1-shot.json deleted file mode 100644 index 89eaf9108a..0000000000 --- a/example/visual/evidence/sensitivity/android/realistic-1-shot.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/realistic-1.png", - "width": 1280, - "height": 642 - } -} diff --git a/example/visual/evidence/sensitivity/android/realistic-1.png b/example/visual/evidence/sensitivity/android/realistic-1.png deleted file mode 100644 index 9ac136bebae1c3c21588c9b9e3b2f95bcfb67d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33878 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 diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json b/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.02.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json b/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json deleted file mode 100644 index ba308f54ca..0000000000 --- a/example/visual/evidence/sensitivity/android/sanity-before-break-diff-t0.1.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "success": true, - "data": { - "totalPixels": 821760, - "differentPixels": 0, - "mismatchPercentage": 0, - "match": true - } -} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break-shot.json b/example/visual/evidence/sensitivity/android/sanity-before-break-shot.json deleted file mode 100644 index 074489c977..0000000000 --- a/example/visual/evidence/sensitivity/android/sanity-before-break-shot.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/android/sanity-before-break.png", - "width": 1280, - "height": 642 - } -} diff --git a/example/visual/evidence/sensitivity/android/sanity-before-break.png b/example/visual/evidence/sensitivity/android/sanity-before-break.png deleted file mode 100644 index c94e2bc1b130d2115e61ca8d2451db373b1ba6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31693 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 diff --git a/example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json b/example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json deleted file mode 100644 index c288695213..0000000000 --- a/example/visual/evidence/sensitivity/ios/gross-diff-t0.02.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-gross-t0.02.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 443, - "y": 223, - "width": 763, - "height": 404 - }, - "normalizedRect": { - "x": 36.73, - "y": 34.74, - "width": 63.27, - "height": 62.93 - }, - "differentPixels": 70986, - "shareOfDiffPercentage": 61.04, - "densityPercentage": 23.03, - "shape": "large-area", - "size": "large", - "location": "middle-right", - "averageBaselineColorHex": "#fcf5fd", - "averageCurrentColorHex": "#eee7ef", - "baselineLuminance": 247, - "currentLuminance": 233, - "dominantChange": "darker" - }, - { - "index": 2, - "rect": { - "x": 0, - "y": 0, - "width": 1206, - "height": 33 - }, - "normalizedRect": { - "x": 0, - "y": 0, - "width": 100, - "height": 5.14 - }, - "differentPixels": 36741, - "shareOfDiffPercentage": 31.59, - "densityPercentage": 92.32, - "shape": "horizontal-band", - "size": "large", - "location": "top-center", - "averageBaselineColorHex": "#fef7ff", - "averageCurrentColorHex": "#f2ebf3", - "baselineLuminance": 249, - "currentLuminance": 237, - "dominantChange": "darker" - }, - { - "index": 3, - "rect": { - "x": 463, - "y": 190, - "width": 743, - "height": 33 - }, - "normalizedRect": { - "x": 38.39, - "y": 29.6, - "width": 61.61, - "height": 5.14 - }, - "differentPixels": 8565, - "shareOfDiffPercentage": 7.37, - "densityPercentage": 34.93, - "shape": "horizontal-band", - "size": "medium", - "location": "top-right", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#f5eef6", - "baselineLuminance": 248, - "currentLuminance": 240, - "dominantChange": "mixed" - } - ], - "totalPixels": 774252, - "differentPixels": 116292, - "mismatchPercentage": 15.02, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json b/example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json deleted file mode 100644 index 0040206830..0000000000 --- a/example/visual/evidence/sensitivity/ios/gross-diff-t0.1.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "success": true, - "data": { - "diffPath": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/diff-images/ios-gross-t0.1.png", - "regions": [ - { - "index": 1, - "rect": { - "x": 502, - "y": 573, - "width": 316, - "height": 17 - }, - "normalizedRect": { - "x": 41.63, - "y": 89.25, - "width": 26.2, - "height": 2.65 - }, - "differentPixels": 4277, - "shareOfDiffPercentage": 100, - "densityPercentage": 79.62, - "shape": "horizontal-band", - "size": "small", - "location": "bottom-center", - "averageBaselineColorHex": "#fdf6fe", - "averageCurrentColorHex": "#dfd9e0", - "baselineLuminance": 248, - "currentLuminance": 219, - "dominantChange": "darker" - } - ], - "totalPixels": 774252, - "differentPixels": 4277, - "mismatchPercentage": 0.55, - "match": false - } -} diff --git a/example/visual/evidence/sensitivity/ios/gross-shot.json b/example/visual/evidence/sensitivity/ios/gross-shot.json deleted file mode 100644 index 1c4418110b..0000000000 --- a/example/visual/evidence/sensitivity/ios/gross-shot.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "success": true, - "data": { - "path": "/Users/juliankobrynski/Projects/react-native-paper/example/visual/evidence/sensitivity/ios/gross.png", - "width": 1206, - "height": 642, - "logicalWidth": 402, - "logicalHeight": 214, - "pixelDensity": 3 - } -} diff --git a/example/visual/evidence/sensitivity/ios/gross.png b/example/visual/evidence/sensitivity/ios/gross.png deleted file mode 100644 index 58161c85ed46f7a36ec7a1063c2d2064d7101fc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259444 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 z 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

    =^c;a{i9?ZZp6cwaooL? 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
    `HyqdM$D_^dh-{qZi8G1?%*xON zguETz2n}Pc{%R1mCKdh^3SXg+(5sLgC9v^}khm_l3T$gcHdrkumI*?l30H%0D$`CU zhe0Xi#R2dl&_8ICY)0M*yMU;|o66wZ7DN)mQ^HbCyK)w!6&M+ehUWK(NTUmSNKWFC z#LHyxJP=!^M7eDAfy@)&c@mTIL{Jb#6S)PJNY@*nF!*k9JBU}`-b~Abv5*DRaMvGlnJNP&lCAmN$O*<*lR}!{K;)XF zAOXICgBW_y>3@Dz|Cn;In6KLmbj(Mm@`(!{krHeo;$UVh8JYd{h`@Xh5i^ z+q0xsgzyd{Z^gn;eIl7LWWaq;YW27f7WY4ZA5-=skAT@n>u{Y)52E;=ln3$?C;{J~ z&y`F(~HYC1-}Kk(>#7Yf&rz;2~_eu~&f7 zfMDftH5v(&u{Ggz(Z_lzOaYA}A%ZASGy&-t$l(1+jh7Tt=PUm|ihkFi=qYEEAQa@o zfH*)l(3|dg0BhqntPPs1(z}O`EXEdP@Y7LR;#F8~|;SfETb%K<;8#5Ri(Q_#~(ueaf1K&+W9@>_daZ7n#Y!)~)InXI-|iE4*T=<)jHXP&SAbv0>a#vS-~WFB(4f`~ literal 0 HcmV?d00001 diff --git a/example/visual/evidence/diff-images/ios-gross-t0.1.png b/example/visual/evidence/diff-images/ios-gross-t0.1.png new file mode 100644 index 0000000000000000000000000000000000000000..90430d3f208eedfa4cda03ceac17cb8d214a63d7 GIT binary patch literal 120512 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�!yV|U+2_+d>o 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