e2e-pilot 0.0.69

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 (152) hide show
  1. package/bin.js +3 -0
  2. package/dist/aria-snapshot.d.ts +95 -0
  3. package/dist/aria-snapshot.d.ts.map +1 -0
  4. package/dist/aria-snapshot.js +490 -0
  5. package/dist/aria-snapshot.js.map +1 -0
  6. package/dist/bippy.js +971 -0
  7. package/dist/cdp-relay.d.ts +16 -0
  8. package/dist/cdp-relay.d.ts.map +1 -0
  9. package/dist/cdp-relay.js +715 -0
  10. package/dist/cdp-relay.js.map +1 -0
  11. package/dist/cdp-session.d.ts +42 -0
  12. package/dist/cdp-session.d.ts.map +1 -0
  13. package/dist/cdp-session.js +154 -0
  14. package/dist/cdp-session.js.map +1 -0
  15. package/dist/cdp-types.d.ts +63 -0
  16. package/dist/cdp-types.d.ts.map +1 -0
  17. package/dist/cdp-types.js +91 -0
  18. package/dist/cdp-types.js.map +1 -0
  19. package/dist/cli.d.ts +3 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +213 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/create-logger.d.ts +9 -0
  24. package/dist/create-logger.d.ts.map +1 -0
  25. package/dist/create-logger.js +25 -0
  26. package/dist/create-logger.js.map +1 -0
  27. package/dist/debugger-api.md +458 -0
  28. package/dist/debugger-examples-types.d.ts +24 -0
  29. package/dist/debugger-examples-types.d.ts.map +1 -0
  30. package/dist/debugger-examples-types.js +2 -0
  31. package/dist/debugger-examples-types.js.map +1 -0
  32. package/dist/debugger-examples.d.ts +6 -0
  33. package/dist/debugger-examples.d.ts.map +1 -0
  34. package/dist/debugger-examples.js +53 -0
  35. package/dist/debugger-examples.js.map +1 -0
  36. package/dist/debugger.d.ts +381 -0
  37. package/dist/debugger.d.ts.map +1 -0
  38. package/dist/debugger.js +633 -0
  39. package/dist/debugger.js.map +1 -0
  40. package/dist/editor-api.md +364 -0
  41. package/dist/editor-examples.d.ts +11 -0
  42. package/dist/editor-examples.d.ts.map +1 -0
  43. package/dist/editor-examples.js +124 -0
  44. package/dist/editor-examples.js.map +1 -0
  45. package/dist/editor.d.ts +203 -0
  46. package/dist/editor.d.ts.map +1 -0
  47. package/dist/editor.js +336 -0
  48. package/dist/editor.js.map +1 -0
  49. package/dist/execute.d.ts +50 -0
  50. package/dist/execute.d.ts.map +1 -0
  51. package/dist/execute.js +576 -0
  52. package/dist/execute.js.map +1 -0
  53. package/dist/index.d.ts +11 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +7 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/mcp-client.d.ts +20 -0
  58. package/dist/mcp-client.d.ts.map +1 -0
  59. package/dist/mcp-client.js +56 -0
  60. package/dist/mcp-client.js.map +1 -0
  61. package/dist/mcp.d.ts +5 -0
  62. package/dist/mcp.d.ts.map +1 -0
  63. package/dist/mcp.js +720 -0
  64. package/dist/mcp.js.map +1 -0
  65. package/dist/mcp.test.d.ts +10 -0
  66. package/dist/mcp.test.d.ts.map +1 -0
  67. package/dist/mcp.test.js +2999 -0
  68. package/dist/mcp.test.js.map +1 -0
  69. package/dist/network-capture.d.ts +23 -0
  70. package/dist/network-capture.d.ts.map +1 -0
  71. package/dist/network-capture.js +98 -0
  72. package/dist/network-capture.js.map +1 -0
  73. package/dist/protocol.d.ts +54 -0
  74. package/dist/protocol.d.ts.map +1 -0
  75. package/dist/protocol.js +2 -0
  76. package/dist/protocol.js.map +1 -0
  77. package/dist/react-source.d.ts +13 -0
  78. package/dist/react-source.d.ts.map +1 -0
  79. package/dist/react-source.js +68 -0
  80. package/dist/react-source.js.map +1 -0
  81. package/dist/scoped-fs.d.ts +94 -0
  82. package/dist/scoped-fs.d.ts.map +1 -0
  83. package/dist/scoped-fs.js +356 -0
  84. package/dist/scoped-fs.js.map +1 -0
  85. package/dist/selector-generator.js +8126 -0
  86. package/dist/start-relay-server.d.ts +6 -0
  87. package/dist/start-relay-server.d.ts.map +1 -0
  88. package/dist/start-relay-server.js +33 -0
  89. package/dist/start-relay-server.js.map +1 -0
  90. package/dist/styles-api.md +117 -0
  91. package/dist/styles-examples.d.ts +8 -0
  92. package/dist/styles-examples.d.ts.map +1 -0
  93. package/dist/styles-examples.js +64 -0
  94. package/dist/styles-examples.js.map +1 -0
  95. package/dist/styles.d.ts +27 -0
  96. package/dist/styles.d.ts.map +1 -0
  97. package/dist/styles.js +234 -0
  98. package/dist/styles.js.map +1 -0
  99. package/dist/trace-utils.d.ts +14 -0
  100. package/dist/trace-utils.d.ts.map +1 -0
  101. package/dist/trace-utils.js +21 -0
  102. package/dist/trace-utils.js.map +1 -0
  103. package/dist/utils.d.ts +20 -0
  104. package/dist/utils.d.ts.map +1 -0
  105. package/dist/utils.js +75 -0
  106. package/dist/utils.js.map +1 -0
  107. package/dist/wait-for-page-load.d.ts +16 -0
  108. package/dist/wait-for-page-load.d.ts.map +1 -0
  109. package/dist/wait-for-page-load.js +127 -0
  110. package/dist/wait-for-page-load.js.map +1 -0
  111. package/package.json +67 -0
  112. package/src/aria-snapshot.ts +610 -0
  113. package/src/assets/aria-labels-github-snapshot.txt +605 -0
  114. package/src/assets/aria-labels-github.png +0 -0
  115. package/src/assets/aria-labels-google-snapshot.txt +49 -0
  116. package/src/assets/aria-labels-google.png +0 -0
  117. package/src/assets/aria-labels-hacker-news-snapshot.txt +1023 -0
  118. package/src/assets/aria-labels-hacker-news.png +0 -0
  119. package/src/cdp-relay.ts +925 -0
  120. package/src/cdp-session.ts +203 -0
  121. package/src/cdp-timing.md +128 -0
  122. package/src/cdp-types.ts +155 -0
  123. package/src/cli.ts +250 -0
  124. package/src/create-logger.ts +36 -0
  125. package/src/debugger-examples-types.ts +13 -0
  126. package/src/debugger-examples.ts +66 -0
  127. package/src/debugger.md +453 -0
  128. package/src/debugger.ts +713 -0
  129. package/src/editor-examples.ts +148 -0
  130. package/src/editor.ts +390 -0
  131. package/src/execute.ts +763 -0
  132. package/src/index.ts +10 -0
  133. package/src/mcp-client.ts +78 -0
  134. package/src/mcp.test.ts +3596 -0
  135. package/src/mcp.ts +876 -0
  136. package/src/network-capture.ts +140 -0
  137. package/src/prompt.bak.md +323 -0
  138. package/src/prompt.md +7 -0
  139. package/src/protocol.ts +63 -0
  140. package/src/react-source.ts +94 -0
  141. package/src/resource.md +436 -0
  142. package/src/scoped-fs.ts +411 -0
  143. package/src/snapshots/hacker-news-focused-accessibility.md +202 -0
  144. package/src/snapshots/hacker-news-initial-accessibility.md +11 -0
  145. package/src/snapshots/hacker-news-tabbed-accessibility.md +202 -0
  146. package/src/snapshots/shadcn-ui-accessibility.md +11 -0
  147. package/src/start-relay-server.ts +43 -0
  148. package/src/styles-examples.ts +77 -0
  149. package/src/styles.ts +345 -0
  150. package/src/trace-utils.ts +43 -0
  151. package/src/utils.ts +91 -0
  152. package/src/wait-for-page-load.ts +174 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-relay.js","sourceRoot":"","sources":["../src/cdp-relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import WebSocket from 'ws';
