browser-debugger-cli 0.6.1 → 0.6.2

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.
Files changed (115) hide show
  1. package/README.md +55 -0
  2. package/dist/__tests__/smoke/error-handling.smoke.test.js +9 -4
  3. package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
  4. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +27 -24
  5. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
  6. package/dist/__testutils__/daemonHelpers.d.ts +13 -1
  7. package/dist/__testutils__/daemonHelpers.d.ts.map +1 -1
  8. package/dist/__testutils__/daemonHelpers.js +54 -5
  9. package/dist/__testutils__/daemonHelpers.js.map +1 -1
  10. package/dist/cdp/protocol.d.ts.map +1 -1
  11. package/dist/cdp/protocol.js +9 -7
  12. package/dist/cdp/protocol.js.map +1 -1
  13. package/dist/commands/cleanup.d.ts.map +1 -1
  14. package/dist/commands/cleanup.js +21 -6
  15. package/dist/commands/cleanup.js.map +1 -1
  16. package/dist/commands/dom/a11y.d.ts +18 -0
  17. package/dist/commands/dom/a11y.d.ts.map +1 -0
  18. package/dist/commands/dom/a11y.js +134 -0
  19. package/dist/commands/dom/a11y.js.map +1 -0
  20. package/dist/commands/dom/evalHelpers.js +1 -1
  21. package/dist/commands/dom/evalHelpers.js.map +1 -1
  22. package/dist/commands/dom/index.d.ts.map +1 -1
  23. package/dist/commands/dom/index.js +41 -20
  24. package/dist/commands/dom/index.js.map +1 -1
  25. package/dist/commands/peek.d.ts.map +1 -1
  26. package/dist/commands/peek.js +2 -0
  27. package/dist/commands/peek.js.map +1 -1
  28. package/dist/commands/stop.d.ts.map +1 -1
  29. package/dist/commands/stop.js +12 -4
  30. package/dist/commands/stop.js.map +1 -1
  31. package/dist/commands/types.d.ts +3 -0
  32. package/dist/commands/types.d.ts.map +1 -1
  33. package/dist/constants.d.ts +6 -0
  34. package/dist/constants.d.ts.map +1 -1
  35. package/dist/constants.js +6 -0
  36. package/dist/constants.js.map +1 -1
  37. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts +19 -0
  38. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts.map +1 -0
  39. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js +212 -0
  40. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js.map +1 -0
  41. package/dist/daemon/launcher.d.ts.map +1 -1
  42. package/dist/daemon/launcher.js +4 -3
  43. package/dist/daemon/launcher.js.map +1 -1
  44. package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -1
  45. package/dist/daemon/lifecycle/workerCleanup.js +1 -1
  46. package/dist/daemon/lifecycle/workerCleanup.js.map +1 -1
  47. package/dist/daemon/services/SessionService.js +1 -1
  48. package/dist/daemon/services/SessionService.js.map +1 -1
  49. package/dist/ipc/__tests__/client.contract.test.js +251 -19
  50. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  51. package/dist/ipc/__tests__/jsonl.unit.test.js +19 -1
  52. package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -1
  53. package/dist/ipc/transport/jsonl.d.ts +16 -0
  54. package/dist/ipc/transport/jsonl.d.ts.map +1 -1
  55. package/dist/ipc/transport/jsonl.js +25 -0
  56. package/dist/ipc/transport/jsonl.js.map +1 -1
  57. package/dist/session/chrome.js +2 -2
  58. package/dist/session/chrome.js.map +1 -1
  59. package/dist/session/cleanup.d.ts +21 -0
  60. package/dist/session/cleanup.d.ts.map +1 -1
  61. package/dist/session/cleanup.js +101 -1
  62. package/dist/session/cleanup.js.map +1 -1
  63. package/dist/session/lock.js +1 -1
  64. package/dist/session/lock.js.map +1 -1
  65. package/dist/telemetry/__tests__/a11y.unit.test.d.ts +10 -0
  66. package/dist/telemetry/__tests__/a11y.unit.test.d.ts.map +1 -0
  67. package/dist/telemetry/__tests__/a11y.unit.test.js +265 -0
  68. package/dist/telemetry/__tests__/a11y.unit.test.js.map +1 -0
  69. package/dist/telemetry/a11y.d.ts +78 -0
  70. package/dist/telemetry/a11y.d.ts.map +1 -0
  71. package/dist/telemetry/a11y.js +280 -0
  72. package/dist/telemetry/a11y.js.map +1 -0
  73. package/dist/telemetry/dom.d.ts +1 -1
  74. package/dist/telemetry/dom.d.ts.map +1 -1
  75. package/dist/telemetry/dom.js +32 -1
  76. package/dist/telemetry/dom.js.map +1 -1
  77. package/dist/types.d.ts +77 -0
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts +2 -0
  80. package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts.map +1 -0
  81. package/dist/ui/formatters/__tests__/semantic.unit.test.js +111 -0
  82. package/dist/ui/formatters/__tests__/semantic.unit.test.js.map +1 -0
  83. package/dist/ui/formatters/a11y.d.ts +30 -0
  84. package/dist/ui/formatters/a11y.d.ts.map +1 -0
  85. package/dist/ui/formatters/a11y.js +178 -0
  86. package/dist/ui/formatters/a11y.js.map +1 -0
  87. package/dist/ui/formatters/preview.d.ts +2 -0
  88. package/dist/ui/formatters/preview.d.ts.map +1 -1
  89. package/dist/ui/formatters/preview.js +27 -4
  90. package/dist/ui/formatters/preview.js.map +1 -1
  91. package/dist/ui/formatters/semantic.d.ts +36 -0
  92. package/dist/ui/formatters/semantic.d.ts.map +1 -0
  93. package/dist/ui/formatters/semantic.js +98 -0
  94. package/dist/ui/formatters/semantic.js.map +1 -0
  95. package/dist/ui/formatters/status.js +1 -1
  96. package/dist/ui/formatters/status.js.map +1 -1
  97. package/dist/ui/messages/commands.d.ts +7 -0
  98. package/dist/ui/messages/commands.d.ts.map +1 -1
  99. package/dist/ui/messages/commands.js +9 -0
  100. package/dist/ui/messages/commands.js.map +1 -1
  101. package/dist/utils/__tests__/errors.unit.test.d.ts +12 -0
  102. package/dist/utils/__tests__/errors.unit.test.d.ts.map +1 -0
  103. package/dist/utils/__tests__/errors.unit.test.js +255 -0
  104. package/dist/utils/__tests__/errors.unit.test.js.map +1 -0
  105. package/dist/utils/__tests__/http.unit.test.d.ts +12 -0
  106. package/dist/utils/__tests__/http.unit.test.d.ts.map +1 -0
  107. package/dist/utils/__tests__/http.unit.test.js +218 -0
  108. package/dist/utils/__tests__/http.unit.test.js.map +1 -0
  109. package/dist/utils/__tests__/process.unit.test.d.ts +14 -0
  110. package/dist/utils/__tests__/process.unit.test.d.ts.map +1 -0
  111. package/dist/utils/__tests__/process.unit.test.js +124 -0
  112. package/dist/utils/__tests__/process.unit.test.js.map +1 -0
  113. package/dist/utils/__tests__/session.contract.test.js +1 -1
  114. package/dist/utils/__tests__/session.contract.test.js.map +1 -1
  115. package/package.json +22 -1
