testeranto 0.75.0 → 0.79.0

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 (257) hide show
  1. package/.eslintrc.js +5 -2
  2. package/Bundle.Dockerfile +52 -0
  3. package/README.md +25 -24
  4. package/build-tests.ts +16 -0
  5. package/dist/common/build-tests.js +38 -0
  6. package/dist/common/init-docs.js +8 -0
  7. package/dist/common/run-tests.js +34 -0
  8. package/dist/common/src/Aider.js +96 -0
  9. package/dist/common/src/Init.js +10 -0
  10. package/dist/common/{Node.js → src/Node.js} +1 -0
  11. package/dist/common/src/PM/index.js +7 -0
  12. package/dist/common/{PM → src/PM}/main.js +287 -10
  13. package/dist/common/{PM → src/PM}/node.js +4 -0
  14. package/dist/common/{PM → src/PM}/web.js +3 -0
  15. package/dist/common/{Project.js → src/Project.js} +15 -57
  16. package/dist/common/{Puppeteer.js → src/Puppeteer.js} +65 -26
  17. package/dist/common/{SubPackages → src/SubPackages}/react-dom/component/web.js +5 -25
  18. package/dist/common/src/SubPackages/react-dom/jsx/web.js +117 -0
  19. package/dist/common/{SubPackages/react-test-renderer/component/index.js → src/SubPackages/react-test-renderer/component/interface.js} +0 -20
  20. package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +2 -2
  21. package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +2 -2
  22. package/dist/common/{Types.js → src/Types.js} +0 -2
  23. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/index.js +1 -0
  24. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +52 -0
  25. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/node.js +5 -1
  26. package/dist/common/src/esbuildConfigs/report.js +14 -0
  27. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/web.js +3 -1
  28. package/dist/common/src/lib/abstractBase.js +581 -0
  29. package/dist/common/{lib → src/lib}/basebuilder.js +12 -38
  30. package/dist/common/{lib → src/lib}/classBuilder.js +1 -3
  31. package/dist/common/{lib → src/lib}/core.js +3 -5
  32. package/dist/common/src/lib/types.js +2 -0
  33. package/dist/common/src/utils.js +16 -0
  34. package/dist/common/testeranto.js +15 -0
  35. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  36. package/dist/module/build-tests.js +10 -0
  37. package/dist/module/init-docs.js +3 -0
  38. package/dist/module/run-tests.js +6 -0
  39. package/dist/module/src/Aider.js +89 -0
  40. package/dist/module/src/Init.js +5 -0
  41. package/dist/module/{Node.js → src/Node.js} +1 -0
  42. package/dist/module/src/PM/index.js +3 -0
  43. package/dist/module/src/PM/main.js +617 -0
  44. package/dist/module/{PM → src/PM}/node.js +4 -0
  45. package/dist/module/{PM → src/PM}/web.js +3 -0
  46. package/dist/module/{Project.js → src/Project.js} +15 -57
  47. package/dist/module/{Puppeteer.js → src/Puppeteer.js} +65 -26
  48. package/dist/module/{SubPackages → src/SubPackages}/react-dom/component/web.js +5 -25
  49. package/dist/module/src/SubPackages/react-dom/jsx/web.js +89 -0
  50. package/dist/module/{SubPackages/react-test-renderer/component/index.js → src/SubPackages/react-test-renderer/component/interface.js} +0 -20
  51. package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +1 -1
  52. package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +1 -1
  53. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/index.js +1 -0
  54. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +47 -0
  55. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/node.js +5 -1
  56. package/dist/module/src/esbuildConfigs/report.js +14 -0
  57. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/web.js +3 -1
  58. package/dist/module/src/lib/abstractBase.js +573 -0
  59. package/dist/module/{lib → src/lib}/basebuilder.js +12 -38
  60. package/dist/module/{lib → src/lib}/classBuilder.js +1 -3
  61. package/dist/module/{lib → src/lib}/core.js +3 -5
  62. package/dist/module/src/utils.js +9 -0
  63. package/dist/module/testeranto.js +13 -0
  64. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  65. package/dist/types/build-tests.d.ts +3 -0
  66. package/dist/types/init-docs.d.ts +2 -0
  67. package/dist/types/run-tests.d.ts +2 -0
  68. package/dist/types/src/Aider.d.ts +1 -0
  69. package/dist/types/src/Init.d.ts +2 -0
  70. package/dist/types/src/Node.d.ts +6 -0
  71. package/dist/types/{PM → src/PM}/index.d.ts +3 -2
  72. package/dist/types/{PM → src/PM}/main.d.ts +6 -3
  73. package/dist/types/{PM → src/PM}/node.d.ts +2 -0
  74. package/dist/types/{PM → src/PM}/web.d.ts +1 -0
  75. package/dist/types/{Project.d.ts → src/Project.d.ts} +1 -1
  76. package/dist/types/src/Puppeteer.d.ts +2 -0
  77. package/dist/types/src/SubPackages/puppeteer.d.ts +6 -0
  78. package/dist/types/{SubPackages → src/SubPackages}/react/component/node.d.ts +1 -1
  79. package/dist/types/{SubPackages → src/SubPackages}/react/component/web.d.ts +1 -1
  80. package/dist/types/src/SubPackages/react/jsx/node.d.ts +4 -0
  81. package/dist/types/src/SubPackages/react/jsx/web.d.ts +4 -0
  82. package/dist/types/{SubPackages → src/SubPackages}/react-dom/component/node.d.ts +2 -2
  83. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +11 -0
  84. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +6 -0
  85. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +5 -0
  86. package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +5 -0
  87. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/index.d.ts +0 -7
  88. package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +9 -0
  89. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/node.d.ts +1 -2
  90. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +3 -0
  91. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.d.ts +1 -1
  92. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.d.ts +1 -1
  93. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.d.ts +1 -2
  94. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.d.ts +1 -2
  95. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +4 -0
  96. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +4 -0
  97. package/dist/types/src/Types.d.ts +51 -0
  98. package/dist/types/src/Web.d.ts +6 -0
  99. package/dist/types/src/esbuildConfigs/inputFilesPlugin.d.ts +5 -0
  100. package/dist/types/{lib → src/lib}/abstractBase.d.ts +8 -8
  101. package/dist/types/{lib → src/lib}/basebuilder.d.ts +1 -1
  102. package/dist/types/{lib → src/lib}/classBuilder.d.ts +1 -1
  103. package/dist/types/{lib → src/lib}/core.d.ts +1 -1
  104. package/dist/types/{lib → src/lib}/index.d.ts +5 -5
  105. package/dist/types/{lib → src/lib}/types.d.ts +15 -15
  106. package/dist/types/src/utils.d.ts +2 -0
  107. package/dist/types/testeranto.d.ts +16 -0
  108. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  109. package/docker-compose.yml +37 -0
  110. package/init-docs.ts +5 -0
  111. package/package.json +72 -25
  112. package/run-tests.ts +9 -0
  113. package/src/Aider.ts +125 -0
  114. package/src/Init.ts +20 -0
  115. package/src/Node.ts +31 -2
  116. package/src/PM/index.ts +7 -84
  117. package/src/PM/main.ts +400 -16
  118. package/src/PM/node.ts +6 -0
  119. package/src/PM/web.ts +4 -0
  120. package/src/Project.ts +33 -84
  121. package/src/Puppeteer.ts +115 -62
  122. package/src/SubPackages/react-dom/component/web.ts +10 -30
  123. package/src/SubPackages/react-dom/jsx/web.ts +110 -76
  124. package/src/SubPackages/react-test-renderer/component/index.ts +0 -66
  125. package/src/SubPackages/react-test-renderer/component/interface.ts +48 -0
  126. package/src/SubPackages/react-test-renderer/component/node.ts +2 -1
  127. package/src/SubPackages/react-test-renderer/component/web.ts +2 -1
  128. package/src/Types.ts +138 -29
  129. package/src/Web.ts +32 -2
  130. package/src/esbuildConfigs/index.ts +1 -0
  131. package/src/esbuildConfigs/inputFilesPlugin.ts +67 -0
  132. package/src/esbuildConfigs/node.ts +4 -2
  133. package/src/esbuildConfigs/report.ts +13 -13
  134. package/src/esbuildConfigs/web.ts +4 -0
  135. package/src/lib/abstractBase.ts +366 -36
  136. package/src/lib/basebuilder.ts +26 -52
  137. package/src/lib/classBuilder.ts +14 -2
  138. package/src/lib/core.ts +18 -7
  139. package/src/lib/index.ts +115 -7
  140. package/src/lib/types.ts +143 -37
  141. package/src/utils.ts +15 -0
  142. package/testeranto.ts +13 -0
  143. package/tsconfig.common.json +12 -4
  144. package/tsconfig.json +9 -3
  145. package/tsconfig.module.json +2 -3
  146. package/tsconfig.types.json +1 -2
  147. package/dist/common/Features.js +0 -84
  148. package/dist/common/PM/index.js +0 -71
  149. package/dist/common/Reporter.js +0 -119
  150. package/dist/common/Scheduler.js +0 -1
  151. package/dist/common/SubPackages/react-dom/jsx/web.js +0 -93
  152. package/dist/common/esbuildConfigs/report.js +0 -13
  153. package/dist/common/lib/abstractBase.js +0 -348
  154. package/dist/common/preload.js +0 -15
  155. package/dist/common/report.html.js +0 -31
  156. package/dist/module/Features.js +0 -73
  157. package/dist/module/PM/index.js +0 -67
  158. package/dist/module/PM/main.js +0 -340
  159. package/dist/module/Reporter.js +0 -114
  160. package/dist/module/Scheduler.js +0 -1
  161. package/dist/module/SubPackages/react-dom/jsx/web.js +0 -65
  162. package/dist/module/Types.js +0 -3
  163. package/dist/module/esbuildConfigs/report.js +0 -11
  164. package/dist/module/lib/abstractBase.js +0 -340
  165. package/dist/module/preload.js +0 -15
  166. package/dist/module/report.html.js +0 -29
  167. package/dist/prebuild/Report.css +0 -11358
  168. package/dist/prebuild/Report.js +0 -37585
  169. package/dist/types/Features.d.ts +0 -68
  170. package/dist/types/Node.d.ts +0 -6
  171. package/dist/types/SubPackages/puppeteer.d.ts +0 -6
  172. package/dist/types/SubPackages/react/jsx/node.d.ts +0 -4
  173. package/dist/types/SubPackages/react/jsx/web.d.ts +0 -4
  174. package/dist/types/SubPackages/react-dom/component/web.d.ts +0 -5
  175. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +0 -6
  176. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +0 -5
  177. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -5
  178. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +0 -4
  179. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -5
  180. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -5
  181. package/dist/types/Types.d.ts +0 -50
  182. package/dist/types/Web.d.ts +0 -6
  183. package/dist/types/esbuildConfigs/report.d.ts +0 -4
  184. package/dist/types/preload.d.ts +0 -0
  185. package/dist/types/report.html.d.ts +0 -2
  186. package/electronBuild.ts +0 -32
  187. package/src/Features.ts +0 -118
  188. package/src/Report.tsx +0 -521
  189. package/src/Reporter.ts +0 -134
  190. package/src/Scheduler.ts +0 -0
  191. package/src/preload.ts +0 -17
  192. package/src/report.html.ts +0 -29
  193. package/tests/Rectangle.test.ts +0 -189
  194. /package/dist/common/{SubPackages → src/SubPackages}/puppeteer.js +0 -0
  195. /package/dist/common/{SubPackages → src/SubPackages}/react/component/node.js +0 -0
  196. /package/dist/common/{SubPackages → src/SubPackages}/react/component/web.js +0 -0
  197. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/index.js +0 -0
  198. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  199. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/web.js +0 -0
  200. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/component/node.js +0 -0
  201. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  202. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/node.js +0 -0
  203. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  204. /package/dist/common/{lib/types.js → src/SubPackages/react-test-renderer/component/index.js} +0 -0
  205. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  206. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  207. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  208. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  209. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  210. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  211. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  212. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  213. /package/dist/common/{Web.js → src/Web.js} +0 -0
  214. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/features.js +0 -0
  215. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/tests.js +0 -0
  216. /package/dist/common/{lib → src/lib}/index.js +0 -0
  217. /package/dist/common/{puppeteerConfiger.js → src/puppeteerConfiger.js} +0 -0
  218. /package/dist/common/{web.html.js → src/web.html.js} +0 -0
  219. /package/dist/module/{SubPackages → src/SubPackages}/puppeteer.js +0 -0
  220. /package/dist/module/{SubPackages → src/SubPackages}/react/component/node.js +0 -0
  221. /package/dist/module/{SubPackages → src/SubPackages}/react/component/web.js +0 -0
  222. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/index.js +0 -0
  223. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  224. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/web.js +0 -0
  225. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/component/node.js +0 -0
  226. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  227. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/node.js +0 -0
  228. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  229. /package/dist/module/{lib/types.js → src/SubPackages/react-test-renderer/component/index.js} +0 -0
  230. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  231. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  232. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  233. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  234. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  235. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  236. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  237. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  238. /package/dist/{types/Puppeteer.d.ts → module/src/Types.js} +0 -0
  239. /package/dist/module/{Web.js → src/Web.js} +0 -0
  240. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/features.js +0 -0
  241. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/tests.js +0 -0
  242. /package/dist/module/{lib → src/lib}/index.js +0 -0
  243. /package/dist/{types/Reporter.d.ts → module/src/lib/types.js} +0 -0
  244. /package/dist/module/{puppeteerConfiger.js → src/puppeteerConfiger.js} +0 -0
  245. /package/dist/module/{web.html.js → src/web.html.js} +0 -0
  246. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/index.d.ts +0 -0
  247. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/index.d.ts +0 -0
  248. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.d.ts +0 -0
  249. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.d.ts +0 -0
  250. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/features.d.ts +0 -0
  251. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/index.d.ts +0 -0
  252. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/node.d.ts +0 -0
  253. /package/dist/types/{Scheduler.d.ts → src/esbuildConfigs/report.d.ts} +0 -0
  254. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/tests.d.ts +0 -0
  255. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/web.d.ts +0 -0
  256. /package/dist/types/{puppeteerConfiger.d.ts → src/puppeteerConfiger.d.ts} +0 -0
  257. /package/dist/types/{web.html.d.ts → src/web.html.d.ts} +0 -0