2
+ import type { Page } from 'playwright-core';
3
+ import type { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping.js';
4
+ /**
5
+ * Common interface for CDP sessions that works with both our CDPSession
6
+ * and Playwright's CDPSession. Use this type when you want to accept either.
7
+ *
8
+ * Uses loose types so Playwright's CDPSession (which uses Protocol.Events)
9
+ * is assignable to this interface.
10
+ */
11
+ export interface ICDPSession {
12
+ send(method: string, params?: object): Promise<unknown>;
13
+ on(event: string, callback: (params: any) => void): unknown;
14
+ off(event: string, callback: (params: any) => void): unknown;
15
+ detach(): Promise<void>;
16
+ }
17
+ export declare class CDPSession implements ICDPSession {
18
+ private ws;
19
+ private pendingRequests;
20
+ private eventListeners;
21
+ private messageId;
22
+ private sessionId;
23
+ constructor(ws: WebSocket);
24
+ setSessionId(sessionId: string): void;
25
+ send<K extends keyof ProtocolMapping.Commands>(method: K, params?: ProtocolMapping.Commands[K]['paramsType'][0]): Promise<ProtocolMapping.Commands[K]['returnType']>;
26
+ on<K extends keyof ProtocolMapping.Events>(event: K, callback: (params: ProtocolMapping.Events[K][0]) => void): this;
27
+ /** Alias for `on` - matches Playwright's CDPSession interface */
28
+ addListener<K extends keyof ProtocolMapping.Events>(event: K, callback: (params: ProtocolMapping.Events[K][0]) => void): this;
29
+ off<K extends keyof ProtocolMapping.Events>(event: K, callback: (params: ProtocolMapping.Events[K][0]) => void): this;
30
+ /** Alias for `off` - matches Playwright's CDPSession interface */
31
+ removeListener<K extends keyof ProtocolMapping.Events>(event: K, callback: (params: ProtocolMapping.Events[K][0]) => void): this;
32
+ /** Listen for an event once, then automatically remove the listener */
33
+ once<K extends keyof ProtocolMapping.Events>(event: K, callback: (params: ProtocolMapping.Events[K][0]) => void): this;
34
+ /** Alias for `close` - matches Playwright's CDPSession interface */
35
+ detach(): Promise<void>;
36
+ close(): void;
37
+ }
38
+ export declare function getCDPSessionForPage({ page, wsUrl }: {
39
+ page: Page;
40
+ wsUrl: string;
41
+ }): Promise<CDPSession>;
42
+ //# sourceMappingURL=cdp-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-session.d.ts","sourceRoot":"","sources":["../src/cdp-session.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAC1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAGlF;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAA;IAC3D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAA;IAC5D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB;AAOD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,cAAc,CAAoD;IAC1E,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,SAAS,CAAsB;gBAE3B,EAAE,EAAE,SAAS;IAkCzB,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,EAC3C,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAkCrD,EAAE,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAQpH,iEAAiE;IACjE,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,EAChD,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACvD,IAAI;IAIP,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKrH,kEAAkE;IAClE,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,EACnD,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACvD,IAAI;IAIP,uEAAuE;IACvE,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAQtH,oEAAoE;IACpE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,KAAK;CAYN;AAED,wBAAsB,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAsC9G"}
@@ -0,0 +1,154 @@
1
+ import WebSocket from 'ws';
2
+ export class CDPSession {
3
+ ws;
4
+ pendingRequests = new Map();
5
+ eventListeners = new Map();
6
+ messageId = 0;
7
+ sessionId = null;
8
+ constructor(ws) {
9
+ this.ws = ws;
10
+ this.ws.on('message', (data) => {
11
+ try {
12
+ const message = JSON.parse(data.toString());
13
+ if ('id' in message) {
14
+ const response = message;
15
+ const pending = this.pendingRequests.get(response.id);
16
+ if (pending) {
17
+ this.pendingRequests.delete(response.id);
18
+ if (response.error) {
19
+ pending.reject(new Error(response.error.message));
20
+ }
21
+ else {
22
+ pending.resolve(response.result);
23
+ }
24
+ }
25
+ }
26
+ else if ('method' in message) {
27
+ const event = message;
28
+ if (event.sessionId === this.sessionId || !event.sessionId) {
29
+ const listeners = this.eventListeners.get(event.method);
30
+ if (listeners) {
31
+ for (const listener of listeners) {
32
+ listener(event.params);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ catch (e) {
39
+ console.error('[CDPSession] Message handling error:', e);
40
+ }
41
+ });
42
+ }
43
+ setSessionId(sessionId) {
44
+ this.sessionId = sessionId;
45
+ }
46
+ send(method, params) {
47
+ const id = ++this.messageId;
48
+ const message = { id, method, params };
49
+ if (this.sessionId) {
50
+ message.sessionId = this.sessionId;
51
+ }
52
+ return new Promise((resolve, reject) => {
53
+ const timeout = setTimeout(() => {
54
+ this.pendingRequests.delete(id);
55
+ reject(new Error(`CDP command timeout: ${method}`));
56
+ }, 30000);
57
+ this.pendingRequests.set(id, {
58
+ resolve: (result) => {
59
+ clearTimeout(timeout);
60
+ resolve(result);
61
+ },
62
+ reject: (error) => {
63
+ clearTimeout(timeout);
64
+ reject(error);
65
+ },
66
+ });
67
+ try {
68
+ this.ws.send(JSON.stringify(message));
69
+ }
70
+ catch (error) {
71
+ clearTimeout(timeout);
72
+ this.pendingRequests.delete(id);
73
+ reject(error instanceof Error ? error : new Error(String(error)));
74
+ }
75
+ });
76
+ }
77
+ on(event, callback) {
78
+ if (!this.eventListeners.has(event)) {
79
+ this.eventListeners.set(event, new Set());
80
+ }
81
+ this.eventListeners.get(event).add(callback);
82
+ return this;
83
+ }
84
+ /** Alias for `on` - matches Playwright's CDPSession interface */
85
+ addListener(event, callback) {
86
+ return this.on(event, callback);
87
+ }
88
+ off(event, callback) {
89
+ this.eventListeners.get(event)?.delete(callback);
90
+ return this;
91
+ }
92
+ /** Alias for `off` - matches Playwright's CDPSession interface */
93
+ removeListener(event, callback) {
94
+ return this.off(event, callback);
95
+ }
96
+ /** Listen for an event once, then automatically remove the listener */
97
+ once(event, callback) {
98
+ const onceCallback = (params) => {
99
+ this.off(event, onceCallback);
100
+ callback(params);
101
+ };
102
+ return this.on(event, onceCallback);
103
+ }
104
+ /** Alias for `close` - matches Playwright's CDPSession interface */
105
+ detach() {
106
+ this.close();
107
+ return Promise.resolve();
108
+ }
109
+ close() {
110
+ try {
111
+ for (const pending of this.pendingRequests.values()) {
112
+ pending.reject(new Error('CDPSession detached'));
113
+ }
114
+ this.pendingRequests.clear();
115
+ this.eventListeners.clear();
116
+ this.ws.close();
117
+ }
118
+ catch (e) {
119
+ console.error('[CDPSession] WebSocket close error:', e);
120
+ }
121
+ }
122
+ }
123
+ export async function getCDPSessionForPage({ page, wsUrl }) {
124
+ const ws = new WebSocket(wsUrl);
125
+ await new Promise((resolve, reject) => {
126
+ ws.on('open', resolve);
127
+ ws.on('error', reject);
128
+ });
129
+ const cdp = new CDPSession(ws);
130
+ const pages = page.context().pages();
131
+ const pageIndex = pages.indexOf(page);
132
+ if (pageIndex === -1) {
133
+ cdp.close();
134
+ throw new Error('Page not found in context');
135
+ }
136
+ const { targetInfos } = await cdp.send('Target.getTargets');
137
+ const pageTargets = targetInfos.filter((t) => t.type === 'page');
138
+ if (pageIndex >= pageTargets.length) {
139
+ cdp.close();
140
+ throw new Error(`Page index ${pageIndex} out of bounds (${pageTargets.length} targets)`);
141
+ }
142
+ const target = pageTargets[pageIndex];
143
+ if (target.url !== page.url()) {
144
+ cdp.close();
145
+ throw new Error(`URL mismatch: page has "${page.url()}" but target has "${target.url}"`);
146
+ }
147
+ const { sessionId } = await cdp.send('Target.attachToTarget', {
148
+ targetId: target.targetId,
149
+ flatten: true,
150
+ });
151
+ cdp.setSessionId(sessionId);
152
+ return cdp;
153
+ }
154
+ //# sourceMappingURL=cdp-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-session.js","sourceRoot":"","sources":["../src/cdp-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { Protocol } from 'devtools-protocol';
2
+ import type { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping.js';
3
+ export type CDPCommandFor<T extends keyof ProtocolMapping.Commands> = {
4
+ id: number;
5
+ sessionId?: string;
6
+ method: T;
7
+ params?: ProtocolMapping.Commands[T]['paramsType'][0];
8
+ };
9
+ export type CDPCommand = {
10
+ [K in keyof ProtocolMapping.Commands]: CDPCommandFor<K>;
11
+ }[keyof ProtocolMapping.Commands];
12
+ export type CDPResponseFor<T extends keyof ProtocolMapping.Commands> = {
13
+ id: number;
14
+ sessionId?: string;
15
+ result?: ProtocolMapping.Commands[T]['returnType'];
16
+ error?: {
17
+ code?: number;
18
+ message: string;
19
+ };
20
+ };
21
+ export type CDPResponse = {
22
+ [K in keyof ProtocolMapping.Commands]: CDPResponseFor<K>;
23
+ }[keyof ProtocolMapping.Commands];
24
+ export type CDPEventFor<T extends keyof ProtocolMapping.Events> = {
25
+ method: T;
26
+ sessionId?: string;
27
+ params?: ProtocolMapping.Events[T][0];
28
+ };
29
+ export type CDPEvent = {
30
+ [K in keyof ProtocolMapping.Events]: CDPEventFor<K>;
31
+ }[keyof ProtocolMapping.Events];
32
+ export type CDPResponseBase = {
33
+ id: number;
34
+ sessionId?: string;
35
+ result?: unknown;
36
+ error?: {
37
+ code?: number;
38
+ message: string;
39
+ };
40
+ };
41
+ export type CDPEventBase = {
42
+ method: string;
43
+ sessionId?: string;
44
+ params?: unknown;
45
+ };
46
+ export type CDPMessage = CDPCommand | CDPResponse | CDPEvent;
47
+ export type RelayServerEvents = {
48
+ 'cdp:command': (data: {
49
+ clientId: string;
50
+ command: CDPCommand;
51
+ }) => void;
52
+ 'cdp:event': (data: {
53
+ event: CDPEventBase;
54
+ sessionId?: string;
55
+ }) => void;
56
+ 'cdp:response': (data: {
57
+ clientId: string;
58
+ response: CDPResponseBase;
59
+ command: CDPCommand;
60
+ }) => void;
61
+ };
62
+ export { Protocol, ProtocolMapping };
63
+ //# sourceMappingURL=cdp-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-types.d.ts","sourceRoot":"","sources":["../src/cdp-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAEnF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,IAAI;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;KACtB,CAAC,IAAI,MAAM,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC;CACxD,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,IAAI;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,MAAM,eAAe,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC;CACzD,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,IAAI;IAChE,MAAM,EAAE,CAAC,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;KACpB,CAAC,IAAI,MAAM,eAAe,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;CACpD,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;AAEhC,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAA;IACxE,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACxE,cAAc,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAA;CACrG,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,91 @@
1
+ // types tests. to see if types are right with some simple examples
2
+ if (false) {
3
+ const browserVersionCommand = {
4
+ id: 1,
5
+ method: 'Browser.getVersion',
6
+ };
7
+ const browserVersionResponse = {
8
+ id: 1,
9
+ result: {
10
+ protocolVersion: '1.3',
11
+ product: 'Chrome',
12
+ revision: '123',
13
+ userAgent: 'Mozilla/5.0',
14
+ jsVersion: 'V8',
15
+ }
16
+ };
17
+ const targetAttachCommand = {
18
+ id: 2,
19
+ method: 'Target.setAutoAttach',
20
+ params: {
21
+ autoAttach: true,
22
+ waitForDebuggerOnStart: false,
23
+ }
24
+ };
25
+ const targetAttachResponse = {
26
+ id: 2,
27
+ result: undefined,
28
+ };
29
+ const attachedToTargetEvent = {
30
+ method: 'Target.attachedToTarget',
31
+ params: {
32
+ sessionId: 'session-1',
33
+ targetInfo: {
34
+ targetId: 'target-1',
35
+ type: 'page',
36
+ title: 'Example',
37
+ url: 'https://example.com',
38
+ attached: true,
39
+ canAccessOpener: false,
40
+ },
41
+ waitingForDebugger: false,
42
+ }
43
+ };
44
+ const consoleMessageEvent = {
45
+ method: 'Runtime.consoleAPICalled',
46
+ params: {
47
+ type: 'log',
48
+ args: [],
49
+ executionContextId: 1,
50
+ timestamp: 123456789,
51
+ }
52
+ };
53
+ const pageNavigateCommand = {
54
+ id: 3,
55
+ method: 'Page.navigate',
56
+ params: {
57
+ url: 'https://example.com',
58
+ }
59
+ };
60
+ const pageNavigateResponse = {
61
+ id: 3,
62
+ result: {
63
+ frameId: 'frame-1',
64
+ }
65
+ };
66
+ const networkRequestEvent = {
67
+ method: 'Network.requestWillBeSent',
68
+ sessionId: 'session-1',
69
+ params: {
70
+ requestId: 'req-1',
71
+ loaderId: 'loader-1',
72
+ documentURL: 'https://example.com',
73
+ request: {
74
+ url: 'https://example.com/api',
75
+ method: 'GET',
76
+ headers: {},
77
+ initialPriority: 'High',
78
+ referrerPolicy: 'no-referrer',
79
+ },
80
+ timestamp: 123456789,
81
+ wallTime: 123456789,
82
+ initiator: {
83
+ type: 'other',
84
+ },
85
+ redirectHasExtraInfo: false,
86
+ type: 'XHR',
87
+ }
88
+ };
89
+ }
90
+ export {};
91
+ //# sourceMappingURL=cdp-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-types.js","sourceRoot":"","sources":["../src/cdp-types.ts"],"names":[],"mappings":"AA0DA,mEAAmE;AACnE,IAAI,KAAY,EAAE,CAAC;IACjB,MAAM,qBAAqB,GAAG;QAC5B,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,oBAAoB;KACR,CAAC;IAEvB,MAAM,sBAAsB,GAAG;QAC7B,EAAE,EAAE,CAAC;QACL,MAAM,EAAE;YACN,eAAe,EAAE,KAAK;YACtB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,IAAI;SAChB;KACoB,CAAC;IAExB,MAAM,mBAAmB,GAAG;QAC1B,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,sBAAsB;QAC9B,MAAM,EAAE;YACN,UAAU,EAAE,IAAI;YAChB,sBAAsB,EAAE,KAAK;SAC9B;KACmB,CAAC;IAEvB,MAAM,oBAAoB,GAAG;QAC3B,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,SAAS;KACI,CAAC;IAExB,MAAM,qBAAqB,GAAG;QAC5B,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE;YACN,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE;gBACV,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,qBAAqB;gBAC1B,QAAQ,EAAE,IAAI;gBACd,eAAe,EAAE,KAAK;aACvB;YACD,kBAAkB,EAAE,KAAK;SAC1B;KACiB,CAAC;IAErB,MAAM,mBAAmB,GAAG;QAC1B,MAAM,EAAE,0BAA0B;QAClC,MAAM,EAAE;YACN,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,EAAE;YACR,kBAAkB,EAAE,CAAC;YACrB,SAAS,EAAE,SAAS;SACrB;KACiB,CAAC;IAErB,MAAM,mBAAmB,GAAG;QAC1B,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE;YACN,GAAG,EAAE,qBAAqB;SAC3B;KACmB,CAAC;IAEvB,MAAM,oBAAoB,GAAG;QAC3B,EAAE,EAAE,CAAC;QACL,MAAM,EAAE;YACN,OAAO,EAAE,SAAS;SACnB;KACoB,CAAC;IAExB,MAAM,mBAAmB,GAAG;QAC1B,MAAM,EAAE,2BAA2B;QACnC,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE;YACN,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE;gBACP,GAAG,EAAE,yBAAyB;gBAC9B,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE;gBACX,eAAe,EAAE,MAAM;gBACvB,cAAc,EAAE,aAAa;aAC9B;YACD,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE;gBACT,IAAI,EAAE,OAAO;aACd;YACD,oBAAoB,EAAE,KAAK;YAC3B,IAAI,EAAE,KAAK;SACZ;KACiB,CAAC;AACvB,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,213 @@
1
+ #!/usr/bin/env node
2
+ import { cac } from 'cac';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { spawn } from 'node:child_process';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { chromium } from 'playwright-core';
8
+ import { startE2EPilotCDPRelayServer } from './cdp-relay.js';
9
+ import { createFileLogger } from './create-logger.js';
10
+ import { getCdpUrl, VERSION, sleep, RELAY_PORT, getServerVersion, setDeviceScaleFactorForMacOS, preserveSystemColorScheme, } from './utils.js';
11
+ import { executeCode } from './execute.js';
12
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
13
+ const cli = cac('e2e-pilot');
14
+ cli
15
+ .command('', 'Start the MCP server (default)')
16
+ .option('--host <host>', 'Remote relay server host to connect to (or use E2E_PILOT_HOST env var)')
17
+ .option('--token <token>', 'Authentication token (or use E2E_PILOT_TOKEN env var)')
18
+ .action(async (options) => {
19
+ const { startMcp } = await import('./mcp.js');
20
+ await startMcp({
21
+ host: options.host,
22
+ token: options.token,
23
+ });
24
+ });
25
+ cli
26
+ .command('serve', 'Start the CDP relay server for remote MCP connections')
27
+ .option('--host <host>', 'Host to bind to', { default: '0.0.0.0' })
28
+ .option('--token <token>', 'Authentication token (or use E2E_PILOT_TOKEN env var)')
29
+ .action(async (options) => {
30
+ const token = options.token || process.env.E2E_PILOT_TOKEN;
31
+ if (!token) {
32
+ console.error('Error: Authentication token is required.');
33
+ console.error('Provide --token <token> or set E2E_PILOT_TOKEN environment variable.');
34
+ process.exit(1);
35
+ }
36
+ const logger = createFileLogger();
37
+ process.title = 'e2e-pilot-serve';
38
+ process.on('uncaughtException', async (err) => {
39
+ await logger.error('Uncaught Exception:', err);
40
+ process.exit(1);
41
+ });
42
+ process.on('unhandledRejection', async (reason) => {
43
+ await logger.error('Unhandled Rejection:', reason);
44
+ process.exit(1);
45
+ });
46
+ const server = await startE2EPilotCDPRelayServer({
47
+ port: RELAY_PORT,
48
+ host: options.host,
49
+ token,
50
+ logger,
51
+ });
52
+ console.log('E2E Pilot CDP relay server started');
53
+ console.log(` Host: ${options.host}`);
54
+ console.log(` Port: ${RELAY_PORT}`);
55
+ console.log(` Token: (configured)`);
56
+ console.log(` Logs: ${logger.logFilePath}`);
57
+ console.log('');
58
+ console.log('Endpoints:');
59
+ console.log(` Extension: ws://${options.host}:${RELAY_PORT}/extension`);
60
+ console.log(` CDP: ws://${options.host}:${RELAY_PORT}/cdp/<client-id>?token=<token>`);
61
+ console.log('');
62
+ console.log('Press Ctrl+C to stop.');
63
+ process.on('SIGINT', () => {
64
+ console.log('\nShutting down...');
65
+ server.close();
66
+ process.exit(0);
67
+ });
68
+ process.on('SIGTERM', () => {
69
+ console.log('\nShutting down...');
70
+ server.close();
71
+ process.exit(0);
72
+ });
73
+ });
74
+ cli
75
+ .command('run [...files]', 'Execute Playwright code from file(s), --code, or stdin and exit')
76
+ .option('-c, --code <code>', 'Execute code passed as a string')
77
+ .option('--timeout <ms>', 'Execution timeout in milliseconds', { default: 30000 })
78
+ .option('--host <host>', 'Remote relay server host (or use E2E_PILOT_HOST env var)')
79
+ .option('--token <token>', 'Authentication token for remote (or use E2E_PILOT_TOKEN env var)')
80
+ .action(async (files, options) => {
81
+ // Priority: --code flag > stdin > files
82
+ const code = await (async () => {
83
+ if (options.code) {
84
+ return options.code;
85
+ }
86
+ if (!process.stdin.isTTY) {
87
+ return await readStdin();
88
+ }
89
+ if (files.length > 0) {
90
+ const codeChunks = [];
91
+ for (const file of files) {
92
+ const filePath = path.resolve(file);
93
+ if (!fs.existsSync(filePath)) {
94
+ console.error(`Error: File not found: ${filePath}`);
95
+ process.exit(1);
96
+ }
97
+ const content = fs.readFileSync(filePath, 'utf-8');
98
+ codeChunks.push(content);
99
+ }
100
+ return codeChunks.join('\n');
101
+ }
102
+ console.error('Error: Provide code via --code, stdin, or file path(s)');
103
+ console.error('Usage: e2e-pilot run -c "code" | e2e-pilot run <file.js> | echo "code" | e2e-pilot run');
104
+ process.exit(1);
105
+ })();
106
+ // Set up environment for remote connection if specified
107
+ const host = options.host || process.env.E2E_PILOT_HOST;
108
+ const token = options.token || process.env.E2E_PILOT_TOKEN;
109
+ try {
110
+ // Ensure relay server is running (for local mode)
111
+ if (!host) {
112
+ await ensureRelayServerForCli();
113
+ }
114
+ // Connect to browser
115
+ const cdpEndpoint = getCdpUrl(host ? { host, port: RELAY_PORT, token } : { port: RELAY_PORT });
116
+ console.error(`Connecting to CDP endpoint: ${cdpEndpoint}`);
117
+ const browser = await chromium.connectOverCDP(cdpEndpoint);
118
+ console.error('Connected to browser');
119
+ const contexts = browser.contexts();
120
+ const context = contexts.length > 0 ? contexts[0] : await browser.newContext();
121
+ const pages = context.pages();
122
+ if (pages.length === 0) {
123
+ console.error('Error: No browser tabs are connected.');
124
+ console.error('Please install and enable the E2E Pilot extension on at least one tab.');
125
+ process.exit(1);
126
+ }
127
+ const page = pages[0];
128
+ // Apply macOS device scale factor
129
+ await setDeviceScaleFactorForMacOS(context);
130
+ await preserveSystemColorScheme(context);
131
+ // Execute the code
132
+ const result = await executeCode({
133
+ code,
134
+ timeout: options.timeout,
135
+ deps: {
136
+ page,
137
+ context,
138
+ userState: {},
139
+ browserLogs: new Map(),
140
+ lastSnapshots: new WeakMap(),
141
+ cdpSessionCache: new WeakMap(),
142
+ getPageTargetId: async (p) => p._guid || '',
143
+ getCdpUrl: () => getCdpUrl(host ? { host, port: RELAY_PORT, token } : { port: RELAY_PORT }),
144
+ resetConnection: async () => {
145
+ throw new Error('resetConnection is not supported in run mode');
146
+ },
147
+ logger: (...args) => {
148
+ console.error(...args);
149
+ },
150
+ sendLogToRelayServer: () => { },
151
+ },
152
+ });
153
+ // Output result
154
+ for (const item of result.content) {
155
+ if (item.type === 'text') {
156
+ console.log(item.text);
157
+ }
158
+ else if (item.type === 'image') {
159
+ console.log(`[Image: ${item.mimeType}]`);
160
+ }
161
+ }
162
+ // Disconnect and exit
163
+ await browser.close().catch(() => { });
164
+ process.exit(result.isError ? 1 : 0);
165
+ }
166
+ catch (error) {
167
+ console.error('Error:', error.message);
168
+ process.exit(1);
169
+ }
170
+ });
171
+ async function ensureRelayServerForCli() {
172
+ const serverVersion = await getServerVersion();
173
+ if (serverVersion === VERSION) {
174
+ return;
175
+ }
176
+ console.error('Starting CDP relay server...');
177
+ const dev = process.env.E2E_PILOT_NODE_ENV === 'development';
178
+ const scriptPath = dev
179
+ ? path.resolve(__dirname, '../src/start-relay-server.ts')
180
+ : path.resolve(__dirname, 'start-relay-server.js');
181
+ const serverProcess = spawn(dev ? 'tsx' : process.execPath, [scriptPath], {
182
+ detached: true,
183
+ stdio: 'ignore',
184
+ });
185
+ serverProcess.unref();
186
+ for (let i = 0; i < 10; i++) {
187
+ await sleep(500);
188
+ const newVersion = await getServerVersion();
189
+ if (newVersion === VERSION) {
190
+ console.error('CDP relay server started');
191
+ await sleep(1000);
192
+ return;
193
+ }
194
+ }
195
+ throw new Error('Failed to start CDP relay server after 5 seconds');
196
+ }
197
+ async function readStdin() {
198
+ return new Promise((resolve, reject) => {
199
+ let data = '';
200
+ process.stdin.setEncoding('utf-8');
201
+ process.stdin.on('data', (chunk) => {
202
+ data += chunk;
203
+ });
204
+ process.stdin.on('end', () => {
205
+ resolve(data);
206
+ });
207
+ process.stdin.on('error', reject);
208
+ });
209
+ }
210
+ cli.help();
211
+ cli.version(VERSION);
212
+ cli.parse();
213
+ //# sourceMappingURL=cli.js.map