@haibun/web-playwright 1.73.0 → 1.74.1

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 (131) hide show
  1. package/build/cycles.d.ts.map +1 -1
  2. package/build/cycles.js +14 -0
  3. package/build/cycles.js.map +1 -1
  4. package/build/domains.d.ts +4 -0
  5. package/build/domains.d.ts.map +1 -0
  6. package/build/domains.js +13 -0
  7. package/build/domains.js.map +1 -0
  8. package/build/interactionSteps.d.ts +2 -187
  9. package/build/interactionSteps.d.ts.map +1 -1
  10. package/build/interactionSteps.js +101 -126
  11. package/build/interactionSteps.js.map +1 -1
  12. package/build/monitor/MonitorHandler.d.ts +2 -1
  13. package/build/monitor/MonitorHandler.d.ts.map +1 -1
  14. package/build/monitor/MonitorHandler.js +20 -15
  15. package/build/monitor/MonitorHandler.js.map +1 -1
  16. package/build/monitor/controls.d.ts.map +1 -1
  17. package/build/monitor/controls.js +6 -0
  18. package/build/monitor/controls.js.map +1 -1
  19. package/build/monitor/graph/generateMermaidGraph.d.ts.map +1 -1
  20. package/build/monitor/graph/generateMermaidGraph.js +29 -54
  21. package/build/monitor/graph/generateMermaidGraph.js.map +1 -1
  22. package/build/rest-playwright.d.ts +58 -18
  23. package/build/rest-playwright.d.ts.map +1 -1
  24. package/build/rest-playwright.js +40 -57
  25. package/build/rest-playwright.js.map +1 -1
  26. package/build/twin-page.d.ts +24 -0
  27. package/build/twin-page.d.ts.map +1 -0
  28. package/build/twin-page.js +158 -0
  29. package/build/twin-page.js.map +1 -0
  30. package/build/web-playwright.d.ts +75 -205
  31. package/build/web-playwright.d.ts.map +1 -1
  32. package/build/web-playwright.js +27 -14
  33. package/build/web-playwright.js.map +1 -1
  34. package/package.json +4 -3
  35. package/web/monitor.html +191 -190
  36. package/build/monitor/LogEntry.d.ts +0 -4
  37. package/build/monitor/LogEntry.d.ts.map +0 -1
  38. package/build/monitor/LogEntry.js +0 -4
  39. package/build/monitor/LogEntry.js.map +0 -1
  40. package/build/monitor/artifactDisplayBase.d.ts +0 -2
  41. package/build/monitor/artifactDisplayBase.d.ts.map +0 -1
  42. package/build/monitor/artifactDisplayBase.js +0 -2
  43. package/build/monitor/artifactDisplayBase.js.map +0 -1
  44. package/build/monitor/artifactDisplays/MermaidDiagram.d.ts +0 -22
  45. package/build/monitor/artifactDisplays/MermaidDiagram.d.ts.map +0 -1
  46. package/build/monitor/artifactDisplays/MermaidDiagram.js +0 -199
  47. package/build/monitor/artifactDisplays/MermaidDiagram.js.map +0 -1
  48. package/build/monitor/artifactDisplays/htmlArtifactDisplay.d.ts +0 -9
  49. package/build/monitor/artifactDisplays/htmlArtifactDisplay.d.ts.map +0 -1
  50. package/build/monitor/artifactDisplays/htmlArtifactDisplay.js +0 -31
  51. package/build/monitor/artifactDisplays/htmlArtifactDisplay.js.map +0 -1
  52. package/build/monitor/artifactDisplays/imageArtifactDisplay.d.ts +0 -9
  53. package/build/monitor/artifactDisplays/imageArtifactDisplay.d.ts.map +0 -1
  54. package/build/monitor/artifactDisplays/imageArtifactDisplay.js +0 -17
  55. package/build/monitor/artifactDisplays/imageArtifactDisplay.js.map +0 -1
  56. package/build/monitor/artifactDisplays/jsonArtifactDisplay.d.ts +0 -9
  57. package/build/monitor/artifactDisplays/jsonArtifactDisplay.d.ts.map +0 -1
  58. package/build/monitor/artifactDisplays/jsonArtifactDisplay.js +0 -18
  59. package/build/monitor/artifactDisplays/jsonArtifactDisplay.js.map +0 -1
  60. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.d.ts +0 -14
  61. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.d.ts.map +0 -1
  62. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.js +0 -72
  63. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.js.map +0 -1
  64. package/build/monitor/artifactDisplays/mermaidDiagram.d.ts +0 -22
  65. package/build/monitor/artifactDisplays/mermaidDiagram.d.ts.map +0 -1
  66. package/build/monitor/artifactDisplays/mermaidDiagram.js +0 -199
  67. package/build/monitor/artifactDisplays/mermaidDiagram.js.map +0 -1
  68. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.d.ts +0 -9
  69. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.d.ts.map +0 -1
  70. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.js +0 -36
  71. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.js.map +0 -1
  72. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.d.ts +0 -32
  73. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.d.ts.map +0 -1
  74. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.js +0 -299
  75. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.js.map +0 -1
  76. package/build/monitor/artifactDisplays/speechArtifactDisplay.d.ts +0 -9
  77. package/build/monitor/artifactDisplays/speechArtifactDisplay.d.ts.map +0 -1
  78. package/build/monitor/artifactDisplays/speechArtifactDisplay.js +0 -38
  79. package/build/monitor/artifactDisplays/speechArtifactDisplay.js.map +0 -1
  80. package/build/monitor/artifactDisplays/videoArtifactDisplay.d.ts +0 -9
  81. package/build/monitor/artifactDisplays/videoArtifactDisplay.d.ts.map +0 -1
  82. package/build/monitor/artifactDisplays/videoArtifactDisplay.js +0 -22
  83. package/build/monitor/artifactDisplays/videoArtifactDisplay.js.map +0 -1
  84. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.d.ts +0 -9
  85. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.d.ts.map +0 -1
  86. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.js +0 -30
  87. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.js.map +0 -1
  88. package/build/monitor/htmlArtifactDisplay.d.ts +0 -2
  89. package/build/monitor/htmlArtifactDisplay.d.ts.map +0 -1
  90. package/build/monitor/htmlArtifactDisplay.js +0 -2
  91. package/build/monitor/htmlArtifactDisplay.js.map +0 -1
  92. package/build/monitor/imageArtifactDisplay.d.ts +0 -2
  93. package/build/monitor/imageArtifactDisplay.d.ts.map +0 -1
  94. package/build/monitor/imageArtifactDisplay.js +0 -2
  95. package/build/monitor/imageArtifactDisplay.js.map +0 -1
  96. package/build/monitor/jsonArtifactDisplay.d.ts +0 -2
  97. package/build/monitor/jsonArtifactDisplay.d.ts.map +0 -1
  98. package/build/monitor/jsonArtifactDisplay.js +0 -2
  99. package/build/monitor/jsonArtifactDisplay.js.map +0 -1
  100. package/build/monitor/jsonArtifactHTTPTrace.d.ts +0 -2
  101. package/build/monitor/jsonArtifactHTTPTrace.d.ts.map +0 -1
  102. package/build/monitor/jsonArtifactHTTPTrace.js +0 -2
  103. package/build/monitor/jsonArtifactHTTPTrace.js.map +0 -1
  104. package/build/monitor/mermaidDiagram.d.ts +0 -22
  105. package/build/monitor/mermaidDiagram.d.ts.map +0 -1
  106. package/build/monitor/mermaidDiagram.js +0 -199
  107. package/build/monitor/mermaidDiagram.js.map +0 -1
  108. package/build/monitor/resolvedFeaturesArtifactDisplay.d.ts +0 -2
  109. package/build/monitor/resolvedFeaturesArtifactDisplay.d.ts.map +0 -1
  110. package/build/monitor/resolvedFeaturesArtifactDisplay.js +0 -2
  111. package/build/monitor/resolvedFeaturesArtifactDisplay.js.map +0 -1
  112. package/build/monitor/sequenceDiagramGenerator.d.ts +0 -32
  113. package/build/monitor/sequenceDiagramGenerator.d.ts.map +0 -1
  114. package/build/monitor/sequenceDiagramGenerator.js +0 -299
  115. package/build/monitor/sequenceDiagramGenerator.js.map +0 -1
  116. package/build/monitor/speechArtifactDisplay.d.ts +0 -2
  117. package/build/monitor/speechArtifactDisplay.d.ts.map +0 -1
  118. package/build/monitor/speechArtifactDisplay.js +0 -2
  119. package/build/monitor/speechArtifactDisplay.js.map +0 -1
  120. package/build/monitor/videoArtifactDisplay.d.ts +0 -2
  121. package/build/monitor/videoArtifactDisplay.d.ts.map +0 -1
  122. package/build/monitor/videoArtifactDisplay.js +0 -2
  123. package/build/monitor/videoArtifactDisplay.js.map +0 -1
  124. package/build/monitor/videoStartArtifactDisplay.d.ts +0 -2
  125. package/build/monitor/videoStartArtifactDisplay.d.ts.map +0 -1
  126. package/build/monitor/videoStartArtifactDisplay.js +0 -2
  127. package/build/monitor/videoStartArtifactDisplay.js.map +0 -1
  128. package/build/test-constants.d.ts +0 -7
  129. package/build/test-constants.d.ts.map +0 -1
  130. package/build/test-constants.js +0 -11
  131. package/build/test-constants.js.map +0 -1