@@ -55,4 +55,25 @@ export declare function cleanupSession(): void;
55
55
  * @returns True if cleanup was performed, false if daemon is running
56
56
  */
57
57
  export declare function cleanupStaleDaemonPid(): boolean;
58
+ /**
59
+ * Aggressively cleanup orphaned daemon processes.
60
+ *
61
+ * Finds and kills all node processes running dist/daemon.js that are not
62
+ * the currently tracked daemon. This prevents accumulation of zombie daemon
63
+ * processes from test failures, timeouts, or crashes.
64
+ *
65
+ * WHY: Stale daemon processes accumulate from test runs and failures, causing
66
+ * resource leaks and confusion. Aggressive cleanup prevents this.
67
+ *
68
+ * @returns Number of orphaned daemons killed
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const killedCount = cleanupOrphanedDaemons();
73
+ * if (killedCount > 0) {
74
+ * console.log(`Killed ${killedCount} orphaned daemon process(es)`);
75
+ * }
76
+ * ```
77
+ */
78
+ export declare function cleanupOrphanedDaemons(): number;
58
79
  //# sourceMappingURL=cleanup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CA0F7C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAyCrC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAoD/C"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmHH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CA0F7C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAyCrC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAoD/C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuB/C"}
@@ -4,14 +4,15 @@
4
4
  * Handles cleanup of session files (PID, metadata, lock, socket).
