testeranto 0.125.3 → 0.129.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 (99) hide show
  1. package/README.md +248 -6
  2. package/dist/common/src/Node.js +5 -0
  3. package/dist/common/src/PM/base.js +6 -0
  4. package/dist/common/src/PM/index.js +0 -1
  5. package/dist/common/src/PM/main.js +84 -22
  6. package/dist/common/src/PM/web.js +1 -1
  7. package/dist/common/src/ReportServer.js +39 -2
  8. package/dist/common/src/build.js +41 -6
  9. package/dist/common/src/lib/abstractBase.js +22 -107
  10. package/dist/common/src/lib/basebuilder.js +20 -21
  11. package/dist/common/src/lib/classBuilder.js +12 -1
  12. package/dist/common/src/lib/core.js +1 -8
  13. package/dist/common/src/lib/index.js +2 -5
  14. package/dist/common/src/lib/pmProxy.js +294 -0
  15. package/dist/common/testeranto.config.js +43 -34
  16. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  17. package/dist/module/src/Node.js +5 -0
  18. package/dist/module/src/PM/base.js +6 -0
  19. package/dist/module/src/PM/index.js +0 -1
  20. package/dist/module/src/PM/main.js +84 -22
  21. package/dist/module/src/PM/web.js +1 -1
  22. package/dist/module/src/Project.js +6 -6
  23. package/dist/module/src/ReportClient.js +3 -3
  24. package/dist/module/src/ReportServer.js +39 -2
  25. package/dist/module/src/build.js +41 -6
  26. package/dist/module/src/lib/abstractBase.js +22 -107
  27. package/dist/module/src/lib/basebuilder.js +20 -21
  28. package/dist/module/src/lib/classBuilder.js +12 -1
  29. package/dist/module/src/lib/core.js +1 -8
  30. package/dist/module/src/lib/index.js +2 -5
  31. package/dist/module/src/lib/pmProxy.js +285 -0
  32. package/dist/module/testeranto.config.js +40 -34
  33. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  34. package/dist/prebuild/Project.css +1 -26
  35. package/dist/prebuild/Project.js +4 -4
  36. package/dist/prebuild/ReportClient.css +1 -26
  37. package/dist/prebuild/ReportClient.js +3 -3
  38. package/dist/prebuild/ReportServer.mjs +1 -2
  39. package/dist/prebuild/TestReport.css +1 -26
  40. package/dist/prebuild/build.mjs +42 -7
  41. package/dist/prebuild/run.mjs +95 -20
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/dist/types/src/PM/web.d.ts +1 -1
  44. package/dist/types/src/Types.d.ts +2 -1
  45. package/dist/types/src/lib/abstractBase.d.ts +4 -6
  46. package/dist/types/src/lib/index.d.ts +1 -1
  47. package/dist/types/src/lib/pmProxy.d.ts +7 -0
  48. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  49. package/package.json +14 -7
  50. package/src/Init.ts +1 -0
  51. package/src/Node.ts +6 -0
  52. package/src/PM/base.ts +8 -0
  53. package/src/PM/index.ts +2 -7
  54. package/src/PM/main.ts +128 -26
  55. package/src/PM/web.ts +3 -3
  56. package/src/Project.tsx +6 -6
  57. package/src/ReportClient.tsx +3 -3
  58. package/src/ReportServer.ts +43 -2
  59. package/src/Types.ts +3 -2
  60. package/src/build.ts +47 -6
  61. package/src/lib/abstractBase.ts +45 -184
  62. package/src/lib/basebuilder.ts +25 -28
  63. package/src/lib/classBuilder.ts +13 -2
  64. package/src/lib/core.ts +10 -14
  65. package/src/lib/index.ts +6 -29
  66. package/src/lib/pmProxy.ts +366 -0
  67. package/testeranto/bundles/node/{react → redux}/metafile.json +186 -254
  68. package/testeranto/bundles/pure/redux/metafile.json +554 -0
  69. package/testeranto/bundles/web/redux/metafile.json +504 -0
  70. package/testeranto/bundles/web/{react/src/SubPackages/react-test-renderer/component → redux}/test/web.html +1 -1
  71. package/testeranto/index.html +1 -1
  72. package/testeranto/reports/{react → redux}/config.json +26 -10
  73. package/testeranto/reports/{react → redux}/index.html +5 -5
  74. package/testeranto/reports/redux/summary.json +20 -0
  75. package/testeranto.config.ts +46 -34
  76. package/tsc.log +3 -1
  77. package/testeranto/bundles/node/react/src/SubPackages/react-test-renderer/component/test/node.mjs +0 -24687
  78. package/testeranto/bundles/pure/react/metafile.json +0 -8
  79. package/testeranto/bundles/pure/react/src/SubPackages/react-test-renderer/component/test/pure.mjs +0 -24625
  80. package/testeranto/bundles/web/react/metafile.json +0 -8
  81. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.mjs +0 -21290
  82. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/node/node/console_log.txt +0 -0
  83. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/bdd_errors.txt +0 -1
  84. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/featurePrompt.txt +0 -0
  85. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/lint_errors.json +0 -3381
  86. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/littleBoard.html +0 -20
  87. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/log.txt +0 -40
  88. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/prompt.txt +0 -24
  89. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/tests.json +0 -132
  90. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/type_errors.txt +0 -17
  91. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/bdd_errors.txt +0 -1
  92. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/console_log.txt +0 -1
  93. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/lint_errors.json +0 -2947
  94. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/littleBoard.html +0 -20
  95. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/log.txt +0 -40
  96. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/prompt.txt +0 -23
  97. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/tests.json +0 -132
  98. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/type_errors.txt +0 -18
  99. package/testeranto/reports/react/summary.json +0 -8
