@ulpi/browse 1.4.4 → 2.3.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ulpi/browse",
3
- "version": "1.4.4",
3
+ "version": "2.3.0",
4
4
  "homepage": "https://browse.ulpi.io",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,12 +13,13 @@
13
13
  "better-sqlite3": "^11.0.0",
14
14
  "diff": "^7.0.0",
15
15
  "playwright": "^1.58.2",
16
- "playwright-core": "^1.58.2"
16
+ "playwright-core": "^1.58.2",
17
+ "yaml": "^2.8.3"
17
18
  },
18
19
  "bin": {
19
20
  "browse": "bin/browse"
20
21
  },
21
- "description": "Fast headless browser CLI persistent Chromium daemon via Playwright.",
22
+ "description": "Fast headless browser and native app automation CLI for AI coding agents. Android, iOS, and macOS.",
22
23
  "engines": {
23
24
  "node": ">=18.0.0"
24
25
  },
@@ -26,6 +27,10 @@
26
27
  "bin/",
27
28
  "dist/",
28
29
  "skill/",
30
+ "browse-ios-runner/BrowseRunnerApp/",
31
+ "browse-ios-runner/BrowseRunnerUITests/",
32
+ "browse-ios-runner/project.yml",
33
+ "browse-ios-runner/build.sh",
29
34
  "LICENSE",
30
35
  "README.md"
31
36
  ],
@@ -36,9 +41,14 @@
36
41
  "headless",
37
42
  "cli",
38
43
  "ai-agent",
39
- "claude"
44
+ "claude",
45
+ "android",
46
+ "ios",
47
+ "macos",
48
+ "mobile-testing",
49
+ "accessibility"
40
50
  ],
41
- "license": "MIT",
51
+ "license": "Apache-2.0",
42
52
  "publishConfig": {
43
53
  "access": "public"
44
54
  },
package/skill/SKILL.md CHANGED
@@ -53,6 +53,7 @@ To avoid being prompted on every browse command, tell the user they can pre-allo
53
53
  - The browser persists between calls — cookies, tabs, and state carry over.
54
54
  - The server auto-starts on first command. No manual setup needed.
55
55
  - Use `--session <id>` for parallel agent isolation. Each session gets its own tabs, refs, cookies.
56
+ - Use `--context` for state changes, `--context delta` for ARIA diff with refs, `--context full` for complete snapshot with refs after write commands.
56
57
  - Use `--json` for structured output (`{success, data, command}`).
57
58
  - Use `--content-boundaries` for prompt injection defense when reading untrusted pages.
58
59
  - Use `--allowed-domains domain1,domain2` to restrict navigation to trusted sites.
@@ -126,6 +127,20 @@ browse provider save browserbase <api-key>
126
127
  browse --provider browserbase goto https://example.com
127
128
  browse provider list
128
129
  browse provider delete browserbase
130
+
131
+ # Native app automation (Android, iOS, macOS)
132
+ browse sim start --platform android --app com.android.settings --visible
133
+ browse sim start --platform ios --app com.apple.Preferences --visible
134
+ browse --platform android --app com.android.settings snapshot -i
135
+ browse --platform ios --app com.apple.Preferences snapshot -i
136
+ browse --app "System Settings" snapshot -i # macOS
137
+ browse --platform android --app com.android.settings tap @e3
138
+ browse --platform android --app com.android.settings swipe up
139
+ browse --platform android --app com.android.settings press back
140
+ browse --platform ios --app com.apple.mobilesafari type "example.com"
141
+ browse --app TextEdit press "cmd+n" # macOS modifier combos
142
+ browse sim stop --platform android
143
+ browse sim stop --platform ios
129
144
  ```
130
145
 
131
146
  ## Command Reference
@@ -173,6 +188,20 @@ browse attrs @e6 Get attributes of ref @e6
173
188
 
174
189
  Refs are invalidated on navigation — run `snapshot` again after `goto`.
175
190
 
191
+ ### Native App Automation
192
+ ```
193
+ browse sim start --platform ios|android --app <id> [--visible] Start simulator/emulator + app
194
+ browse sim stop --platform ios|android Stop simulator/emulator
195
+ browse sim status --platform ios|android Check runner status
196
+ browse --platform ios --app <bundleId> <command> Target iOS app
197
+ browse --platform android --app <package> <command> Target Android app
198
+ browse --app <name> <command> Target macOS app
199
+ ```
200
+
201
+ Supported commands on all app platforms: `snapshot`, `text`, `tap`, `fill`, `type`, `press`, `swipe`, `screenshot`.
202
+ macOS also supports modifier combos: `browse --app TextEdit press "cmd+n"`.
203
+ Android auto-installs adb, Java, SDK, and emulator on first use (macOS via Homebrew).
204
+
176
205
  ### Interaction
177
206
  ```
178
207
  browse click <selector> Click element (CSS selector or @ref)
@@ -399,6 +428,10 @@ browse perf-audit [url] Full performance audit (Web Vitals, res
399
428
  browse perf-audit [url] --no-coverage Skip JS/CSS coverage collection (faster)
400
429
  browse perf-audit [url] --no-detect Skip framework/SaaS/infrastructure detection
401
430
  browse perf-audit [url] --json Output as structured JSON (for programmatic use)
431
+ browse perf-audit save [name] Save audit report to .browse/audits/ (auto-names from URL + date if omitted)
432
+ browse perf-audit compare <base> [curr] Compare saved baseline vs current page or another saved audit (regression detection)
433
+ browse perf-audit list List saved audit reports (name, size, date)
434
+ browse perf-audit delete <name> Delete a saved audit report
402
435
  browse detect Detect tech stack: frameworks, SaaS platforms, CDN, protocol, compression, caching, DOM complexity, third-party inventory
403
436
  browse coverage start Start JS/CSS code coverage collection
404
437
  browse coverage stop Stop collection and report per-file used/unused bytes
@@ -461,6 +461,24 @@ browse react-devtools owners <sel> Parent component chain
461
461
  browse react-devtools context <sel> Context values consumed by component
462
462
  ```
463
463
 
464
+ ## Performance audit
465
+ ```
466
+ browse perf-audit [url] Full performance audit (Web Vitals, resources, images, fonts, DOM, coverage, stack detection, recommendations)
467
+ browse perf-audit [url] --no-coverage Skip JS/CSS coverage (faster)
468
+ browse perf-audit [url] --no-detect Skip framework/SaaS detection
469
+ browse perf-audit [url] --json Structured JSON output
470
+ browse perf-audit save [name] Save audit report to .browse/audits/ (auto-names from URL + date)
471
+ browse perf-audit compare <base> [curr] Compare saved baseline vs current page or another saved audit
472
+ browse perf-audit list List saved audit reports
473
+ browse perf-audit delete <name> Delete a saved audit
474
+ browse detect Tech stack fingerprint (frameworks, SaaS, CDN, infra)
475
+ browse coverage start Start JS/CSS code coverage collection
476
+ browse coverage stop Stop and report per-file used/unused bytes
477
+ browse initscript set <code> Inject JS before every page load
478
+ browse initscript show Show current init script
479
+ browse initscript clear Remove init script
480
+ ```
481
+
464
482
  ## Server management
465
483
  ```
466
484
  browse status Server health, uptime, session count