5
5
  * WHY: Centralized cleanup logic ensures consistent cleanup across error paths and normal shutdown.
6
6
  */
7
+ import { execSync } from 'child_process';
7
8
  import * as fs from 'fs';
8
9
  import { getErrorMessage } from '../connection/errors.js';
9
10
  import { createLogger } from '../ui/logging/index.js';
11
+ import { isProcessAlive, killChromeProcess } from '../utils/process.js';
10
12
  import { readChromePid, clearChromePid } from './chrome.js';
11
13
  import { acquireSessionLock, releaseSessionLock } from './lock.js';
12
14
  import { getSessionFilePath, ensureSessionDir } from './paths.js';
13
15
  import { readPid, cleanupPidFile, readPidFromFile } from './pid.js';
14
- import { isProcessAlive, killChromeProcess } from './process.js';
15
16
  const log = createLogger('cleanup');
16
17
  function killOrphanedWorker(pid) {
17
18
  try {
@@ -42,6 +43,65 @@ function killCachedChromeProcess(reason) {
42
43
  }
43
44
  }
44
45
  }
46
+ /**
47
+ * Find all orphaned daemon processes and return their PIDs.
48
+ *
49
+ * Orphaned daemons are node processes running dist/daemon.js that are not
50
+ * the currently tracked daemon in the PID file.
51
+ *
52
+ * @returns Array of orphaned daemon PIDs
53
+ */
54
+ function findOrphanedDaemons() {
55
+ const orphanedPids = [];
56
+ try {
57
+ // Get currently tracked daemon PID (if any)
58
+ const daemonPidPath = getSessionFilePath('DAEMON_PID');
59
+ const currentDaemonPid = readPidFromFile(daemonPidPath);
60
+ // Find all node processes running dist/daemon.js
61
+ // Platform-specific ps command
62
+ const psCommand = process.platform === 'win32'
63
+ ? 'wmic process where "commandline like \'%dist/daemon.js%\'" get processid'
64
+ : 'ps aux | grep -E "node.*dist/daemon\\.js" | grep -v grep';
65
+ const output = execSync(psCommand, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
66
+ // Parse PIDs from output
67
+ const lines = output.trim().split('\n');
68
+ for (const line of lines) {
69
+ // Extract PID based on platform
70
+ let pid;
71
+ if (process.platform === 'win32') {
72
+ // Windows: ProcessId column
73
+ const match = line.trim().match(/(\d+)/);
74
+ if (!match?.[1]) {
75
+ continue;
76
+ }
77
+ pid = parseInt(match[1], 10);
78
+ }
79
+ else {
80
+ // Unix/macOS: Second column in ps output
81
+ const parts = line.trim().split(/\s+/);
82
+ if (parts.length < 2 || !parts[1]) {
83
+ continue;
84
+ }
85
+ pid = parseInt(parts[1], 10);
86
+ }
87
+ if (Number.isNaN(pid)) {
88
+ continue;
89
+ }
90
+ // Skip if this is the current daemon
91
+ if (currentDaemonPid && pid === currentDaemonPid) {
92
+ continue;
93
+ }
94
+ // Verify process is still alive
95
+ if (isProcessAlive(pid)) {
96
+ orphanedPids.push(pid);
97
+ }
98
+ }
99
+ }
100
+ catch (error) {
101
+ log.debug(`Failed to find orphaned daemons: ${getErrorMessage(error)}`);
102
+ }
103
+ return orphanedPids;
104
+ }
45
105
  /**
46
106
  * Cleanup stale session files if no active session is running.
47
107
  *
@@ -257,4 +317,44 @@ export function cleanupStaleDaemonPid() {
257
317
  }
258
318
  }
259
319
  }
320
+ /**
321
+ * Aggressively cleanup orphaned daemon processes.
322
+ *
323
+ * Finds and kills all node processes running dist/daemon.js that are not
324
+ * the currently tracked daemon. This prevents accumulation of zombie daemon
325
+ * processes from test failures, timeouts, or crashes.
326
+ *
327
+ * WHY: Stale daemon processes accumulate from test runs and failures, causing
328
+ * resource leaks and confusion. Aggressive cleanup prevents this.
329
+ *
330
+ * @returns Number of orphaned daemons killed
331
+ *
332
+ * @example
333
+ * ```typescript
334
+ * const killedCount = cleanupOrphanedDaemons();
335
+ * if (killedCount > 0) {
336
+ * console.log(`Killed ${killedCount} orphaned daemon process(es)`);
337
+ * }
338
+ * ```
339
+ */
340
+ export function cleanupOrphanedDaemons() {
341
+ const orphanedPids = findOrphanedDaemons();
342
+ if (orphanedPids.length === 0) {
343
+ log.debug('No orphaned daemon processes found');
344
+ return 0;
345
+ }
346
+ log.info(`Found ${orphanedPids.length} orphaned daemon process(es): ${orphanedPids.join(', ')}`);
347
+ let killedCount = 0;
348
+ for (const pid of orphanedPids) {
349
+ try {
350
+ process.kill(pid, 'SIGKILL');
351
+ log.info(`Killed orphaned daemon process ${pid}`);
352
+ killedCount++;
353
+ }
354
+ catch (error) {
355
+ log.debug(`Failed to kill orphaned daemon ${pid}: ${getErrorMessage(error)}`);
356
+ }
357
+ }
358
+ return killedCount;
359
+ }
260
360
  //# sourceMappingURL=cleanup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@
7
7
  import * as fs from 'fs';
8
8
  import { getErrorMessage } from '../connection/errors.js';
9
9
  import { createLogger } from '../ui/logging/index.js';
10
+ import { isProcessAlive } from '../utils/process.js';
10
11
  import { getSessionFilePath, ensureSessionDir } from './paths.js';
11
- import { isProcessAlive } from './process.js';
12
12
  const log = createLogger('session');
13
13
  /**
14
14
  * Type guard for NodeJS errno exceptions.
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Unit tests for accessibility tree pure functions.
3
+ *
4
+ * Tests the contract of pure functions:
5
+ * - buildTreeFromRawNodes: Tree construction from CDP nodes
6
+ * - parseQueryPattern: Pattern string parsing
7
+ * - queryA11yTree: Tree querying logic
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=a11y.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.unit.test.d.ts","sourceRoot":"","sources":["../../../src/telemetry/__tests__/a11y.unit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Unit tests for accessibility tree pure functions.
3
+ *
4
+ * Tests the contract of pure functions:
5
+ * - buildTreeFromRawNodes: Tree construction from CDP nodes
6
+ * - parseQueryPattern: Pattern string parsing
7
+ * - queryA11yTree: Tree querying logic
8
+ */
9
+ import { strict as assert } from 'node:assert';
10
+ import { describe, test } from 'node:test';
11
+ import { buildTreeFromRawNodes, parseQueryPattern, queryA11yTree } from '../../telemetry/a11y.js';
12
+ describe('buildTreeFromRawNodes', () => {
13
+ test('builds tree from valid CDP nodes', () => {
14
+ const rawNodes = [
15
+ {
16
+ nodeId: '1',
17
+ ignored: false,
18
+ role: { type: 'role', value: 'RootWebArea' },
19
+ name: { type: 'computedString', value: 'Test Page' },
20
+ childIds: ['2', '3'],
21
+ },
22
+ {
23
+ nodeId: '2',
24
+ ignored: false,
25
+ role: { type: 'role', value: 'button' },
26
+ name: { type: 'computedString', value: 'Submit' },
27
+ properties: [{ name: 'focusable', value: { type: 'boolean', value: true } }],
28
+ },
29
+ {
30
+ nodeId: '3',
31
+ ignored: false,
32
+ role: { type: 'role', value: 'textbox' },
33
+ name: { type: 'computedString', value: 'Email' },
34
+ properties: [{ name: 'required', value: { type: 'boolean', value: true } }],
35
+ },
36
+ ];
37
+ const tree = buildTreeFromRawNodes(rawNodes);
38
+ assert.equal(tree.count, 3, 'Should count all non-ignored nodes');
39
+ assert.equal(tree.root.role, 'RootWebArea', 'First node should be root');
40
+ assert.equal(tree.root.name, 'Test Page');
41
+ assert.ok(tree.nodes.has('1'), 'Should index node by nodeId');
42
+ assert.ok(tree.nodes.has('2'), 'Should index all nodes');
43
+ assert.ok(tree.nodes.has('3'), 'Should index all nodes');
44
+ });
45
+ test('filters out ignored nodes', () => {
46
+ const rawNodes = [
47
+ {
48
+ nodeId: '1',
49
+ ignored: false,
50
+ role: { type: 'role', value: 'button' },
51
+ name: { type: 'computedString', value: 'Click Me' },
52
+ },
53
+ {
54
+ nodeId: '2',
55
+ ignored: true,
56
+ ignoredReasons: [{ name: 'uninteresting', value: { type: 'boolean', value: true } }],
57
+ role: { type: 'role', value: 'none' },
58
+ },
59
+ {
60
+ nodeId: '3',
61
+ ignored: false,
62
+ role: { type: 'role', value: 'textbox' },
63
+ name: { type: 'computedString', value: 'Input' },
64
+ },
65
+ ];
66
+ const tree = buildTreeFromRawNodes(rawNodes);
67
+ assert.equal(tree.count, 2, 'Should exclude ignored nodes');
68
+ assert.ok(tree.nodes.has('1'), 'Should include non-ignored nodes');
69
+ assert.ok(!tree.nodes.has('2'), 'Should exclude ignored node');
70
+ assert.ok(tree.nodes.has('3'), 'Should include non-ignored nodes');
71
+ });
72
+ test('extracts common properties (focusable, focused, disabled, required)', () => {
73
+ const rawNodes = [
74
+ {
75
+ nodeId: '1',
76
+ ignored: false,
77
+ role: { type: 'role', value: 'textbox' },
78
+ name: { type: 'computedString', value: 'Email' },
79
+ properties: [
80
+ { name: 'focusable', value: { type: 'boolean', value: true } },
81
+ { name: 'focused', value: { type: 'boolean', value: true } },
82
+ { name: 'required', value: { type: 'boolean', value: true } },
83
+ ],
84
+ },
85
+ ];
86
+ const tree = buildTreeFromRawNodes(rawNodes);
87
+ const node = tree.nodes.get('1');
88
+ assert.ok(node);
89
+ assert.equal(node.focusable, true);
90
+ assert.equal(node.focused, true);
91
+ assert.equal(node.required, true);
92
+ });
93
+ test('stores non-standard properties in properties map', () => {
94
+ const rawNodes = [
95
+ {
96
+ nodeId: '1',
97
+ ignored: false,
98
+ role: { type: 'role', value: 'textbox' },
99
+ properties: [
100
+ { name: 'invalid', value: { type: 'string', value: 'false' } },
101
+ { name: 'editable', value: { type: 'string', value: 'plaintext' } },
102
+ ],
103
+ },
104
+ ];
105
+ const tree = buildTreeFromRawNodes(rawNodes);
106
+ const node = tree.nodes.get('1');
107
+ assert.ok(node);
108
+ assert.ok(node.properties);
109
+ assert.equal(node.properties['invalid'], 'false');
110
+ assert.equal(node.properties['editable'], 'plaintext');
111
+ });
112
+ test('throws error when no non-ignored nodes found', () => {
113
+ const rawNodes = [
114
+ {
115
+ nodeId: '1',
116
+ ignored: true,
117
+ ignoredReasons: [{ name: 'uninteresting', value: { type: 'boolean', value: true } }],
118
+ role: { type: 'role', value: 'none' },
119
+ },
120
+ ];
121
+ assert.throws(() => buildTreeFromRawNodes(rawNodes), /No root node found/, 'Should throw when all nodes are ignored');
122
+ });
123
+ test('handles empty node array', () => {
124
+ const rawNodes = [];
125
+ assert.throws(() => buildTreeFromRawNodes(rawNodes), /No root node found/, 'Should throw for empty array');
126
+ });
127
+ });
128
+ describe('parseQueryPattern', () => {
129
+ test('parses single field pattern', () => {
130
+ const pattern = parseQueryPattern('role:button');
131
+ assert.equal(pattern.role, 'button');
132
+ assert.equal(pattern.name, undefined);
133
+ assert.equal(pattern.description, undefined);
134
+ });
135
+ test('parses multiple field pattern with AND logic', () => {
136
+ const pattern = parseQueryPattern('role:button name:Submit');
137
+ assert.equal(pattern.role, 'button');
138
+ assert.equal(pattern.name, 'Submit');
139
+ });
140
+ test('parses all three fields', () => {
141
+ const pattern = parseQueryPattern('role:button name:Submit description:Primary');
142
+ assert.equal(pattern.role, 'button');
143
+ assert.equal(pattern.name, 'Submit');
144
+ assert.equal(pattern.description, 'Primary');
145
+ });
146
+ test('handles values with spaces (takes first word)', () => {
147
+ const pattern = parseQueryPattern('role:button name:Submit Form');
148
+ assert.equal(pattern.role, 'button');
149
+ assert.equal(pattern.name, 'Submit');
150
+ });
151
+ test('handles description shorthand (desc)', () => {
152
+ const pattern = parseQueryPattern('desc:Main');
153
+ assert.equal(pattern.description, 'Main');
154
+ });
155
+ test('handles values with colons', () => {
156
+ const pattern = parseQueryPattern('name:Click:Me');
157
+ assert.equal(pattern.name, 'Click:Me');
158
+ });
159
+ test('ignores invalid fields', () => {
160
+ const pattern = parseQueryPattern('invalid:value role:button');
161
+ assert.equal(pattern.role, 'button');
162
+ assert.equal(Object.keys(pattern).length, 1, 'Should only include valid fields');
163
+ });
164
+ test('returns empty object for invalid pattern', () => {
165
+ const pattern = parseQueryPattern('invalid:value');
166
+ assert.deepEqual(pattern, {});
167
+ });
168
+ test('is case-insensitive for field names', () => {
169
+ const pattern = parseQueryPattern('ROLE:button Name:Submit DESC:Primary');
170
+ assert.equal(pattern.role, 'button');
171
+ assert.equal(pattern.name, 'Submit');
172
+ assert.equal(pattern.description, 'Primary');
173
+ });
174
+ });
175
+ describe('queryA11yTree', () => {
176
+ const tree = {
177
+ root: {
178
+ nodeId: '1',
179
+ role: 'RootWebArea',
180
+ name: 'Test Page',
181
+ },
182
+ nodes: new Map([
183
+ ['1', { nodeId: '1', role: 'RootWebArea', name: 'Test Page' }],
184
+ ['2', { nodeId: '2', role: 'button', name: 'Submit Form', focusable: true }],
185
+ ['3', { nodeId: '3', role: 'button', name: 'Cancel', focusable: true }],
186
+ ['4', { nodeId: '4', role: 'textbox', name: 'Email Address', required: true }],
187
+ ['5', { nodeId: '5', role: 'textbox', name: 'Password', required: true }],
188
+ ]),
189
+ count: 5,
190
+ };
191
+ test('queries by role only', () => {
192
+ const result = queryA11yTree(tree, { role: 'button' });
193
+ assert.equal(result.count, 2, 'Should find both buttons');
194
+ assert.equal(result.nodes.length, 2);
195
+ assert.ok(result.nodes.every((n) => n.role === 'button'), 'All results should be buttons');
196
+ });
197
+ test('queries by name only', () => {
198
+ const result = queryA11yTree(tree, { name: 'Email' });
199
+ assert.equal(result.count, 1);
200
+ assert.ok(result.nodes[0]);
201
+ assert.equal(result.nodes[0].name, 'Email Address');
202
+ });
203
+ test('queries with AND logic (role + name)', () => {
204
+ const result = queryA11yTree(tree, { role: 'button', name: 'Submit' });
205
+ assert.equal(result.count, 1);
206
+ assert.ok(result.nodes[0]);
207
+ assert.equal(result.nodes[0].name, 'Submit Form');
208
+ assert.equal(result.nodes[0].role, 'button');
209
+ });
210
+ test('name matching is case-insensitive', () => {
211
+ const result = queryA11yTree(tree, { name: 'submit' });
212
+ assert.equal(result.count, 1);
213
+ assert.ok(result.nodes[0]);
214
+ assert.equal(result.nodes[0].name, 'Submit Form');
215
+ });
216
+ test('name matching is substring match', () => {
217
+ const result = queryA11yTree(tree, { name: 'Form' });
218
+ assert.equal(result.count, 1);
219
+ assert.ok(result.nodes[0]);
220
+ assert.equal(result.nodes[0].name, 'Submit Form');
221
+ });
222
+ test('role matching is case-insensitive', () => {
223
+ const result = queryA11yTree(tree, { role: 'BUTTON' });
224
+ assert.equal(result.count, 2);
225
+ });
226
+ test('returns empty result when no matches', () => {
227
+ const result = queryA11yTree(tree, { role: 'heading' });
228
+ assert.equal(result.count, 0);
229
+ assert.equal(result.nodes.length, 0);
230
+ });
231
+ test('returns query pattern in result', () => {
232
+ const pattern = { role: 'button', name: 'Submit' };
233
+ const result = queryA11yTree(tree, pattern);
234
+ assert.deepEqual(result.pattern, pattern);
235
+ });
236
+ test('queries by description', () => {
237
+ const treeWithDesc = {
238
+ root: { nodeId: '1', role: 'button', name: 'Click' },
239
+ nodes: new Map([
240
+ ['1', { nodeId: '1', role: 'button', name: 'Click', description: 'Primary action' }],
241
+ ['2', { nodeId: '2', role: 'button', name: 'Cancel', description: 'Secondary action' }],
242
+ ]),
243
+ count: 2,
244
+ };
245
+ const result = queryA11yTree(treeWithDesc, { description: 'Primary' });
246
+ assert.equal(result.count, 1);
247
+ assert.ok(result.nodes[0]);
248
+ assert.equal(result.nodes[0].description, 'Primary action');
249
+ });
250
+ test('handles nodes without name field', () => {
251
+ const treeWithoutNames = {
252
+ root: { nodeId: '1', role: 'generic' },
253
+ nodes: new Map([
254
+ ['1', { nodeId: '1', role: 'generic' }],
255
+ ['2', { nodeId: '2', role: 'button', name: 'Submit' }],
256
+ ]),
257
+ count: 2,
258
+ };
259
+ const result = queryA11yTree(treeWithoutNames, { name: 'Submit' });
260
+ assert.equal(result.count, 1);
261
+ assert.ok(result.nodes[0]);
262
+ assert.equal(result.nodes[0].name, 'Submit');
263
+ });
264
+ });
265
+ //# sourceMappingURL=a11y.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.unit.test.js","sourceRoot":"","sources":["../../../src/telemetry/__tests__/a11y.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { Protocol } from '../connection/typed-cdp.js';
2
+ import type { A11yNode, A11yTree, A11yQueryPattern, A11yQueryResult } from '../types.js';
3
+ /**
4
+ * Builds accessibility tree from raw CDP nodes.
5
+ *
6
+ * Pure function that filters out ignored nodes and builds the tree structure.
7
+ * Separated from collectA11yTree for easier unit testing.
8
+ *
9
+ * @param rawNodes - Raw AXNode array from CDP
10
+ * @returns Parsed accessibility tree
11
+ * @throws Error if no root node found
12
+ */
13
+ export declare function buildTreeFromRawNodes(rawNodes: Protocol.Accessibility.AXNode[]): A11yTree;
14
+ /**
15
+ * Collects the full accessibility tree from the page via IPC.
16
+ *
17
+ * Uses the worker's persistent CDP connection through callCDP for consistency
18
+ * with other DOM commands and to avoid connection conflicts.
19
+ *
20
+ * @returns Parsed and filtered accessibility tree
21
+ * @throws Error if CDP Accessibility domain fails
22
+ */
23
+ export declare function collectA11yTree(): Promise<A11yTree>;
24
+ /**
25
+ * Queries accessibility tree by pattern (role, name, description).
26
+ *
27
+ * Performs case-insensitive matching with AND logic for multiple fields.
28
+ *
29
+ * @param tree - Accessibility tree to search
30
+ * @param pattern - Query pattern with optional role, name, description
31
+ * @returns Query result with matching nodes
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // Find submit buttons
36
+ * queryA11yTree(tree, { role: 'button', name: 'Submit' });
37
+ *
38
+ * // Find all textboxes
39
+ * queryA11yTree(tree, { role: 'textbox' });
40
+ *
41
+ * // Find by name only
42
+ * queryA11yTree(tree, { name: 'Email' });
43
+ * ```
44
+ */
45
+ export declare function queryA11yTree(tree: A11yTree, pattern: A11yQueryPattern): A11yQueryResult;
46
+ /**
47
+ * Parses query pattern string into A11yQueryPattern object.
48
+ *
49
+ * Supports format: "role:button name:Submit description:Main"
50
+ * Fields are separated by spaces, case-insensitive.
51
+ *
52
+ * @param patternString - Query pattern string
53
+ * @returns Parsed query pattern
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * parseQueryPattern('role:button name:Submit')
58
+ * // => { role: 'button', name: 'Submit' }
59
+ *
60
+ * parseQueryPattern('role:textbox')
61
+ * // => { role: 'textbox' }
62
+ *
63
+ * parseQueryPattern('name:Email')
64
+ * // => { name: 'Email' }
65
+ * ```
66
+ */
67
+ export declare function parseQueryPattern(patternString: string): A11yQueryPattern;
68
+ /**
69
+ * Gets accessibility properties for a DOM node by CSS selector via IPC.
70
+ *
71
+ * Uses the worker's persistent CDP connection through callCDP for consistency.
72
+ *
73
+ * @param selector - CSS selector
74
+ * @returns A11y node or null if not found
75
+ * @throws Error if selector is invalid or element not found
76
+ */
77
+ export declare function getA11yNodeBySelector(selector: string): Promise<A11yNode | null>;
78
+ //# sourceMappingURL=a11y.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../../src/telemetry/a11y.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAExF;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,QAAQ,CAwBzF;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC,CAgBzD;AA6ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAcxF;AAwCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,CA2BzE;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyCtF"}