@@ -2030,10 +2030,6 @@ progress {
2030
2030
  display: block;
2031
2031
  padding: 0;
2032
2032
  }
2033
- .form-control::-moz-placeholder {
2034
- color: var(--bs-secondary-color);
2035
- opacity: 1;
2036
- }
2037
2033
  .form-control::placeholder {
2038
2034
  color: var(--bs-secondary-color);
2039
2035
  opacity: 1;
@@ -2513,19 +2509,10 @@ textarea.form-control-lg {
2513
2509
  .form-floating > .form-control-plaintext {
2514
2510
  padding: 1rem .75rem;
2515
2511
  }
2516
- .form-floating > .form-control-plaintext::-moz-placeholder,
2517
- .form-floating > .form-control::-moz-placeholder {
2518
- color: transparent;
2519
- }
2520
2512
  .form-floating > .form-control-plaintext::placeholder,
2521
2513
  .form-floating > .form-control::placeholder {
2522
2514
  color: transparent;
2523
2515
  }
2524
- .form-floating > .form-control-plaintext:not(:-moz-placeholder),
2525
- .form-floating > .form-control:not(:-moz-placeholder) {
2526
- padding-top: 1.625rem;
2527
- padding-bottom: .625rem;
2528
- }
2529
2516
  .form-floating > .form-control-plaintext:focus,
2530
2517
  .form-floating > .form-control-plaintext:not(:placeholder-shown),
2531
2518
  .form-floating > .form-control:focus,
@@ -2543,9 +2530,6 @@ textarea.form-control-lg {
2543
2530
  padding-bottom: .625rem;
2544
2531
  padding-left: .75rem;
2545
2532
  }
2546
- .form-floating > .form-control:not(:-moz-placeholder) ~ label {
2547
- transform: scale(.85) translateY(-.5rem) translateX(.15rem);
2548
- }
2549
2533
  .form-floating > .form-control-plaintext ~ label,
2550
2534
  .form-floating > .form-control:focus ~ label,
2551
2535
  .form-floating > .form-control:not(:placeholder-shown) ~ label,
@@ -2555,15 +2539,6 @@ textarea.form-control-lg {
2555
2539
  .form-floating > .form-control:-webkit-autofill ~ label {
2556
2540
  transform: scale(.85) translateY(-.5rem) translateX(.15rem);
2557
2541
  }
2558
- .form-floating > textarea:not(:-moz-placeholder) ~ label::after {
2559
- position: absolute;
2560
- inset: 1rem 0.375rem;
2561
- z-index: -1;
2562
- height: 1.5em;
2563
- content: "";
2564
- background-color: var(--bs-body-bg);
2565
- border-radius: var(--bs-border-radius);
2566
- }
2567
2542
  .form-floating > textarea:focus ~ label::after,
2568
2543
  .form-floating > textarea:not(:placeholder-shown) ~ label::after {
2569
2544
  position: absolute;
@@ -11360,7 +11335,7 @@ footer {
11360
11335
 
11361
11336
  bootstrap/dist/css/bootstrap.min.css:
11362
11337
  (*!
11363
- * Bootstrap v5.3.4 (https://getbootstrap.com/)
11338
+ * Bootstrap v5.3.5 (https://getbootstrap.com/)
11364
11339
  * Copyright 2011-2025 The Bootstrap Authors
11365
11340
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
11366
11341
  *)
@@ -24539,8 +24539,8 @@
24539
24539
  const x = projects.map(async (p) => {
24540
24540
  return [
24541
24541
  p,
24542
- await (await fetch(`/kokomoBay/testeranto/reports/${p}/config.json`)).json(),
24543
- await (await fetch(`/kokomoBay/testeranto/reports/${p}/summary.json`)).json()
24542
+ await (await fetch(`./reports/${p}/config.json`)).json(),
24543
+ await (await fetch(`./reports/${p}/summary.json`)).json()
24544
24544
  ];
24545
24545
  });
24546
24546
  Promise.all(x).then((v) => {
@@ -24563,7 +24563,7 @@
24563
24563
  return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement("tr", null, /* @__PURE__ */ import_react3.default.createElement("th", null, s[0])), ...s[1].tests.map((t) => {
24564
24564
  const x = `${s[0]}/${t[0].split(".").slice(0, -1).join(".")}/${t[1]}`;
24565
24565
  const y = s[2][t[0]];
24566
- return /* @__PURE__ */ import_react3.default.createElement("tr", null, /* @__PURE__ */ import_react3.default.createElement("td", null, t[0]), /* @__PURE__ */ import_react3.default.createElement("td", null, t[1]), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("a", { href: `/kokomoBay/testeranto/reports/${x}/littleBoard.html` }, y.runTimeError)), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("a", { href: `/kokomoBay/testeranto/reports/${x}/lint_errors.json` }, y.staticErrors)), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("a", { href: `/kokomoBay/testeranto/reports/${x}/type_errors.txt` }, y.typeErrors)), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("pre", null, s[2][t[0]].prompt)));
24566
+ return /* @__PURE__ */ import_react3.default.createElement("tr", null, /* @__PURE__ */ import_react3.default.createElement("td", null, t[0]), /* @__PURE__ */ import_react3.default.createElement("td", null, t[1]), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("a", { href: `./reports/${x}/index.html` }, y.runTimeError)), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("a", { href: `./reports/${x}/lint_errors.json` }, y.staticErrors)), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("a", { href: `./reports/${x}/type_errors.txt` }, y.typeErrors)), /* @__PURE__ */ import_react3.default.createElement("td", null, /* @__PURE__ */ import_react3.default.createElement("pre", null, s[2][t[0]].prompt)));
24567
24567
  }));
24568
24568
  }))), /* @__PURE__ */ import_react3.default.createElement(Footer, null));