@@ -1,340 +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
- const fileStreams3 = [];
7
- const files = {}; // = new Set<string>();
8
- const screenshots = {};
9
- export class PM_Main extends PM {
10
- constructor(configs) {
11
- super();
12
- this.launchNode = async (src, dest) => {
13
- console.log("launchNode", src);
14
- const destFolder = dest.replace(".mjs", "");
15
- let argz = "";
16
- const testConfig = this.configs.tests.find((t) => {
17
- return t[0] === src;
18
- });
19
- if (!testConfig) {
20
- console.error("missing test config");
21
- process.exit(-1);
22
- }
23
- const testConfigResource = testConfig[2];
24
- let portsToUse = [];
25
- if (testConfigResource.ports === 0) {
26
- argz = JSON.stringify({
27
- scheduled: true,
28
- name: src,
29
- ports: portsToUse,
30
- fs: destFolder,
31
- browserWSEndpoint: this.browser.wsEndpoint(),
32
- });
33
- }
34
- else if (testConfigResource.ports > 0) {
35
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
36
- if (openPorts.length >= testConfigResource.ports) {
37
- for (let i = 0; i < testConfigResource.ports; i++) {
38
- portsToUse.push(openPorts[i][0]);
39
- this.ports[openPorts[i][0]] = false; // port is now closed
40
- }
41
- argz = JSON.stringify({
42
- scheduled: true,
43
- name: src,
44
- // ports: [3333],
45
- ports: portsToUse,
46
- fs: ".",
47
- browserWSEndpoint: this.browser.wsEndpoint(),
48
- });
49
- }
50
- else {
51
- this.queue.push(src);
52
- return;
53
- }
54
- }
55
- else {
56
- console.error("negative port makes no sense", src);
57
- process.exit(-1);
58
- }
59
- const builtfile = dest + ".mjs";
60
- this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
61
- return module.default.then((defaultModule) => {
62
- defaultModule
63
- .receiveTestResourceConfig(argz)
64
- .then((x) => {
65
- console.log("then", x);
66
- return x;
67
- })
68
- .catch((e) => {
69
- console.log("catch", e);
70
- });
71
- });
72
- });
73
- for (let i = 0; i <= portsToUse.length; i++) {
74
- this.ports[i] = true; //port is open again
75
- }
76
- };
77
- this.launchWeb = (t, dest) => {
78
- console.log("launchWeb", t, dest);
79
- const destFolder = dest.replace(".mjs", "");
80
- const webArgz = JSON.stringify({
81
- name: dest,
82
- ports: [].toString(),
83
- fs: destFolder,
84
- browserWSEndpoint: this.browser.wsEndpoint(),
85
- });
86
- const evaluation = `import('${dest}.mjs').then(async (x) => {
87
- console.log("imported", x, (x.default));
88
- try {
89
- await (await x.default).receiveTestResourceConfig(${webArgz})
90
- } catch (e) {
91
- console.log("fail", e)
92
- }
93
- })`;
94
- const fileStreams2 = [];
95
- // const screenshots2: Promise<any>[] = [];
96
- const doneFileStream2 = [];
97
- this.browser
98
- .newPage()
99
- .then((page) => {
100
- page.exposeFunction("custom-screenshot", async (ssOpts, testName) => {
101
- console.log("main.ts browser custom-screenshot", testName);
102
- const p = ssOpts.path;
103
- const dir = path.dirname(p);
104
- fs.mkdirSync(dir, {
105
- recursive: true,
106
- });
107
- files[testName].add(ssOpts.path);
108
- const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
109
- if (!screenshots[testName]) {
110
- screenshots[testName] = [];
111
- }
112
- screenshots[testName].push(sPromise);
113
- // sPromise.then(())
114
- await sPromise;
115
- return sPromise;
116
- // page.evaluate(`window["screenshot done"]`);
117
- });
118
- page.exposeFunction("writeFileSync", (fp, contents, testName) => {
119
- const dir = path.dirname(fp);
120
- fs.mkdirSync(dir, {
121
- recursive: true,
122
- });
123
- const p = new Promise(async (res, rej) => {
124
- fs.writeFileSync(fp, contents);
125
- res(fp);
126
- });
127
- doneFileStream2.push(p);
128
- if (!files[testName]) {
129
- files[testName] = new Set();
130
- }
131
- files[testName].add(fp);
132
- return p;
133
- });
134
- page.exposeFunction("existsSync", (fp, contents) => {
135
- return fs.existsSync(fp);
136
- });
137
- page.exposeFunction("mkdirSync", (fp) => {
138
- if (!fs.existsSync(fp)) {
139
- return fs.mkdirSync(fp, {
140
- recursive: true,
141
- });
142
- }
143
- return false;
144
- });
145
- page.exposeFunction("createWriteStream", (fp, testName) => {
146
- const f = fs.createWriteStream(fp);
147
- if (!files[testName]) {
148
- files[testName] = new Set();
149
- }
150
- files[testName].add(fp);
151
- const p = new Promise((res, rej) => {
152
- res(fp);
153
- });
154
- doneFileStream2.push(p);
155
- f.on("close", async () => {
156
- await p;
157
- });
158
- fileStreams2.push(f);
159
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
160
- });
161
- page.exposeFunction("write", async (uid, contents) => {
162
- return fileStreams2[uid].write(contents);
163
- });
164
- page.exposeFunction("end", async (uid) => {
165
- return fileStreams2[uid].end();
166
- });
167
- page.exposeFunction("customclose", (p, testName) => {
168
- fs.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
169
- delete files[testName];
170
- Promise.all(screenshots[testName] || []).then(() => {
171
- delete screenshots[testName];
172
- page.close();
173
- });
174
- // globalThis["writeFileSync"](
175
- // p + "/manifest.json",
176
- // // files.entries()
177
- // JSON.stringify(Array.from(files[testName]))
178
- // );
179
- // console.log("closing doneFileStream2", doneFileStream2);
180
- // console.log("closing doneFileStream2", doneFileStream2);
181
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
182
- // page.close();
183
- // });
184
- // Promise.all(screenshots).then(() => {
185
- // page.close();
186
- // });
187
- // setTimeout(() => {
188
- // console.log("Delayed for 1 second.");
189
- // page.close();
190
- // }, 5000);
191
- // return page.close();
192
- });
193
- return page;
194
- })
195
- .then(async (page) => {
196
- await page.goto(`file://${`${dest}.html`}`, {});
197
- page.evaluate(evaluation).finally(() => {
198
- console.log("evaluation failed.", dest);
199
- });
200
- return page;
201
- });
202
- };
203
- this.server = {};
204
- this.configs = configs;
205
- this.ports = {};
206
- this.configs.ports.forEach((element) => {
207
- this.ports[element] = "true"; // set ports as open
208
- });
209
- globalThis["mkdirSync"] = (fp) => {
210
- if (!fs.existsSync(fp)) {
211
- return fs.mkdirSync(fp, {
212
- recursive: true,
213
- });
214
- }
215
- return false;
216
- };
217
- globalThis["writeFileSync"] = (filepath, contents, testName) => {
218
- // Create directories if they don't exist
219
- const dir = path.dirname(filepath.split("/").slice(0, -1).join("/"));
220
- fs.mkdirSync(dir, {
221
- recursive: true,
222
- });
223
- if (!files[testName]) {
224
- files[testName] = new Set();
225
- }
226
- files[testName].add(filepath);
227
- return fs.writeFileSync(filepath, contents);
228
- };
229
- globalThis["createWriteStream"] = (filepath, testName) => {
230
- const f = fs.createWriteStream(filepath);
231
- fileStreams3.push(f);
232
- // files.add(filepath);
233
- if (!files[testName]) {
234
- files[testName] = new Set();
235
- }
236
- files[testName].add(filepath);
237
- return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams3.length - 1 });
238
- };
239
- globalThis["write"] = (uid, contents) => {
240
- fileStreams3[uid].write(contents);
241
- };
242
- globalThis["end"] = (uid) => {
243
- fileStreams3[uid].end();
244
- };
245
- globalThis["customclose"] = (p, testName) => {
246
- if (!files[testName]) {
247
- files[testName] = new Set();
248
- }
249
- fs.writeFileSync(p + "/manifest.json", JSON.stringify(Array.from(files[testName])));
250
- delete files[testName];
251
- // globalThis["writeFileSync"](
252
- // p + "/manifest.json",
253
- // // files.entries()
254
- // JSON.stringify(Array.from(files[testName]))
255
- // );
256
- // fileStreams3[uid].end();
257
- };
258
- // page.exposeFunction("customclose", () => {
259
- // console.log("closing doneFileStream2", doneFileStream2);
260
- // // console.log("closing doneFileStream2", doneFileStream2);
261
- // Promise.all([...doneFileStream2, ...screenshots2]).then(() => {
262
- // page.close();
263
- // });
264
- // // page.close();
265
- // // Promise.all(screenshots).then(() => {
266
- // // page.close();
267
- // // });
268
- // // setTimeout(() => {
269
- // // console.log("Delayed for 1 second.");
270
- // // page.close();
271
- // // }, 5000);
272
- // // return page.close();
273
- // });
274
- }
275
- async startPuppeteer(options, destfolder) {
276
- this.browser = await puppeteer.launch(options);
277
- return this.browser;
278
- }
279
- end(accessObject) {
280
- throw new Error("Method not implemented.");
281
- }
282
- existsSync(destFolder) {
283
- return fs.existsSync(destFolder);
284
- }
285
- async mkdirSync(fp) {
286
- if (!fs.existsSync(fp)) {
287
- return fs.mkdirSync(fp, {
288
- recursive: true,
289
- });
290
- }
291
- return false;
292
- }
293
- writeFileSync(fp, contents) {
294
- fs.writeFileSync(fp, contents);
295
- }
296
- createWriteStream(filepath) {
297
- return fs.createWriteStream(filepath);
298
- }
299
- testArtiFactoryfileWriter(tLog, callback) {
300
- return (fPath, value) => {
301
- callback(new Promise((res, rej) => {
302
- tLog("testArtiFactory =>", fPath);
303
- const cleanPath = path.resolve(fPath);
304
- fPaths.push(cleanPath.replace(process.cwd(), ``));
305
- const targetDir = cleanPath.split("/").slice(0, -1).join("/");
306
- fs.mkdir(targetDir, { recursive: true }, async (error) => {
307
- if (error) {
308
- console.error(`❗️testArtiFactory failed`, targetDir, error);
309
- }
310
- fs.writeFileSync(path.resolve(targetDir.split("/").slice(0, -1).join("/"), "manifest"), fPaths.join(`\n`), {
311
- encoding: "utf-8",
312
- });
313
- if (Buffer.isBuffer(value)) {
314
- fs.writeFileSync(fPath, value, "binary");
315
- res();
316
- }
317
- else if (`string` === typeof value) {
318
- fs.writeFileSync(fPath, value.toString(), {
319
- encoding: "utf-8",
320
- });
321
- res();
322
- }
323
- else {
324
- /* @ts-ignore:next-line */
325
- const pipeStream = value;
326
- const myFile = fs.createWriteStream(fPath);
327
- pipeStream.pipe(myFile);
328
- pipeStream.on("close", () => {
329
- myFile.close();
330
- res();
331
- });
332
- }
333
- });
334
- }));
335
- };
336
- }
337
- write(accessObject, contents) {
338
- throw new Error("Method not implemented.");
339
- }
340
- }
@@ -1,114 +0,0 @@
1
- import readline from "readline";
2
- import fs from "fs";
3
- import { jsonc } from "jsonc";
4
- import puppeteer from "puppeteer-core";
5
- // import { PM_Main } from "./PM/main.js";
6
- // var mode: "DEV" | "PROD" = process.argv[2] === "-dev" ? "DEV" : "PROD";
7
- // const node2web: Record<string, string[]> = {};
8
- // const web2node: Record<string, string[]> = {};
9
- // const childProcesses: Record<string, "loaded" | "running" | "done"> = {};
10
- readline.emitKeypressEvents(process.stdin);
11
- if (process.stdin.isTTY)
12
- process.stdin.setRawMode(true);
13
- console.log("\n Puppeteer is running. Press 'q' to quit\n");
14
- process.stdin.on("keypress", (str, key) => {
15
- if (key.name === "q") {
16
- process.exit();
17
- }
18
- });
19
- const main = async () => {
20
- const configs = jsonc.parse((await fs.readFileSync("./docs/testeranto.json")).toString());
21
- // const pm = new PM_Main(configs);
22
- // await puppeteer.launch(options);
23
- const browser = await puppeteer.launch({
24
- waitForInitialPage: false,
25
- executablePath: "/opt/homebrew/bin/chromium",
26
- headless: false,
27
- args: [
28
- "--allow-file-access-from-files",
29
- "--allow-running-insecure-content",
30
- // "--auto-open-devtools-for-tabs",
31
- "--disable-dev-shm-usage",
32
- "--disable-extensions",
33
- "--disable-gpu",
34
- "--disable-setuid-sandbox",
35
- "--disable-site-isolation-trials",
36
- "--disable-web-security",
37
- "--disable-web-security",
38
- "--no-first-run",
39
- "--no-sandbox",
40
- "--no-startup-window",
41
- "--no-zygote",
42
- "--reduce-security-for-testing",
43
- "--remote-allow-origins=*",
44
- // "--remote-allow-origins=ws://localhost:3234",
45
- "--unsafely-treat-insecure-origin-as-secure=*",
46
- // "--disable-features=IsolateOrigins",
47
- // "--single-process",
48
- // "--unsafely-treat-insecure-origin-as-secure",
49
- // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
50
- // `--remote-debugging-port=3234`,
51
- ],
52
- }
53
- // "."
54
- );
55
- console.log("Creating new page...");
56
- const page = await browser.newPage();
57
- await page.setViewport({ width: 0, height: 0 });
58
- console.log("Requesting url...");
59
- await page.goto(`file://${process.cwd()}/docs/report.html`);
60
- // const destinationOfRuntime = (f: string, r: IRunTime) => {
61
- // return path
62
- // .normalize(`${configs.buildDir}/${r}/${f}`)
63
- // .split(".")
64
- // .slice(0, -1)
65
- // .join(".");
66
- // };
67
- // configs.tests.forEach(([test, runtime, secondaryArtifacts]) => {
68
- // if (runtime === "node") {
69
- // pm.launchNode(test, destinationOfRuntime(test, "node"));
70
- // } else if (runtime === "web") {
71
- // pm.launchWeb(test, destinationOfRuntime(test, "web"));
72
- // } else {
73
- // console.error("runtime makes no sense", runtime);
74
- // }
75
- // });
76
- // console.log("ready and watching for changes...", configs.buildDir);
77
- // fs.watch(
78
- // configs.buildDir,
79
- // {
80
- // recursive: true,
81
- // },
82
- // (eventType, changedFile) => {
83
- // if (changedFile) {
84
- // configs.tests.forEach(([test, runtime, secondaryArtifacts]) => {
85
- // if (eventType === "change" || eventType === "rename") {
86
- // if (
87
- // changedFile ===
88
- // test
89
- // .replace("./", "node/")
90
- // .split(".")
91
- // .slice(0, -1)
92
- // .concat("mjs")
93
- // .join(".")
94
- // ) {
95
- // pm.launchNode(test, destinationOfRuntime(test, "node"));
96
- // }
97
- // if (
98
- // changedFile ===
99
- // test
100
- // .replace("./", "web/")
101
- // .split(".")
102
- // .slice(0, -1)
103
- // .concat("mjs")
104
- // .join(".")
105
- // ) {
106
- // pm.launchWeb(test, destinationOfRuntime(test, "web"));
107
- // }
108
- // }
109
- // });
110
- // }
111
- // }
112
- // );
113
- };
114
- main();
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,65 +0,0 @@
1
- import React, { useEffect, useRef } from "react";
2
- import { createPortal } from "react-dom";
3
- import Testeranto from "../../../Web.js";
4
- export default (testImplementations, testSpecifications, testInput) => {
5
- document.addEventListener("DOMContentLoaded", function () {
6
- const rootElement = document.getElementById("root");
7
- if (rootElement) {
8
- const TesterantoComponent = function ({ done, innerComp, }) {
9
- const myContainer = useRef(null);
10
- useEffect(() => {
11
- console.log("useEffect called", myContainer.current);
12
- done(myContainer.current);
13
- }, []);
14
- return React.createElement("div", { ref: myContainer }, innerComp());
15
- };
16
- Testeranto(testInput, testSpecifications, testImplementations, {
17
- beforeAll: async (input, artificer) => {
18
- return await new Promise((resolve, rej) => {
19
- resolve(rootElement);
20
- });
21
- },
22
- beforeEach: async (subject, ndx, testRsource, artificer) => {
23
- return new Promise((resolve, rej) => {
24
- createPortal(TesterantoComponent({
25
- innerComp: testInput,
26
- done: (reactElement) => {
27
- process.nextTick(() => {
28
- resolve(reactElement);
29
- });
30
- },
31
- }), rootElement);
32
- });
33
- },
34
- andWhen: function (s, whenCB) {
35
- return new Promise((resolve, rej) => {
36
- process.nextTick(() => {
37
- resolve(whenCB()(s));
38
- });
39
- });
40
- },
41
- butThen: async function (s) {
42
- return new Promise((resolve, rej) => {
43
- process.nextTick(() => {
44
- resolve(s);
45
- });
46
- });
47
- },
48
- afterEach: async function (store, ndx, artificer) {
49
- return new Promise((resolve, rej) => {
50
- process.nextTick(() => {
51
- resolve({});
52
- });
53
- });
54
- },
55
- afterAll: (store, artificer) => {
56
- return new Promise((resolve, rej) => {
57
- process.nextTick(() => {
58
- resolve({});
59
- });
60
- });
61
- },
62
- });
63
- }
64
- });
65
- };
@@ -1,3 +0,0 @@
1
- export {};
2
- // export type ITTestShape = {
3
- // };
@@ -1,11 +0,0 @@
1
- export default (config) => {
2
- return {
3
- bundle: true,
4
- entryPoints: ["./node_modules/testeranto/dist/module/report.js"],
5
- minify: config.minify === true,
6
- outbase: config.outbase,
7
- write: true,
8
- outfile: `${config.outdir}/report.js`,
9
- external: ["tests.json", "features.test.js"],
10
- };
11
- };