testeranto 0.79.4 → 0.79.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.
Files changed (184) hide show
  1. package/TaskMan1.Dockerfile +2 -1
  2. package/package.json +1 -1
  3. package/src/TaskManBackEnd.ts +2 -2
  4. package/dist/TaskMan.Dockerfile +0 -23
  5. package/dist/common/Features.js +0 -84
  6. package/dist/common/Node.js +0 -23
  7. package/dist/common/PM/index.js +0 -7
  8. package/dist/common/PM/main.js +0 -641
  9. package/dist/common/PM/node.js +0 -88
  10. package/dist/common/PM/web.js +0 -132
  11. package/dist/common/Project.js +0 -186
  12. package/dist/common/Puppeteer.js +0 -104
  13. package/dist/common/Reporter.js +0 -112
  14. package/dist/common/Scheduler.js +0 -1
  15. package/dist/common/SubPackages/puppeteer.js +0 -21
  16. package/dist/common/SubPackages/react/component/node.js +0 -19
  17. package/dist/common/SubPackages/react/component/web.js +0 -19
  18. package/dist/common/SubPackages/react/jsx/index.js +0 -25
  19. package/dist/common/SubPackages/react/jsx/node.js +0 -10
  20. package/dist/common/SubPackages/react/jsx/web.js +0 -10
  21. package/dist/common/SubPackages/react-dom/component/node.js +0 -101
  22. package/dist/common/SubPackages/react-dom/component/web.js +0 -93
  23. package/dist/common/SubPackages/react-dom/jsx/index.js +0 -2
  24. package/dist/common/SubPackages/react-dom/jsx/node.js +0 -39
  25. package/dist/common/SubPackages/react-dom/jsx/web.js +0 -118
  26. package/dist/common/SubPackages/react-test-renderer/MemoExoticComponent/node.js +0 -44
  27. package/dist/common/SubPackages/react-test-renderer/component/index.js +0 -2
  28. package/dist/common/SubPackages/react-test-renderer/component/interface.js +0 -68
  29. package/dist/common/SubPackages/react-test-renderer/component/node.js +0 -8
  30. package/dist/common/SubPackages/react-test-renderer/component/web.js +0 -8
  31. package/dist/common/SubPackages/react-test-renderer/fc/node.js +0 -50
  32. package/dist/common/SubPackages/react-test-renderer/fc/web.js +0 -50
  33. package/dist/common/SubPackages/react-test-renderer/jsx/index.js +0 -48
  34. package/dist/common/SubPackages/react-test-renderer/jsx/node.js +0 -10
  35. package/dist/common/SubPackages/react-test-renderer/jsx/web.js +0 -10
  36. package/dist/common/SubPackages/react-test-renderer/jsx-promised/index.js +0 -42
  37. package/dist/common/SubPackages/react-test-renderer/jsx-promised/node.js +0 -10
  38. package/dist/common/SubPackages/react-test-renderer/jsx-promised/web.js +0 -10
  39. package/dist/common/TaskManBackEnd.js +0 -174
  40. package/dist/common/Types.js +0 -2
  41. package/dist/common/Web.js +0 -39
  42. package/dist/common/esbuildConfigs/features.js +0 -14
  43. package/dist/common/esbuildConfigs/index.js +0 -21
  44. package/dist/common/esbuildConfigs/inputFilesPlugin.js +0 -49
  45. package/dist/common/esbuildConfigs/node.js +0 -39
  46. package/dist/common/esbuildConfigs/report.js +0 -13
  47. package/dist/common/esbuildConfigs/tests.js +0 -13
  48. package/dist/common/esbuildConfigs/web.js +0 -57
  49. package/dist/common/lib/abstractBase.js +0 -553
  50. package/dist/common/lib/basebuilder.js +0 -79
  51. package/dist/common/lib/classBuilder.js +0 -42
  52. package/dist/common/lib/core.js +0 -75
  53. package/dist/common/lib/index.js +0 -22
  54. package/dist/common/lib/types.js +0 -2
  55. package/dist/common/mongooseSchemas.js +0 -56
  56. package/dist/common/package.json +0 -3
  57. package/dist/common/preload.js +0 -15
  58. package/dist/common/puppeteerConfiger.js +0 -24
  59. package/dist/common/report.html.js +0 -31
  60. package/dist/common/tsconfig.common.tsbuildinfo +0 -1
  61. package/dist/common/utils.js +0 -16
  62. package/dist/common/web.html.js +0 -22
  63. package/dist/module/ExampleTab.js +0 -112
  64. package/dist/module/Features.js +0 -73
  65. package/dist/module/Node.js +0 -18
  66. package/dist/module/PM/index.js +0 -3
  67. package/dist/module/PM/main.js +0 -611
  68. package/dist/module/PM/node.js +0 -81
  69. package/dist/module/PM/web.js +0 -125
  70. package/dist/module/Project.js +0 -179
  71. package/dist/module/Puppeteer.js +0 -99
  72. package/dist/module/Reporter.js +0 -107
  73. package/dist/module/Scheduler.js +0 -1
  74. package/dist/module/SubPackages/puppeteer.js +0 -16
  75. package/dist/module/SubPackages/react/component/node.js +0 -14
  76. package/dist/module/SubPackages/react/component/web.js +0 -14
  77. package/dist/module/SubPackages/react/jsx/index.js +0 -19
  78. package/dist/module/SubPackages/react/jsx/node.js +0 -5
  79. package/dist/module/SubPackages/react/jsx/web.js +0 -5
  80. package/dist/module/SubPackages/react-dom/component/node.js +0 -93
  81. package/dist/module/SubPackages/react-dom/component/web.js +0 -88
  82. package/dist/module/SubPackages/react-dom/jsx/index.js +0 -1
  83. package/dist/module/SubPackages/react-dom/jsx/node.js +0 -31
  84. package/dist/module/SubPackages/react-dom/jsx/web.js +0 -90
  85. package/dist/module/SubPackages/react-test-renderer/MemoExoticComponent/node.js +0 -16
  86. package/dist/module/SubPackages/react-test-renderer/component/index.js +0 -1
  87. package/dist/module/SubPackages/react-test-renderer/component/interface.js +0 -39
  88. package/dist/module/SubPackages/react-test-renderer/component/node.js +0 -3
  89. package/dist/module/SubPackages/react-test-renderer/component/web.js +0 -3
  90. package/dist/module/SubPackages/react-test-renderer/fc/node.js +0 -22
  91. package/dist/module/SubPackages/react-test-renderer/fc/web.js +0 -22
  92. package/dist/module/SubPackages/react-test-renderer/jsx/index.js +0 -19
  93. package/dist/module/SubPackages/react-test-renderer/jsx/node.js +0 -5
  94. package/dist/module/SubPackages/react-test-renderer/jsx/web.js +0 -5
  95. package/dist/module/SubPackages/react-test-renderer/jsx-promised/index.js +0 -16
  96. package/dist/module/SubPackages/react-test-renderer/jsx-promised/node.js +0 -5
  97. package/dist/module/SubPackages/react-test-renderer/jsx-promised/web.js +0 -5
  98. package/dist/module/TaskManBackEnd.js +0 -169
  99. package/dist/module/TaskManFrontEnd.js +0 -600
  100. package/dist/module/Types.js +0 -1
  101. package/dist/module/Web.js +0 -34
  102. package/dist/module/esbuildConfigs/features.js +0 -12
  103. package/dist/module/esbuildConfigs/index.js +0 -19
  104. package/dist/module/esbuildConfigs/inputFilesPlugin.js +0 -44
  105. package/dist/module/esbuildConfigs/node.js +0 -34
  106. package/dist/module/esbuildConfigs/report.js +0 -11
  107. package/dist/module/esbuildConfigs/tests.js +0 -11
  108. package/dist/module/esbuildConfigs/web.js +0 -52
  109. package/dist/module/lib/abstractBase.js +0 -545
  110. package/dist/module/lib/basebuilder.js +0 -75
  111. package/dist/module/lib/classBuilder.js +0 -38
  112. package/dist/module/lib/core.js +0 -72
  113. package/dist/module/lib/index.js +0 -18
  114. package/dist/module/lib/types.js +0 -1
  115. package/dist/module/mongooseSchemas.js +0 -50
  116. package/dist/module/package.json +0 -3
  117. package/dist/module/preload.js +0 -15
  118. package/dist/module/puppeteerConfiger.js +0 -19
  119. package/dist/module/report.html.js +0 -29
  120. package/dist/module/tsconfig.module.tsbuildinfo +0 -1
  121. package/dist/module/utils.js +0 -9
  122. package/dist/module/web.html.js +0 -20
  123. package/dist/prebuild/Report.css +0 -11358
  124. package/dist/prebuild/Report.js +0 -37666
  125. package/dist/prebuild/TaskManBackEnd.mjs +0 -180
  126. package/dist/prebuild/TaskManFrontEnd.css +0 -12301
  127. package/dist/prebuild/TaskManFrontEnd.js +0 -81737
  128. package/dist/types/Features.d.ts +0 -68
  129. package/dist/types/Node.d.ts +0 -6
  130. package/dist/types/PM/index.d.ts +0 -20
  131. package/dist/types/PM/main.d.ts +0 -31
  132. package/dist/types/PM/node.d.ts +0 -27
  133. package/dist/types/PM/web.d.ts +0 -25
  134. package/dist/types/Project.d.ts +0 -7
  135. package/dist/types/Puppeteer.d.ts +0 -1
  136. package/dist/types/Reporter.d.ts +0 -1
  137. package/dist/types/Scheduler.d.ts +0 -0
  138. package/dist/types/SubPackages/puppeteer.d.ts +0 -6
  139. package/dist/types/SubPackages/react/component/node.d.ts +0 -7
  140. package/dist/types/SubPackages/react/component/web.d.ts +0 -7
  141. package/dist/types/SubPackages/react/jsx/index.d.ts +0 -12
  142. package/dist/types/SubPackages/react/jsx/node.d.ts +0 -4
  143. package/dist/types/SubPackages/react/jsx/web.d.ts +0 -4
  144. package/dist/types/SubPackages/react-dom/component/node.d.ts +0 -12
  145. package/dist/types/SubPackages/react-dom/component/web.d.ts +0 -11
  146. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +0 -6
  147. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +0 -6
  148. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +0 -5
  149. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -5
  150. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +0 -13
  151. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +0 -9
  152. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +0 -8
  153. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +0 -3
  154. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +0 -8
  155. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +0 -8
  156. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +0 -16
  157. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +0 -8
  158. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +0 -8
  159. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +0 -15
  160. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -4
  161. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -4
  162. package/dist/types/TaskManBackEnd.d.ts +0 -1
  163. package/dist/types/Types.d.ts +0 -50
  164. package/dist/types/Web.d.ts +0 -6
  165. package/dist/types/esbuildConfigs/features.d.ts +0 -4
  166. package/dist/types/esbuildConfigs/index.d.ts +0 -4
  167. package/dist/types/esbuildConfigs/inputFilesPlugin.d.ts +0 -5
  168. package/dist/types/esbuildConfigs/node.d.ts +0 -4
  169. package/dist/types/esbuildConfigs/report.d.ts +0 -4
  170. package/dist/types/esbuildConfigs/tests.d.ts +0 -4
  171. package/dist/types/esbuildConfigs/web.d.ts +0 -4
  172. package/dist/types/lib/abstractBase.d.ts +0 -104
  173. package/dist/types/lib/basebuilder.d.ts +0 -27
  174. package/dist/types/lib/classBuilder.d.ts +0 -7
  175. package/dist/types/lib/core.d.ts +0 -8
  176. package/dist/types/lib/index.d.ts +0 -59
  177. package/dist/types/lib/types.d.ts +0 -64
  178. package/dist/types/mongooseSchemas.d.ts +0 -124
  179. package/dist/types/preload.d.ts +0 -0
  180. package/dist/types/puppeteerConfiger.d.ts +0 -4
  181. package/dist/types/report.html.d.ts +0 -2
  182. package/dist/types/tsconfig.types.tsbuildinfo +0 -1
  183. package/dist/types/utils.d.ts +0 -2
  184. package/dist/types/web.html.d.ts +0 -2
