react-native-ai-debugger 1.10.11 → 1.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -20
- package/build/__tests__/unit/screenState.test.js +204 -6
- package/build/__tests__/unit/screenState.test.js.map +1 -1
- package/build/__tests__/unit/tap.test.js +0 -2
- package/build/__tests__/unit/tap.test.js.map +1 -1
- package/build/core/connection.js +1 -1
- package/build/core/connection.js.map +1 -1
- package/build/core/debugGlobals.d.ts.map +1 -1
- package/build/core/debugGlobals.js +13 -8
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/guides.js +2 -2
- package/build/core/nativeOnlyHints.js +1 -1
- package/build/core/nativeOnlyHints.js.map +1 -1
- package/build/core/screenState.d.ts +78 -10
- package/build/core/screenState.d.ts.map +1 -1
- package/build/core/screenState.js +271 -39
- package/build/core/screenState.js.map +1 -1
- package/build/core/sdkBridge.js +5 -5
- package/build/core/sdkBridge.js.map +1 -1
- package/build/pro/tap.d.ts +0 -4
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +0 -98
- package/build/pro/tap.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +11 -10
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/networkTools.js +5 -5
- package/build/tools/networkTools.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# ExecBro
|
|
2
2
|
|
|
3
3
|
> [!IMPORTANT]
|
|
4
|
-
> **Already using ExecBro?** `npx` caches packages indefinitely, so you may be stuck on an old version without realizing it. Update your MCP config to use `npx -y
|
|
4
|
+
> **Already using ExecBro?** `npx` caches packages indefinitely, so you may be stuck on an old version without realizing it. Update your MCP config to use `npx -y execbro@latest` (see [Setup](#setup)) so every session pulls the latest release with new tools and bug fixes. New installs after this change auto-update automatically.
|
|
5
5
|
|
|
6
|
-
> Ships as the npm package `react-native-ai-devtools
|
|
6
|
+
> Ships as the npm package `execbro`. Legacy `react-native-ai-devtools` and `react-native-ai-debugger` packages keep receiving identical builds via mirror-publish.
|
|
7
7
|
|
|
8
8
|
**Give your AI assistant eyes and hands into your running React Native app.** Like Chrome DevTools — but for AI agents.
|
|
9
9
|
|
|
@@ -12,7 +12,7 @@ Build, debug, and verify features end-to-end — without leaving the chat.
|
|
|
12
12
|
ExecBro is the runtime bridge between your AI coding assistant and your running React Native app — exposing MCP tools to read logs and network, inspect component state, capture screenshots, tap the UI, and run JS. Zero config, no SDK or code changes required — an optional SDK unlocks richer log and network capture when you want it.
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<img src="https://raw.githubusercontent.com/igorzheludkov/
|
|
15
|
+
<img src="https://raw.githubusercontent.com/igorzheludkov/execbro/main/docs/demo/get_logs_demo.gif" alt="ExecBro demo" width="800" />
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
18
|
## Get started
|
|
@@ -26,7 +26,7 @@ ExecBro is the runtime bridge between your AI coding assistant and your running
|
|
|
26
26
|
|
|
27
27
|
> Write a report about your experience with the ExecBro tools — where you were struggling and what could be improved. Save it as a Markdown file for me, then submit it using the `send_feedback` tool (type `"feedback"`) so it becomes a GitHub issue.
|
|
28
28
|
|
|
29
|
-
It takes 30 seconds: your agent runs `send_feedback`, hands you a pre-filled GitHub issue URL (environment info already attached), and you click submit — no GitHub setup, no copy-pasting. Real friction logs from real sessions are what shape the roadmap and get fixed first, so please send one. 🙏 And if you just have a quick idea or question, drop into [GitHub Discussions](https://github.com/igorzheludkov/
|
|
29
|
+
It takes 30 seconds: your agent runs `send_feedback`, hands you a pre-filled GitHub issue URL (environment info already attached), and you click submit — no GitHub setup, no copy-pasting. Real friction logs from real sessions are what shape the roadmap and get fixed first, so please send one. 🙏 And if you just have a quick idea or question, drop into [GitHub Discussions](https://github.com/igorzheludkov/execbro/discussions) to share feedback, request features, and vote on what gets built next.
|
|
30
30
|
|
|
31
31
|
## Pricing
|
|
32
32
|
|
|
@@ -36,8 +36,8 @@ ExecBro is **free and open** — every feature, no usage limits, no account requ
|
|
|
36
36
|
|
|
37
37
|
### Runtime Interaction
|
|
38
38
|
|
|
39
|
-
- **Console Log Capture** - Capture `console.log`, `warn`, `error`, `info`, `debug` with filtering and search. Note: on a cold start (first app launch), logs emitted before the MCP server connects are missed — subsequent reloads capture everything. Install the optional [SDK](https://www.npmjs.com/package/
|
|
40
|
-
- **Network Request Tracking** - Monitor HTTP requests/responses with headers, timing, and body content. Like logs, early network requests on cold start may be missed before the connection is established. Install the optional [SDK](https://www.npmjs.com/package/
|
|
39
|
+
- **Console Log Capture** - Capture `console.log`, `warn`, `error`, `info`, `debug` with filtering and search. Note: on a cold start (first app launch), logs emitted before the MCP server connects are missed — subsequent reloads capture everything. Install the optional [SDK](https://www.npmjs.com/package/execbro-sdk) to buffer logs from the very first line of app startup
|
|
40
|
+
- **Network Request Tracking** - Monitor HTTP requests/responses with headers, timing, and body content. Like logs, early network requests on cold start may be missed before the connection is established. Install the optional [SDK](https://www.npmjs.com/package/execbro-sdk) for full capture from app startup including request/response bodies
|
|
41
41
|
- **JavaScript Execution** - Run code directly in your app (REPL-style) and inspect results
|
|
42
42
|
- **Global State Debugging** - Discover and inspect Apollo Client, Redux stores, Expo Router, and custom globals
|
|
43
43
|
- **Bundle Error Detection** - Get Metro bundler errors and compilation issues with file locations
|
|
@@ -75,14 +75,18 @@ No installation required — every client below uses `npx` to fetch the latest v
|
|
|
75
75
|
|
|
76
76
|
After adding the server, fully restart the client (quit and relaunch, not just reload) so it picks up the new configuration.
|
|
77
77
|
|
|
78
|
+
### Legacy package names
|
|
79
|
+
|
|
80
|
+
The npm package was previously published as `react-native-ai-devtools` and before that as `react-native-ai-debugger`. Both legacy names continue to receive identical builds via mirror-publish — existing installations and MCP configs keep working unchanged. New installs should use `execbro`.
|
|
81
|
+
|
|
78
82
|
### Claude Code
|
|
79
83
|
|
|
80
84
|
```bash
|
|
81
85
|
# Global (all projects)
|
|
82
|
-
claude mcp add execbro --scope user -- npx -y
|
|
86
|
+
claude mcp add execbro --scope user -- npx -y execbro@latest
|
|
83
87
|
|
|
84
88
|
# Project-specific
|
|
85
|
-
claude mcp add execbro --scope project -- npx -y
|
|
89
|
+
claude mcp add execbro --scope project -- npx -y execbro@latest
|
|
86
90
|
```
|
|
87
91
|
|
|
88
92
|
Or edit `~/.claude.json` (user) / `.mcp.json` (project) manually:
|
|
@@ -93,7 +97,7 @@ Or edit `~/.claude.json` (user) / `.mcp.json` (project) manually:
|
|
|
93
97
|
"execbro": {
|
|
94
98
|
"type": "stdio",
|
|
95
99
|
"command": "npx",
|
|
96
|
-
"args": ["-y", "
|
|
100
|
+
"args": ["-y", "execbro@latest"]
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
}
|
|
@@ -111,7 +115,7 @@ Edit the config at:
|
|
|
111
115
|
"mcpServers": {
|
|
112
116
|
"execbro": {
|
|
113
117
|
"command": "npx",
|
|
114
|
-
"args": ["-y", "
|
|
118
|
+
"args": ["-y", "execbro@latest"]
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
}
|
|
@@ -122,7 +126,7 @@ You can also open this file from **Settings → Developer → Edit Config**. Ful
|
|
|
122
126
|
### Codex CLI (OpenAI)
|
|
123
127
|
|
|
124
128
|
```bash
|
|
125
|
-
codex mcp add execbro -- npx -y
|
|
129
|
+
codex mcp add execbro -- npx -y execbro@latest
|
|
126
130
|
```
|
|
127
131
|
|
|
128
132
|
Or edit `~/.codex/config.toml` directly:
|
|
@@ -130,7 +134,7 @@ Or edit `~/.codex/config.toml` directly:
|
|
|
130
134
|
```toml
|
|
131
135
|
[mcp_servers.execbro]
|
|
132
136
|
command = "npx"
|
|
133
|
-
args = ["-y", "
|
|
137
|
+
args = ["-y", "execbro@latest"]
|
|
134
138
|
```
|
|
135
139
|
|
|
136
140
|
### Cursor
|
|
@@ -142,7 +146,7 @@ args = ["-y", "react-native-ai-devtools@latest"]
|
|
|
142
146
|
"mcpServers": {
|
|
143
147
|
"execbro": {
|
|
144
148
|
"command": "npx",
|
|
145
|
-
"args": ["-y", "
|
|
149
|
+
"args": ["-y", "execbro@latest"]
|
|
146
150
|
}
|
|
147
151
|
}
|
|
148
152
|
}
|
|
@@ -158,7 +162,7 @@ Requires VS Code 1.102+ with Copilot ([docs](https://code.visualstudio.com/docs/
|
|
|
158
162
|
"execbro": {
|
|
159
163
|
"type": "stdio",
|
|
160
164
|
"command": "npx",
|
|
161
|
-
"args": ["-y", "
|
|
165
|
+
"args": ["-y", "execbro@latest"]
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
168
|
}
|
|
@@ -173,7 +177,7 @@ Requires VS Code 1.102+ with Copilot ([docs](https://code.visualstudio.com/docs/
|
|
|
173
177
|
"mcpServers": {
|
|
174
178
|
"execbro": {
|
|
175
179
|
"command": "npx",
|
|
176
|
-
"args": ["-y", "
|
|
180
|
+
"args": ["-y", "execbro@latest"]
|
|
177
181
|
}
|
|
178
182
|
}
|
|
179
183
|
}
|
|
@@ -188,7 +192,7 @@ Requires VS Code 1.102+ with Copilot ([docs](https://code.visualstudio.com/docs/
|
|
|
188
192
|
"context_servers": {
|
|
189
193
|
"execbro": {
|
|
190
194
|
"command": "npx",
|
|
191
|
-
"args": ["-y", "
|
|
195
|
+
"args": ["-y", "execbro@latest"],
|
|
192
196
|
"env": {}
|
|
193
197
|
}
|
|
194
198
|
}
|
|
@@ -204,7 +208,7 @@ Edit `~/.gemini/settings.json` (user) or `.gemini/settings.json` (project):
|
|
|
204
208
|
"mcpServers": {
|
|
205
209
|
"execbro": {
|
|
206
210
|
"command": "npx",
|
|
207
|
-
"args": ["-y", "
|
|
211
|
+
"args": ["-y", "execbro@latest"]
|
|
208
212
|
}
|
|
209
213
|
}
|
|
210
214
|
}
|
|
@@ -252,7 +256,7 @@ Opt in by setting `IOS_DRIVER=idb` in your MCP server configuration:
|
|
|
252
256
|
"execbro": {
|
|
253
257
|
"type": "stdio",
|
|
254
258
|
"command": "npx",
|
|
255
|
-
"args": ["-y", "
|
|
259
|
+
"args": ["-y", "execbro@latest"],
|
|
256
260
|
"env": { "IOS_DRIVER": "idb" }
|
|
257
261
|
}
|
|
258
262
|
}
|
|
@@ -419,7 +423,7 @@ The server prioritizes devices in this order:
|
|
|
419
423
|
- Ensure the app is actively running (not just Metro)
|
|
420
424
|
- Try `clear_logs` then trigger some actions in the app
|
|
421
425
|
- Check `get_apps` to verify connection status
|
|
422
|
-
- **On cold start (first launch):** The CDP connection is established after the app's early initialization code has already run, so startup logs and network requests are missed. Once connected, use `reload_app` — the subsequent reload captures everything from the beginning because the connection is already in place. To capture startup events on every launch, install the optional [SDK](https://www.npmjs.com/package/
|
|
426
|
+
- **On cold start (first launch):** The CDP connection is established after the app's early initialization code has already run, so startup logs and network requests are missed. Once connected, use `reload_app` — the subsequent reload captures everything from the beginning because the connection is already in place. To capture startup events on every launch, install the optional [SDK](https://www.npmjs.com/package/execbro-sdk)
|
|
423
427
|
|
|
424
428
|
## Telemetry & Data Collection
|
|
425
429
|
|
|
@@ -464,7 +468,7 @@ To disable telemetry and auto-registration, add `RN_DEBUGGER_TELEMETRY` to the `
|
|
|
464
468
|
"execbro": {
|
|
465
469
|
"type": "stdio",
|
|
466
470
|
"command": "npx",
|
|
467
|
-
"args": ["-y", "
|
|
471
|
+
"args": ["-y", "execbro@latest"],
|
|
468
472
|
"env": { "RN_DEBUGGER_TELEMETRY": "false" }
|
|
469
473
|
}
|
|
470
474
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from "@jest/globals";
|
|
2
|
-
import { markPressablesCoveredByOverlay, parseScreenStateResponse, formatScreenStateSummary, describePressHandler, describePropHandlers, } from "../../core/screenState.js";
|
|
2
|
+
import { markPressablesCoveredByOverlay, parseScreenStateResponse, formatScreenStateSummary, describePressHandler, describePropHandlers, applyIconHintToLabel, formatTextEntry, formatImageEntry, } from "../../core/screenState.js";
|
|
3
3
|
function pressable(overrides = {}) {
|
|
4
4
|
return {
|
|
5
5
|
label: "Button",
|
|
@@ -76,6 +76,23 @@ describe("parseScreenStateResponse", () => {
|
|
|
76
76
|
expect(result.overlays).toEqual([]);
|
|
77
77
|
expect(result.pressables).toEqual([]);
|
|
78
78
|
});
|
|
79
|
+
it("parses texts and images arrays", () => {
|
|
80
|
+
const parsed = parseScreenStateResponse({
|
|
81
|
+
route: null,
|
|
82
|
+
overlays: [],
|
|
83
|
+
pressables: [],
|
|
84
|
+
texts: [{ text: "Total", center: { x: 10, y: 20 }, bounds: { x: 0, y: 10, width: 40, height: 20 } }],
|
|
85
|
+
images: [{ src: "https://x/y.jpg", alt: "hero", center: { x: 5, y: 5 }, bounds: { x: 0, y: 0, width: 10, height: 10 } }],
|
|
86
|
+
});
|
|
87
|
+
expect(parsed?.texts).toHaveLength(1);
|
|
88
|
+
expect(parsed?.texts[0].text).toBe("Total");
|
|
89
|
+
expect(parsed?.images[0].src).toBe("https://x/y.jpg");
|
|
90
|
+
});
|
|
91
|
+
it("defaults texts and images to empty arrays when absent (back-compat)", () => {
|
|
92
|
+
const parsed = parseScreenStateResponse({ route: null, overlays: [], pressables: [] });
|
|
93
|
+
expect(parsed?.texts).toEqual([]);
|
|
94
|
+
expect(parsed?.images).toEqual([]);
|
|
95
|
+
});
|
|
79
96
|
});
|
|
80
97
|
describe("describePressHandler", () => {
|
|
81
98
|
it("returns named handlers as calls", () => {
|
|
@@ -118,8 +135,19 @@ describe("describePropHandlers", () => {
|
|
|
118
135
|
expect(describePropHandlers([{ p: "onPress", n: "", same: true }])).toBeNull();
|
|
119
136
|
expect(describePropHandlers([{ p: "onPress", n: "onPress", same: true }])).toBeNull();
|
|
120
137
|
});
|
|
121
|
-
it("
|
|
122
|
-
|
|
138
|
+
it("ignores a lone non-identity-matched candidate (the touchable's onPress is some other internal handler)", () => {
|
|
139
|
+
// A minified internal handler (e.g. handleCartPress) is NOT a pass-through of
|
|
140
|
+
// the component's only on* prop (onBack). Guessing onBack here mislabels every
|
|
141
|
+
// button in a multi-button container like FloatingHeader, so we emit nothing.
|
|
142
|
+
expect(describePropHandlers([{ p: "onSelect", n: "", same: false }])).toBeNull();
|
|
143
|
+
expect(describePropHandlers([{ p: "onBack", n: "", same: false }])).toBeNull();
|
|
144
|
+
});
|
|
145
|
+
it("picks the identity-matched prop even when other candidates exist", () => {
|
|
146
|
+
const raw = [
|
|
147
|
+
{ p: "onMenuPress", n: "", same: false },
|
|
148
|
+
{ p: "onBack", n: "", same: true },
|
|
149
|
+
];
|
|
150
|
+
expect(describePropHandlers(raw)).toBe("onPress→onBack");
|
|
123
151
|
});
|
|
124
152
|
it("returns null on ambiguity (several candidates, none identity-matched)", () => {
|
|
125
153
|
const raw = [
|
|
@@ -134,6 +162,80 @@ describe("describePropHandlers", () => {
|
|
|
134
162
|
expect(describePropHandlers("nope")).toBeNull();
|
|
135
163
|
});
|
|
136
164
|
});
|
|
165
|
+
describe("applyIconHintToLabel", () => {
|
|
166
|
+
it("upgrades a fallback container label to the icon's semantic hint", () => {
|
|
167
|
+
const p = pressable({ label: "[FloatingHeader]", icon: "SvgChevronBackward" });
|
|
168
|
+
applyIconHintToLabel(p);
|
|
169
|
+
expect(p.label).toBe("[SvgChevronBackward — possibly back button]");
|
|
170
|
+
});
|
|
171
|
+
it("upgrades a count-badge label to the icon hint and preserves the count as nearby text", () => {
|
|
172
|
+
const p = pressable({ label: "1", icon: "SvgCartNew" });
|
|
173
|
+
applyIconHintToLabel(p);
|
|
174
|
+
expect(p.label).toBe("[SvgCartNew — possibly cart button]");
|
|
175
|
+
expect(p.nearbyText).toBe("1");
|
|
176
|
+
});
|
|
177
|
+
it("treats a '99+' overflow badge as a count badge", () => {
|
|
178
|
+
const p = pressable({ label: "99+", icon: "SvgCartNew" });
|
|
179
|
+
applyIconHintToLabel(p);
|
|
180
|
+
expect(p.label).toBe("[SvgCartNew — possibly cart button]");
|
|
181
|
+
expect(p.nearbyText).toBe("99+");
|
|
182
|
+
});
|
|
183
|
+
it("does not overwrite existing nearby text when preserving a badge", () => {
|
|
184
|
+
const p = pressable({ label: "2", icon: "SvgCartNew", nearbyText: "Checkout" });
|
|
185
|
+
applyIconHintToLabel(p);
|
|
186
|
+
expect(p.nearbyText).toBe("Checkout");
|
|
187
|
+
});
|
|
188
|
+
it("keeps the count badge as the label when the icon has no recognizable semantics", () => {
|
|
189
|
+
const p = pressable({ label: "3", icon: "SvgBlob" });
|
|
190
|
+
applyIconHintToLabel(p);
|
|
191
|
+
expect(p.label).toBe("3");
|
|
192
|
+
expect(p.nearbyText).toBeUndefined();
|
|
193
|
+
});
|
|
194
|
+
it("falls back to the bare icon name when there is no label and no hint", () => {
|
|
195
|
+
const p = pressable({ label: null, icon: "SvgBlob" });
|
|
196
|
+
applyIconHintToLabel(p);
|
|
197
|
+
expect(p.label).toBe("[SvgBlob]");
|
|
198
|
+
});
|
|
199
|
+
it("leaves pressables without an icon untouched", () => {
|
|
200
|
+
const p = pressable({ label: "Submit", icon: null });
|
|
201
|
+
applyIconHintToLabel(p);
|
|
202
|
+
expect(p.label).toBe("Submit");
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
describe("formatTextEntry", () => {
|
|
206
|
+
const t = (text) => ({ text, center: { x: 100, y: 50 }, bounds: { x: 80, y: 40, width: 200, height: 20 } });
|
|
207
|
+
it("renders coordinates, emoji tag, quoted text, and frame", () => {
|
|
208
|
+
expect(formatTextEntry(t("Valya product"), undefined, {})).toBe(' (100, 50) 📝 "Valya product" frame:(80,40 200x20)');
|
|
209
|
+
});
|
|
210
|
+
it("truncates to 80 chars with an ellipsis by default", () => {
|
|
211
|
+
const long = "x".repeat(100);
|
|
212
|
+
const out = formatTextEntry(t(long), undefined, {});
|
|
213
|
+
expect(out).toContain('"' + "x".repeat(80) + '…"');
|
|
214
|
+
});
|
|
215
|
+
it("emits the full string when fullText is set", () => {
|
|
216
|
+
const long = "x".repeat(100);
|
|
217
|
+
const out = formatTextEntry(t(long), undefined, { fullText: true });
|
|
218
|
+
expect(out).toContain('"' + "x".repeat(100) + '"');
|
|
219
|
+
expect(out).not.toContain("…");
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
describe("formatImageEntry", () => {
|
|
223
|
+
const img = (over = {}) => ({ center: { x: 210, y: 175 }, bounds: { x: 0, y: 0, width: 420, height: 350 }, ...over });
|
|
224
|
+
it("renders size, truncated src (60 chars), alt, and frame", () => {
|
|
225
|
+
const longSrc = "https://x/" + "a".repeat(70); // 80 chars → truncates to 60 + …
|
|
226
|
+
expect(formatImageEntry({ ...img(), src: longSrc, alt: "Valya" }, undefined)).toBe(' (210, 175) 🖼 Image 420x350 src="https://x/' + "a".repeat(50) + '…" alt="Valya" frame:(0,0 420x350)');
|
|
227
|
+
});
|
|
228
|
+
it("leaves a short src untouched", () => {
|
|
229
|
+
expect(formatImageEntry({ ...img(), src: "https://x/y.jpg" }, undefined)).toContain('src="https://x/y.jpg"');
|
|
230
|
+
});
|
|
231
|
+
it("omits src when absent and alt when absent", () => {
|
|
232
|
+
expect(formatImageEntry(img(), undefined)).toBe(' (210, 175) 🖼 Image 420x350 frame:(0,0 420x350)');
|
|
233
|
+
});
|
|
234
|
+
it("shows asset ids verbatim (already short)", () => {
|
|
235
|
+
const out = formatImageEntry({ ...img(), src: "asset#42" }, undefined);
|
|
236
|
+
expect(out).toContain('src="asset#42"');
|
|
237
|
+
});
|
|
238
|
+
});
|
|
137
239
|
describe("formatScreenStateSummary", () => {
|
|
138
240
|
const state = {
|
|
139
241
|
route: { name: "Checkout", params: { id: "7" }, stack: ["Tabs", "Cart", "Checkout"] },
|
|
@@ -153,12 +255,14 @@ describe("formatScreenStateSummary", () => {
|
|
|
153
255
|
bounds: { x: 20, y: 708, width: 22, height: 22 },
|
|
154
256
|
}),
|
|
155
257
|
],
|
|
258
|
+
texts: [],
|
|
259
|
+
images: [],
|
|
156
260
|
};
|
|
157
261
|
it("renders route, params, component tags, labels, nearby text, and frames", () => {
|
|
158
262
|
const out = formatScreenStateSummary(state);
|
|
159
263
|
expect(out).toContain('📍 Currently focused screen: "Checkout" [navigation stack: Tabs > Cart > Checkout]');
|
|
160
264
|
expect(out).toContain('route params: {"id":"7"}');
|
|
161
|
-
expect(out).toContain('(210, 838) <Button /> "Send" frame:(20,810 380x56)');
|
|
265
|
+
expect(out).toContain('(210, 838) 🔘 <Button /> "Send" frame:(20,810 380x56)');
|
|
162
266
|
expect(out).toContain('near "Skip verification."');
|
|
163
267
|
});
|
|
164
268
|
it("applies the coordinate converter to centers and frames", () => {
|
|
@@ -166,15 +270,17 @@ describe("formatScreenStateSummary", () => {
|
|
|
166
270
|
center: { x: p.center.x * 2, y: p.center.y * 2 },
|
|
167
271
|
frame: { x: p.bounds.x * 2, y: p.bounds.y * 2, width: p.bounds.width * 2, height: p.bounds.height * 2 },
|
|
168
272
|
}));
|
|
169
|
-
expect(out).toContain('(420, 1676) <Button /> "Send" frame:(40,1620 760x112)');
|
|
273
|
+
expect(out).toContain('(420, 1676) 🔘 <Button /> "Send" frame:(40,1620 760x112)');
|
|
170
274
|
});
|
|
171
275
|
it("groups overlay pressables and lists blocked root pressables separately", () => {
|
|
172
276
|
const withOverlay = {
|
|
173
277
|
route: null,
|
|
174
278
|
overlays: [{ type: "BottomSheet", title: null, pressables: [pressable({ label: "Submit" })] }],
|
|
175
279
|
pressables: [pressable({ label: "Send", blockedByOverlay: true })],
|
|
280
|
+
texts: [],
|
|
281
|
+
images: [],
|
|
176
282
|
};
|
|
177
|
-
const out = formatScreenStateSummary(withOverlay);
|
|
283
|
+
const out = formatScreenStateSummary(withOverlay, undefined, { pressablesOnly: true });
|
|
178
284
|
expect(out).toContain("📍 Currently focused screen: unknown");
|
|
179
285
|
expect(out).toContain("🔲 BottomSheet:");
|
|
180
286
|
expect(out).toContain('"Submit"');
|
|
@@ -183,4 +289,96 @@ describe("formatScreenStateSummary", () => {
|
|
|
183
289
|
expect(out).toContain('"Send"');
|
|
184
290
|
});
|
|
185
291
|
});
|
|
292
|
+
describe("formatScreenStateSummary — merged content", () => {
|
|
293
|
+
const base = {
|
|
294
|
+
route: { name: "Detail", params: null, stack: ["Detail"] },
|
|
295
|
+
overlays: [],
|
|
296
|
+
pressables: [
|
|
297
|
+
pressable({ label: "In cart", center: { x: 210, y: 838 }, bounds: { x: 20, y: 810, width: 380, height: 56 } }),
|
|
298
|
+
],
|
|
299
|
+
texts: [
|
|
300
|
+
{ text: "Valya product", center: { x: 146, y: 394 }, bounds: { x: 20, y: 382, width: 251, height: 24 } },
|
|
301
|
+
],
|
|
302
|
+
images: [
|
|
303
|
+
{ src: "https://x/tiger.jpg", alt: null, center: { x: 210, y: 175 }, bounds: { x: 0, y: 0, width: 420, height: 350 } },
|
|
304
|
+
],
|
|
305
|
+
};
|
|
306
|
+
it("merges text, image, and pressable lines ordered top-to-bottom", () => {
|
|
307
|
+
const out = formatScreenStateSummary(base);
|
|
308
|
+
const idxImg = out.indexOf("🖼 Image");
|
|
309
|
+
const idxText = out.indexOf('📝 "Valya product"');
|
|
310
|
+
const idxPress = out.indexOf('"In cart"');
|
|
311
|
+
expect(idxImg).toBeGreaterThan(-1);
|
|
312
|
+
expect(idxImg).toBeLessThan(idxText); // image y=175 < text y=394
|
|
313
|
+
expect(idxText).toBeLessThan(idxPress); // text y=394 < pressable y=838
|
|
314
|
+
});
|
|
315
|
+
it("pressablesOnly omits text and image lines", () => {
|
|
316
|
+
const out = formatScreenStateSummary(base, undefined, { pressablesOnly: true });
|
|
317
|
+
expect(out).not.toContain("📝");
|
|
318
|
+
expect(out).not.toContain("🖼");
|
|
319
|
+
expect(out).toContain('"In cart"');
|
|
320
|
+
});
|
|
321
|
+
it("uses a content-accurate header (not 'Pressables') when text/images are included", () => {
|
|
322
|
+
const out = formatScreenStateSummary(base);
|
|
323
|
+
expect(out).toContain("🎯 On screen:");
|
|
324
|
+
expect(out).not.toContain("🎯 Pressables:");
|
|
325
|
+
});
|
|
326
|
+
it("keeps the legacy 'Pressables' header under pressablesOnly", () => {
|
|
327
|
+
const out = formatScreenStateSummary(base, undefined, { pressablesOnly: true });
|
|
328
|
+
expect(out).toContain("🎯 Pressables:");
|
|
329
|
+
expect(out).not.toContain("🎯 On screen:");
|
|
330
|
+
});
|
|
331
|
+
it("marks pressables with 🔘 in the enriched view so tap targets stand out", () => {
|
|
332
|
+
const out = formatScreenStateSummary(base);
|
|
333
|
+
expect(out).toContain('🔘 "In cart"');
|
|
334
|
+
});
|
|
335
|
+
it("omits the 🔘 marker under pressablesOnly (byte-compatible legacy lines)", () => {
|
|
336
|
+
const out = formatScreenStateSummary(base, undefined, { pressablesOnly: true });
|
|
337
|
+
expect(out).not.toContain("🔘");
|
|
338
|
+
expect(out).toContain('(210, 838) "In cart"');
|
|
339
|
+
});
|
|
340
|
+
it("labels the reachable root group as content, not 'Root pressables', when enriched", () => {
|
|
341
|
+
const ss = {
|
|
342
|
+
route: null,
|
|
343
|
+
overlays: [{ type: "BottomSheet", title: "Sheet", pressables: [pressable({ label: "OK" })], texts: [], images: [] }],
|
|
344
|
+
pressables: [pressable({ label: "Back", blockedByOverlay: true, center: { x: 40, y: 100 }, bounds: { x: 16, y: 76, width: 48, height: 48 } })],
|
|
345
|
+
texts: [{ text: "Heading", center: { x: 100, y: 200 }, bounds: { x: 0, y: 190, width: 200, height: 20 } }],
|
|
346
|
+
images: [],
|
|
347
|
+
};
|
|
348
|
+
const out = formatScreenStateSummary(ss);
|
|
349
|
+
expect(out).toContain("🎯 Reachable (outside any overlay):");
|
|
350
|
+
expect(out).not.toContain("🎯 Root pressables:");
|
|
351
|
+
});
|
|
352
|
+
it("does not list a text that duplicates a pressable's nearbyText", () => {
|
|
353
|
+
const ss = {
|
|
354
|
+
...base,
|
|
355
|
+
pressables: [pressable({ label: "[SvgCartNew — possibly cart button]", nearbyText: "1", center: { x: 380, y: 100 }, bounds: { x: 356, y: 76, width: 48, height: 48 } })],
|
|
356
|
+
texts: [{ text: "1", center: { x: 390, y: 82 }, bounds: { x: 384, y: 80, width: 16, height: 16 } }],
|
|
357
|
+
};
|
|
358
|
+
const out = formatScreenStateSummary(ss);
|
|
359
|
+
expect(out).not.toContain('📝 "1"');
|
|
360
|
+
});
|
|
361
|
+
it("caps texts at 60 with an explicit overflow marker", () => {
|
|
362
|
+
const many = Array.from({ length: 75 }, (_, i) => ({ text: "t" + i, center: { x: 0, y: i }, bounds: { x: 0, y: i, width: 1, height: 1 } }));
|
|
363
|
+
const out = formatScreenStateSummary({ ...base, texts: many });
|
|
364
|
+
expect(out).toContain("… +15 more text");
|
|
365
|
+
});
|
|
366
|
+
it("places overlay text in the overlay group and blocked text in the Blocked group", () => {
|
|
367
|
+
const ss = {
|
|
368
|
+
route: null,
|
|
369
|
+
overlays: [{ type: "BottomSheet", title: "Sheet", pressables: [], texts: [{ text: "Added to Cart!", center: { x: 210, y: 175 }, bounds: { x: 0, y: 160, width: 420, height: 30 } }], images: [] }],
|
|
370
|
+
pressables: [pressable({ label: "Back", blockedByOverlay: true, center: { x: 40, y: 100 }, bounds: { x: 16, y: 76, width: 48, height: 48 } })],
|
|
371
|
+
texts: [{ text: "Valya product", blockedByOverlay: true, center: { x: 146, y: 394 }, bounds: { x: 20, y: 382, width: 251, height: 24 } }],
|
|
372
|
+
images: [],
|
|
373
|
+
};
|
|
374
|
+
const out = formatScreenStateSummary(ss);
|
|
375
|
+
const idxSheet = out.indexOf("🔲 BottomSheet");
|
|
376
|
+
const idxAdded = out.indexOf('📝 "Added to Cart!"');
|
|
377
|
+
const idxBlocked = out.indexOf("🚫 Blocked");
|
|
378
|
+
const idxValya = out.indexOf('📝 "Valya product"');
|
|
379
|
+
expect(idxSheet).toBeLessThan(idxAdded);
|
|
380
|
+
expect(idxAdded).toBeLessThan(idxBlocked);
|
|
381
|
+
expect(idxBlocked).toBeLessThan(idxValya);
|
|
382
|
+
});
|
|
383
|
+
});
|
|
186
384
|
//# sourceMappingURL=screenState.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenState.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/screenState.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"screenState.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/screenState.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -205,7 +205,6 @@ describe("formatTapSuccess", () => {
|
|
|
205
205
|
query: { text: "Submit" },
|
|
206
206
|
pressed: "PrimaryButton",
|
|
207
207
|
text: "Submit",
|
|
208
|
-
screen: "LoginScreen",
|
|
209
208
|
path: "LoginScreen > Form > PrimaryButton",
|
|
210
209
|
});
|
|
211
210
|
expect(result.success).toBe(true);
|
|
@@ -217,7 +216,6 @@ describe("formatTapFailure", () => {
|
|
|
217
216
|
it("includes attempted strategies and suggestion", () => {
|
|
218
217
|
const result = formatTapFailure({
|
|
219
218
|
query: { text: "hamburger" },
|
|
220
|
-
screen: "HomeScreen",
|
|
221
219
|
attempted: [{ strategy: "fiber", reason: "No match" }],
|
|
222
220
|
suggestion: "Use screenshot",
|
|
223
221
|
});
|