@@ -10,127 +10,124 @@ export const base64Encode = ({ username, password }) => Buffer.from(`${username}
10
10
  export const restSteps = (webPlaywright) => ({
11
11
  setApiUserAgent: {
12
12
  gwta: `API user agent is {agent}`,
13
- action: async ({ agent }) => {
13
+ action: ({ agent }) => {
14
14
  webPlaywright.apiUserAgent = agent;
15
- return Promise.resolve(OK);
15
+ return OK;
16
16
  }
17
17
  },
18
18
  addBasicAuthCredentials: {
19
19
  gwta: `use Authorization Basic header with {username}, {password}`,
20
20
  action: async ({ username, password }) => {
21
21
  await webPlaywright.setExtraHTTPHeaders({ [AUTHORIZATION]: `Basic ${base64Encode({ username, password })}` });
22
- return Promise.resolve(OK);
22
+ return OK;
23
23
  },
24
24
  },
25
25
  addAuthBearerToken: {
26
26
  gwta: `use Authorization Bearer header with {token}`,
27
27
  action: async ({ token }) => {
28
28
  await webPlaywright.setExtraHTTPHeaders({ [AUTHORIZATION]: `Bearer ${token}` });
29
- return Promise.resolve(OK);
29
+ return OK;
30
30
  },
31
31
  },
32
32
  restTokenRequest: {
33
33
  gwta: `request OAuth 2.0 access token from {endpoint}`,
34
- action: async ({ endpoint }) => {
34
+ action: async ({ endpoint }, featureStep) => {
35
35
  const serialized = await webPlaywright.withPageFetch(endpoint);
36
36
  const accessToken = serialized.json[ACCESS_TOKEN];
37
37
  await webPlaywright.setExtraHTTPHeaders({ [AUTHORIZATION]: `Bearer ${accessToken}` });
38
- webPlaywright.setLastResponse(serialized);
39
- return Promise.resolve(OK);
38
+ webPlaywright.setLastResponse(serialized, featureStep);
39
+ return OK;
40
40
  },
41
41
  },
42
42
  restTokenLogout: {
43
43
  gwta: `perform OAuth 2.0 logout from {endpoint}`,
44
- action: async ({ endpoint }) => {
44
+ action: async ({ endpoint }, featureStep) => {
45
45
  await webPlaywright.setExtraHTTPHeaders({});
46
46
  const serialized = await webPlaywright.withPageFetch(endpoint);
47
- webPlaywright.setLastResponse(serialized);
48
- return Promise.resolve(OK);
47
+ webPlaywright.setLastResponse(serialized, featureStep);
48
+ return OK;
49
49
  },
50
50
  },
51
51
  acceptEndpointRequest: {
52
52
  gwta: `accept {accept} using ${HTTP} {method} to {endpoint}`,
53
- action: async ({ accept, method, endpoint }) => {
53
+ action: async ({ accept, method, endpoint }, featureStep) => {
54
54
  method = method.toLowerCase();
55
55
  if (!NO_PAYLOAD_METHODS.includes(method)) {
56
56
  return actionNotOK(`Method ${method} not supported`);
57
57
  }
58
58
  const serialized = await webPlaywright.withPageFetch(endpoint, method, { headers: { accept } });
59
- webPlaywright.setLastResponse(serialized);
60
- return Promise.resolve(OK);
59
+ webPlaywright.setLastResponse(serialized, featureStep);
60
+ return OK;
61
61
  },
62
62
  },
63
63
  restEndpointRequest: {
64
64
  gwta: `make an ${HTTP} {method} to {endpoint}`,
65
- action: async ({ method, endpoint }) => {
65
+ action: async ({ method, endpoint }, featureStep) => {
66
66
  method = method.toLowerCase();
67
67
  if (!NO_PAYLOAD_METHODS.includes(method)) {
68
68
  return actionNotOK(`Method ${method} not supported`);
69
69
  }
70
70
  const serialized = await webPlaywright.withPageFetch(endpoint, method);
71
- webPlaywright.setLastResponse(serialized);
72
- return Promise.resolve(OK);
71
+ webPlaywright.setLastResponse(serialized, featureStep);
72
+ return OK;
73
73
  },
74
74
  },
75
75
  filterResponseJson: {
76
76
  gwta: `filter JSON response by {property} matching {match}`,
77
- action: async ({ property, match }) => {
77
+ action: ({ property, match }, featureStep) => {
78
78
  const lastResponse = webPlaywright.getLastResponse();
79
79
  if (!lastResponse?.json || !Array.isArray(lastResponse.json)) {
80
80
  return actionNotOK(`No JSON or array from ${JSON.stringify(lastResponse)}`);
81
81
  }
82
82
  const filtered = lastResponse.json.filter((item) => item[property].match(match));
83
- webPlaywright.setLastResponse({
84
- ...lastResponse,
85
- filtered,
86
- });
87
- return Promise.resolve(OK);
83
+ webPlaywright.setLastResponse({ ...lastResponse, filtered }, featureStep);
84
+ return OK;
88
85
  },
89
86
  },
90
87
  filteredResponseLengthIs: {
91
88
  gwta: `filtered response length is {length}`,
92
- action: async ({ length }) => {
89
+ action: ({ length }) => {
93
90
  const lastResponse = webPlaywright.getLastResponse();
94
91
  if (!lastResponse?.filtered || lastResponse.filtered.length !== parseInt(length)) {
95
92
  return actionNotOK(`Expected ${length}, got ${lastResponse?.filtered?.length}`);
96
93
  }
97
- return Promise.resolve(OK);
94
+ return OK;
98
95
  },
99
96
  },
100
97
  showResponseLength: {
101
98
  gwta: `show JSON response count`,
102
- action: async () => {
99
+ action: () => {
103
100
  const lastResponse = webPlaywright.getLastResponse();
104
101
  if (!lastResponse?.json || typeof lastResponse.json.length !== 'number') {
105
102
  console.debug(lastResponse);
106
- return Promise.resolve(actionNotOK(`No last response to count`));
103
+ return actionNotOK(`No last response to count`);
107
104
  }
108
105
  webPlaywright.getWorld().logger.info(`lastResponse JSON count is ${lastResponse.json.length}`);
109
106
  const messageContext = { incident: EExecutionMessageType.ACTION, incidentDetails: { summary: 'options', details: { count: lastResponse.json.length } } };
110
- return Promise.resolve(actionOK({ messageContext }));
107
+ return actionOK({ messageContext });
111
108
  },
112
109
  },
113
110
  showFilteredLength: {
114
111
  gwta: `show filtered response count`,
115
- action: async () => {
112
+ action: () => {
116
113
  const lastResponse = webPlaywright.getLastResponse();
117
114
  if (!lastResponse?.filtered || typeof lastResponse.filtered.length !== 'number') {
118
115
  console.debug(lastResponse);
119
- return Promise.resolve(actionNotOK(`No filtered response to count`));
116
+ return actionNotOK(`No filtered response to count`);
120
117
  }
121
118
  webPlaywright.getWorld().logger.info(`lastResponse filtered count is ${lastResponse.filtered.length}`);
122
119
  const messageContext = { incident: EExecutionMessageType.ACTION, incidentDetails: { summary: 'options', count: lastResponse.filtered.length } };
123
- return Promise.resolve(actionOK({ messageContext }));
120
+ return actionOK({ messageContext });
124
121
  },
125
122
  },
126
123
  responseJsonLengthIs: {
127
124
  gwta: `JSON response length is {length}`,
128
- action: async ({ length }) => {
125
+ action: ({ length }) => {
129
126
  const lastResponse = webPlaywright.getLastResponse();
130
127
  if (!lastResponse?.json || lastResponse.json.length !== parseInt(length)) {
131
128
  return actionNotOK(`Expected ${length}, got ${lastResponse?.json?.length}`);
132
129
  }
133
- return Promise.resolve(OK);
130
+ return OK;
134
131
  },
135
132
  },
136
133
  restEndpointFilteredPropertyRequest: {
@@ -148,69 +145,55 @@ export const restSteps = (webPlaywright) => ({
148
145
  if (!filtered.every((item) => item[property] !== undefined)) {
149
146
  return actionNotOK(`Property ${property} not found in all items`);
150
147
  }
151
- const responses = [];
152
148
  for (const item of filtered) {
153
149
  const requestPath = `${endpoint}/${item[property]}`;
154
150
  const serialized = await webPlaywright.withPageFetch(requestPath, method);
155
151
  if (serialized.status !== parseInt(status, 10)) {
156
152
  return actionNotOK(`Expected status ${status} to ${requestPath}, got ${serialized.status}`);
157
153
  }
158
- responses.push(serialized);
159
154
  }
160
- return Promise.resolve(OK);
155
+ return OK;
161
156
  },
162
157
  },
163
158
  restEndpointRequestWithPayload: {
164
159
  gwta: `make an ${'HTTP'} {method} to {endpoint} with {payload}`,
165
- action: async ({ method, endpoint, payload }) => {
160
+ action: async ({ method, endpoint, payload }, featureStep) => {
166
161
  method = method.toLowerCase();
167
162
  if (!PAYLOAD_METHODS.includes(method)) {
168
163
  return actionNotOK(`Method ${method} (${method}) does not support payload`);
169
164
  }
170
- let postData;
171
- if (typeof payload === 'object') {
172
- postData = JSON.stringify(payload);
173
- }
174
- else {
175
- postData = payload;
176
- }
177
- const requestOptions = {
178
- postData,
179
- headers: {
180
- 'Content-Type': 'application/json',
181
- },
182
- };
165
+ const requestOptions = { postData: payload, headers: { 'Content-Type': 'application/json' } };
183
166
  const serialized = await webPlaywright.withPageFetch(endpoint, method, requestOptions);
184
- webPlaywright.setLastResponse(serialized);
185
- return Promise.resolve(OK);
167
+ webPlaywright.setLastResponse(serialized, featureStep);
168
+ return OK;
186
169
  },
187
170
  },
188
171
  restLastStatusIs: {
189
172
  gwta: `${HTTP} status is {status}`,
190
- action: async ({ status }) => {
173
+ action: ({ status }) => {
191
174
  const lastResponse = webPlaywright.getLastResponse();
192
175
  if (lastResponse && lastResponse.status === parseInt(status)) {
193
- return Promise.resolve(OK);
176
+ return OK;
194
177
  }
195
178
  return actionNotOK(`Expected status ${status}, got ${lastResponse?.status || 'no response'}`);
196
179
  },
197
180
  },
198
181
  restResponsePropertyIs: {
199
182
  gwta: `${HTTP} response property {property} is {value}`,
200
- action: async ({ property, value }) => {
183
+ action: ({ property, value }) => {
201
184
  const lastResponse = webPlaywright.getLastResponse();
202
185
  if (lastResponse && lastResponse.json && lastResponse.json[property] === value) {
203
- return Promise.resolve(OK);
186
+ return OK;
204
187
  }
205
188
  return actionNotOK(`Expected lastResponse.json.${property} to be ${value}, got ${JSON.stringify(lastResponse?.json[property])}`);
206
189
  },
207
190
  },
208
191
  restResponseIs: {
209
192
  gwta: `${HTTP} text response is {value}`,
210
- action: async ({ value }) => {
193
+ action: ({ value }) => {
211
194
  const lastResponse = webPlaywright.getLastResponse();
212
195
  if (lastResponse && lastResponse.text === value) {
213
- return Promise.resolve(OK);
196
+ return OK;
214
197
  }
215
198
  return actionNotOK(`Expected response to be ${value}, got ${lastResponse?.text}`);
216
199
  },
@@ -1 +1 @@
1
- {"version":3,"file":"rest-playwright.js","sourceRoot":"","sources":["../src/rest-playwright.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest-playwright.js","sourceRoot":"","sources":["../src/rest-playwright.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Page } from "playwright";
2
+ import { AStorage } from '@haibun/domain-storage/AStorage.js';
3
+ import { WebPlaywright } from "./web-playwright.js";
4
+ import { TWorld } from "@haibun/core/lib/defs.js";
5
+ export declare class TwinPage {
6
+ private wp;
7
+ private storage;
8
+ private headless;
9
+ twinPage: Page;
10
+ currentURL: string;
11
+ sequence: number;
12
+ world: TWorld;
13
+ wroteElement: boolean;
14
+ constructor(wp: WebPlaywright, storage: AStorage, headless?: boolean);
15
+ updateWorld(world: TWorld): void;
16
+ initTwin(): Promise<void>;
17
+ setupNewTwinPage(currentURL: string): Promise<void>;
18
+ patchPage(page: Page & {
19
+ __instrumented?: boolean;
20
+ }): Promise<void>;
21
+ writePage(): Promise<void>;
22
+ duplicateTwinElement: (locator: any) => Promise<void>;
23
+ }
24
+ //# sourceMappingURL=twin-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twin-page.d.ts","sourceRoot":"","sources":["../src/twin-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAYlD,qBAAa,QAAQ;IAOR,OAAO,CAAC,EAAE;IAAiB,OAAO,CAAC,OAAO;IAAY,OAAO,CAAC,QAAQ;IANlF,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,SAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,UAAS;gBAED,EAAE,EAAE,aAAa,EAAU,OAAO,EAAE,QAAQ,EAAU,QAAQ,GAAE,OAAc;IAClG,WAAW,CAAC,KAAK,EAAE,MAAM;IAInB,QAAQ;IAMR,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAKnC,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAgCnD,SAAS;IAaf,oBAAoB,GAAU,YAAO,mBA2FnC;CACF"}
@@ -0,0 +1,158 @@
1
+ import { chromium } from "playwright";
2
+ import { EMediaTypes } from "@haibun/domain-storage/media-types.js";
3
+ import { join } from "path";
4
+ import { actualURI } from "@haibun/core/lib/util/actualURI.js";
5
+ import { EExecutionMessageType } from "@haibun/core/lib/interfaces/logger.js";
6
+ export class TwinPage {
7
+ wp;
8
+ storage;
9
+ headless;
10
+ twinPage;
11
+ currentURL;
12
+ sequence = 0;
13
+ world;
14
+ wroteElement = false;
15
+ constructor(wp, storage, headless = true) {
16
+ this.wp = wp;
17
+ this.storage = storage;
18
+ this.headless = headless;
19
+ }
20
+ updateWorld(world) {
21
+ this.world = world;
22
+ }
23
+ async initTwin() {
24
+ const browser = await chromium.launch({ headless: this.headless });
25
+ const context = await browser.newContext();
26
+ this.twinPage = await context.newPage();
27
+ await this.setupNewTwinPage('about:blank');
28
+ }
29
+ async setupNewTwinPage(currentURL) {
30
+ this.wroteElement = false;
31
+ await this.twinPage.evaluate((url) => document.body.innerHTML = `<h1>${url}</h1>\n`, currentURL);
32
+ }
33
+ async patchPage(page) {
34
+ const currentURL = page.url();
35
+ if (currentURL !== this.currentURL) {
36
+ if (this.wroteElement) {
37
+ await this.writePage();
38
+ }
39
+ await this.setupNewTwinPage(currentURL);
40
+ this.currentURL = currentURL;
41
+ }
42
+ if (page.__instrumented) {
43
+ return;
44
+ }
45
+ const methodsToInstrument = ['locator', 'getByRole', 'getByText', 'getByLabel', 'getByPlaceholder', 'getByAltText', 'getByTitle', 'getByTestId'];
46
+ const instrument = (method) => {
47
+ const originalMethod = page[method];
48
+ page[method] = (...args) => {
49
+ const patched = originalMethod.apply(page, args);
50
+ this.duplicateTwinElement(patched).catch(error => {
51
+ const messageContext = { artifacts: [{ artifactType: 'json', json: { error: { message: error.message, stack: error.stack } } }], incident: EExecutionMessageType.ACTION, tag: this.world.tag };
52
+ this.world.logger.error(`Error duplicating element for ${String(method)} with args: ${JSON.stringify(args)}`, messageContext);
53
+ });
54
+ return patched;
55
+ };
56
+ };
57
+ for (const method of methodsToInstrument) {
58
+ instrument(method);
59
+ }
60
+ page.__instrumented = true;
61
+ }
62
+ async writePage() {
63
+ const twinLoc = await this.storage.getCaptureLocation({ ...this.world, mediaType: EMediaTypes.html });
64
+ this.sequence++;
65
+ const content = await this.twinPage.content();
66
+ const fn = `twinned-${this.sequence}.html`;
67
+ const outHtmlFile = join(twinLoc, fn);
68
+ const context = {
69
+ incident: EExecutionMessageType.ACTION, artifacts: [{ artifactType: 'html', path: fn }], tag: this.world.tag
70
+ };
71
+ this.world.logger.info(`Writing twin HTML to ${actualURI(outHtmlFile)}`, context);
72
+ await this.storage.writeFile(outHtmlFile, content, EMediaTypes.html);
73
+ void this.twinPage.evaluate(() => document.body.innerHTML = '');
74
+ }
75
+ duplicateTwinElement = async (locator) => {
76
+ const elementData = await locator.evaluate(element => {
77
+ if (!element) {
78
+ return null;
79
+ }
80
+ const getElementData = (el) => ({
81
+ tagName: el.tagName,
82
+ attributes: Array.from(el.attributes).map((attr) => ({
83
+ name: attr.name,
84
+ value: attr.value
85
+ }))
86
+ });
87
+ const parents = [];
88
+ let parent = element.parentElement;
89
+ while (parent && parent.tagName !== 'BODY') {
90
+ console.log('getting parent', parent.tagName);
91
+ parents.unshift(getElementData(parent));
92
+ parent = parent.parentElement;
93
+ }
94
+ const data = {
95
+ parents,
96
+ outerHTML: element.outerHTML
97
+ };
98
+ if (element.tagName === 'CANVAS') {
99
+ data.dataURL = element.toDataURL();
100
+ }
101
+ return data;
102
+ });
103
+ if (!elementData) {
104
+ throw Error(`Element ${locator} not found with locator`);
105
+ }
106
+ await this.twinPage.evaluate(data => {
107
+ let currentParent = document.body;
108
+ const buildSelector = (elementData) => {
109
+ return elementData.tagName.toLowerCase() + elementData.attributes.map(a => `[${a.name}="${a.value}"]`).join('');
110
+ };
111
+ data.parents.forEach((p) => {
112
+ const selector = buildSelector(p);
113
+ const existingElement = currentParent.querySelector(`:scope > ${selector}`);
114
+ if (!existingElement) {
115
+ const newElement = document.createElement(p.tagName);
116
+ p.attributes.forEach(attr => {
117
+ newElement.setAttribute(attr.name, attr.value);
118
+ });
119
+ currentParent.appendChild(newElement);
120
+ currentParent = newElement;
121
+ }
122
+ else {
123
+ currentParent = existingElement;
124
+ }
125
+ });
126
+ const temp = document.createElement('div');
127
+ temp.innerHTML = data.outerHTML;
128
+ const newElementNode = temp.firstChild;
129
+ if (newElementNode) {
130
+ const finalSelector = newElementNode.tagName.toLowerCase() + Array.from(newElementNode.attributes).map((a) => `[${a.name}="${a.value}"]`).join('');
131
+ let elementToDrawOn;
132
+ const existingElement = currentParent.querySelector(`:scope > ${finalSelector}`);
133
+ if (!existingElement) {
134
+ currentParent.insertAdjacentHTML('beforeend', data.outerHTML);
135
+ elementToDrawOn = currentParent.lastElementChild;
136
+ }
137
+ else {
138
+ elementToDrawOn = existingElement;
139
+ }
140
+ if (data.dataURL && elementToDrawOn && elementToDrawOn.tagName === 'CANVAS') {
141
+ const canvas = elementToDrawOn;
142
+ const ctx = canvas.getContext('2d');
143
+ if (ctx) {
144
+ const img = new Image();
145
+ img.onload = () => {
146
+ canvas.width = img.width;
147
+ canvas.height = img.height;
148
+ ctx.drawImage(img, 0, 0);
149
+ };
150
+ img.src = data.dataURL;
151
+ }
152
+ }
153
+ }
154
+ }, elementData);
155
+ this.wroteElement = true;
156
+ };
157
+ }
158
+ //# sourceMappingURL=twin-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twin-page.js","sourceRoot":"","sources":["../src/twin-page.ts"],"names":[],"mappings":"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"}