craftdriver 1.0.3 → 1.1.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/CHANGELOG.md +25 -3
- package/README.md +80 -160
- package/dist/lib/browser.d.ts +22 -0
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +14 -1
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/chrome.d.ts +15 -3
- package/dist/lib/chrome.d.ts.map +1 -1
- package/dist/lib/chrome.js +4 -2
- package/dist/lib/chrome.js.map +1 -1
- package/dist/lib/driver.d.ts.map +1 -1
- package/dist/lib/driver.js +2 -0
- package/dist/lib/driver.js.map +1 -1
- package/dist/lib/driverManager.d.ts +31 -0
- package/dist/lib/driverManager.d.ts.map +1 -1
- package/dist/lib/driverManager.js +165 -31
- package/dist/lib/driverManager.js.map +1 -1
- package/dist/lib/firefox.d.ts +4 -3
- package/dist/lib/firefox.d.ts.map +1 -1
- package/dist/lib/firefox.js.map +1 -1
- package/dist/lib/http.d.ts +1 -1
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +35 -7
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/timing.d.ts +13 -0
- package/dist/lib/timing.d.ts.map +1 -1
- package/dist/lib/timing.js +13 -0
- package/dist/lib/timing.js.map +1 -1
- package/dist/lib/types.d.ts +2 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/docs/agents.md +92 -0
- package/docs/api-reference.md +108 -46
- package/docs/browser-api.md +2 -1
- package/docs/browser-context.md +4 -7
- package/docs/browser-logs.md +158 -0
- package/docs/cli.md +26 -26
- package/docs/driver-configuration.md +103 -4
- package/docs/element-api.md +37 -6
- package/docs/emulation.md +6 -2
- package/docs/index.md +64 -0
- package/docs/keyboard-mouse.md +28 -10
- package/docs/mobile-emulation.md +5 -2
- package/docs/network.md +203 -0
- package/docs/public/craftdriver-mark.svg +15 -0
- package/docs/public/social-card.svg +27 -0
- package/docs/recipes/accessibility-gate.md +53 -0
- package/docs/recipes/console-error-gate.md +57 -0
- package/docs/recipes/file-upload-download.md +58 -0
- package/docs/recipes/login-once-reuse-session.md +73 -0
- package/docs/recipes/mobile-flow-with-network-and-logs.md +57 -0
- package/docs/recipes/mock-api-and-assert-network.md +60 -0
- package/docs/recipes/multi-user-contexts.md +58 -0
- package/docs/recipes/trace-failing-test.md +64 -0
- package/docs/recipes/virtual-clock-time-sensitive-ui.md +60 -0
- package/docs/recipes/vitest-browser-lifecycle.md +56 -0
- package/docs/recipes.md +33 -0
- package/docs/selectors.md +22 -1
- package/docs/session-management.md +18 -1
- package/docs/standards.md +40 -0
- package/docs/why-craftdriver.md +28 -0
- package/docs/zero-config-drivers.md +64 -0
- package/package.json +19 -5
- package/docs/bidi-features.md +0 -470
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
# [1.1.0](https://github.com/dtopuzov/craftdriver/compare/v1.0.4...v1.1.0) (2026-07-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add browserPath to launch a custom browser binary (Chrome/Chromium/Firefox) ([127d11d](https://github.com/dtopuzov/craftdriver/commit/127d11d9db2877d764253c7359c543abcef8fd0c))
|
|
7
|
+
* auto-detect CI-provided driver directories (GitHub Actions) ([bcd389f](https://github.com/dtopuzov/craftdriver/commit/bcd389f4e180e32cc034e0ace61898195f8f7837))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Performance Improvements
|
|
11
|
+
|
|
12
|
+
* measure CI-detection savings vs the PATH-probe/version-detect fallback ([a64c2df](https://github.com/dtopuzov/craftdriver/commit/a64c2df51f14be71c791b6c4549f5827df9abb2e))
|
|
13
|
+
|
|
14
|
+
## [1.0.4](https://github.com/dtopuzov/craftdriver/compare/v1.0.3...v1.0.4) (2026-07-09)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* bound session creation with a request timeout ([5b67d24](https://github.com/dtopuzov/craftdriver/commit/5b67d2496293ad174540c33bd827b2b262fc0d5a))
|
|
20
|
+
* isolate driver downloads to per-call temp dirs ([11e38ad](https://github.com/dtopuzov/craftdriver/commit/11e38adfb4e65a6b6787cb35f89c2570ed7cd339))
|
|
21
|
+
|
|
1
22
|
## [1.0.3](https://github.com/dtopuzov/craftdriver/compare/v1.0.2...v1.0.3) (2026-07-07)
|
|
2
23
|
|
|
3
24
|
|
|
@@ -124,6 +145,7 @@ Fixes: https://github.com/dtopuzov/craftdriver/issues/20
|
|
|
124
145
|
|
|
125
146
|
## Unreleased
|
|
126
147
|
|
|
148
|
+
- docs: refresh the README as a product front door, add a VitePress documentation site with GitHub Pages deployment, add proof pages/launch kit/social card, and add contribution files (issue forms, PR template, code of conduct).
|
|
127
149
|
- **breaking** (pre-1.0): BiDi console/error log capture is lazy by default. Messages emitted before the first `browser.logs` / `onConsole` / `onError` / `waitForConsole` touch are no longer captured unless `Browser.launch({ captureLogs: true })` is used to arm logging at launch.
|
|
128
150
|
- feat(launch): add `Browser.launch({ args })` for opt-in browser flags, forwarded to `goog:chromeOptions.args` for Chrome/Chromium and `moz:firefoxOptions.args` for Firefox. Craftdriver still sets no performance flags by default.
|
|
129
151
|
- perf(bidi): reduce the issue #20 BiDi/Classic per-command regression by routing common `waitUntil: 'load'` navigations through Classic when safe, batching BiDi connect-time work into one parallel `getTree` + `session.subscribe` batch, removing three redundant context-event subscriptions, making log capture lazy, and pooling Classic HTTP connections with keep-alive. New `npm run bench` harnesses cover the light flow, heavier registration-shaped flow, launch critical path, and optional real-app registration flow.
|
|
@@ -134,8 +156,8 @@ Fixes: https://github.com/dtopuzov/craftdriver/issues/20
|
|
|
134
156
|
- fix(driver-manager): stale cached chromedriver auto-resolution now self-heals after a Chrome major-version update. If session creation reports the classic "ChromeDriver only supports Chrome version X" mismatch and the running driver came from the auto-resolution cache, craftdriver clears that metadata entry, stops the stale service, and retries launch once so users do not wait up to the 24h TTL.
|
|
135
157
|
- refactor(timing): centralize poll intervals, default timeouts, fixed delays, and retry policy in `src/lib/timing.ts`; route `expect(...)` matchers through one shared polling helper; and DRY the driver-resolution TTL metadata helpers.
|
|
136
158
|
- docs: refresh BiDi/protocol guidance, lazy-log docs, driver-resolution performance guidance, route-handler examples, dialog/emulation transport notes, mouse signatures, storage-origin wording, and contributor setup now that drivers auto-download.
|
|
137
|
-
- chore(deps): pin the vendored npm used by `@semantic-release/npm` to a version that bundles patched `undici`, clearing the dev/release-tooling
|
|
138
|
-
- fix
|
|
159
|
+
- chore(deps): pin the vendored npm used by `@semantic-release/npm` to a version that bundles patched `undici`, clearing the dev/release-tooling finding without changing craftdriver runtime dependencies.
|
|
160
|
+
- fix: clamp user-supplied `timeout` and `idleDuration` values passed to `setTimeout` in `waitForNetworkIdle` (network.ts) and `waitForLoadState` (browser.ts) to prevent resource exhaustion from unbounded timer durations. The `ms()` helper in `dispatcher.ts` (the socket→number boundary for the CLI daemon) now also caps at 300,000 ms so the sanitization happens at the untrusted-input boundary rather than deep in the call chain. Caps: 300,000 ms for timeouts, 60,000 ms for idle durations.
|
|
139
161
|
- fix(tests): `driver-manager.test.ts` integration test was silently short-circuiting on systems where `chromedriver` is already on `PATH` (ubuntu-latest CI runners, nvm-managed Node envs). The resolution chain hit the PATH probe at step 5 before ever reaching the auto-download step, so nothing was written to the cache directory and the cache assertions failed. Fix: `beforeAll` now filters chromedriver-containing directories out of `PATH` to force the download path; `PATH` is restored in `afterAll`.
|
|
140
162
|
|
|
141
163
|
- fix(browser-context): `page.context()` now returns `browser.defaultContext` for pages opened via `browser.openPage()` / `browser.waitForPage()` / `browser.pages()` / `browser.activePage()` instead of `undefined`. Previously these pages lived in the default user context at the BiDi layer but had no owner wired up, which meant `page.navigateTo('/foo')` silently ignored the default context's `baseURL`, and the model leaked. New regression test in [tests/browser-context-hooks.test.ts](tests/browser-context-hooks.test.ts).
|
|
@@ -183,7 +205,7 @@ Fixes: https://github.com/dtopuzov/craftdriver/issues/20
|
|
|
183
205
|
- **breaking** (pre-1.0): `KeyboardController` / `MouseController` renamed to `Keyboard` / `Mouse` for Playwright parity. Re-exported from `src/index.ts`.
|
|
184
206
|
- feat: `By.text(text, { exact: false })` is now sugar for `By.partialText(text)`. `getByText` and `By.text` share one vocabulary.
|
|
185
207
|
- docs: dedicated [docs/dialogs.md](docs/dialogs.md); browser-api dialogs section trimmed to a callout. Attached-vs-visible gloss added to the waiting section. `By.role({ includeHidden })` documented in [docs/selectors.md](docs/selectors.md). `browser.actions()` gets a runnable shift-drag example in [docs/browser-api.md](docs/browser-api.md).
|
|
186
|
-
- docs:
|
|
208
|
+
- docs: feature-availability notes added to the browser capability docs, timeout-defaults table added in [docs/browser-api.md](docs/browser-api.md), mobile-emulation Chrome-only callout promoted to the top of [docs/mobile-emulation.md](docs/mobile-emulation.md), cleanup / failure-recovery guidance added to [docs/browser-api.md](docs/browser-api.md).
|
|
187
209
|
- feat: re-export `Keyboard` and `Mouse` (was `KeyboardController` / `MouseController`) from [src/index.ts](src/index.ts).
|
|
188
210
|
- **breaking** (pre-1.0): remove deprecated aliases `Browser.waitForNewContext()` and `LogMonitor.getConsoleLogs()`. One API per concept; no aliases pre-1.0.
|
|
189
211
|
- **breaking** (pre-1.0): rename `By.nameAttr` → `By.name` and `By.tag` → `By.tagName` for parity with Selenium's canonical `By` API.
|
package/README.md
CHANGED
|
@@ -1,208 +1,128 @@
|
|
|
1
|
-
#
|
|
1
|
+
# CraftDriver 🍺
|
|
2
2
|
|
|
3
3
|
[](https://github.com/dtopuzov/craftdriver/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/craftdriver)
|
|
5
|
-
[](https://www.npmjs.com/package/craftdriver)
|
|
6
|
+
[](https://dtopuzov.github.io/craftdriver/)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](./LICENSE)
|
|
6
9
|
|
|
7
|
-
Crafted Node.js browser automation built
|
|
10
|
+
Crafted Node.js browser automation built on W3C WebDriver and BiDi.
|
|
8
11
|
|
|
9
|
-
**Playwright
|
|
12
|
+
**Playwright-style ergonomics. WebDriver standards. AI friendly.**
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
CraftDriver is for writing boringly reliable automation against real browsers, with code that reads nicely.
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
## Why CraftDriver?
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
- 🍺 **Focused Node.js API** - browser automation without a giant framework around it.
|
|
19
|
+
- 🧭 **Real browsers** - drives installed Chrome, Chromium, and Firefox instead of patched browser engine builds.
|
|
20
|
+
- 🌐 **Standards that age well** - W3C WebDriver standards stay stable while browser-private protocols change.
|
|
21
|
+
- 🚦 **Readable, auto-waited flows** - role, label, text, test id, CSS, XPath, click, fill, and expect.
|
|
22
|
+
- 📡 **Network control** - mock, block, intercept, and wait for browser requests and responses.
|
|
23
|
+
- 🔐 **Reusable sessions** - save cookies and localStorage, then launch already signed in.
|
|
24
|
+
- ⏱️ **Virtual clock** - freeze or fast-forward `Date`, timers, and time-sensitive UI.
|
|
25
|
+
- ♿ **Accessibility audits** - run axe-core checks on pages, elements, and locators.
|
|
26
|
+
- 🧾 **Trace evidence** - capture actions, console output, errors, network events, and screenshots.
|
|
27
|
+
- 🤖 **Agent-friendly** - CLI, MCP, and assistant rules when coding agents need the browser.
|
|
16
28
|
|
|
17
|
-
##
|
|
29
|
+
## Choose Your Path
|
|
30
|
+
|
|
31
|
+
| You want to... | Start here |
|
|
32
|
+
| --------------------------------- | ------------------------------------------------------------------------- |
|
|
33
|
+
| Write browser automation | [Getting started](https://dtopuzov.github.io/craftdriver/getting-started) |
|
|
34
|
+
| Give an AI coding agent a browser | [AI agent guide](https://dtopuzov.github.io/craftdriver/agents) |
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
18
37
|
|
|
19
38
|
```bash
|
|
20
39
|
npm install craftdriver --save-dev
|
|
21
40
|
```
|
|
22
41
|
|
|
23
|
-
That's it.
|
|
24
|
-
No drivers, no extra steps to install browsers.
|
|
25
|
-
|
|
26
|
-
Quick example:
|
|
27
|
-
|
|
28
42
|
```ts
|
|
29
43
|
import { Browser } from 'craftdriver';
|
|
30
44
|
|
|
31
45
|
const browser = await Browser.launch({ browserName: 'chrome' });
|
|
32
46
|
|
|
33
|
-
await browser.navigateTo('https://example.com');
|
|
34
|
-
await browser.
|
|
35
|
-
await browser.
|
|
36
|
-
await browser.
|
|
47
|
+
await browser.navigateTo('https://example.com/login');
|
|
48
|
+
await browser.getByLabel('Username').fill('alice');
|
|
49
|
+
await browser.getByLabel('Password').fill('hunter2');
|
|
50
|
+
await browser.getByRole('button', { name: 'Sign in' }).click();
|
|
37
51
|
await browser.expect('#result').toHaveText('Welcome alice');
|
|
38
52
|
|
|
39
53
|
await browser.quit();
|
|
40
54
|
```
|
|
41
55
|
|
|
42
|
-
|
|
56
|
+
No separate chromedriver or geckodriver setup for normal use. CraftDriver resolves and caches the right driver for your installed browser.
|
|
43
57
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
58
|
+
## AI Agent Bonus
|
|
59
|
+
|
|
60
|
+
If your coding agent can use a shell or MCP, CraftDriver can give it a real browser too. Same selectors, same behavior, same error codes as the library API.
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npx craftdriver init agents
|
|
64
|
+
claude mcp add craftdriver -- npx -y craftdriver mcp
|
|
49
65
|
```
|
|
50
66
|
|
|
51
|
-
|
|
67
|
+
See the [AI agent guide](https://dtopuzov.github.io/craftdriver/agents) when you need the full setup.
|
|
68
|
+
|
|
69
|
+
## What It Can Do
|
|
52
70
|
|
|
53
71
|
```ts
|
|
54
|
-
|
|
72
|
+
// Mobile emulation
|
|
73
|
+
await Browser.launch({
|
|
74
|
+
browserName: 'chrome',
|
|
75
|
+
mobileEmulation: 'iPhone 14',
|
|
76
|
+
});
|
|
55
77
|
|
|
78
|
+
// Network mocking
|
|
56
79
|
await browser.network.mock('**/api/users', {
|
|
57
80
|
status: 200,
|
|
58
81
|
body: { users: [] },
|
|
59
82
|
});
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Session persistence:
|
|
63
83
|
|
|
64
|
-
|
|
84
|
+
// Save and reuse login state
|
|
65
85
|
await browser.saveState('./session.json');
|
|
66
86
|
|
|
67
|
-
|
|
68
|
-
const browser2 = await Browser.launch({
|
|
87
|
+
await Browser.launch({
|
|
69
88
|
browserName: 'chrome',
|
|
70
89
|
storageState: './session.json',
|
|
71
90
|
});
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## AI Productivity Tooling
|
|
75
|
-
|
|
76
|
-
`craftdriver` ships three surfaces for AI agents (Copilot, Claude
|
|
77
|
-
Code, Cursor, Codex, Gemini CLI, …), in addition to the library:
|
|
78
|
-
|
|
79
|
-
If you want Craftdriver to work well with coding agents on day one, this is the stack: a shell-friendly CLI, an MCP server for tool-calling hosts, packaged skills, and `craftdriver init` to drop the right repo instructions into place.
|
|
80
|
-
|
|
81
|
-
- **CLI** (this section) — a `craftdriver` binary for shell-capable agents.
|
|
82
|
-
- **Skill pack** — ready-to-load rules at [skills/craftdriver/](./skills/craftdriver/),
|
|
83
|
-
shipped in the npm tarball.
|
|
84
|
-
- **MCP server** — stdio JSON-RPC for sandboxed hosts. See below.
|
|
85
|
-
- **`craftdriver init`** — drop per-project rules files for the popular
|
|
86
|
-
assistants (Copilot, Claude, Cursor, Gemini, Codex / AGENTS.md).
|
|
87
91
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
The `craftdriver` binary is for shell scripts, ad-hoc exploration, and
|
|
91
|
-
shell-capable AI agents. It wraps the same Browser API as the library,
|
|
92
|
-
with fail-fast defaults tuned for probing instead of stable test runs.
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
# terminal 1 — keep a long-lived browser around
|
|
96
|
-
npx craftdriver daemon start
|
|
97
|
-
|
|
98
|
-
# terminal 2 — drive it
|
|
99
|
-
npx craftdriver go http://127.0.0.1:8080/login.html
|
|
100
|
-
npx craftdriver fill '#username' alice
|
|
101
|
-
npx craftdriver fill '#password' hunter2
|
|
102
|
-
npx craftdriver click 'button[type=submit]'
|
|
103
|
-
npx craftdriver wait '#result' --state visible
|
|
104
|
-
npx craftdriver text '#result'
|
|
105
|
-
|
|
106
|
-
npx craftdriver daemon stop
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
State (page, cookies, storage) survives between calls — the CLI feels
|
|
110
|
-
like a REPL for the browser. For sandboxed environments that can't keep
|
|
111
|
-
a daemon, pipe a script through `--ephemeral` instead.
|
|
112
|
-
|
|
113
|
-
Selectors are CSS by default; switch with a `prefix=value` form
|
|
114
|
-
(`role=button[name=Submit]`, `text=Sign In`, `label=Email`,
|
|
115
|
-
`placeholder=...`, `testid=...`, `xpath=...`). Output is pretty on a
|
|
116
|
-
TTY and JSON when piped. Every error carries the same stable `code` and
|
|
117
|
-
`hint:` as the library. See [docs/cli.md](./docs/cli.md) for the full
|
|
118
|
-
command list and selector reference.
|
|
119
|
-
|
|
120
|
-
### Teach your AI assistant
|
|
121
|
-
|
|
122
|
-
`craftdriver init <flavor>` writes a short rules file into your project
|
|
123
|
-
so Copilot, Claude, Cursor, Codex, Gemini, OpenCode, Aider, …
|
|
124
|
-
pick up the right conventions on every turn (selector preference,
|
|
125
|
-
auto-waiting, error codes, CLI usage). Per-project, checked into git,
|
|
126
|
-
zero runtime cost.
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
npx craftdriver init copilot # .github/copilot-instructions.md
|
|
130
|
-
npx craftdriver init claude # CLAUDE.md
|
|
131
|
-
npx craftdriver init cursor # .cursor/rules/craftdriver.mdc
|
|
132
|
-
npx craftdriver init gemini # GEMINI.md
|
|
133
|
-
npx craftdriver init agents # AGENTS.md (Codex, OpenCode, Aider, Amp, Cursor)
|
|
134
|
-
npx craftdriver init all # every file above
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
Use `--force` to overwrite existing files, `--dry-run` to preview.
|
|
138
|
-
|
|
139
|
-
### Skill pack
|
|
140
|
-
|
|
141
|
-
For agents that load skills explicitly (Claude Code's Skills system,
|
|
142
|
-
Copilot agent customization, custom orchestrators), the npm tarball
|
|
143
|
-
ships a tiered skill pack under [skills/craftdriver/](./skills/craftdriver/):
|
|
144
|
-
|
|
145
|
-
- [`SKILL.md`](./skills/craftdriver/SKILL.md) — always-on, ≤ 500 tokens.
|
|
146
|
-
Decision rules: selector preference order, error-code-first error
|
|
147
|
-
handling, the auto-wait contract, when to reach for CLI/MCP.
|
|
148
|
-
- [`cheatsheet.md`](./skills/craftdriver/cheatsheet.md) — command-by-command
|
|
149
|
-
reference for writing tests.
|
|
150
|
-
- [`patterns.md`](./skills/craftdriver/patterns.md) — worked recipes
|
|
151
|
-
(login, upload, network-wait, a11y, tracing, virtual clock).
|
|
152
|
-
- [`cli.md`](./skills/craftdriver/cli.md) — agent-facing CLI reference.
|
|
153
|
-
|
|
154
|
-
Point your agent at `node_modules/craftdriver/skills/craftdriver/SKILL.md`
|
|
155
|
-
(or copy the file into your project) and the rest is loaded on demand.
|
|
156
|
-
|
|
157
|
-
### MCP server
|
|
158
|
-
|
|
159
|
-
For agents that talk [Model Context Protocol](https://modelcontextprotocol.io)
|
|
160
|
-
(Claude Desktop / Code, Cursor, Windsurf, Zed, Goose, Gemini CLI, …),
|
|
161
|
-
`craftdriver mcp` exposes the same dispatcher as a stdio JSON-RPC
|
|
162
|
-
server with 14 schema-typed tools. Mutating tools return a **compact
|
|
163
|
-
a11y snapshot diffed from the previous turn** — the agent sees what
|
|
164
|
-
changed on the page without a follow-up read.
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
# Claude Code
|
|
168
|
-
claude mcp add craftdriver -- npx -y craftdriver mcp
|
|
92
|
+
// Built-in accessibility checks via axe-core
|
|
93
|
+
await browser.a11y.check();
|
|
169
94
|
```
|
|
170
95
|
|
|
171
|
-
```jsonc
|
|
172
|
-
// Cursor / Windsurf / Zed
|
|
173
|
-
{
|
|
174
|
-
"mcpServers": {
|
|
175
|
-
"craftdriver": { "command": "npx", "args": ["-y", "craftdriver", "mcp"] }
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
See [docs/mcp.md](./docs/mcp.md) for the full tool list, install
|
|
181
|
-
snippets for every host, and the snapshot format.
|
|
182
|
-
|
|
183
96
|
## Feature Guide
|
|
184
97
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
|
188
|
-
|
|
|
189
|
-
|
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
| Screenshots
|
|
199
|
-
| Mobile and emulation | Device presets, viewport
|
|
200
|
-
| Browser contexts
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
|
|
|
205
|
-
|
|
98
|
+
| Area | What you get | Learn more |
|
|
99
|
+
| -------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
100
|
+
| Getting started | Install, launch a browser, write the first test | [Getting started](https://dtopuzov.github.io/craftdriver/getting-started) |
|
|
101
|
+
| Driver management | Zero-config driver resolution, cache behavior, env vars, offline mode | [Driver configuration](https://dtopuzov.github.io/craftdriver/driver-configuration) |
|
|
102
|
+
| Browser control | Navigation, tabs, popups, iframes, content helpers, evaluate, init scripts | [Browser API](https://dtopuzov.github.io/craftdriver/browser-api) |
|
|
103
|
+
| Locators | CSS, XPath, text, role, label, test id, and composable `locator()` chains | [Selectors](https://dtopuzov.github.io/craftdriver/selectors) |
|
|
104
|
+
| Element actions | Click, fill, upload, inspect, and interact through element handles | [Element API](https://dtopuzov.github.io/craftdriver/element-api) |
|
|
105
|
+
| Assertions | Built-in `expect(...)`, retries, visibility, text, attributes, and timing behavior | [Assertions](https://dtopuzov.github.io/craftdriver/assertions) |
|
|
106
|
+
| Input | Low-level key presses, mouse movement, hover, drag, and pointer input | [Keyboard and mouse](https://dtopuzov.github.io/craftdriver/keyboard-mouse) |
|
|
107
|
+
| Dialogs | `alert`, `confirm`, `prompt`, and `beforeunload` handling | [Dialogs](https://dtopuzov.github.io/craftdriver/dialogs) |
|
|
108
|
+
| Sessions | Cookies, localStorage, save/load state, persistent login flows | [Session management](https://dtopuzov.github.io/craftdriver/session-management) |
|
|
109
|
+
| Network mocking | Mock, block, intercept, and wait for browser requests and responses | [Network mocking](https://dtopuzov.github.io/craftdriver/network) |
|
|
110
|
+
| Console and errors | Capture console output and fail tests on JavaScript errors | [Console logs](https://dtopuzov.github.io/craftdriver/browser-logs) |
|
|
111
|
+
| Screenshots | Page and element screenshots for tests and debugging | [Screenshots](https://dtopuzov.github.io/craftdriver/screenshots) |
|
|
112
|
+
| Mobile and emulation | Device presets, viewport, locale, timezone, offline, reduced motion | [Mobile emulation](https://dtopuzov.github.io/craftdriver/mobile-emulation), [Emulation](https://dtopuzov.github.io/craftdriver/emulation) |
|
|
113
|
+
| Browser contexts | Isolated profiles for multi-user and multi-session testing | [Browser contexts](https://dtopuzov.github.io/craftdriver/browser-context) |
|
|
114
|
+
| Tracing | Crash-resilient NDJSON traces and evidence screenshots | [Tracing](https://dtopuzov.github.io/craftdriver/tracing) |
|
|
115
|
+
| Accessibility | Built-in axe-core audits for page, element, and locator scopes | [Accessibility](https://dtopuzov.github.io/craftdriver/accessibility) |
|
|
116
|
+
| Virtual time | Fake `Date`, `setTimeout`, and `setInterval` for time-sensitive flows | [Virtual clock](https://dtopuzov.github.io/craftdriver/clock) |
|
|
117
|
+
| AI agents | CLI, MCP server, assistant bootstrap, packaged skill files | [AI agent guide](https://dtopuzov.github.io/craftdriver/agents) |
|
|
118
|
+
|
|
119
|
+
## Links
|
|
120
|
+
|
|
121
|
+
- [Documentation site](https://dtopuzov.github.io/craftdriver/)
|
|
122
|
+
- [API reference](https://dtopuzov.github.io/craftdriver/api-reference)
|
|
123
|
+
- [Recipes](https://dtopuzov.github.io/craftdriver/recipes)
|
|
124
|
+
- [Changelog](./CHANGELOG.md)
|
|
125
|
+
- [Contributing guide](./CONTRIBUTING.md)
|
|
206
126
|
|
|
207
127
|
## Contributing
|
|
208
128
|
|
package/dist/lib/browser.d.ts
CHANGED
|
@@ -178,6 +178,28 @@ export interface LaunchOptions {
|
|
|
178
178
|
* `FirefoxService`.
|
|
179
179
|
*/
|
|
180
180
|
args?: string[];
|
|
181
|
+
/**
|
|
182
|
+
* A custom **browser** binary to launch — Chrome, Chromium, or Firefox.
|
|
183
|
+
* Distinct from `chromeService`/`firefoxService`'s `binaryPath`, which names
|
|
184
|
+
* the *driver* (chromedriver/geckodriver), not the browser.
|
|
185
|
+
*
|
|
186
|
+
* When omitted, craftdriver resolves it from (first match wins):
|
|
187
|
+
* 1. `CRAFTDRIVER_CHROME_PATH` / `CRAFTDRIVER_FIREFOX_PATH` env var
|
|
188
|
+
* 2. `CRAFTDRIVER_BROWSER_PATH` env var (generic fallback — forwarded as-is
|
|
189
|
+
* regardless of browser, so avoid it when launching both in one job)
|
|
190
|
+
* 3. `CHROME_BIN` / `FIREFOX_BIN` env var (common CI convention)
|
|
191
|
+
* 4. `SE_CHROME_PATH` / `SE_FIREFOX_PATH` env var (Selenium Manager convention)
|
|
192
|
+
*
|
|
193
|
+
* This option itself is opt-in, but steps 2–4 read ambient env vars other
|
|
194
|
+
* tools (Karma, Selenium Manager) may already export for their own
|
|
195
|
+
* purposes — if one happens to be set, craftdriver forwards it even though
|
|
196
|
+
* you never touched craftdriver config. If none resolve, craftdriver
|
|
197
|
+
* forwards nothing and chromedriver/geckodriver fall back to their own
|
|
198
|
+
* built-in browser discovery. An invalid candidate at any step logs a
|
|
199
|
+
* `[craftdriver]` note to stderr and falls through rather than failing
|
|
200
|
+
* silently. See "Browser Binary Configuration" in docs/driver-configuration.md.
|
|
201
|
+
*/
|
|
202
|
+
browserPath?: string;
|
|
181
203
|
}
|
|
182
204
|
/**
|
|
183
205
|
* When to consider a navigation complete.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/browser.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Builder } from './builder.js';
|
|
2
2
|
import { ChromeService } from './chrome.js';
|
|
3
3
|
import { FirefoxService } from './firefox.js';
|
|
4
|
+
import { resolveBrowserBinaryPath } from './driverManager.js';
|
|
4
5
|
import { By } from './by.js';
|
|
5
6
|
import { until } from './wait.js';
|
|
6
7
|
import { DEFAULT_ELEMENT_TIMEOUT_MS, DEFAULT_NAVIGATION_TIMEOUT_MS, STATE_POLL_INTERVAL_MS, NETWORK_IDLE_SETTLE_MS, PORT_RELEASE_DELAY_MS, BIDI_CONNECT_MAX_ATTEMPTS, BIDI_CONNECT_BACKOFF_STEP_MS, EVAL_REALM_RETRY_ATTEMPTS, EVAL_REALM_RETRY_DELAY_MS, } from './timing.js';
|
|
@@ -231,6 +232,12 @@ export class Browser {
|
|
|
231
232
|
// Set up downloads directory
|
|
232
233
|
const downloadsDir = options.downloadsDir ?? path.join(os.tmpdir(), 'craftdriver-downloads', `session-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
233
234
|
await fs.mkdir(downloadsDir, { recursive: true });
|
|
235
|
+
// Custom browser binary (Chrome/Chromium/Firefox). When unresolved,
|
|
236
|
+
// nothing is forwarded and the driver uses its own built-in browser
|
|
237
|
+
// discovery — but see resolveBrowserBinaryPath's doc: some of the env
|
|
238
|
+
// vars in this chain aren't craftdriver-opt-in, they're ambient
|
|
239
|
+
// conventions other tools may already have set.
|
|
240
|
+
const browserPath = resolveBrowserBinaryPath(isChromeFamily ? 'chrome' : 'firefox', options.browserPath);
|
|
234
241
|
let caps = {};
|
|
235
242
|
if (isChromeFamily) {
|
|
236
243
|
const chromeOptions = {
|
|
@@ -241,6 +248,8 @@ export class Browser {
|
|
|
241
248
|
'safebrowsing.enabled': true,
|
|
242
249
|
},
|
|
243
250
|
};
|
|
251
|
+
if (browserPath)
|
|
252
|
+
chromeOptions.binary = browserPath;
|
|
244
253
|
// Add mobile emulation if specified
|
|
245
254
|
if (options.mobileEmulation) {
|
|
246
255
|
const emulation = typeof options.mobileEmulation === 'string'
|
|
@@ -285,6 +294,7 @@ export class Browser {
|
|
|
285
294
|
'browser.helperApps.neverAsk.saveToDisk': 'application/octet-stream,application/pdf,text/plain,text/csv,application/zip',
|
|
286
295
|
'pdfjs.disabled': true,
|
|
287
296
|
},
|
|
297
|
+
...(browserPath ? { binary: browserPath } : {}),
|
|
288
298
|
};
|
|
289
299
|
}
|
|
290
300
|
if (options.enableBiDi !== false) {
|
|
@@ -301,7 +311,10 @@ export class Browser {
|
|
|
301
311
|
const builder = new Builder().forBrowser(name);
|
|
302
312
|
let driverService;
|
|
303
313
|
if (isChromeFamily) {
|
|
304
|
-
|
|
314
|
+
// Only thread browserPath into a default ChromeService — a
|
|
315
|
+
// caller-supplied one is expected to already pin what it needs (same
|
|
316
|
+
// reasoning as explicit config always winning over auto-detection).
|
|
317
|
+
driverService = options.chromeService ?? new ChromeService({ browserPath });
|
|
305
318
|
builder.setChromeService(driverService);
|
|
306
319
|
}
|
|
307
320
|
else {
|