craftdriver 1.8.0 → 1.9.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 +6 -5
- package/README.md +3 -2
- package/dist/cli/pageSemantics.d.ts +3 -39
- package/dist/cli/pageSemantics.d.ts.map +1 -1
- package/dist/cli/pageSemantics.js +3 -191
- package/dist/cli/pageSemantics.js.map +1 -1
- package/dist/cli/selector.d.ts +3 -3
- package/dist/cli/selector.d.ts.map +1 -1
- package/dist/cli/selector.js +6 -9
- package/dist/cli/selector.js.map +1 -1
- package/dist/cli/snapshot.d.ts +5 -6
- package/dist/cli/snapshot.d.ts.map +1 -1
- package/dist/cli/snapshot.js +59 -18
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/a11y.d.ts +6 -2
- package/dist/lib/a11y.d.ts.map +1 -1
- package/dist/lib/a11y.js +3 -1
- package/dist/lib/a11y.js.map +1 -1
- package/dist/lib/bidi/evaluate.d.ts +11 -0
- package/dist/lib/bidi/evaluate.d.ts.map +1 -0
- package/dist/lib/bidi/evaluate.js +25 -0
- package/dist/lib/bidi/evaluate.js.map +1 -0
- package/dist/lib/bidi/types.d.ts +2 -0
- package/dist/lib/bidi/types.d.ts.map +1 -1
- package/dist/lib/browser.d.ts +1 -1
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +46 -35
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/browserContext.d.ts +4 -6
- package/dist/lib/browserContext.d.ts.map +1 -1
- package/dist/lib/browserContext.js +5 -7
- package/dist/lib/browserContext.js.map +1 -1
- package/dist/lib/by.d.ts +65 -27
- package/dist/lib/by.d.ts.map +1 -1
- package/dist/lib/by.js +47 -20
- package/dist/lib/by.js.map +1 -1
- package/dist/lib/clearFastPath.d.ts.map +1 -1
- package/dist/lib/clearFastPath.js +2 -0
- package/dist/lib/clearFastPath.js.map +1 -1
- package/dist/lib/clickFastPath.d.ts.map +1 -1
- package/dist/lib/clickFastPath.js +2 -0
- package/dist/lib/clickFastPath.js.map +1 -1
- package/dist/lib/driver.d.ts +19 -0
- package/dist/lib/driver.d.ts.map +1 -1
- package/dist/lib/driver.js +111 -4
- package/dist/lib/driver.js.map +1 -1
- package/dist/lib/elementHandle.d.ts +13 -10
- package/dist/lib/elementHandle.d.ts.map +1 -1
- package/dist/lib/elementHandle.js +119 -50
- package/dist/lib/elementHandle.js.map +1 -1
- package/dist/lib/errors.d.ts +5 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +5 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/expect.d.ts +10 -0
- package/dist/lib/expect.d.ts.map +1 -1
- package/dist/lib/expect.js +76 -49
- package/dist/lib/expect.js.map +1 -1
- package/dist/lib/fillFastPath.d.ts.map +1 -1
- package/dist/lib/fillFastPath.js +2 -0
- package/dist/lib/fillFastPath.js.map +1 -1
- package/dist/lib/frame.d.ts.map +1 -1
- package/dist/lib/frame.js +29 -17
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/locator.d.ts +21 -54
- package/dist/lib/locator.d.ts.map +1 -1
- package/dist/lib/locator.js +165 -208
- package/dist/lib/locator.js.map +1 -1
- package/dist/lib/page.d.ts.map +1 -1
- package/dist/lib/page.js +23 -13
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/pageSemantics.d.ts +42 -0
- package/dist/lib/pageSemantics.d.ts.map +1 -0
- package/dist/lib/pageSemantics.js +216 -0
- package/dist/lib/pageSemantics.js.map +1 -0
- package/dist/lib/query.d.ts +68 -0
- package/dist/lib/query.d.ts.map +1 -0
- package/dist/lib/query.js +590 -0
- package/dist/lib/query.js.map +1 -0
- package/dist/lib/shadowRoot.d.ts +21 -0
- package/dist/lib/shadowRoot.d.ts.map +1 -0
- package/dist/lib/shadowRoot.js +29 -0
- package/dist/lib/shadowRoot.js.map +1 -0
- package/dist/lib/shadowRootLocator.d.ts +31 -0
- package/dist/lib/shadowRootLocator.d.ts.map +1 -0
- package/dist/lib/shadowRootLocator.js +55 -0
- package/dist/lib/shadowRootLocator.js.map +1 -0
- package/dist/lib/timing.d.ts +2 -2
- package/dist/lib/timing.js +2 -2
- package/docs/accessibility.md +9 -1
- package/docs/api-reference.md +4 -1
- package/docs/browser-api.md +3 -3
- package/docs/browser-context.md +3 -3
- package/docs/cli.md +10 -7
- package/docs/error-codes.md +3 -1
- package/docs/getting-started.md +1 -1
- package/docs/mcp.md +9 -5
- package/docs/public/examples/iframe-child.html +12 -1
- package/docs/public/examples/shadow-dom.html +137 -0
- package/docs/recipes/login-once-reuse-session.md +1 -1
- package/docs/selectors.md +61 -0
- package/docs/session-management.md +17 -10
- package/package.json +3 -3
- package/skills/craftdriver/patterns.md +3 -0
|
@@ -13,14 +13,21 @@ the best available WebDriver transport for the browser you launched.
|
|
|
13
13
|
not a promise of Playwright JSON compatibility and does not include IndexedDB,
|
|
14
14
|
Cache Storage, service workers, or reusable sessionStorage.
|
|
15
15
|
|
|
16
|
+
State files contain live session cookies. Keep them in a dedicated ignored
|
|
17
|
+
directory:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
.auth/
|
|
21
|
+
```
|
|
22
|
+
|
|
16
23
|
## Saving Session State
|
|
17
24
|
|
|
18
25
|
```typescript
|
|
19
26
|
// Save all cookies and localStorage to a file
|
|
20
|
-
await browser.saveState('
|
|
27
|
+
await browser.saveState('.auth/session.json');
|
|
21
28
|
|
|
22
29
|
// Save with options
|
|
23
|
-
await browser.saveState('
|
|
30
|
+
await browser.saveState('.auth/session.json', {
|
|
24
31
|
includeCookies: true, // default: true
|
|
25
32
|
includeLocalStorage: true, // default: true
|
|
26
33
|
includeSessionStorage: false, // default: false
|
|
@@ -55,7 +62,7 @@ The saved file contains:
|
|
|
55
62
|
|
|
56
63
|
```typescript
|
|
57
64
|
// Load state into current browser
|
|
58
|
-
await browser.loadState('
|
|
65
|
+
await browser.loadState('.auth/session.json');
|
|
59
66
|
|
|
60
67
|
// Paths and in-memory state objects are equivalent
|
|
61
68
|
await browser.loadState(await browser.storage.getState());
|
|
@@ -82,7 +89,7 @@ The most common pattern - launch a browser with existing session:
|
|
|
82
89
|
```typescript
|
|
83
90
|
const browser = await Browser.launch({
|
|
84
91
|
browserName: 'chrome',
|
|
85
|
-
storageState: '
|
|
92
|
+
storageState: '.auth/session.json',
|
|
86
93
|
});
|
|
87
94
|
|
|
88
95
|
// Navigate directly to authenticated page
|
|
@@ -117,7 +124,7 @@ fallback instead:
|
|
|
117
124
|
```typescript
|
|
118
125
|
const browser = await Browser.launch({ enableBiDi: false });
|
|
119
126
|
await browser.navigateTo('https://example.com');
|
|
120
|
-
await browser.loadState('
|
|
127
|
+
await browser.loadState('.auth/session.json');
|
|
121
128
|
await browser.reload(); // the app can now read the restored state
|
|
122
129
|
```
|
|
123
130
|
|
|
@@ -195,10 +202,10 @@ async function generateAuth() {
|
|
|
195
202
|
await browser.expect('#dashboard').toBeVisible();
|
|
196
203
|
|
|
197
204
|
// Save the authenticated state
|
|
198
|
-
await browser.saveState('
|
|
205
|
+
await browser.saveState('.auth/session.json');
|
|
199
206
|
|
|
200
207
|
await browser.quit();
|
|
201
|
-
console.log('Auth state saved to auth.json');
|
|
208
|
+
console.log('Auth state saved to .auth/session.json');
|
|
202
209
|
}
|
|
203
210
|
|
|
204
211
|
generateAuth();
|
|
@@ -218,7 +225,7 @@ describe('Dashboard', () => {
|
|
|
218
225
|
// Launch with saved auth - already logged in!
|
|
219
226
|
browser = await Browser.launch({
|
|
220
227
|
browserName: 'chrome',
|
|
221
|
-
storageState: '
|
|
228
|
+
storageState: '.auth/session.json',
|
|
222
229
|
});
|
|
223
230
|
});
|
|
224
231
|
|
|
@@ -257,13 +264,13 @@ async function testLoginPersistence() {
|
|
|
257
264
|
await browser.click('#submit');
|
|
258
265
|
await browser.expect('#welcome').toBeVisible();
|
|
259
266
|
|
|
260
|
-
await browser.saveState('
|
|
267
|
+
await browser.saveState('.auth/session.json');
|
|
261
268
|
await browser.quit();
|
|
262
269
|
|
|
263
270
|
// Second browser: Load state and verify logged in
|
|
264
271
|
browser = await Browser.launch({
|
|
265
272
|
browserName: 'chrome',
|
|
266
|
-
storageState: '
|
|
273
|
+
storageState: '.auth/session.json',
|
|
267
274
|
});
|
|
268
275
|
|
|
269
276
|
await browser.navigateTo('http://localhost:3000/login');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "craftdriver",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Modern WebDriver automation library for NodeJS",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"lint": "eslint . --ext .ts",
|
|
15
15
|
"format": "prettier --write .",
|
|
16
16
|
"test": "HEADLESS=true vitest run",
|
|
17
|
-
"test:firefox": "BROWSER_NAME=firefox HEADLESS=true vitest run
|
|
17
|
+
"test:firefox": "BROWSER_NAME=firefox HEADLESS=true vitest run",
|
|
18
18
|
"test:chrome": "BROWSER_NAME=chrome vitest run",
|
|
19
19
|
"test:chromium": "BROWSER_NAME=chromium vitest run",
|
|
20
20
|
"test:safari": "BROWSER_NAME=safari vitest run tests/safari.test.ts --maxWorkers=1",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"yazl": "^3.3.1"
|
|
111
111
|
},
|
|
112
112
|
"overrides": {
|
|
113
|
-
"brace-expansion": "5.0.
|
|
113
|
+
"brace-expansion": "5.0.7",
|
|
114
114
|
"ip-address": "10.1.1",
|
|
115
115
|
"npm": "^11.18.0",
|
|
116
116
|
"undici": "7.28.0",
|
|
@@ -4,6 +4,9 @@ Worked recipes, each kept compact. Load on demand from [SKILL.md](SKILL.md).
|
|
|
4
4
|
|
|
5
5
|
## 1. Login, save storage state for reuse
|
|
6
6
|
|
|
7
|
+
Add `.auth/` to the consuming project's `.gitignore`; these files contain live
|
|
8
|
+
session cookies even though CraftDriver writes them with restricted permissions.
|
|
9
|
+
|
|
7
10
|
```ts
|
|
8
11
|
const browser = await Browser.launch();
|
|
9
12
|
await browser.navigateTo('https://app.example.com/login');
|