24569
24569
  };
@@ -24573,7 +24573,7 @@
24573
24573
  import_client.default.createRoot(elem).render(import_react3.default.createElement(BigBoard, {}));
24574
24574
  }
24575
24575
  });
24576
- console.log("hello BigBoard!");
24576
+ console.log("hello Project!");
24577
24577
  })();
24578
24578
  /*! Bundled license information:
24579
24579
 
@@ -2030,10 +2030,6 @@ progress {
2030
2030
  display: block;
2031
2031
  padding: 0;
2032
2032
  }
2033
- .form-control::-moz-placeholder {
2034
- color: var(--bs-secondary-color);
2035
- opacity: 1;
2036
- }
2037
2033
  .form-control::placeholder {
2038
2034
  color: var(--bs-secondary-color);
2039
2035
  opacity: 1;
@@ -2513,19 +2509,10 @@ textarea.form-control-lg {
2513
2509
  .form-floating > .form-control-plaintext {
2514
2510
  padding: 1rem .75rem;
2515
2511
  }
2516
- .form-floating > .form-control-plaintext::-moz-placeholder,
2517
- .form-floating > .form-control::-moz-placeholder {
2518
- color: transparent;
2519
- }
2520
2512
  .form-floating > .form-control-plaintext::placeholder,
2521
2513
  .form-floating > .form-control::placeholder {
2522
2514
  color: transparent;
2523
2515
  }
2524
- .form-floating > .form-control-plaintext:not(:-moz-placeholder),
2525
- .form-floating > .form-control:not(:-moz-placeholder) {
2526
- padding-top: 1.625rem;
2527
- padding-bottom: .625rem;
2528
- }
2529
2516
  .form-floating > .form-control-plaintext:focus,
2530
2517
  .form-floating > .form-control-plaintext:not(:placeholder-shown),
2531
2518
  .form-floating > .form-control:focus,
@@ -2543,9 +2530,6 @@ textarea.form-control-lg {
2543
2530
  padding-bottom: .625rem;
2544
2531
  padding-left: .75rem;
2545
2532
  }
2546
- .form-floating > .form-control:not(:-moz-placeholder) ~ label {
2547
- transform: scale(.85) translateY(-.5rem) translateX(.15rem);
2548
- }
2549
2533
  .form-floating > .form-control-plaintext ~ label,
2550
2534
  .form-floating > .form-control:focus ~ label,
2551
2535
  .form-floating > .form-control:not(:placeholder-shown) ~ label,
@@ -2555,15 +2539,6 @@ textarea.form-control-lg {
2555
2539
  .form-floating > .form-control:-webkit-autofill ~ label {
2556
2540
  transform: scale(.85) translateY(-.5rem) translateX(.15rem);
2557
2541
  }
2558
- .form-floating > textarea:not(:-moz-placeholder) ~ label::after {
2559
- position: absolute;
2560
- inset: 1rem 0.375rem;
2561
- z-index: -1;
2562
- height: 1.5em;
2563
- content: "";
2564
- background-color: var(--bs-body-bg);
2565
- border-radius: var(--bs-border-radius);
2566
- }
2567
2542
  .form-floating > textarea:focus ~ label::after,
2568
2543
  .form-floating > textarea:not(:placeholder-shown) ~ label::after {
2569
2544
  position: absolute;
@@ -11360,7 +11335,7 @@ footer {
11360
11335
 
11361
11336
  bootstrap/dist/css/bootstrap.min.css:
11362
11337
  (*!
11363
- * Bootstrap v5.3.4 (https://getbootstrap.com/)
11338
+ * Bootstrap v5.3.5 (https://getbootstrap.com/)
11364
11339
  * Copyright 2011-2025 The Bootstrap Authors
11365
11340
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
11366
11341
  *)
@@ -24532,7 +24532,7 @@
24532
24532
  const [configs, setConfigs] = (0, import_react3.useState)();
24533
24533
  (0, import_react3.useEffect)(() => {
24534
24534
  (async () => {
24535
- fetch(`/kokomoBay/testeranto/reports/${window.location.pathname.split("/").pop()}/config.json`).then((response) => response.json()).then((json) => {
24535
+ fetch(`./reports/${window.location.pathname.split("/").pop()}/config.json`).then((response) => response.json()).then((json) => {
24536
24536
  setConfigs(json);
24537
24537
  }).catch((error) => console.error(error));
24538
24538
  })();
@@ -24540,7 +24540,7 @@
24540
24540
  const [bigBoard, setBigBoard] = (0, import_react3.useState)({});
24541
24541
  (0, import_react3.useEffect)(() => {
24542
24542
  (async () => {
24543
- fetch("/kokomoBay/docs/summary.json").then((response) => response.json()).then((json) => {
24543
+ fetch("./docs/summary.json").then((response) => response.json()).then((json) => {
24544
24544
  setBigBoard(json);
24545
24545
  }).catch((error) => console.error(error));
24546
24546
  })();
@@ -24571,7 +24571,7 @@
24571
24571
  import_client.default.createRoot(elem).render(import_react3.default.createElement(BigBoard, {}, []));
24572
24572
  }
24573
24573
  });
24574
- console.log("hello BigBoard!");
24574
+ console.log("hello ReportClient!");
24575
24575
  })();
24576
24576
  /*! Bundled license information:
24577
24577
 
@@ -4,8 +4,7 @@ import { createRequire } from 'module';const require = createRequire(import.meta
4
4
  import staticServer from "node-static";
5
5
  import http from "http";
6
6
  var main = async () => {
7
- process.chdir("../");
8
- const fileServer = new staticServer.Server(".", {});
7
+ const fileServer = new staticServer.Server("./testeranto", {});
9
8
  http.createServer(function(request, response) {
10
9
  request.addListener("end", function() {
11
10
  fileServer.serve(request, response);
@@ -2030,10 +2030,6 @@ progress {
2030
2030
  display: block;
2031
2031
  padding: 0;
2032
2032
  }
2033
- .form-control::-moz-placeholder {
2034
- color: var(--bs-secondary-color);
2035
- opacity: 1;
2036
- }
2037
2033
  .form-control::placeholder {
2038
2034
  color: var(--bs-secondary-color);
2039
2035
  opacity: 1;
@@ -2513,19 +2509,10 @@ textarea.form-control-lg {
2513
2509
  .form-floating > .form-control-plaintext {
2514
2510
  padding: 1rem .75rem;
2515
2511
  }
2516
- .form-floating > .form-control-plaintext::-moz-placeholder,
2517
- .form-floating > .form-control::-moz-placeholder {
2518
- color: transparent;
2519
- }
2520
2512
  .form-floating > .form-control-plaintext::placeholder,
2521
2513
  .form-floating > .form-control::placeholder {
2522
2514
  color: transparent;
2523
2515
  }
2524
- .form-floating > .form-control-plaintext:not(:-moz-placeholder),
2525
- .form-floating > .form-control:not(:-moz-placeholder) {
2526
- padding-top: 1.625rem;
2527
- padding-bottom: .625rem;
2528
- }
2529
2516
  .form-floating > .form-control-plaintext:focus,
2530
2517
  .form-floating > .form-control-plaintext:not(:placeholder-shown),
2531
2518
  .form-floating > .form-control:focus,
@@ -2543,9 +2530,6 @@ textarea.form-control-lg {
2543
2530
  padding-bottom: .625rem;
2544
2531
  padding-left: .75rem;
2545
2532
  }
2546
- .form-floating > .form-control:not(:-moz-placeholder) ~ label {
2547
- transform: scale(.85) translateY(-.5rem) translateX(.15rem);
2548
- }
2549
2533
  .form-floating > .form-control-plaintext ~ label,
2550
2534
  .form-floating > .form-control:focus ~ label,
2551
2535
  .form-floating > .form-control:not(:placeholder-shown) ~ label,
@@ -2555,15 +2539,6 @@ textarea.form-control-lg {
2555
2539
  .form-floating > .form-control:-webkit-autofill ~ label {
2556
2540
  transform: scale(.85) translateY(-.5rem) translateX(.15rem);
2557
2541
  }
2558
- .form-floating > textarea:not(:-moz-placeholder) ~ label::after {
2559
- position: absolute;
2560
- inset: 1rem 0.375rem;
2561
- z-index: -1;
2562
- height: 1.5em;
2563
- content: "";
2564
- background-color: var(--bs-body-bg);
2565
- border-radius: var(--bs-border-radius);
2566
- }
2567
2542
  .form-floating > textarea:focus ~ label::after,
2568
2543
  .form-floating > textarea:not(:placeholder-shown) ~ label::after {
2569
2544
  position: absolute;
@@ -11360,7 +11335,7 @@ footer {
11360
11335
 
11361
11336
  bootstrap/dist/css/bootstrap.min.css:
11362
11337
  (*!
11363
- * Bootstrap v5.3.4 (https://getbootstrap.com/)
11338
+ * Bootstrap v5.3.5 (https://getbootstrap.com/)
11364
11339
  * Copyright 2011-2025 The Bootstrap Authors
11365
11340
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
11366
11341
  *)
@@ -306,6 +306,7 @@ if (mode !== "once" && mode !== "dev") {
306
306
  }
307
307
  console.log("testeranto is building", testName, mode);
308
308
  import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
309
+ const pckge = (await import(`${process.cwd()}/package.json`)).default;
309
310
  const bigConfig = module.default;
310
311
  const project = bigConfig.projects[testName];
311
312
  if (!project) {
@@ -389,12 +390,12 @@ import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
389
390
  <head>
390
391
  <meta name="description" content="Webpage description goes here" />
391
392
  <meta charset="utf-8" />
392
- <title>kokomoBay - testeranto</title>
393
+ <title>${pckge.name} - testeranto</title>
393
394
  <meta name="viewport" content="width=device-width, initial-scale=1" />
394
395
  <meta name="author" content="" />
395
396
 
396
- <link rel="stylesheet" href="/kokomoBay/testeranto/ReportClient.css" />
397
- <script type="module" src="/kokomoBay/testeranto/ReportClient.js"></script>
397
+ <link rel="stylesheet" href="../ReportClient.css" />
398
+ <script type="module" src="../ReportClient.js"></script>
398
399
 
399
400
  </head>
400
401
 
@@ -420,7 +421,7 @@ import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
420
421
  <head>
421
422
  <meta name="description" content="Webpage description goes here" />
422
423
  <meta charset="utf-8" />
423
- <title>kokomoBay - testeranto</title>
424
+ <title>${pckge.name} - testeranto</title>
424
425
  <meta name="viewport" content="width=device-width, initial-scale=1" />
425
426
  <meta name="author" content="" />
426
427
 
@@ -428,8 +429,8 @@ import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
428
429
  ${JSON.stringify(Object.keys(bigConfig.projects))}
429
430
  </script>
430
431
 
431
- <link rel="stylesheet" href="/kokomoBay/testeranto/Project.css" />
432
- <script type="module" src="/kokomoBay/testeranto/Project.js"></script>
432
+ <link rel="stylesheet" href="Project.css" />
433
+ <script type="module" src="Project.js"></script>
433
434
 
434
435
  </head>
435
436
 
@@ -456,7 +457,7 @@ import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
456
457
  );
457
458
  const jsfilePath = `./${sourceFileNameMinusJs}.mjs`;
458
459
  return fs2.promises.mkdir(path4.dirname(htmlFilePath), { recursive: true }).then(
459
- (x) => fs2.writeFileSync(
460
+ (x2) => fs2.writeFileSync(
460
461
  htmlFilePath,
461
462
  web_html_default(jsfilePath, htmlFilePath)
462
463
  )
@@ -464,6 +465,40 @@ import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
464
465
  })
465
466
  )
466
467
  );
468
+ const x = [
469
+ ["pure", Object.keys(importEntryPoints)],
470
+ ["node", Object.keys(nodeEntryPoints)],
471
+ ["web", Object.keys(webEntryPoints)]
472
+ ];
473
+ x.forEach(async ([runtime, keys]) => {
474
+ keys.forEach(async (k) => {
475
+ const folder = `testeranto/reports/${testName}/${k.split(".").slice(0, -1).join(".")}/${runtime}`;
476
+ await fs2.mkdirSync(folder, { recursive: true });
477
+ fs2.writeFileSync(
478
+ `${folder}/index.html`,
479
+ `
480
+ <!DOCTYPE html>
481
+ <html lang="en">
482
+
483
+ <head>
484
+ <meta name="description" content="Webpage description goes here" />
485
+ <meta charset="utf-8" />
486
+ <title>${testName} - testeranto</title>
487
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
488
+ <meta name="author" content="" />
489
+
490
+ <link rel="stylesheet" href="../../../../../TestReport.css" />
491
+ <script src="../../../../../TestReport.js"></script>
492
+
493
+ </head>
494
+
495
+ <body>
496
+ <div id="root"/>
497
+ </body>
498
+ `
499
+ );
500
+ });
501
+ });
467
502
  await Promise.all([
468
503
  ...[
469
504
  [pure_default, importEntryPoints, onImportDone],
@@ -199,7 +199,13 @@ var PM_Base = class {
199
199
  });
200
200
  }
201
201
  async createWriteStream(filepath, testName2) {
202
+ const folder = filepath.split("/").slice(0, -1).join("/");
202
203
  return new Promise((res) => {
204
+ if (!fs.existsSync(folder)) {
205
+ return fs.mkdirSync(folder, {
206
+ recursive: true
207
+ });
208
+ }
203
209
  const f = fs.createWriteStream(filepath);
204
210
  fileStreams3.push(f);
205
211
  if (!files[testName2]) {
@@ -332,7 +338,9 @@ async function fileHash(filePath, algorithm = "md5") {
332
338
  }
333
339
  var statusMessagePretty = (failures, test) => {
334
340
  if (failures === 0) {
335
- console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
341
+ console.log(
342
+ ansiC.green(ansiC.inverse(`> ${test} completed successfully?!?`))
343
+ );
336
344
  } else {
337
345
  console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
338
346
  }
@@ -396,7 +404,6 @@ var PM_Main = class extends PM_Base {
396
404
  configFilePath: "tsconfig.json",
397
405
  // config to inherit from (optional)
398
406
  compilerOptions: {
399
- rootDir: "src",
400
407
  outDir: tscPather(entrypoint, platform, this.name),
401
408
  // declaration: true,
402
409
  // skipLibCheck: true,
@@ -608,20 +615,46 @@ ${addableFiles.map((x) => {
608
615
  }
609
616
  const builtfile = dest;
610
617
  const webSideCares = [];
611
- await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
612
- return module.default.then((defaultModule) => {
613
- defaultModule.receiveTestResourceConfig(argz).then(async (results) => {
614
- this.receiveFeatures(results.features, destFolder, src, "pure");
615
- statusMessagePretty(results.fails, src);
616
- this.bddTestIsNowDone(src, results.fails);
618
+ try {
619
+ await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
620
+ return module.default.then((defaultModule) => {
621
+ defaultModule.receiveTestResourceConfig(argz).then(async (results) => {
622
+ this.receiveFeatures(results.features, destFolder, src, "pure");
623
+ statusMessagePretty(results.fails, src);
624
+ this.bddTestIsNowDone(src, results.fails);
625
+ }).catch((e) => {
626
+ console.log(
627
+ ansiC.red(ansiC.inverse(`${src} errored with: ${e}`))
628
+ );
629
+ this.bddTestIsNowDone(src, -1);
630
+ }).finally(() => {
631
+ webSideCares.forEach((webSideCar) => webSideCar.close());
632
+ });
617
633
  }).catch((e) => {
618
- console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
634
+ console.log(
635
+ ansiC.red(
636
+ ansiC.inverse(
637
+ `${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`
638
+ )
639
+ )
640
+ );
641
+ this.writeFileSync(`${reportDest}/error.txt`, e.stack, src);
619
642
  this.bddTestIsNowDone(src, -1);
620
- }).finally(() => {
621
- webSideCares.forEach((webSideCar) => webSideCar.close());
643
+ statusMessagePretty(-1, src);
622
644
  });
623
645
  });
624
- });
646
+ } catch (e) {
647
+ console.log(
648
+ ansiC.red(
649
+ ansiC.inverse(
650
+ `${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`
651
+ )
652
+ )
653
+ );
654
+ this.writeFileSync(`${reportDest}/error.txt`, e.stack, src);
655
+ this.bddTestIsNowDone(src, -1);
656
+ statusMessagePretty(-1, src);
657
+ }
625
658
  for (let i = 0; i <= portsToUse.length; i++) {
626
659
  if (portsToUse[i]) {
627
660
  this.ports[portsToUse[i]] = "true";
@@ -641,7 +674,9 @@ ${addableFiles.map((x) => {
641
674
  return t[0] === src;
642
675
  });
643
676
  if (!testConfig) {
644
- console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
677
+ console.log(
678
+ ansiC.inverse(`missing test config! Exiting ungracefully for '${src}'`)
679
+ );
645
680
  process.exit(-1);
646
681
  }
647
682
  const testConfigResource = testConfig[2];
@@ -715,11 +750,19 @@ ${addableFiles.map((x) => {
715
750
  });
716
751
  });
717
752
  const oStream = fs2.createWriteStream(`${reportDest}/console_log.txt`);
718
- const child = spawn("node", [builtfile, testResources], {
719
- stdio: ["pipe", "pipe", "pipe", "ipc"]
720
- // silent: true
721
- });
722
- const p = destFolder + "/pipe";
753
+ const child = spawn(
754
+ "node",
755
+ [builtfile, testResources, "--trace-warnings"],
756
+ {
757
+ stdio: ["pipe", "pipe", "pipe", "ipc"]
758
+ // silent: true
759
+ }
760
+ );
761
+ const p = destFolder + "/tpipe";
762
+ const errFile = `${reportDest}/error.txt`;
763
+ if (fs2.existsSync(errFile)) {
764
+ fs2.rmSync(errFile);
765
+ }
723
766
  server.listen(p, () => {
724
767
  child.stderr?.on("data", (data) => {
725
768
  oStream.write(`stderr data ${data}`);
@@ -728,6 +771,11 @@ ${addableFiles.map((x) => {
728
771
  oStream.write(`stdout data ${data}`);
729
772
  });
730
773
  child.on("close", (code) => {
774
+ console.log("close");
775
+ console.log("deleting", p);
776
+ if (fs2.existsSync(p)) {
777
+ fs2.rmSync(p);
778
+ }
731
779
  oStream.close();
732
780
  server.close();
733
781
  if (code === null) {
@@ -740,8 +788,33 @@ ${addableFiles.map((x) => {
740
788
  this.bddTestIsNowDone(src, code);
741
789
  statusMessagePretty(code, src);
742
790
  }
791
+ haltReturns = true;
743
792
  });
744
793
  child.on("exit", (code) => {
794
+ console.log("exit");
795
+ console.log("deleting", p);
796
+ if (fs2.existsSync(p)) {
797
+ fs2.rmSync(p);
798
+ }
799
+ haltReturns = true;
800
+ });
801
+ child.on("error", (e) => {
802
+ console.log("error");
803
+ console.log("deleting", p);
804
+ if (fs2.existsSync(p)) {
805
+ fs2.rmSync(p);
806
+ }
807
+ haltReturns = true;
808
+ console.log(
809
+ ansiC.red(
810
+ ansiC.inverse(
811
+ `${src} errored with: ${e.name}. Check ${errFile}for more info`
812
+ )
813
+ )
814
+ );
815
+ this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
816
+ this.bddTestIsNowDone(src, -1);
817
+ statusMessagePretty(-1, src);
745
818
  });
746
819
  });
747
820
  child.send({ path: p });
@@ -1166,7 +1239,9 @@ ${addableFiles.map((x) => {
1166
1239
  const hash = await fileHash(outputFile);
1167
1240
  if (fileHashes[k] !== hash) {
1168
1241
  fileHashes[k] = hash;
1169
- console.log(ansiC.green(ansiC.inverse(`< ${e} ${filename}`)));
1242
+ console.log(
1243
+ ansiC.yellow(ansiC.inverse(`< ${e} ${filename}`))
1244
+ );
1170
1245
  launcher(k, outputFile);
1171
1246
  }
1172
1247
  });
@@ -1179,7 +1254,7 @@ ${addableFiles.map((x) => {
1179
1254
  watcher(
1180
1255
  watch(metafile, async (e, filename) => {
1181
1256
  console.log(
1182
- ansiC.green(ansiC.inverse(`< ${e} ${filename} (${runtime})`))
1257
+ ansiC.yellow(ansiC.inverse(`< ${e} ${filename} (${runtime})`))
1183
1258
  );
1184
1259
  this.metafileOutputs(runtime);
1185
1260
  })