@@ -1,611 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import puppeteer from "puppeteer-core";
4
- import { PM } from "./index.js";
5
- import { destinationOfRuntime } from "../utils.js";
6
- const fPaths = [];
7
- const fileStreams3 = [];
8
- const files = {}; // = new Set<string>();
9
- const screenshots = {};
10
- export class PM_Main extends PM {
11
- constructor(configs) {
12
- super();
13
- this.launchNode = async (src, dest) => {
14
- console.log("launchNode", src);
15
- const destFolder = dest.replace(".mjs", "");
16
- let argz = "";
17
- const testConfig = this.configs.tests.find((t) => {
18
- return t[0] === src;
19
- });
20
- if (!testConfig) {
21
- console.error("missing test config");
22
- process.exit(-1);
23
- }
24
- const testConfigResource = testConfig[2];
25
- let portsToUse = [];
26
- if (testConfigResource.ports === 0) {
27
- argz = JSON.stringify({
28
- scheduled: true,
29
- name: src,
30
- ports: portsToUse,
31
- fs: destFolder,
32
- browserWSEndpoint: this.browser.wsEndpoint(),
33
- });
34
- }
35
- else if (testConfigResource.ports > 0) {
36
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
37
- console.log("openPorts", openPorts);
38
- if (openPorts.length >= testConfigResource.ports) {
39
- for (let i = 0; i < testConfigResource.ports; i++) {
40
- portsToUse.push(openPorts[i][0]);
41
- this.ports[openPorts[i][0]] = false; // port is now closed
42
- }
43
- argz = JSON.stringify({
44
- scheduled: true,
45
- name: src,
46
- // ports: [3333],
47
- ports: portsToUse,
48
- fs: destFolder,
49
- browserWSEndpoint: this.browser.wsEndpoint(),
50
- });
51
- }
52
- else {
53
- this.queue.push(src);
54
- return;
55
- }
56
- }
57
- else {
58
- console.error("negative port makes no sense", src);
59
- process.exit(-1);
60
- }
61
- const builtfile = dest + ".mjs";
62
- await Promise.all(testConfig[3].map((sidecar) => {
63
- if (sidecar[1] === "web") {
64
- return this.launchWebSideCar(sidecar[0], destinationOfRuntime(sidecar[0], "web", this.configs), sidecar);
65
- }
66
- if (sidecar[1] === "node") {
67
- return this.launchNodeSideCar(sidecar[0], destinationOfRuntime(sidecar[0], "node", this.configs), sidecar);
68
- }
69
- }));
70
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
71
- return module.default.then((defaultModule) => {
72
- defaultModule
73
- .receiveTestResourceConfig(argz)
74
- .then((x) => {
75
- console.log("then", x);
76
- return x;
77
- })
78
- .catch((e) => {
79
- console.log("catch", e);
80
- });
81
- });
82
- });
83
- console.log("portsToUse", portsToUse);
84
- for (let i = 0; i <= portsToUse.length; i++) {
85
- if (portsToUse[i]) {
86
- this.ports[portsToUse[i]] = "true"; //port is open again
87
- }
88
- }
89
- };
90
- this.launchWebSideCar = async (src, dest, testConfig) => {
91
- const d = dest + ".mjs";
92
- console.log("launchWebSideCar", src, dest, d);
93
- const destFolder = dest.replace(".mjs", "");
94
- const webArgz = JSON.stringify({
95
- name: dest,
96
- ports: [].toString(),
97
- fs: destFolder,
98
- browserWSEndpoint: this.browser.wsEndpoint(),
99
- });
100
- const evaluation = `
101
- console.log("importing ${dest}.mjs");
102
- import('${dest}.mjs').then(async (x) => {
103
- console.log("imported", x.default);
104
- })`;
105
- const fileStreams2 = [];
106
- const doneFileStream2 = [];
107
- return new Promise((res, rej) => {
108
- this.browser
109
- .newPage()
110
- .then((page) => {
111
- page.on("console", (msg) => {
112
- console.log("web > ", msg.args(), msg.text());
113
- // for (let i = 0; i < msg._args.length; ++i)
114
- // console.log(`${i}: ${msg._args[i]}`);
115
- });
116
- page.exposeFunction("custom-screenshot", async (ssOpts, testName) => {
117
- console.log("main.ts browser custom-screenshot", testName);
118
- const p = ssOpts.path;
119
- const dir = path.dirname(p);
120
- fs.mkdirSync(dir, {
121
- recursive: true,
122
- });
123
- files[testName].add(ssOpts.path);
124
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
125
- if (!screenshots[testName]) {
126
- screenshots[testName] = [];
127
- }
128
- screenshots[testName].push(sPromise);
129
- // sPromise.then(())
130
- await sPromise;
131
- return sPromise;
132
- // page.evaluate(`window["screenshot done"]`);
133
- });
134
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
135
- const dir = path.dirname(fp);
136
- fs.mkdirSync(dir, {
137
- recursive: true,
138
- });
139
- const p = new Promise(async (res, rej) => {
140
- fs.writeFileSync(fp, contents);
141
- res(fp);
142
- });
143
- doneFileStream2.push(p);
144
- if (!files[testName]) {
145
- files[testName] = new Set();
146
- }
147
- files[testName].add(fp);
148
- return p;
149
- });
150
- page.exposeFunction("existsSync", (fp, contents) => {
151
- return fs.existsSync(fp);
152
- });
153
- page.exposeFunction("mkdirSync", (fp) => {
154
- if (!fs.existsSync(fp)) {
155
- return fs.mkdirSync(fp, {
156
- recursive: true,
157
- });
158
- }
159
- return false;
160
- });
161
- page.exposeFunction("createWriteStream", (fp, testName) => {
162
- const f = fs.createWriteStream(fp);
163
- if (!files[testName]) {
164
- files[testName] = new Set();
165
- }
166
- files[testName].add(fp);
167
- const p = new Promise((res, rej) => {
168
- res(fp);
169
- });
170
- doneFileStream2.push(p);
171
- f.on("close", async () => {
172
- await p;
173
- });
174
- fileStreams2.push(f);
175
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
176
- });
177
- page.exposeFunction("write", async (uid, contents) => {
178
- return fileStreams2[uid].write(contents);
179
- });
180
- page.exposeFunction("end", async (uid) => {
181
- return fileStreams2[uid].end();
182
- });
183
- page.exposeFunction("customclose", (p, testName) => {
184
- fs.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
185
- delete files[testName];
186
- Promise.all(screenshots[testName] || []).then(() => {
187
- delete screenshots[testName];
188
- page.close();
189
- });
190
- // globalThis["writeFileSync"](
191
- // p + "/manifest.json",
192
- // // files.entries()
193
- // JSON.stringify(Array.from(files[testName]))
194
- // );
195
- // console.log("closing doneFileStream2", doneFileStream2);
196
- // console.log("closing doneFileStream2", doneFileStream2);
197
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
198
- // page.close();
199
- // });
200
- // Promise.all(screenshots).then(() => {
201
- // page.close();
202
- // });
203
- // setTimeout(() => {
204
- // console.log("Delayed for 1 second.");
205
- // page.close();
206
- // }, 5000);
207
- // return page.close();
208
- });
209
- return page;
210
- })
211
- .then(async (page) => {
212
- page.on("console", (log) => console.debug(`Log from client: [${log.text()}] `));
213
- await page.goto(`file://${`${dest}.html`}`, {});
214
- res(page);
215
- // page.evaluate(evaluation).finally(() => {
216
- // console.log("evaluation failed.", dest);
217
- // });
218
- // return page;
219
- });
220
- });
221
- };
222
- // launchNodeSideCar = async (src: string, dest: string) => {};
223
- this.launchNodeSideCar = async (src, dest, testConfig) => {
224
- const d = dest + ".mjs";
225
- console.log("launchNodeSideCar", src, dest, d);
226
- const destFolder = dest.replace(".mjs", "");
227
- let argz = "";
228
- // const testConfig = this.configs.tests.find((t) => {
229
- // return t[0] === src;
230
- // });
231
- // if (!testConfig) {
232
- // console.error("missing test config");
233
- // process.exit(-1);
234
- // }
235
- const testConfigResource = testConfig[2];
236
- let portsToUse = [];
237
- if (testConfigResource.ports === 0) {
238
- argz = JSON.stringify({
239
- scheduled: true,
240
- name: src,
241
- ports: portsToUse,
242
- fs: destFolder,
243
- browserWSEndpoint: this.browser.wsEndpoint(),
244
- });
245
- }
246
- else if (testConfigResource.ports > 0) {
247
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
248
- console.log("openPorts", openPorts);
249
- if (openPorts.length >= testConfigResource.ports) {
250
- for (let i = 0; i < testConfigResource.ports; i++) {
251
- portsToUse.push(openPorts[i][0]);
252
- this.ports[openPorts[i][0]] = false; // port is now closed
253
- }
254
- argz = JSON.stringify({
255
- scheduled: true,
256
- name: src,
257
- // ports: [3333],
258
- ports: portsToUse,
259
- fs: ".",
260
- browserWSEndpoint: this.browser.wsEndpoint(),
261
- });
262
- }
263
- else {
264
- this.queue.push(src);
265
- return;
266
- }
267
- }
268
- else {
269
- console.error("negative port makes no sense", src);
270
- process.exit(-1);
271
- }
272
- const builtfile = dest + ".mjs";
273
- // console.log(
274
- // "node builtfile",
275
- // (await import(`${builtfile}?cacheBust=${Date.now()}`)).default
276
- // );
277
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
278
- return module.default.then((defaultModule) => {
279
- console.log("defaultModule", defaultModule);
280
- const s = new defaultModule();
281
- s.receiveTestResourceConfig(argz);
282
- // Object.create(defaultModule);
283
- // defaultModule
284
- // .receiveTestResourceConfig(argz)
285
- // .then((x) => {
286
- // console.log("then", x);
287
- // return x;
288
- // })
289
- // .catch((e) => {
290
- // console.log("catch", e);
291
- // });
292
- });
293
- });
294
- console.log("portsToUse", portsToUse);
295
- for (let i = 0; i <= portsToUse.length; i++) {
296
- if (portsToUse[i]) {
297
- this.ports[portsToUse[i]] = "true"; //port is open again
298
- }
299
- }
300
- };
301
- this.launchWeb = (t, dest, sidecars) => {
302
- console.log("launchWeb", t, dest);
303
- sidecars.map((sidecar) => {
304
- if (sidecar[1] === "node") {
305
- return this.launchNodeSideCar(sidecar[0], destinationOfRuntime(sidecar[0], "node", this.configs), sidecar);
306
- }
307
- });
308
- const destFolder = dest.replace(".mjs", "");
309
- const webArgz = JSON.stringify({
310
- name: dest,
311
- ports: [].toString(),
312
- fs: destFolder,
313
- browserWSEndpoint: this.browser.wsEndpoint(),
314
- });
315
- const evaluation = `
316
- console.log("importing ${dest}.mjs");
317
- import('${dest}.mjs').then(async (x) => {
318
- console.log("imported", x.default);
319
- try {
320
- await (await x.default).receiveTestResourceConfig(${webArgz})
321
- } catch (e) {
322
- console.log("fail", e)
323
- }
324
- })`;
325
- const fileStreams2 = [];
326
- const doneFileStream2 = [];
327
- this.browser
328
- .newPage()
329
- .then((page) => {
330
- page.on("console", (msg) => {
331
- console.log("web > ", msg.args(), msg.text());
332
- // for (let i = 0; i < msg._args.length; ++i)
333
- // console.log(`${i}: ${msg._args[i]}`);
334
- });
335
- page.exposeFunction("customScreenShot", async (ssOpts, testName) => {
336
- console.log("main.ts browser custom-screenshot", testName);
337
- const p = ssOpts.path;
338
- const dir = path.dirname(p);
339
- fs.mkdirSync(dir, {
340
- recursive: true,
341
- });
342
- if (!files[testName]) {
343
- files[testName] = new Set();
344
- }
345
- files[testName].add(ssOpts.path);
346
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
347
- if (!screenshots[testName]) {
348
- screenshots[testName] = [];
349
- }
350
- screenshots[testName].push(sPromise);
351
- // sPromise.then(())
352
- await sPromise;
353
- return sPromise;
354
- // page.evaluate(`window["screenshot done"]`);
355
- });
356
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
357
- const dir = path.dirname(fp);
358
- fs.mkdirSync(dir, {
359
- recursive: true,
360
- });
361
- const p = new Promise(async (res, rej) => {
362
- fs.writeFileSync(fp, contents);
363
- res(fp);
364
- });
365
- doneFileStream2.push(p);
366
- if (!files[testName]) {
367
- files[testName] = new Set();
368
- }
369
- files[testName].add(fp);
370
- return p;
371
- });
372
- page.exposeFunction("existsSync", (fp, contents) => {
373
- return fs.existsSync(fp);
374
- });
375
- page.exposeFunction("mkdirSync", (fp) => {
376
- if (!fs.existsSync(fp)) {
377
- return fs.mkdirSync(fp, {
378
- recursive: true,
379
- });
380
- }
381
- return false;
382
- });
383
- page.exposeFunction("createWriteStream", (fp, testName) => {
384
- const f = fs.createWriteStream(fp);
385
- if (!files[testName]) {
386
- files[testName] = new Set();
387
- }
388
- files[testName].add(fp);
389
- const p = new Promise((res, rej) => {
390
- res(fp);
391
- });
392
- doneFileStream2.push(p);
393
- f.on("close", async () => {
394
- await p;
395
- });
396
- fileStreams2.push(f);
397
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
398
- });
399
- page.exposeFunction("write", async (uid, contents) => {
400
- return fileStreams2[uid].write(contents);
401
- });
402
- page.exposeFunction("end", async (uid) => {
403
- return fileStreams2[uid].end();
404
- });
405
- page.exposeFunction("customclose", (p, testName) => {
406
- console.log("\t closing", p);
407
- fs.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
408
- delete files[testName];
409
- Promise.all(screenshots[testName] || []).then(() => {
410
- delete screenshots[testName];
411
- page.close();
412
- });
413
- // globalThis["writeFileSync"](
414
- // p + "/manifest.json",
415
- // // files.entries()
416
- // JSON.stringify(Array.from(files[testName]))
417
- // );
418
- // console.log("closing doneFileStream2", doneFileStream2);
419
- // console.log("closing doneFileStream2", doneFileStream2);
420
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
421
- // page.close();
422
- // });
423
- // Promise.all(screenshots).then(() => {
424
- // page.close();
425
- // });
426
- // setTimeout(() => {
427
- // console.log("Delayed for 1 second.");
428
- // page.close();
429
- // }, 5000);
430
- // return page.close();
431
- });
432
- return page;
433
- })
434
- .then(async (page) => {
435
- page.on("console", (log) => console.debug(`Log from client: [${log.text()}] `));
436
- await page.goto(`file://${`${dest}.html`}`, {});
437
- page.evaluate(evaluation).finally(() => {
438
- console.log("evaluation failed.", dest);
439
- });
440
- return page;
441
- });
442
- };
443
- this.server = {};
444
- this.configs = configs;
445
- this.ports = {};
446
- this.configs.ports.forEach((element) => {
447
- this.ports[element] = "true"; // set ports as open
448
- });
449
- globalThis["mkdirSync"] = (fp) => {
450
- if (!fs.existsSync(fp)) {
451
- return fs.mkdirSync(fp, {
452
- recursive: true,
453
- });
454
- }
455
- return false;
456
- };
457
- globalThis["writeFileSync"] = (filepath, contents, testName) => {
458
- console.log("globalThis-writeFileSync", filepath);
459
- // Create directories if they don't exist
460
- const dir = path.dirname(filepath.split("/").slice(0, -1).join("/"));
461
- fs.mkdirSync(dir, {
462
- recursive: true,
463
- });
464
- if (!files[testName]) {
465
- files[testName] = new Set();
466
- }
467
- files[testName].add(filepath);
468
- return fs.writeFileSync(filepath, contents);
469
- };
470
- globalThis["createWriteStream"] = (filepath, testName) => {
471
- const f = fs.createWriteStream(filepath);
472
- fileStreams3.push(f);
473
- // files.add(filepath);
474
- if (!files[testName]) {
475
- files[testName] = new Set();
476
- }
477
- files[testName].add(filepath);
478
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams3.length - 1 });
479
- };
480
- globalThis["write"] = (uid, contents) => {
481
- fileStreams3[uid].write(contents);
482
- };
483
- globalThis["end"] = (uid) => {
484
- fileStreams3[uid].end();
485
- };
486
- globalThis["customScreenShot"] = async (opts, page) => {
487
- // // fileStreams3[uid].write(contents);
488
- // // console.log("asd", opts.path.split("/").slice(0, -1).join("/"));
489
- // // const dir = path.dirname(opts.path.split("/").slice(0, -1).join("/"));
490
- // // console.log("dir", dir);
491
- // fs.mkdirSync(opts.path.split("/").slice(0, -1).join("/"), {
492
- // recursive: true,
493
- // });
494
- // return page.screenshot(opts);
495
- console.log("main.ts node custom-screenshot", page);
496
- const p = opts.path;
497
- const dir = path.dirname(p);
498
- fs.mkdirSync(dir, {
499
- recursive: true,
500
- });
501
- if (!files[opts.path]) {
502
- files[opts.path] = new Set();
503
- }
504
- files[opts.path].add(opts.path);
505
- const sPromise = page.screenshot(Object.assign(Object.assign({}, opts), { path: p }));
506
- if (!screenshots[opts.path]) {
507
- screenshots[opts.path] = [];
508
- }
509
- screenshots[opts.path].push(sPromise);
510
- await sPromise;
511
- return sPromise;
512
- };
513
- globalThis["customclose"] = (p, testName) => {
514
- if (!files[testName]) {
515
- files[testName] = new Set();
516
- }
517
- fs.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
518
- delete files[testName];
519
- // globalThis["writeFileSync"](
520
- // p + "/manifest.json",
521
- // // files.entries()
522
- // JSON.stringify(Array.from(files[testName]))
523
- // );
524
- // fileStreams3[uid].end();
525
- };
526
- // page.exposeFunction("customclose", () => {
527
- // console.log("closing doneFileStream2", doneFileStream2);
528
- // // console.log("closing doneFileStream2", doneFileStream2);
529
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
530
- // page.close();
531
- // });
532
- // // page.close();
533
- // // Promise.all(screenshots).then(() => {
534
- // // page.close();
535
- // // });
536
- // // setTimeout(() => {
537
- // // console.log("Delayed for 1 second.");
538
- // // page.close();
539
- // // }, 5000);
540
- // // return page.close();
541
- // });
542
- }
543
- customScreenShot(opts) {
544
- throw new Error("Method not implemented.");
545
- }
546
- async startPuppeteer(options, destfolder) {
547
- this.browser = await puppeteer.launch(options);
548
- return this.browser;
549
- }
550
- end(accessObject) {
551
- throw new Error("Method not implemented.");
552
- }
553
- existsSync(destFolder) {
554
- return fs.existsSync(destFolder);
555
- }
556
- async mkdirSync(fp) {
557
- if (!fs.existsSync(fp)) {
558
- return fs.mkdirSync(fp, {
559
- recursive: true,
560
- });
561
- }
562
- return false;
563
- }
564
- writeFileSync(fp, contents) {
565
- fs.writeFileSync(fp, contents);
566
- }
567
- createWriteStream(filepath) {
568
- return fs.createWriteStream(filepath);
569
- }
570
- testArtiFactoryfileWriter(tLog, callback) {
571
- return (fPath, value) => {
572
- callback(new Promise((res, rej) => {
573
- tLog("testArtiFactory =>", fPath);
574
- const cleanPath = path.resolve(fPath);
575
- fPaths.push(cleanPath.replace(process.cwd(), ``));
576
- const targetDir = cleanPath.split("/").slice(0, -1).join("/");
577
- fs.mkdir(targetDir, { recursive: true }, async (error) => {
578
- if (error) {
579
- console.error(`❗️testArtiFactory failed`, targetDir, error);
580
- }
581
- fs.writeFileSync(path.resolve(targetDir.split("/").slice(0, -1).join("/"), "manifest"), fPaths.join(`\n`), {
582
- encoding: "utf-8",
583
- });
584
- if (Buffer.isBuffer(value)) {
585
- fs.writeFileSync(fPath, value, "binary");
586
- res();
587
- }
588
- else if (`string` === typeof value) {
589
- fs.writeFileSync(fPath, value.toString(), {
590
- encoding: "utf-8",
591
- });
592
- res();
593
- }
594
- else {
595
- /* @ts-ignore:next-line */
596
- const pipeStream = value;
597
- const myFile = fs.createWriteStream(fPath);
598
- pipeStream.pipe(myFile);
599
- pipeStream.on("close", () => {
600
- myFile.close();
601
- res();
602
- });
603
- }
604
- });
605
- }));
606
- };
607
- }
608
- write(accessObject, contents) {
609
- throw new Error("Method not implemented.");
610
- }
611
- }
@@ -1,81 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import puppeteer from "puppeteer-core";
4
- import { PM } from "./index.js";
5
- const fPaths = [];
6
- export class PM_Node extends PM {
7
- constructor(t) {
8
- super();
9
- this.server = {};
10
- this.testResourceConfiguration = t;
11
- }
12
- customScreenShot(opts, page) {
13
- return globalThis["customScreenShot"](opts, page);
14
- }
15
- existsSync(destFolder) {
16
- return globalThis["existsSync"](this.testResourceConfiguration.fs + "/" + destFolder);
17
- }
18
- mkdirSync() {
19
- return globalThis["mkdirSync"](this.testResourceConfiguration.fs + "/");
20
- }
21
- write(writeObject, contents) {
22
- return globalThis["write"](writeObject.uid, contents);
23
- }
24
- writeFileSync(filepath, contents) {
25
- console.log("pm_node-writeFileSync", this.testResourceConfiguration);
26
- return globalThis["writeFileSync"](this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
27
- }
28
- createWriteStream(filepath) {
29
- return globalThis["createWriteStream"](this.testResourceConfiguration.fs + "/" + filepath, this.testResourceConfiguration.name);
30
- }
31
- end(writeObject) {
32
- return globalThis["end"](writeObject.uid);
33
- }
34
- customclose() {
35
- globalThis["customclose"](this.testResourceConfiguration.fs, this.testResourceConfiguration.name);
36
- }
37
- testArtiFactoryfileWriter(tLog, callback) {
38
- return (fPath, value) => {
39
- callback(new Promise((res, rej) => {
40
- tLog("testArtiFactory =>", fPath);
41
- const cleanPath = path.resolve(fPath);
42
- fPaths.push(cleanPath.replace(process.cwd(), ``));
43
- const targetDir = cleanPath.split("/").slice(0, -1).join("/");
44
- fs.mkdir(targetDir, { recursive: true }, async (error) => {
45
- if (error) {
46
- console.error(`❗️testArtiFactory failed`, targetDir, error);
47
- }
48
- fs.writeFileSync(path.resolve(targetDir.split("/").slice(0, -1).join("/"), "manifest"), fPaths.join(`\n`), {
49
- encoding: "utf-8",
50
- });
51
- if (Buffer.isBuffer(value)) {
52
- fs.writeFileSync(fPath, value, "binary");
53
- res();
54
- }
55
- else if (`string` === typeof value) {
56
- fs.writeFileSync(fPath, value.toString(), {
57
- encoding: "utf-8",
58
- });
59
- res();
60
- }
61
- else {
62
- /* @ts-ignore:next-line */
63
- const pipeStream = value;
64
- const myFile = fs.createWriteStream(fPath);
65
- pipeStream.pipe(myFile);
66
- pipeStream.on("close", () => {
67
- myFile.close();
68
- res();
69
- });
70
- }
71
- });
72
- }));
73
- };
74
- }
75
- // launch(options?: PuppeteerLaunchOptions): Promise<Browser>;
76
- startPuppeteer(options) {
77
- return puppeteer.connect(options).then((b) => {
78
- this.browser = b;
79
- });
80
- }
81
- }