@roomi-fields/notebooklm-mcp 1.3.4 → 1.3.6
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 +164 -715
- package/dist/__tests__/cleanup-manager.test.d.ts +2 -0
- package/dist/__tests__/cleanup-manager.test.d.ts.map +1 -0
- package/dist/__tests__/cleanup-manager.test.js +341 -0
- package/dist/__tests__/cleanup-manager.test.js.map +1 -0
- package/dist/__tests__/config-parsing.test.d.ts +2 -0
- package/dist/__tests__/config-parsing.test.d.ts.map +1 -0
- package/dist/__tests__/config-parsing.test.js +338 -0
- package/dist/__tests__/config-parsing.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +267 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +166 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/logger.test.d.ts +2 -0
- package/dist/__tests__/logger.test.d.ts.map +1 -0
- package/dist/__tests__/logger.test.js +324 -0
- package/dist/__tests__/logger.test.js.map +1 -0
- package/dist/__tests__/page-utils.test.d.ts +2 -0
- package/dist/__tests__/page-utils.test.d.ts.map +1 -0
- package/dist/__tests__/page-utils.test.js +349 -0
- package/dist/__tests__/page-utils.test.js.map +1 -0
- package/dist/__tests__/setup-verification.test.d.ts +2 -0
- package/dist/__tests__/setup-verification.test.d.ts.map +1 -0
- package/dist/__tests__/setup-verification.test.js +15 -0
- package/dist/__tests__/setup-verification.test.js.map +1 -0
- package/dist/__tests__/stealth-utils.test.d.ts +2 -0
- package/dist/__tests__/stealth-utils.test.d.ts.map +1 -0
- package/dist/__tests__/stealth-utils.test.js +413 -0
- package/dist/__tests__/stealth-utils.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.js +461 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +2 -2
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +147 -145
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
- package/dist/auto-discovery/auto-discovery.js +17 -17
- package/dist/auto-discovery/auto-discovery.js.map +1 -1
- package/dist/cli/de-auth.js +19 -19
- package/dist/cli/help.js +60 -60
- package/dist/cli/setup-auth.js +39 -39
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +35 -20
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -3
- package/dist/errors.js.map +1 -1
- package/dist/http-wrapper.js +36 -30
- package/dist/http-wrapper.js.map +1 -1
- package/dist/index.js +104 -102
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +2 -2
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +24 -24
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/browser-session.d.ts +4 -4
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +59 -55
- package/dist/session/browser-session.js.map +1 -1
- package/dist/session/session-manager.d.ts +3 -3
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +14 -14
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts +2 -2
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +60 -56
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/tools/index.d.ts +6 -6
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +505 -505
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/utils/cleanup-manager.d.ts +1 -1
- package/dist/utils/cleanup-manager.d.ts.map +1 -1
- package/dist/utils/cleanup-manager.js +90 -92
- package/dist/utils/cleanup-manager.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +15 -15
- package/dist/utils/page-utils.d.ts +1 -1
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +30 -30
- package/dist/utils/page-utils.js.map +1 -1
- package/dist/utils/stealth-utils.d.ts +2 -2
- package/dist/utils/stealth-utils.d.ts.map +1 -1
- package/dist/utils/stealth-utils.js +13 -13
- package/dist/utils/stealth-utils.js.map +1 -1
- package/docs/CHROME_PROFILE_LIMITATION.md +229 -212
- package/package.json +107 -79
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
2
|
+
// Test the parsing functions behavior through environment variables
|
|
3
|
+
describe('Config Parsing Functions', () => {
|
|
4
|
+
const originalEnv = process.env;
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
// Reset environment
|
|
7
|
+
process.env = { ...originalEnv };
|
|
8
|
+
});
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
// Restore original environment
|
|
11
|
+
process.env = originalEnv;
|
|
12
|
+
});
|
|
13
|
+
describe('parseBoolean logic', () => {
|
|
14
|
+
it('should parse "true" as true', () => {
|
|
15
|
+
const value = 'true';
|
|
16
|
+
const result = value.toLowerCase() === 'true' || value.toLowerCase() === '1';
|
|
17
|
+
expect(result).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it('should parse "1" as true', () => {
|
|
20
|
+
const value = '1';
|
|
21
|
+
const result = value.toLowerCase() === 'true' || value.toLowerCase() === '1';
|
|
22
|
+
expect(result).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
it('should parse "false" as false', () => {
|
|
25
|
+
const value = 'false';
|
|
26
|
+
const result = value.toLowerCase() === 'false' || value.toLowerCase() === '0';
|
|
27
|
+
expect(result).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
it('should parse "0" as false', () => {
|
|
30
|
+
const value = '0';
|
|
31
|
+
const result = value.toLowerCase() === 'false' || value.toLowerCase() === '0';
|
|
32
|
+
expect(result).toBe(true);
|
|
33
|
+
});
|
|
34
|
+
it('should handle uppercase TRUE', () => {
|
|
35
|
+
const value = 'TRUE';
|
|
36
|
+
const result = value.toLowerCase() === 'true';
|
|
37
|
+
expect(result).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it('should handle uppercase FALSE', () => {
|
|
40
|
+
const value = 'FALSE';
|
|
41
|
+
const result = value.toLowerCase() === 'false';
|
|
42
|
+
expect(result).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
it('should handle mixed case TrUe', () => {
|
|
45
|
+
const value = 'TrUe';
|
|
46
|
+
const result = value.toLowerCase() === 'true';
|
|
47
|
+
expect(result).toBe(true);
|
|
48
|
+
});
|
|
49
|
+
it('should return default for invalid values', () => {
|
|
50
|
+
const invalidValues = ['yes', 'no', 'on', 'off', 'maybe', ''];
|
|
51
|
+
const defaultValue = false;
|
|
52
|
+
invalidValues.forEach((value) => {
|
|
53
|
+
const lower = value.toLowerCase();
|
|
54
|
+
const result = lower === 'true' || lower === '1'
|
|
55
|
+
? true
|
|
56
|
+
: lower === 'false' || lower === '0'
|
|
57
|
+
? false
|
|
58
|
+
: defaultValue;
|
|
59
|
+
expect(typeof result).toBe('boolean');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
it('should return default for undefined', () => {
|
|
63
|
+
const value = undefined;
|
|
64
|
+
const defaultValue = true;
|
|
65
|
+
const result = value === undefined ? defaultValue : value;
|
|
66
|
+
expect(result).toBe(defaultValue);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('parseInteger logic', () => {
|
|
70
|
+
it('should parse valid integer strings', () => {
|
|
71
|
+
const testCases = [
|
|
72
|
+
{ input: '42', expected: 42 },
|
|
73
|
+
{ input: '0', expected: 0 },
|
|
74
|
+
{ input: '999', expected: 999 },
|
|
75
|
+
{ input: '-42', expected: -42 },
|
|
76
|
+
];
|
|
77
|
+
testCases.forEach(({ input, expected }) => {
|
|
78
|
+
const result = Number.parseInt(input, 10);
|
|
79
|
+
expect(result).toBe(expected);
|
|
80
|
+
expect(Number.isNaN(result)).toBe(false);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
it('should handle negative numbers', () => {
|
|
84
|
+
const value = '-100';
|
|
85
|
+
const result = Number.parseInt(value, 10);
|
|
86
|
+
expect(result).toBe(-100);
|
|
87
|
+
expect(result).toBeLessThan(0);
|
|
88
|
+
});
|
|
89
|
+
it('should handle zero', () => {
|
|
90
|
+
const value = '0';
|
|
91
|
+
const result = Number.parseInt(value, 10);
|
|
92
|
+
expect(result).toBe(0);
|
|
93
|
+
});
|
|
94
|
+
it('should handle large numbers', () => {
|
|
95
|
+
const value = '999999';
|
|
96
|
+
const result = Number.parseInt(value, 10);
|
|
97
|
+
expect(result).toBe(999999);
|
|
98
|
+
});
|
|
99
|
+
it('should return NaN for invalid strings', () => {
|
|
100
|
+
const invalidValues = ['abc', 'not a number', '', 'null'];
|
|
101
|
+
invalidValues.forEach((value) => {
|
|
102
|
+
const result = Number.parseInt(value, 10);
|
|
103
|
+
expect(Number.isNaN(result)).toBe(true);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
it('should return default for NaN results', () => {
|
|
107
|
+
const value = 'invalid';
|
|
108
|
+
const defaultValue = 100;
|
|
109
|
+
const parsed = Number.parseInt(value, 10);
|
|
110
|
+
const result = Number.isNaN(parsed) ? defaultValue : parsed;
|
|
111
|
+
expect(result).toBe(defaultValue);
|
|
112
|
+
});
|
|
113
|
+
it('should parse with base 10', () => {
|
|
114
|
+
const value = '010'; // Could be octal
|
|
115
|
+
const result = Number.parseInt(value, 10);
|
|
116
|
+
expect(result).toBe(10); // Not 8
|
|
117
|
+
});
|
|
118
|
+
it('should truncate decimals', () => {
|
|
119
|
+
const value = '42.7';
|
|
120
|
+
const result = Number.parseInt(value, 10);
|
|
121
|
+
expect(result).toBe(42);
|
|
122
|
+
});
|
|
123
|
+
it('should return default for undefined', () => {
|
|
124
|
+
const value = undefined;
|
|
125
|
+
const defaultValue = 50;
|
|
126
|
+
const result = value === undefined ? defaultValue : Number.parseInt(value, 10);
|
|
127
|
+
expect(result).toBe(defaultValue);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe('parseArray logic', () => {
|
|
131
|
+
it('should parse comma-separated values', () => {
|
|
132
|
+
const value = 'item1,item2,item3';
|
|
133
|
+
const result = value.split(',').map((s) => s.trim());
|
|
134
|
+
expect(result).toEqual(['item1', 'item2', 'item3']);
|
|
135
|
+
});
|
|
136
|
+
it('should trim whitespace from items', () => {
|
|
137
|
+
const value = ' item1 , item2 , item3 ';
|
|
138
|
+
const result = value.split(',').map((s) => s.trim());
|
|
139
|
+
expect(result).toEqual(['item1', 'item2', 'item3']);
|
|
140
|
+
});
|
|
141
|
+
it('should handle single item', () => {
|
|
142
|
+
const value = 'single';
|
|
143
|
+
const result = value.split(',').map((s) => s.trim());
|
|
144
|
+
expect(result).toEqual(['single']);
|
|
145
|
+
});
|
|
146
|
+
it('should handle empty string', () => {
|
|
147
|
+
const value = '';
|
|
148
|
+
const defaultValue = ['default'];
|
|
149
|
+
const result = !value
|
|
150
|
+
? defaultValue
|
|
151
|
+
: value.split(',').map((s) => s.trim());
|
|
152
|
+
expect(result).toEqual(defaultValue);
|
|
153
|
+
});
|
|
154
|
+
it('should filter empty items', () => {
|
|
155
|
+
const value = 'item1,,item2,,,item3';
|
|
156
|
+
const result = value
|
|
157
|
+
.split(',')
|
|
158
|
+
.map((s) => s.trim())
|
|
159
|
+
.filter((s) => s.length > 0);
|
|
160
|
+
expect(result).toEqual(['item1', 'item2', 'item3']);
|
|
161
|
+
});
|
|
162
|
+
it('should handle items with spaces', () => {
|
|
163
|
+
const value = 'item one, item two, item three';
|
|
164
|
+
const result = value.split(',').map((s) => s.trim());
|
|
165
|
+
expect(result).toEqual(['item one', 'item two', 'item three']);
|
|
166
|
+
});
|
|
167
|
+
it('should handle special characters', () => {
|
|
168
|
+
const value = 'item@1,item#2,item$3';
|
|
169
|
+
const result = value.split(',').map((s) => s.trim());
|
|
170
|
+
expect(result).toEqual(['item@1', 'item#2', 'item$3']);
|
|
171
|
+
});
|
|
172
|
+
it('should return default for undefined', () => {
|
|
173
|
+
const value = undefined;
|
|
174
|
+
const defaultValue = ['a', 'b'];
|
|
175
|
+
const result = !value
|
|
176
|
+
? defaultValue
|
|
177
|
+
: value.split(',').map((s) => s.trim());
|
|
178
|
+
expect(result).toEqual(defaultValue);
|
|
179
|
+
});
|
|
180
|
+
it('should preserve order', () => {
|
|
181
|
+
const value = 'third,first,second';
|
|
182
|
+
const result = value.split(',').map((s) => s.trim());
|
|
183
|
+
expect(result).toEqual(['third', 'first', 'second']);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
describe('environment variable priority', () => {
|
|
187
|
+
it('should prioritize env vars over defaults', () => {
|
|
188
|
+
// Test the concept that env vars override defaults
|
|
189
|
+
const envValue = 'env-value';
|
|
190
|
+
const defaultValue = 'default-value';
|
|
191
|
+
const result = envValue || defaultValue;
|
|
192
|
+
expect(result).toBe(envValue);
|
|
193
|
+
});
|
|
194
|
+
it('should use default when env var is empty', () => {
|
|
195
|
+
const envValue = '';
|
|
196
|
+
const defaultValue = 'default-value';
|
|
197
|
+
const result = envValue || defaultValue;
|
|
198
|
+
expect(result).toBe(defaultValue);
|
|
199
|
+
});
|
|
200
|
+
it('should use default when env var is undefined', () => {
|
|
201
|
+
const envValue = undefined;
|
|
202
|
+
const defaultValue = 'default-value';
|
|
203
|
+
const result = envValue || defaultValue;
|
|
204
|
+
expect(result).toBe(defaultValue);
|
|
205
|
+
});
|
|
206
|
+
it('should handle boolean env vars', () => {
|
|
207
|
+
const envValue = 'true';
|
|
208
|
+
const defaultValue = false;
|
|
209
|
+
const result = envValue
|
|
210
|
+
? envValue.toLowerCase() === 'true' || envValue === '1'
|
|
211
|
+
: defaultValue;
|
|
212
|
+
expect(result).toBe(true);
|
|
213
|
+
});
|
|
214
|
+
it('should handle numeric env vars', () => {
|
|
215
|
+
const envValue = '100';
|
|
216
|
+
const defaultValue = 50;
|
|
217
|
+
const result = envValue ? Number.parseInt(envValue, 10) : defaultValue;
|
|
218
|
+
expect(result).toBe(100);
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
describe('config validation', () => {
|
|
222
|
+
it('should validate WPM range', () => {
|
|
223
|
+
const min = 160;
|
|
224
|
+
const max = 240;
|
|
225
|
+
expect(min).toBeLessThanOrEqual(max);
|
|
226
|
+
expect(min).toBeGreaterThan(0);
|
|
227
|
+
expect(max).toBeGreaterThan(0);
|
|
228
|
+
});
|
|
229
|
+
it('should validate delay range', () => {
|
|
230
|
+
const min = 100;
|
|
231
|
+
const max = 400;
|
|
232
|
+
expect(min).toBeLessThanOrEqual(max);
|
|
233
|
+
expect(min).toBeGreaterThanOrEqual(0);
|
|
234
|
+
});
|
|
235
|
+
it('should validate timeout values', () => {
|
|
236
|
+
const timeout = 30000;
|
|
237
|
+
expect(timeout).toBeGreaterThan(0);
|
|
238
|
+
expect(timeout).toBeLessThan(600000); // Less than 10 minutes
|
|
239
|
+
});
|
|
240
|
+
it('should validate session limits', () => {
|
|
241
|
+
const maxSessions = 10;
|
|
242
|
+
const sessionTimeout = 900;
|
|
243
|
+
expect(maxSessions).toBeGreaterThan(0);
|
|
244
|
+
expect(sessionTimeout).toBeGreaterThan(0);
|
|
245
|
+
});
|
|
246
|
+
it('should validate viewport dimensions', () => {
|
|
247
|
+
const width = 1024;
|
|
248
|
+
const height = 768;
|
|
249
|
+
expect(width).toBeGreaterThan(0);
|
|
250
|
+
expect(height).toBeGreaterThan(0);
|
|
251
|
+
expect(width).toBeGreaterThanOrEqual(height); // Width typically >= height
|
|
252
|
+
});
|
|
253
|
+
it('should validate profile strategy values', () => {
|
|
254
|
+
const validStrategies = ['auto', 'single', 'isolated'];
|
|
255
|
+
const strategy = 'auto';
|
|
256
|
+
expect(validStrategies).toContain(strategy);
|
|
257
|
+
});
|
|
258
|
+
it('should validate cleanup settings', () => {
|
|
259
|
+
const ttl = 72; // hours
|
|
260
|
+
const maxCount = 20;
|
|
261
|
+
expect(ttl).toBeGreaterThan(0);
|
|
262
|
+
expect(maxCount).toBeGreaterThan(0);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
describe('path construction', () => {
|
|
266
|
+
it('should construct valid paths', () => {
|
|
267
|
+
const basePath = '/home/user/data';
|
|
268
|
+
const subPath = 'browser_state';
|
|
269
|
+
const fullPath = `${basePath}/${subPath}`;
|
|
270
|
+
expect(fullPath).toBe('/home/user/data/browser_state');
|
|
271
|
+
});
|
|
272
|
+
it('should handle Windows paths', () => {
|
|
273
|
+
const basePath = 'C:\\Users\\user\\AppData';
|
|
274
|
+
const subPath = 'notebooklm-mcp';
|
|
275
|
+
const fullPath = `${basePath}\\${subPath}`;
|
|
276
|
+
expect(fullPath).toBe('C:\\Users\\user\\AppData\\notebooklm-mcp');
|
|
277
|
+
});
|
|
278
|
+
it('should construct nested paths', () => {
|
|
279
|
+
const base = '/data';
|
|
280
|
+
const sub1 = 'chrome_profile';
|
|
281
|
+
const sub2 = 'instances';
|
|
282
|
+
const fullPath = `${base}/${sub1}/${sub2}`;
|
|
283
|
+
expect(fullPath).toBe('/data/chrome_profile/instances');
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
describe('type coercion', () => {
|
|
287
|
+
it('should coerce string to boolean', () => {
|
|
288
|
+
const stringTrue = 'true';
|
|
289
|
+
const result = stringTrue === 'true';
|
|
290
|
+
expect(typeof result).toBe('boolean');
|
|
291
|
+
expect(result).toBe(true);
|
|
292
|
+
});
|
|
293
|
+
it('should coerce string to number', () => {
|
|
294
|
+
const stringNum = '42';
|
|
295
|
+
const result = Number.parseInt(stringNum, 10);
|
|
296
|
+
expect(typeof result).toBe('number');
|
|
297
|
+
expect(result).toBe(42);
|
|
298
|
+
});
|
|
299
|
+
it('should handle type errors gracefully', () => {
|
|
300
|
+
const invalid = 'not-a-number';
|
|
301
|
+
const result = Number.parseInt(invalid, 10);
|
|
302
|
+
const safe = Number.isNaN(result) ? 0 : result;
|
|
303
|
+
expect(safe).toBe(0);
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
describe('option merging', () => {
|
|
307
|
+
it('should merge options with defaults', () => {
|
|
308
|
+
const defaults = { a: 1, b: 2, c: 3 };
|
|
309
|
+
const overrides = { b: 20, d: 40 };
|
|
310
|
+
const result = { ...defaults, ...overrides };
|
|
311
|
+
expect(result).toEqual({ a: 1, b: 20, c: 3, d: 40 });
|
|
312
|
+
});
|
|
313
|
+
it('should preserve undefined values in override', () => {
|
|
314
|
+
const defaults = { a: 1, b: 2 };
|
|
315
|
+
const overrides = { b: undefined };
|
|
316
|
+
const result = { ...defaults, ...overrides };
|
|
317
|
+
expect(result.b).toBeUndefined();
|
|
318
|
+
});
|
|
319
|
+
it('should handle nested option merging', () => {
|
|
320
|
+
const defaults = { viewport: { width: 1024, height: 768 } };
|
|
321
|
+
const overrides = { viewport: { width: 1920 } };
|
|
322
|
+
// Shallow merge would replace entire viewport object
|
|
323
|
+
const result = { ...defaults, ...overrides };
|
|
324
|
+
expect(result.viewport).toEqual({ width: 1920 });
|
|
325
|
+
});
|
|
326
|
+
it('should handle deep merging for nested objects', () => {
|
|
327
|
+
const defaults = { stealth: { enabled: true, delays: true } };
|
|
328
|
+
const overrides = { stealth: { enabled: false } };
|
|
329
|
+
// For proper deep merge, need to merge stealth object separately
|
|
330
|
+
const result = {
|
|
331
|
+
...defaults,
|
|
332
|
+
stealth: { ...defaults.stealth, ...overrides.stealth },
|
|
333
|
+
};
|
|
334
|
+
expect(result.stealth).toEqual({ enabled: false, delays: true });
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
//# sourceMappingURL=config-parsing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-parsing.test.js","sourceRoot":"","sources":["../../src/__tests__/config-parsing.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { describe, it, expect } from '@jest/globals';
|
|
2
|
+
import { CONFIG, applyBrowserOptions, NOTEBOOKLM_AUTH_URL } from '../config.js';
|
|
3
|
+
describe('Config Module', () => {
|
|
4
|
+
describe('NOTEBOOKLM_AUTH_URL', () => {
|
|
5
|
+
it('should export the correct auth URL', () => {
|
|
6
|
+
expect(NOTEBOOKLM_AUTH_URL).toBe('https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Fnotebooklm.google.com%2F&flowName=GlifWebSignIn&flowEntry=ServiceLogin');
|
|
7
|
+
});
|
|
8
|
+
it('should be a valid URL', () => {
|
|
9
|
+
expect(() => new URL(NOTEBOOKLM_AUTH_URL)).not.toThrow();
|
|
10
|
+
const url = new URL(NOTEBOOKLM_AUTH_URL);
|
|
11
|
+
expect(url.protocol).toBe('https:');
|
|
12
|
+
expect(url.hostname).toBe('accounts.google.com');
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('CONFIG defaults', () => {
|
|
16
|
+
it('should have correct default values', () => {
|
|
17
|
+
expect(CONFIG.headless).toBe(true);
|
|
18
|
+
expect(CONFIG.browserTimeout).toBe(30000);
|
|
19
|
+
expect(CONFIG.maxSessions).toBe(10);
|
|
20
|
+
expect(CONFIG.sessionTimeout).toBe(900);
|
|
21
|
+
expect(CONFIG.autoLoginEnabled).toBe(false);
|
|
22
|
+
expect(CONFIG.stealthEnabled).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
it('should have valid viewport dimensions', () => {
|
|
25
|
+
expect(CONFIG.viewport).toBeDefined();
|
|
26
|
+
expect(CONFIG.viewport.width).toBe(1024);
|
|
27
|
+
expect(CONFIG.viewport.height).toBe(768);
|
|
28
|
+
expect(CONFIG.viewport.width).toBeGreaterThan(0);
|
|
29
|
+
expect(CONFIG.viewport.height).toBeGreaterThan(0);
|
|
30
|
+
});
|
|
31
|
+
it('should have valid stealth settings', () => {
|
|
32
|
+
expect(CONFIG.stealthEnabled).toBe(true);
|
|
33
|
+
expect(CONFIG.stealthRandomDelays).toBe(true);
|
|
34
|
+
expect(CONFIG.stealthHumanTyping).toBe(true);
|
|
35
|
+
expect(CONFIG.stealthMouseMovements).toBe(true);
|
|
36
|
+
expect(CONFIG.typingWpmMin).toBe(160);
|
|
37
|
+
expect(CONFIG.typingWpmMax).toBe(240);
|
|
38
|
+
expect(CONFIG.typingWpmMin).toBeLessThanOrEqual(CONFIG.typingWpmMax);
|
|
39
|
+
});
|
|
40
|
+
it('should have valid delay ranges', () => {
|
|
41
|
+
expect(CONFIG.minDelayMs).toBe(100);
|
|
42
|
+
expect(CONFIG.maxDelayMs).toBe(400);
|
|
43
|
+
expect(CONFIG.minDelayMs).toBeLessThanOrEqual(CONFIG.maxDelayMs);
|
|
44
|
+
expect(CONFIG.minDelayMs).toBeGreaterThanOrEqual(0);
|
|
45
|
+
});
|
|
46
|
+
it('should have valid authentication defaults', () => {
|
|
47
|
+
expect(CONFIG.autoLoginEnabled).toBe(false);
|
|
48
|
+
expect(CONFIG.loginEmail).toBe('');
|
|
49
|
+
expect(CONFIG.loginPassword).toBe('');
|
|
50
|
+
expect(CONFIG.autoLoginTimeoutMs).toBe(120000);
|
|
51
|
+
});
|
|
52
|
+
it('should have valid profile strategy', () => {
|
|
53
|
+
expect(CONFIG.profileStrategy).toBe('auto');
|
|
54
|
+
expect(['auto', 'single', 'isolated']).toContain(CONFIG.profileStrategy);
|
|
55
|
+
});
|
|
56
|
+
it('should have valid cleanup settings', () => {
|
|
57
|
+
expect(CONFIG.cleanupInstancesOnStartup).toBe(true);
|
|
58
|
+
expect(CONFIG.cleanupInstancesOnShutdown).toBe(true);
|
|
59
|
+
expect(CONFIG.cloneProfileOnIsolated).toBe(false);
|
|
60
|
+
expect(CONFIG.instanceProfileTtlHours).toBe(72);
|
|
61
|
+
expect(CONFIG.instanceProfileMaxCount).toBe(20);
|
|
62
|
+
});
|
|
63
|
+
it('should have valid path configuration', () => {
|
|
64
|
+
expect(CONFIG.dataDir).toBeTruthy();
|
|
65
|
+
expect(CONFIG.browserStateDir).toBeTruthy();
|
|
66
|
+
expect(CONFIG.chromeProfileDir).toBeTruthy();
|
|
67
|
+
expect(CONFIG.chromeInstancesDir).toBeTruthy();
|
|
68
|
+
expect(typeof CONFIG.dataDir).toBe('string');
|
|
69
|
+
expect(typeof CONFIG.browserStateDir).toBe('string');
|
|
70
|
+
});
|
|
71
|
+
it('should have valid library defaults', () => {
|
|
72
|
+
expect(CONFIG.notebookDescription).toBe('General knowledge base');
|
|
73
|
+
expect(CONFIG.notebookTopics).toEqual(['General topics']);
|
|
74
|
+
expect(CONFIG.notebookContentTypes).toEqual(['documentation', 'examples']);
|
|
75
|
+
expect(CONFIG.notebookUseCases).toEqual(['General research']);
|
|
76
|
+
expect(Array.isArray(CONFIG.notebookTopics)).toBe(true);
|
|
77
|
+
});
|
|
78
|
+
it('should have empty notebook URL by default', () => {
|
|
79
|
+
expect(CONFIG.notebookUrl).toBe('');
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('applyBrowserOptions', () => {
|
|
83
|
+
it('should return config copy without mutation when no options provided', () => {
|
|
84
|
+
const result = applyBrowserOptions();
|
|
85
|
+
expect(result).not.toBe(CONFIG);
|
|
86
|
+
expect(result.headless).toBe(CONFIG.headless);
|
|
87
|
+
expect(result.browserTimeout).toBe(CONFIG.browserTimeout);
|
|
88
|
+
});
|
|
89
|
+
it('should apply show option (inverts headless)', () => {
|
|
90
|
+
const result = applyBrowserOptions({ show: true });
|
|
91
|
+
expect(result.headless).toBe(false);
|
|
92
|
+
const result2 = applyBrowserOptions({ show: false });
|
|
93
|
+
expect(result2.headless).toBe(true);
|
|
94
|
+
});
|
|
95
|
+
it('should apply headless option directly', () => {
|
|
96
|
+
const result = applyBrowserOptions({ headless: false });
|
|
97
|
+
expect(result.headless).toBe(false);
|
|
98
|
+
const result2 = applyBrowserOptions({ headless: true });
|
|
99
|
+
expect(result2.headless).toBe(true);
|
|
100
|
+
});
|
|
101
|
+
it('should prioritize headless over show when both provided', () => {
|
|
102
|
+
const result = applyBrowserOptions({ show: true, headless: true });
|
|
103
|
+
expect(result.headless).toBe(true);
|
|
104
|
+
const result2 = applyBrowserOptions({ show: false, headless: false });
|
|
105
|
+
expect(result2.headless).toBe(false);
|
|
106
|
+
});
|
|
107
|
+
it('should apply timeout_ms option', () => {
|
|
108
|
+
const result = applyBrowserOptions({ timeout_ms: 60000 });
|
|
109
|
+
expect(result.browserTimeout).toBe(60000);
|
|
110
|
+
});
|
|
111
|
+
it('should apply viewport options', () => {
|
|
112
|
+
const result = applyBrowserOptions({
|
|
113
|
+
viewport: { width: 1920, height: 1080 },
|
|
114
|
+
});
|
|
115
|
+
expect(result.viewport.width).toBe(1920);
|
|
116
|
+
expect(result.viewport.height).toBe(1080);
|
|
117
|
+
});
|
|
118
|
+
it('should apply partial viewport options', () => {
|
|
119
|
+
const result = applyBrowserOptions({
|
|
120
|
+
viewport: { width: 1920 },
|
|
121
|
+
});
|
|
122
|
+
expect(result.viewport.width).toBe(1920);
|
|
123
|
+
expect(result.viewport.height).toBe(CONFIG.viewport.height);
|
|
124
|
+
});
|
|
125
|
+
it('should apply stealth enabled option', () => {
|
|
126
|
+
const result = applyBrowserOptions({
|
|
127
|
+
stealth: { enabled: false },
|
|
128
|
+
});
|
|
129
|
+
expect(result.stealthEnabled).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
it('should apply stealth random_delays option', () => {
|
|
132
|
+
const result = applyBrowserOptions({
|
|
133
|
+
stealth: { random_delays: false },
|
|
134
|
+
});
|
|
135
|
+
expect(result.stealthRandomDelays).toBe(false);
|
|
136
|
+
});
|
|
137
|
+
it('should apply stealth human_typing option', () => {
|
|
138
|
+
const result = applyBrowserOptions({
|
|
139
|
+
stealth: { human_typing: false },
|
|
140
|
+
});
|
|
141
|
+
expect(result.stealthHumanTyping).toBe(false);
|
|
142
|
+
});
|
|
143
|
+
it('should apply stealth mouse_movements option', () => {
|
|
144
|
+
const result = applyBrowserOptions({
|
|
145
|
+
stealth: { mouse_movements: false },
|
|
146
|
+
});
|
|
147
|
+
expect(result.stealthMouseMovements).toBe(false);
|
|
148
|
+
});
|
|
149
|
+
it('should apply stealth typing WPM options', () => {
|
|
150
|
+
const result = applyBrowserOptions({
|
|
151
|
+
stealth: { typing_wpm_min: 100, typing_wpm_max: 200 },
|
|
152
|
+
});
|
|
153
|
+
expect(result.typingWpmMin).toBe(100);
|
|
154
|
+
expect(result.typingWpmMax).toBe(200);
|
|
155
|
+
});
|
|
156
|
+
it('should apply stealth delay options', () => {
|
|
157
|
+
const result = applyBrowserOptions({
|
|
158
|
+
stealth: { delay_min_ms: 50, delay_max_ms: 500 },
|
|
159
|
+
});
|
|
160
|
+
expect(result.minDelayMs).toBe(50);
|
|
161
|
+
expect(result.maxDelayMs).toBe(500);
|
|
162
|
+
});
|
|
163
|
+
it('should apply multiple stealth options together', () => {
|
|
164
|
+
const result = applyBrowserOptions({
|
|
165
|
+
stealth: {
|
|
166
|
+
enabled: false,
|
|
167
|
+
random_delays: false,
|
|
168
|
+
human_typing: false,
|
|
169
|
+
mouse_movements: false,
|
|
170
|
+
typing_wpm_min: 150,
|
|
171
|
+
typing_wpm_max: 250,
|
|
172
|
+
delay_min_ms: 200,
|
|
173
|
+
delay_max_ms: 600,
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
expect(result.stealthEnabled).toBe(false);
|
|
177
|
+
expect(result.stealthRandomDelays).toBe(false);
|
|
178
|
+
expect(result.stealthHumanTyping).toBe(false);
|
|
179
|
+
expect(result.stealthMouseMovements).toBe(false);
|
|
180
|
+
expect(result.typingWpmMin).toBe(150);
|
|
181
|
+
expect(result.typingWpmMax).toBe(250);
|
|
182
|
+
expect(result.minDelayMs).toBe(200);
|
|
183
|
+
expect(result.maxDelayMs).toBe(600);
|
|
184
|
+
});
|
|
185
|
+
it('should handle legacy show_browser parameter', () => {
|
|
186
|
+
const result = applyBrowserOptions(undefined, true);
|
|
187
|
+
expect(result.headless).toBe(false);
|
|
188
|
+
const result2 = applyBrowserOptions(undefined, false);
|
|
189
|
+
expect(result2.headless).toBe(true);
|
|
190
|
+
});
|
|
191
|
+
it('should prioritize browser_options over legacy show_browser', () => {
|
|
192
|
+
const result = applyBrowserOptions({ show: false }, true);
|
|
193
|
+
expect(result.headless).toBe(true);
|
|
194
|
+
});
|
|
195
|
+
it('should not mutate original CONFIG', () => {
|
|
196
|
+
const originalHeadless = CONFIG.headless;
|
|
197
|
+
const originalTimeout = CONFIG.browserTimeout;
|
|
198
|
+
applyBrowserOptions({ headless: !originalHeadless, timeout_ms: 99999 });
|
|
199
|
+
expect(CONFIG.headless).toBe(originalHeadless);
|
|
200
|
+
expect(CONFIG.browserTimeout).toBe(originalTimeout);
|
|
201
|
+
});
|
|
202
|
+
it('should handle complex combined options', () => {
|
|
203
|
+
const options = {
|
|
204
|
+
show: true,
|
|
205
|
+
timeout_ms: 45000,
|
|
206
|
+
viewport: { width: 1600, height: 900 },
|
|
207
|
+
stealth: {
|
|
208
|
+
enabled: true,
|
|
209
|
+
random_delays: true,
|
|
210
|
+
human_typing: false,
|
|
211
|
+
typing_wpm_min: 180,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
const result = applyBrowserOptions(options);
|
|
215
|
+
expect(result.headless).toBe(false);
|
|
216
|
+
expect(result.browserTimeout).toBe(45000);
|
|
217
|
+
expect(result.viewport.width).toBe(1600);
|
|
218
|
+
expect(result.viewport.height).toBe(900);
|
|
219
|
+
expect(result.stealthEnabled).toBe(true);
|
|
220
|
+
expect(result.stealthRandomDelays).toBe(true);
|
|
221
|
+
expect(result.stealthHumanTyping).toBe(false);
|
|
222
|
+
expect(result.typingWpmMin).toBe(180);
|
|
223
|
+
});
|
|
224
|
+
it('should preserve unmodified config values', () => {
|
|
225
|
+
const result = applyBrowserOptions({ timeout_ms: 60000 });
|
|
226
|
+
expect(result.maxSessions).toBe(CONFIG.maxSessions);
|
|
227
|
+
expect(result.sessionTimeout).toBe(CONFIG.sessionTimeout);
|
|
228
|
+
expect(result.notebookDescription).toBe(CONFIG.notebookDescription);
|
|
229
|
+
expect(result.profileStrategy).toBe(CONFIG.profileStrategy);
|
|
230
|
+
});
|
|
231
|
+
it('should handle empty options object', () => {
|
|
232
|
+
const result = applyBrowserOptions({});
|
|
233
|
+
expect(result.headless).toBe(CONFIG.headless);
|
|
234
|
+
expect(result.browserTimeout).toBe(CONFIG.browserTimeout);
|
|
235
|
+
expect(result.viewport).toEqual(CONFIG.viewport);
|
|
236
|
+
});
|
|
237
|
+
it('should handle undefined values in options', () => {
|
|
238
|
+
const result = applyBrowserOptions({
|
|
239
|
+
show: undefined,
|
|
240
|
+
headless: undefined,
|
|
241
|
+
timeout_ms: undefined,
|
|
242
|
+
});
|
|
243
|
+
expect(result.headless).toBe(CONFIG.headless);
|
|
244
|
+
expect(result.browserTimeout).toBe(CONFIG.browserTimeout);
|
|
245
|
+
});
|
|
246
|
+
it('should handle edge case values', () => {
|
|
247
|
+
const result = applyBrowserOptions({
|
|
248
|
+
timeout_ms: 0,
|
|
249
|
+
viewport: { width: 0, height: 0 },
|
|
250
|
+
stealth: {
|
|
251
|
+
typing_wpm_min: 0,
|
|
252
|
+
typing_wpm_max: 0,
|
|
253
|
+
delay_min_ms: 0,
|
|
254
|
+
delay_max_ms: 0,
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
expect(result.browserTimeout).toBe(0);
|
|
258
|
+
expect(result.viewport.width).toBe(0);
|
|
259
|
+
expect(result.viewport.height).toBe(0);
|
|
260
|
+
expect(result.typingWpmMin).toBe(0);
|
|
261
|
+
expect(result.typingWpmMax).toBe(0);
|
|
262
|
+
expect(result.minDelayMs).toBe(0);
|
|
263
|
+
expect(result.maxDelayMs).toBe(0);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
//# sourceMappingURL=config.test.js.map
|