@cogitator-ai/browser 0.1.5 → 0.2.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/README.md +58 -32
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +18 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +201 -72
- package/dist/session.js.map +1 -1
- package/dist/stealth/evasions.d.ts +7 -1
- package/dist/stealth/evasions.d.ts.map +1 -1
- package/dist/stealth/evasions.js +159 -64
- package/dist/stealth/evasions.js.map +1 -1
- package/dist/stealth/human-like.d.ts +27 -3
- package/dist/stealth/human-like.d.ts.map +1 -1
- package/dist/stealth/human-like.js +76 -23
- package/dist/stealth/human-like.js.map +1 -1
- package/dist/stealth/index.d.ts +8 -2
- package/dist/stealth/index.d.ts.map +1 -1
- package/dist/stealth/index.js +10 -6
- package/dist/stealth/index.js.map +1 -1
- package/dist/stealth/user-agents.d.ts.map +1 -1
- package/dist/stealth/user-agents.js +33 -34
- package/dist/stealth/user-agents.js.map +1 -1
- package/dist/tools/extraction.d.ts.map +1 -1
- package/dist/tools/extraction.js +37 -27
- package/dist/tools/extraction.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interaction.d.ts +10 -2
- package/dist/tools/interaction.d.ts.map +1 -1
- package/dist/tools/interaction.js +86 -42
- package/dist/tools/interaction.js.map +1 -1
- package/dist/tools/navigation.d.ts +6 -4
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +9 -4
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/network.d.ts +29 -26
- package/dist/tools/network.d.ts.map +1 -1
- package/dist/tools/network.js +394 -102
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/vision.d.ts +10 -6
- package/dist/tools/vision.d.ts.map +1 -1
- package/dist/tools/vision.js +66 -19
- package/dist/tools/vision.js.map +1 -1
- package/dist/utils/human-mode.d.ts +5 -0
- package/dist/utils/human-mode.d.ts.map +1 -0
- package/dist/utils/human-mode.js +10 -0
- package/dist/utils/human-mode.js.map +1 -0
- package/dist/utils/page-helpers.d.ts +1 -0
- package/dist/utils/page-helpers.d.ts.map +1 -1
- package/dist/utils/page-helpers.js +82 -22
- package/dist/utils/page-helpers.js.map +1 -1
- package/dist/utils/schemas.d.ts +7 -2
- package/dist/utils/schemas.d.ts.map +1 -1
- package/dist/utils/schemas.js +43 -16
- package/dist/utils/schemas.js.map +1 -1
- package/dist/utils/selectors.d.ts.map +1 -1
- package/dist/utils/selectors.js +27 -10
- package/dist/utils/selectors.js.map +1 -1
- package/package.json +4 -4
- package/dist/__tests__/browser-tools.test.d.ts +0 -2
- package/dist/__tests__/browser-tools.test.d.ts.map +0 -1
- package/dist/__tests__/browser-tools.test.js +0 -120
- package/dist/__tests__/browser-tools.test.js.map +0 -1
- package/dist/__tests__/extraction.test.d.ts +0 -2
- package/dist/__tests__/extraction.test.d.ts.map +0 -1
- package/dist/__tests__/extraction.test.js +0 -267
- package/dist/__tests__/extraction.test.js.map +0 -1
- package/dist/__tests__/interaction.test.d.ts +0 -2
- package/dist/__tests__/interaction.test.d.ts.map +0 -1
- package/dist/__tests__/interaction.test.js +0 -376
- package/dist/__tests__/interaction.test.js.map +0 -1
- package/dist/__tests__/navigation.test.d.ts +0 -2
- package/dist/__tests__/navigation.test.d.ts.map +0 -1
- package/dist/__tests__/navigation.test.js +0 -235
- package/dist/__tests__/navigation.test.js.map +0 -1
- package/dist/__tests__/network.test.d.ts +0 -2
- package/dist/__tests__/network.test.d.ts.map +0 -1
- package/dist/__tests__/network.test.js +0 -508
- package/dist/__tests__/network.test.js.map +0 -1
- package/dist/__tests__/page-helpers.test.d.ts +0 -2
- package/dist/__tests__/page-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/page-helpers.test.js +0 -321
- package/dist/__tests__/page-helpers.test.js.map +0 -1
- package/dist/__tests__/schemas.test.d.ts +0 -2
- package/dist/__tests__/schemas.test.d.ts.map +0 -1
- package/dist/__tests__/schemas.test.js +0 -518
- package/dist/__tests__/schemas.test.js.map +0 -1
- package/dist/__tests__/selectors.test.d.ts +0 -2
- package/dist/__tests__/selectors.test.d.ts.map +0 -1
- package/dist/__tests__/selectors.test.js +0 -157
- package/dist/__tests__/selectors.test.js.map +0 -1
- package/dist/__tests__/session.test.d.ts +0 -2
- package/dist/__tests__/session.test.d.ts.map +0 -1
- package/dist/__tests__/session.test.js +0 -325
- package/dist/__tests__/session.test.js.map +0 -1
- package/dist/__tests__/stealth.test.d.ts +0 -2
- package/dist/__tests__/stealth.test.d.ts.map +0 -1
- package/dist/__tests__/stealth.test.js +0 -353
- package/dist/__tests__/stealth.test.js.map +0 -1
- package/dist/__tests__/vision.test.d.ts +0 -2
- package/dist/__tests__/vision.test.d.ts.map +0 -1
- package/dist/__tests__/vision.test.js +0 -226
- package/dist/__tests__/vision.test.js.map +0 -1
package/dist/utils/schemas.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
const waitUntilEnum = z.enum(['load', 'domcontentloaded', 'networkidle', 'commit']);
|
|
3
3
|
export const navigateSchema = z.object({
|
|
4
|
-
url: z
|
|
4
|
+
url: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.refine((value) => /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(value), {
|
|
8
|
+
message: 'URL must start with a scheme such as https:, about:, data:, or file:',
|
|
9
|
+
})
|
|
10
|
+
.describe('URL to navigate to'),
|
|
5
11
|
waitUntil: waitUntilEnum.optional().describe('When to consider navigation succeeded'),
|
|
6
12
|
});
|
|
7
13
|
export const goBackSchema = z.object({});
|
|
@@ -9,9 +15,10 @@ export const goForwardSchema = z.object({});
|
|
|
9
15
|
export const reloadSchema = z.object({
|
|
10
16
|
waitUntil: waitUntilEnum.optional().describe('When to consider reload succeeded'),
|
|
11
17
|
});
|
|
18
|
+
const timeoutSchema = z.number().int().min(0).describe('Timeout in milliseconds (0 disables it)');
|
|
12
19
|
export const waitForNavigationSchema = z.object({
|
|
13
|
-
url: z.string().optional().describe('URL pattern to wait for'),
|
|
14
|
-
timeout:
|
|
20
|
+
url: z.string().optional().describe('URL glob pattern to wait for'),
|
|
21
|
+
timeout: timeoutSchema.optional(),
|
|
15
22
|
});
|
|
16
23
|
export const getCurrentUrlSchema = z.object({});
|
|
17
24
|
export const waitForSelectorSchema = z.object({
|
|
@@ -20,12 +27,12 @@ export const waitForSelectorSchema = z.object({
|
|
|
20
27
|
.enum(['visible', 'hidden', 'attached', 'detached'])
|
|
21
28
|
.optional()
|
|
22
29
|
.describe('Element state to wait for'),
|
|
23
|
-
timeout:
|
|
30
|
+
timeout: timeoutSchema.optional(),
|
|
24
31
|
});
|
|
25
32
|
export const clickSchema = z.object({
|
|
26
33
|
selector: z.string().describe('CSS selector of element to click'),
|
|
27
34
|
button: z.enum(['left', 'right', 'middle']).optional().describe('Mouse button'),
|
|
28
|
-
clickCount: z.number().min(1).optional().describe('Number of clicks (2 for double-click)'),
|
|
35
|
+
clickCount: z.number().int().min(1).optional().describe('Number of clicks (2 for double-click)'),
|
|
29
36
|
position: z
|
|
30
37
|
.object({
|
|
31
38
|
x: z.number(),
|
|
@@ -37,7 +44,7 @@ export const clickSchema = z.object({
|
|
|
37
44
|
export const typeSchema = z.object({
|
|
38
45
|
selector: z.string().describe('CSS selector of input element'),
|
|
39
46
|
text: z.string().describe('Text to type'),
|
|
40
|
-
delay: z.number().optional().describe('Delay between keystrokes in ms'),
|
|
47
|
+
delay: z.number().min(0).optional().describe('Delay between keystrokes in ms'),
|
|
41
48
|
clearFirst: z.boolean().optional().describe('Clear the field before typing'),
|
|
42
49
|
});
|
|
43
50
|
export const selectOptionSchema = z
|
|
@@ -45,7 +52,7 @@ export const selectOptionSchema = z
|
|
|
45
52
|
selector: z.string().describe('CSS selector of select element'),
|
|
46
53
|
value: z.string().optional().describe('Option value to select'),
|
|
47
54
|
label: z.string().optional().describe('Option label to select'),
|
|
48
|
-
index: z.number().optional().describe('Option index to select'),
|
|
55
|
+
index: z.number().int().min(0).optional().describe('Option index to select'),
|
|
49
56
|
})
|
|
50
57
|
.refine((data) => data.value !== undefined || data.label !== undefined || data.index !== undefined, {
|
|
51
58
|
message: 'At least one of value, label, or index is required',
|
|
@@ -59,7 +66,7 @@ export const hoverSchema = z.object({
|
|
|
59
66
|
});
|
|
60
67
|
export const scrollSchema = z.object({
|
|
61
68
|
direction: z.enum(['up', 'down', 'left', 'right']).describe('Scroll direction'),
|
|
62
|
-
amount: z.number().optional().describe('Scroll amount in pixels'),
|
|
69
|
+
amount: z.number().min(0).optional().describe('Scroll amount in pixels (default 500)'),
|
|
63
70
|
selector: z.string().optional().describe('CSS selector of scrollable element'),
|
|
64
71
|
});
|
|
65
72
|
export const pressKeySchema = z.object({
|
|
@@ -80,7 +87,7 @@ export const fillFormSchema = z.object({
|
|
|
80
87
|
});
|
|
81
88
|
export const uploadFileSchema = z.object({
|
|
82
89
|
selector: z.string().describe('CSS selector of file input'),
|
|
83
|
-
filePaths: z.array(z.string()).describe('
|
|
90
|
+
filePaths: z.array(z.string().min(1)).min(1).describe('Paths to files to upload'),
|
|
84
91
|
});
|
|
85
92
|
export const getTextSchema = z.object({
|
|
86
93
|
selector: z.string().optional().describe('CSS selector to extract text from (defaults to body)'),
|
|
@@ -100,7 +107,7 @@ export const getLinksSchema = z.object({
|
|
|
100
107
|
export const querySelectorAllSchema = z.object({
|
|
101
108
|
selector: z.string().describe('CSS selector to query'),
|
|
102
109
|
attributes: z.array(z.string()).optional().describe('Attributes to include per element'),
|
|
103
|
-
limit: z.number().optional().describe('Max elements to return'),
|
|
110
|
+
limit: z.number().int().min(0).optional().describe('Max elements to return'),
|
|
104
111
|
});
|
|
105
112
|
export const extractTableSchema = z.object({
|
|
106
113
|
selector: z.string().optional().describe('CSS selector of table element'),
|
|
@@ -122,10 +129,13 @@ export const findByDescriptionSchema = z.object({
|
|
|
122
129
|
});
|
|
123
130
|
export const clickByDescriptionSchema = z.object({
|
|
124
131
|
description: z.string().describe('Natural language description of element to click'),
|
|
125
|
-
index: z.number().optional().describe('Index of match to click if multiple found'),
|
|
132
|
+
index: z.number().int().min(0).optional().describe('Index of match to click if multiple found'),
|
|
126
133
|
});
|
|
127
134
|
export const interceptRequestSchema = z.object({
|
|
128
|
-
urlPattern: z
|
|
135
|
+
urlPattern: z
|
|
136
|
+
.string()
|
|
137
|
+
.min(1)
|
|
138
|
+
.describe('URL glob (e.g. "**/api/**") or regular expression literal (e.g. "/\\.png$/i")'),
|
|
129
139
|
action: z.enum(['block', 'modify', 'continue']).describe('What to do with matching requests'),
|
|
130
140
|
modify: z
|
|
131
141
|
.object({
|
|
@@ -136,21 +146,38 @@ export const interceptRequestSchema = z.object({
|
|
|
136
146
|
.optional()
|
|
137
147
|
.describe('Modifications to apply (only for action=modify)'),
|
|
138
148
|
});
|
|
149
|
+
export const removeInterceptorSchema = z.object({
|
|
150
|
+
interceptorId: z
|
|
151
|
+
.string()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe('Interceptor ID to remove; omit to remove all interceptors'),
|
|
154
|
+
});
|
|
139
155
|
export const waitForResponseSchema = z.object({
|
|
140
|
-
urlPattern: z
|
|
141
|
-
|
|
156
|
+
urlPattern: z
|
|
157
|
+
.string()
|
|
158
|
+
.min(1)
|
|
159
|
+
.describe('URL substring or regular expression literal (e.g. "/api\\/v\\d+/") to wait for'),
|
|
160
|
+
timeout: timeoutSchema.optional(),
|
|
142
161
|
});
|
|
143
162
|
export const blockResourcesSchema = z.object({
|
|
144
163
|
types: z
|
|
145
164
|
.array(z.enum(['image', 'stylesheet', 'font', 'media', 'script']))
|
|
165
|
+
.min(1)
|
|
146
166
|
.describe('Resource types to block'),
|
|
147
167
|
});
|
|
148
168
|
export const captureHarSchema = z.object({
|
|
149
169
|
action: z.enum(['start', 'stop']).describe('Start or stop HAR capture'),
|
|
150
|
-
path: z
|
|
170
|
+
path: z
|
|
171
|
+
.string()
|
|
172
|
+
.optional()
|
|
173
|
+
.describe('File path inside the working directory to save a HAR 1.2 file (on stop)'),
|
|
151
174
|
});
|
|
152
175
|
export const getApiCallsSchema = z.object({
|
|
153
|
-
urlPattern: z
|
|
176
|
+
urlPattern: z
|
|
177
|
+
.string()
|
|
178
|
+
.optional()
|
|
179
|
+
.describe('Filter API calls by URL substring or regular expression literal'),
|
|
154
180
|
method: z.string().optional().describe('Filter by HTTP method'),
|
|
181
|
+
clear: z.boolean().optional().describe('Clear the recorded API calls after returning them'),
|
|
155
182
|
});
|
|
156
183
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/utils/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/utils/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAgBhD,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAiBzF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAqBtF"}
|
package/dist/utils/selectors.js
CHANGED
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
function escapeCssString(str) {
|
|
2
|
-
|
|
2
|
+
const escaped = str.replace(/["\\]/g, '\\$&');
|
|
3
|
+
let result = '';
|
|
4
|
+
for (const ch of escaped) {
|
|
5
|
+
const code = ch.codePointAt(0);
|
|
6
|
+
if (code <= 0x1f || code === 0x7f) {
|
|
7
|
+
result += `\\${code.toString(16)} `;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
result += ch;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return result;
|
|
3
14
|
}
|
|
4
15
|
export async function smartSelect(page, identifier) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
16
|
+
try {
|
|
17
|
+
const cssLocator = page.locator(identifier);
|
|
18
|
+
if ((await cssLocator.count()) > 0)
|
|
19
|
+
return cssLocator.first();
|
|
20
|
+
}
|
|
21
|
+
catch { }
|
|
8
22
|
if (identifier.startsWith('//') || identifier.startsWith('(')) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
23
|
+
try {
|
|
24
|
+
const xpathLocator = page.locator(`xpath=${identifier}`);
|
|
25
|
+
if ((await xpathLocator.count()) > 0)
|
|
26
|
+
return xpathLocator.first();
|
|
27
|
+
}
|
|
28
|
+
catch { }
|
|
12
29
|
}
|
|
13
30
|
const textLocator = page.getByText(identifier, { exact: false });
|
|
14
31
|
if ((await textLocator.count()) > 0)
|
|
@@ -24,9 +41,9 @@ export async function findFormField(page, label) {
|
|
|
24
41
|
() => page.locator(`textarea[name="${escaped}"]`),
|
|
25
42
|
() => page.locator(`textarea[placeholder="${escaped}"]`),
|
|
26
43
|
() => page.locator(`select[name="${escaped}"]`),
|
|
27
|
-
() => page.locator(`label:
|
|
28
|
-
() => page.locator(`label:
|
|
29
|
-
() => page.locator(`label:
|
|
44
|
+
() => page.locator(`label:text-is("${escaped}") input`),
|
|
45
|
+
() => page.locator(`label:text-is("${escaped}") textarea`),
|
|
46
|
+
() => page.locator(`label:text-is("${escaped}") select`),
|
|
30
47
|
() => page.getByLabel(label),
|
|
31
48
|
];
|
|
32
49
|
for (const getLocator of strategies) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/utils/selectors.ts"],"names":[],"mappings":"AAEA,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/utils/selectors.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/browser",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Browser automation tools for Cogitator AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"playwright": "^1.50.0",
|
|
19
19
|
"zod": "^4.3.6",
|
|
20
|
-
"@cogitator-ai/core": "0.
|
|
21
|
-
"@cogitator-ai/types": "0.
|
|
20
|
+
"@cogitator-ai/core": "0.20.0",
|
|
21
|
+
"@cogitator-ai/types": "0.23.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"typescript": "^5.3.0",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"license": "MIT",
|
|
37
37
|
"scripts": {
|
|
38
|
-
"build": "tsc",
|
|
38
|
+
"build": "tsc && tsx ../../scripts/fix-esm-imports.ts .",
|
|
39
39
|
"dev": "tsc --watch",
|
|
40
40
|
"clean": "rm -rf dist",
|
|
41
41
|
"typecheck": "tsc --noEmit",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser-tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/browser-tools.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
-
import { browserTools } from '../tools/index.js';
|
|
3
|
-
vi.mock('playwright', () => ({
|
|
4
|
-
chromium: { launch: vi.fn() },
|
|
5
|
-
}));
|
|
6
|
-
function createMockSession() {
|
|
7
|
-
const mockPage = {
|
|
8
|
-
goto: vi.fn(),
|
|
9
|
-
goBack: vi.fn(),
|
|
10
|
-
goForward: vi.fn(),
|
|
11
|
-
reload: vi.fn(),
|
|
12
|
-
url: vi.fn().mockReturnValue('about:blank'),
|
|
13
|
-
title: vi.fn().mockResolvedValue(''),
|
|
14
|
-
waitForURL: vi.fn(),
|
|
15
|
-
waitForSelector: vi.fn(),
|
|
16
|
-
click: vi.fn(),
|
|
17
|
-
fill: vi.fn(),
|
|
18
|
-
type: vi.fn(),
|
|
19
|
-
selectOption: vi.fn(),
|
|
20
|
-
hover: vi.fn(),
|
|
21
|
-
evaluate: vi.fn(),
|
|
22
|
-
keyboard: { press: vi.fn(), type: vi.fn() },
|
|
23
|
-
dragAndDrop: vi.fn(),
|
|
24
|
-
setInputFiles: vi.fn(),
|
|
25
|
-
textContent: vi.fn(),
|
|
26
|
-
innerHTML: vi.fn(),
|
|
27
|
-
content: vi.fn(),
|
|
28
|
-
getAttribute: vi.fn(),
|
|
29
|
-
screenshot: vi.fn().mockResolvedValue(Buffer.from('')),
|
|
30
|
-
viewportSize: vi.fn().mockReturnValue({ width: 1280, height: 720 }),
|
|
31
|
-
accessibility: { snapshot: vi.fn().mockResolvedValue(null) },
|
|
32
|
-
locator: vi.fn().mockReturnValue({
|
|
33
|
-
screenshot: vi.fn(),
|
|
34
|
-
boundingBox: vi.fn(),
|
|
35
|
-
evaluate: vi.fn(),
|
|
36
|
-
count: vi.fn().mockResolvedValue(0),
|
|
37
|
-
nth: vi.fn(),
|
|
38
|
-
first: vi.fn(),
|
|
39
|
-
}),
|
|
40
|
-
getByRole: vi.fn().mockReturnValue({ count: vi.fn().mockResolvedValue(0) }),
|
|
41
|
-
getByText: vi.fn().mockReturnValue({ count: vi.fn().mockResolvedValue(0) }),
|
|
42
|
-
getByLabel: vi.fn().mockReturnValue({ count: vi.fn().mockResolvedValue(0) }),
|
|
43
|
-
getByPlaceholder: vi.fn().mockReturnValue({ count: vi.fn().mockResolvedValue(0) }),
|
|
44
|
-
route: vi.fn(),
|
|
45
|
-
unroute: vi.fn(),
|
|
46
|
-
waitForResponse: vi.fn(),
|
|
47
|
-
on: vi.fn(),
|
|
48
|
-
removeListener: vi.fn(),
|
|
49
|
-
mouse: { move: vi.fn(), click: vi.fn(), wheel: vi.fn() },
|
|
50
|
-
};
|
|
51
|
-
return {
|
|
52
|
-
page: mockPage,
|
|
53
|
-
stealthEnabled: false,
|
|
54
|
-
stealthConfig: null,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
describe('browserTools', () => {
|
|
58
|
-
const session = createMockSession();
|
|
59
|
-
it('returns all 32 tools with no options', () => {
|
|
60
|
-
const tools = browserTools(session);
|
|
61
|
-
expect(tools).toHaveLength(32);
|
|
62
|
-
});
|
|
63
|
-
it('all tools have unique names', () => {
|
|
64
|
-
const tools = browserTools(session);
|
|
65
|
-
const names = tools.map((t) => t.name);
|
|
66
|
-
expect(new Set(names).size).toBe(names.length);
|
|
67
|
-
});
|
|
68
|
-
it('all tool names start with browser_', () => {
|
|
69
|
-
const tools = browserTools(session);
|
|
70
|
-
for (const t of tools) {
|
|
71
|
-
expect(t.name).toMatch(/^browser_/);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
it('returns 7 navigation tools', () => {
|
|
75
|
-
const tools = browserTools(session, { modules: ['navigation'] });
|
|
76
|
-
expect(tools).toHaveLength(7);
|
|
77
|
-
});
|
|
78
|
-
it('returns 9 interaction tools', () => {
|
|
79
|
-
const tools = browserTools(session, { modules: ['interaction'] });
|
|
80
|
-
expect(tools).toHaveLength(9);
|
|
81
|
-
});
|
|
82
|
-
it('returns 7 extraction tools', () => {
|
|
83
|
-
const tools = browserTools(session, { modules: ['extraction'] });
|
|
84
|
-
expect(tools).toHaveLength(7);
|
|
85
|
-
});
|
|
86
|
-
it('returns 4 vision tools', () => {
|
|
87
|
-
const tools = browserTools(session, { modules: ['vision'] });
|
|
88
|
-
expect(tools).toHaveLength(4);
|
|
89
|
-
});
|
|
90
|
-
it('returns 5 network tools', () => {
|
|
91
|
-
const tools = browserTools(session, { modules: ['network'] });
|
|
92
|
-
expect(tools).toHaveLength(5);
|
|
93
|
-
});
|
|
94
|
-
it('combines modules correctly', () => {
|
|
95
|
-
const tools = browserTools(session, { modules: ['navigation', 'extraction'] });
|
|
96
|
-
expect(tools).toHaveLength(14);
|
|
97
|
-
});
|
|
98
|
-
it('all tools have valid toJSON()', () => {
|
|
99
|
-
const tools = browserTools(session);
|
|
100
|
-
for (const t of tools) {
|
|
101
|
-
const json = t.toJSON();
|
|
102
|
-
expect(json).toHaveProperty('name');
|
|
103
|
-
expect(json).toHaveProperty('description');
|
|
104
|
-
expect(json).toHaveProperty('parameters');
|
|
105
|
-
expect(typeof json.name).toBe('string');
|
|
106
|
-
expect(typeof json.description).toBe('string');
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
it('all tools have category web', () => {
|
|
110
|
-
const tools = browserTools(session);
|
|
111
|
-
for (const t of tools) {
|
|
112
|
-
expect(t.category).toBe('web');
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
it('returns 0 tools for empty modules array', () => {
|
|
116
|
-
const tools = browserTools(session, { modules: [] });
|
|
117
|
-
expect(tools).toHaveLength(0);
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
//# sourceMappingURL=browser-tools.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser-tools.test.js","sourceRoot":"","sources":["../../src/__tests__/browser-tools.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/extraction.test.ts"],"names":[],"mappings":""}
|