@ulpi/browse 1.4.4 → 2.3.1
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/LICENSE +191 -21
- package/README.md +186 -12
- package/bin/browse-android-app.apk +0 -0
- package/bin/browse-android.apk +0 -0
- package/bin/browse-ax +0 -0
- package/bin/browse-ios-runner/BrowseRunnerApp/BrowseRunnerApp.swift +382 -0
- package/bin/browse-ios-runner/BrowseRunnerApp/RunnerStatusStore.swift +135 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/ActionHandler.swift +277 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/BrowseRunnerUITests.swift +60 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/Models.swift +78 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/RunnerServer.swift +246 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/ScreenshotHandler.swift +35 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/StateHandler.swift +82 -0
- package/bin/browse-ios-runner/BrowseRunnerUITests/TreeBuilder.swift +323 -0
- package/bin/browse-ios-runner/build.sh +81 -0
- package/bin/browse-ios-runner/project.yml +47 -0
- package/browse-ios-runner/BrowseRunnerApp/BrowseRunnerApp.swift +382 -0
- package/browse-ios-runner/BrowseRunnerApp/RunnerStatusStore.swift +135 -0
- package/browse-ios-runner/BrowseRunnerUITests/ActionHandler.swift +277 -0
- package/browse-ios-runner/BrowseRunnerUITests/BrowseRunnerUITests.swift +60 -0
- package/browse-ios-runner/BrowseRunnerUITests/Models.swift +78 -0
- package/browse-ios-runner/BrowseRunnerUITests/RunnerServer.swift +246 -0
- package/browse-ios-runner/BrowseRunnerUITests/ScreenshotHandler.swift +35 -0
- package/browse-ios-runner/BrowseRunnerUITests/StateHandler.swift +82 -0
- package/browse-ios-runner/BrowseRunnerUITests/TreeBuilder.swift +323 -0
- package/browse-ios-runner/README.md +194 -0
- package/browse-ios-runner/build.sh +81 -0
- package/browse-ios-runner/project.yml +47 -0
- package/dist/browse.cjs +26595 -13648
- package/package.json +15 -5
- package/skill/SKILL.md +33 -0
- package/skill/references/commands.md +18 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ulpi/browse",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.3.1",
|
|
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
|
|
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": "
|
|
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
|