testeranto 0.171.0 → 0.173.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 (195) hide show
  1. package/README.md +2 -4
  2. package/dist/common/src/PM/base.js +4 -0
  3. package/dist/common/src/PM/main.js +11 -4
  4. package/dist/common/src/PM/node.js +1 -1
  5. package/dist/common/src/PM/web.js +3 -3
  6. package/dist/common/src/ReportServer.js +2 -126
  7. package/dist/common/src/ReportServer.test.ts/index.js +78 -0
  8. package/dist/common/src/ReportServerLib.js +135 -0
  9. package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +1 -1
  10. package/dist/common/src/lib/abstractBase.js +2 -0
  11. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +10 -9
  12. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +7 -7
  13. package/dist/common/src/lib/basebuilder.js +8 -2
  14. package/dist/common/src/lib/pmProxy.js +54 -150
  15. package/dist/common/testeranto.config.js +35 -20
  16. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  17. package/dist/module/src/PM/base.js +4 -0
  18. package/dist/module/src/PM/main.js +11 -4
  19. package/dist/module/src/PM/node.js +1 -1
  20. package/dist/module/src/PM/web.js +3 -3
  21. package/dist/module/src/ReportServer.js +2 -123
  22. package/dist/module/src/ReportServer.test.ts/index.js +73 -0
  23. package/dist/module/src/ReportServerLib.js +128 -0
  24. package/dist/module/src/TestPage.js +29 -17
  25. package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +1 -1
  26. package/dist/module/src/components/pure/TestPageView.js +29 -17
  27. package/dist/module/src/lib/abstractBase.js +2 -0
  28. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +10 -9
  29. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +7 -7
  30. package/dist/module/src/lib/basebuilder.js +8 -2
  31. package/dist/module/src/lib/pmProxy.js +54 -150
  32. package/dist/module/testeranto.config.js +35 -20
  33. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  34. package/dist/prebuild/App.css +13 -9
  35. package/dist/prebuild/App.js +102 -99
  36. package/dist/prebuild/ReportServer.mjs +15 -9
  37. package/dist/prebuild/run.mjs +14 -4
  38. package/dist/types/src/PM/node.d.ts +1 -1
  39. package/dist/types/src/PM/web.d.ts +1 -1
  40. package/dist/types/src/ReportServer.test.ts/index.d.ts +29 -0
  41. package/dist/types/src/ReportServerLib.d.ts +2 -0
  42. package/dist/types/src/Types.d.ts +0 -1
  43. package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +1 -1
  44. package/dist/types/src/lib/abstractBase.d.ts +1 -1
  45. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +7 -4
  46. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  47. package/package.json +6 -5
  48. package/src/PM/base.ts +5 -0
  49. package/src/PM/main.ts +12 -4
  50. package/src/PM/node.ts +1 -1
  51. package/src/PM/web.ts +3 -3
  52. package/src/ReportServer.test.ts/index.ts +194 -0
  53. package/src/ReportServer.ts +2 -132
  54. package/src/ReportServerLib.ts +144 -0
  55. package/src/TestPage.tsx +65 -5
  56. package/src/Types.ts +0 -1
  57. package/src/components/pure/ProjectPageView.test/implementation.tsx +1 -1
  58. package/src/components/pure/TestPageView.tsx +65 -5
  59. package/src/lib/abstractBase.ts +4 -1
  60. package/src/lib/baseBuilder.test/baseBuilder.test.implementation.ts +22 -10
  61. package/src/lib/baseBuilder.test/baseBuilder.test.specification.ts +9 -9
  62. package/src/lib/baseBuilder.test/baseBuilder.test.types.ts +7 -4
  63. package/src/lib/basebuilder.ts +7 -4
  64. package/src/lib/pmProxy.ts +78 -155
  65. package/testeranto/App.css +13 -9
  66. package/testeranto/App.js +102 -99
  67. package/testeranto/bundles/node/allTests/metafile.json +38 -781
  68. package/testeranto/bundles/node/allTests/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +983 -24
  69. package/testeranto/bundles/node/core/metafile.json +486 -0
  70. package/testeranto/bundles/{pure/allTests/chunk-VMUSFSZM.mjs → node/core/src/lib/baseBuilder.test/baseBuilder.test.node.mjs} +797 -412
  71. package/testeranto/bundles/node/staticSite/metafile.json +593 -0
  72. package/testeranto/bundles/node/staticSite/src/ReportServer.test.ts/index.mjs +1594 -0
  73. package/testeranto/bundles/pure/allTests/metafile.json +157 -585
  74. package/testeranto/bundles/pure/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +740 -27
  75. package/testeranto/bundles/pure/core/metafile.json +626 -0
  76. package/testeranto/bundles/{web/allTests/chunk-U7AW26HL.mjs → pure/core/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs} +507 -410
  77. package/testeranto/bundles/pure/staticSite/metafile.json +8 -0
  78. package/testeranto/bundles/web/allTests/metafile.json +107 -15292
  79. package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs +893 -45
  80. package/testeranto/bundles/web/core/metafile.json +780 -0
  81. package/testeranto/bundles/web/core/src/lib/baseBuilder.test/baseBuilder.test.web.html +19 -0
  82. package/testeranto/bundles/web/{allTests/chunk-RLDR6LJN.mjs → core/src/lib/baseBuilder.test/baseBuilder.test.web.mjs} +580 -518
  83. package/testeranto/bundles/web/staticSite/metafile.json +8 -0
  84. package/testeranto/projects.json +2 -1
  85. package/testeranto/reports/allTests/config.json +0 -64
  86. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +2 -0
  87. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/logs.txt +11 -13
  88. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +10 -0
  89. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
  90. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +10 -18
  91. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +25 -13
  92. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +2 -0
  93. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +8 -0
  94. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +24 -12
  95. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +2 -0
  96. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +49 -55
  97. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +12 -2
  98. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
  99. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +10 -18
  100. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +24 -12
  101. package/testeranto/reports/allTests/summary.json +6 -62
  102. package/testeranto/reports/core/config.json +24 -0
  103. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +2 -0
  104. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/logs.txt +32 -0
  105. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/message.txt +2 -0
  106. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +26 -0
  107. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
  108. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +69 -0
  109. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +74 -0
  110. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +2 -0
  111. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message.txt +2 -0
  112. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +26 -0
  113. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +74 -0
  114. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +2 -0
  115. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +61 -0
  116. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/message.txt +2 -0
  117. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +26 -0
  118. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
  119. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +69 -0
  120. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +74 -0
  121. package/testeranto/reports/core/summary.json +23 -0
  122. package/testeranto/reports/staticSite/config.json +24 -0
  123. package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/lint_errors.txt +5 -0
  124. package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/logs.txt +44 -0
  125. package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/message.txt +2 -0
  126. package/testeranto/reports/staticSite/src/ReportServer.test.ts/index/node/prompt.txt +23 -0
  127. package/testeranto/reports/{allTests/src/lib/core.test/core.test → staticSite/src/ReportServer.test.ts/index}/node/type_errors.txt +21 -32
  128. package/testeranto/reports/staticSite/summary.json +9 -0
  129. package/testeranto/reportsnode_build_errors +17 -0
  130. package/testeranto.config.ts +37 -20
  131. package/testeranto/bundles/node/allTests/chunk-3EUGBAOM.mjs +0 -113
  132. package/testeranto/bundles/node/allTests/chunk-E75CSRER.mjs +0 -800
  133. package/testeranto/bundles/node/allTests/chunk-M6DO7VMB.mjs +0 -252
  134. package/testeranto/bundles/node/allTests/src/lib/BaseSuite.test/node.test.mjs +0 -323
  135. package/testeranto/bundles/node/allTests/src/lib/classBuilder.test/classBuilder.test.mjs +0 -411
  136. package/testeranto/bundles/node/allTests/src/lib/core.test/core.test.mjs +0 -528
  137. package/testeranto/bundles/node/allTests/src/lib/pmProxy.test/index.mjs +0 -4650
  138. package/testeranto/bundles/pure/allTests/chunk-KHDVEHF7.mjs +0 -185
  139. package/testeranto/bundles/pure/allTests/src/Pure.test.mjs +0 -429
  140. package/testeranto/bundles/pure/allTests/src/lib/BaseSuite.test/pure.test.mjs +0 -425
  141. package/testeranto/bundles/web/allTests/chunk-HPYA4YZC.mjs +0 -2283
  142. package/testeranto/bundles/web/allTests/src/components/pure/ProjectPageView.test/index.html +0 -19
  143. package/testeranto/bundles/web/allTests/src/components/pure/ProjectPageView.test/index.mjs +0 -37524
  144. package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.html +0 -19
  145. package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.mjs +0 -440
  146. package/testeranto/reports/allTests/src/Pure.test/pure/lint_errors.txt +0 -0
  147. package/testeranto/reports/allTests/src/Pure.test/pure/message.txt +0 -2
  148. package/testeranto/reports/allTests/src/Pure.test/pure/prompt.txt +0 -13
  149. package/testeranto/reports/allTests/src/Pure.test/pure/type_errors.txt +0 -101
  150. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +0 -13
  151. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/logs.txt +0 -50
  152. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/message.txt +0 -2
  153. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/prompt.txt +0 -17
  154. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/tests.json +0 -32
  155. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +0 -68
  156. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -0
  157. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/logs.txt +0 -52
  158. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/message.txt +0 -2
  159. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -13
  160. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/tests.json +0 -31
  161. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/type_errors.txt +0 -111
  162. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/bdd_errors.txt +0 -1
  163. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -0
  164. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/message.txt +0 -2
  165. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -14
  166. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/tests.json +0 -31
  167. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +0 -111
  168. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/bdd_errors.txt +0 -1
  169. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -0
  170. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/logs.txt +0 -108
  171. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/message.txt +0 -2
  172. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -14
  173. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/tests.json +0 -31
  174. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -111
  175. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/bdd_errors.txt +0 -1
  176. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.txt +0 -0
  177. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt +0 -700
  178. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/message.txt +0 -2
  179. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/prompt.txt +0 -16
  180. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/tests.json +0 -164
  181. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/type_errors.txt +0 -138
  182. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/lint_errors.txt +0 -21
  183. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/logs.txt +0 -7
  184. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/message.txt +0 -2
  185. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/prompt.txt +0 -18
  186. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/bdd_errors.txt +0 -1
  187. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/lint_errors.txt +0 -20
  188. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +0 -31
  189. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/message.txt +0 -2
  190. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/prompt.txt +0 -16
  191. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/tests.json +0 -134
  192. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/type_errors.txt +0 -76
  193. package/testeranto/reportsweb_build_errors +0 -25
  194. /package/testeranto/reports/{allTests/src/components/pure/ProjectPageView.test/index/web → core/src/lib/baseBuilder.test/baseBuilder.test.node/node}/bdd_errors.txt +0 -0
  195. /package/testeranto/reports/{allTests/src/lib/BaseSuite.test/node.test/node → core/src/lib/baseBuilder.test/baseBuilder.test.web/web}/bdd_errors.txt +0 -0
package/src/TestPage.tsx CHANGED
@@ -254,7 +254,27 @@ export const TestPage = () => {
254
254
  <div key={i} className="mb-4 card">
255
255
  <div className="card-header bg-primary text-white">
256
256
  <div className="d-flex justify-content-between align-items-center">
257
- <h4>Given: {given.name}</h4>
257
+ <div>
258
+ <h4>Given: {given.name}</h4>
259
+ {given.features?.length > 0 && (
260
+ <div className="mt-1">
261
+ <small>Features:</small>
262
+ <ul className="list-unstyled">
263
+ {given.features.map((feature, fi) => (
264
+ <li key={fi}>
265
+ {feature.startsWith('http') ? (
266
+ <a href={feature} target="_blank" rel="noopener noreferrer" className="text-white">
267
+ {new URL(feature).hostname}
268
+ </a>
269
+ ) : (
270
+ <span className="text-white">{feature}</span>
271
+ )}
272
+ </li>
273
+ ))}
274
+ </ul>
275
+ </div>
276
+ )}
277
+ </div>
258
278
  {given.artifacts?.length > 0 && (
259
279
  <div className="dropdown">
260
280
  <button
@@ -287,8 +307,28 @@ export const TestPage = () => {
287
307
  <div key={`w-${j}`} className={`p-3 mb-2 ${when.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
288
308
  <div className="d-flex justify-content-between align-items-start">
289
309
  <div>
290
- <strong>When:</strong> {when.name}
291
- {when.error && <pre className="mt-2">{when.error}</pre>}
310
+ <div>
311
+ <strong>When:</strong> {when.name}
312
+ {when.features?.length > 0 && (
313
+ <div className="mt-2">
314
+ <small>Features:</small>
315
+ <ul className="list-unstyled">
316
+ {when.features.map((feature, fi) => (
317
+ <li key={fi}>
318
+ {feature.startsWith('http') ? (
319
+ <a href={feature} target="_blank" rel="noopener noreferrer">
320
+ {new URL(feature).hostname}
321
+ </a>
322
+ ) : (
323
+ feature
324
+ )}
325
+ </li>
326
+ ))}
327
+ </ul>
328
+ </div>
329
+ )}
330
+ {when.error && <pre className="mt-2">{when.error}</pre>}
331
+ </div>
292
332
  </div>
293
333
  {when.artifacts?.length > 0 && (
294
334
  <div className="ms-3">
@@ -316,8 +356,28 @@ export const TestPage = () => {
316
356
  <div key={`t-${k}`} className={`p-3 mb-2 ${then.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
317
357
  <div className="d-flex justify-content-between align-items-start">
318
358
  <div>
319
- <strong>Then:</strong> {then.name}
320
- {then.error && <pre className="mt-2">{then.error}</pre>}
359
+ <div>
360
+ <strong>Then:</strong> {then.name}
361
+ {then.features?.length > 0 && (
362
+ <div className="mt-2">
363
+ <small>Features:</small>
364
+ <ul className="list-unstyled">
365
+ {then.features.map((feature, fi) => (
366
+ <li key={fi}>
367
+ {feature.startsWith('http') ? (
368
+ <a href={feature} target="_blank" rel="noopener noreferrer">
369
+ {new URL(feature).hostname}
370
+ </a>
371
+ ) : (
372
+ feature
373
+ )}
374
+ </li>
375
+ ))}
376
+ </ul>
377
+ </div>
378
+ )}
379
+ {then.error && <pre className="mt-2">{then.error}</pre>}
380
+ </div>
321
381
  </div>
322
382
  {then.artifacts?.length > 0 && (
323
383
  <div className="ms-3">
package/src/Types.ts CHANGED
@@ -197,5 +197,4 @@ export type IBuiltConfig = { buildDir: string } & ITestconfig;
197
197
 
198
198
  export type IProject = {
199
199
  projects: Record<string, ITestconfig>;
200
- reportDomain: string;
201
200
  };
@@ -44,7 +44,7 @@ export const implementation: ITestImplementation<I, O, M> = {
44
44
  () =>
45
45
  async ({ container, html }, pm) => {
46
46
  console.group('[Test] Verifying render output');
47
- debugger
47
+ // debugger
48
48
  const p = await pm.page();
49
49
  await pm.customScreenShot({ path: "happyPath.png" }, p);
50
50
 
@@ -125,7 +125,27 @@ export const TestPageView = ({
125
125
  <div key={i} className="mb-4 card">
126
126
  <div className="card-header bg-primary text-white">
127
127
  <div className="d-flex justify-content-between align-items-center">
128
- <h4>Given: {given.name}</h4>
128
+ <div>
129
+ <h4>Given: {given.name}</h4>
130
+ {given.features?.length > 0 && (
131
+ <div className="mt-1">
132
+ <small>Features:</small>
133
+ <ul className="list-unstyled">
134
+ {given.features.map((feature, fi) => (
135
+ <li key={fi}>
136
+ {feature.startsWith('http') ? (
137
+ <a href={feature} target="_blank" rel="noopener noreferrer" className="text-white">
138
+ {new URL(feature).hostname}
139
+ </a>
140
+ ) : (
141
+ <span className="text-white">{feature}</span>
142
+ )}
143
+ </li>
144
+ ))}
145
+ </ul>
146
+ </div>
147
+ )}
148
+ </div>
129
149
  {given.artifacts?.length > 0 && (
130
150
  <div className="dropdown">
131
151
  <button
@@ -158,8 +178,28 @@ export const TestPageView = ({
158
178
  <div key={`w-${j}`} className={`p-3 mb-2 ${when.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
159
179
  <div className="d-flex justify-content-between align-items-start">
160
180
  <div>
161
- <strong>When:</strong> {when.name}
162
- {when.error && <pre className="mt-2">{when.error}</pre>}
181
+ <div>
182
+ <strong>When:</strong> {when.name}
183
+ {when.features?.length > 0 && (
184
+ <div className="mt-2">
185
+ <small>Features:</small>
186
+ <ul className="list-unstyled">
187
+ {when.features.map((feature, fi) => (
188
+ <li key={fi}>
189
+ {feature.startsWith('http') ? (
190
+ <a href={feature} target="_blank" rel="noopener noreferrer">
191
+ {new URL(feature).hostname}
192
+ </a>
193
+ ) : (
194
+ feature
195
+ )}
196
+ </li>
197
+ ))}
198
+ </ul>
199
+ </div>
200
+ )}
201
+ {when.error && <pre className="mt-2">{when.error}</pre>}
202
+ </div>
163
203
  </div>
164
204
  {when.artifacts?.length > 0 && (
165
205
  <div className="ms-3">
@@ -187,8 +227,28 @@ export const TestPageView = ({
187
227
  <div key={`t-${k}`} className={`p-3 mb-2 ${then.error ? 'bg-danger text-white' : 'bg-success text-white'}`}>
188
228
  <div className="d-flex justify-content-between align-items-start">
189
229
  <div>
190
- <strong>Then:</strong> {then.name}
191
- {then.error && <pre className="mt-2">{then.error}</pre>}
230
+ <div>
231
+ <strong>Then:</strong> {then.name}
232
+ {then.features?.length > 0 && (
233
+ <div className="mt-2">
234
+ <small>Features:</small>
235
+ <ul className="list-unstyled">
236
+ {then.features.map((feature, fi) => (
237
+ <li key={fi}>
238
+ {feature.startsWith('http') ? (
239
+ <a href={feature} target="_blank" rel="noopener noreferrer">
240
+ {new URL(feature).hostname}
241
+ </a>
242
+ ) : (
243
+ feature
244
+ )}
245
+ </li>
246
+ ))}
247
+ </ul>
248
+ </div>
249
+ )}
250
+ {then.error && <pre className="mt-2">{then.error}</pre>}
251
+ </div>
192
252
  </div>
193
253
  {then.artifacts?.length > 0 && (
194
254
  <div className="ms-3">
@@ -1,6 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
 
4
+ import type { Ibdd_in_any } from "../CoreTypes";
5
+
4
6
  import { ITestArtifactory, ITLog, ITTestResourceConfiguration } from ".";
5
7
  import { IPM } from "./types.js";
6
8
  import {
@@ -9,7 +11,6 @@ import {
9
11
  beforeEachProxy,
10
12
  butThenProxy,
11
13
  } from "./pmProxy.js";
12
- import type { Ibdd_in_any } from "../CoreTypes";
13
14
 
14
15
  export type IGivens<I extends Ibdd_in_any> = Record<string, BaseGiven<I>>;
15
16
 
@@ -29,6 +30,8 @@ export abstract class BaseGiven<I extends Ibdd_in_any> {
29
30
  artifacts: string[] = [];
30
31
  protected addArtifact(path: string) {
31
32
  console.log(`[Artifact] Adding to ${this.constructor.name}:`, path);
33
+ // console.log("mark111");
34
+ // process.exit();
32
35
  this.artifacts.push(path);
33
36
  }
34
37
 
@@ -4,7 +4,7 @@ import { ITestImplementation } from "../../CoreTypes";
4
4
  import { MockBaseBuilder } from "./baseBuilder.test.mock";
5
5
 
6
6
  import { I, O } from "./baseBuilder.test.types";
7
- import { ITTestResourceRequest } from "..";
7
+ import { ITestJob, ITTestResourceRequest } from "..";
8
8
  import { BaseBuilder } from "../basebuilder";
9
9
 
10
10
  // Define our test subject type
@@ -16,7 +16,7 @@ export const implementation: ITestImplementation<I, O, {}> = {
16
16
  },
17
17
 
18
18
  givens: {
19
- Default: () => {
19
+ "the default BaseBuilder": () => {
20
20
  return new MockBaseBuilder(
21
21
  {}, // input
22
22
  {}, // suitesOverrides
@@ -27,11 +27,21 @@ export const implementation: ITestImplementation<I, O, {}> = {
27
27
  () => [] // testSpecification
28
28
  );
29
29
  },
30
- WithCustomInput: (input: any) => {
31
- return new MockBaseBuilder(input, {}, {}, {}, {}, {}, { ports: [] });
30
+ "a BaseBuilder with TestInput": (input: any) => {
31
+ return new MockBaseBuilder(
32
+ input,
33
+ {},
34
+ {},
35
+ {},
36
+ {},
37
+ { ports: [] },
38
+ () => []
39
+ );
32
40
  },
33
- WithResourceRequirements: (requirements: ITTestResourceRequest) => {
34
- return new MockBaseBuilder({}, {}, {}, {}, {}, {}, requirements);
41
+ "a BaseBuilder with Test Resource Requirements": (
42
+ requirements: ITTestResourceRequest
43
+ ) => {
44
+ return new MockBaseBuilder({}, {}, {}, {}, {}, requirements, () => []);
35
45
  },
36
46
  },
37
47
 
@@ -47,7 +57,9 @@ export const implementation: ITestImplementation<I, O, {}> = {
47
57
  },
48
58
 
49
59
  thens: {
50
- initializedProperly: () => (builder: TestSubject) => {
60
+ "it is initialized": () => (builder, utils) => {
61
+ utils.writeFileSync("hello.txt", "world");
62
+
51
63
  if (!(builder instanceof BaseBuilder)) {
52
64
  console.error("Builder instance:", builder);
53
65
  throw new Error(
@@ -72,19 +84,19 @@ export const implementation: ITestImplementation<I, O, {}> = {
72
84
 
73
85
  return builder;
74
86
  },
75
- specsGenerated: () => (builder: TestSubject) => {
87
+ "it generates TestSpecifications": () => (builder: TestSubject) => {
76
88
  if (!Array.isArray(builder.specs)) {
77
89
  throw new Error("Specs were not generated");
78
90
  }
79
91
  return builder;
80
92
  },
81
- jobsCreated: () => (builder: TestSubject) => {
93
+ "it creates jobs": () => (builder: TestSubject) => {
82
94
  if (!Array.isArray(builder.testJobs)) {
83
95
  throw new Error("Test jobs were not created");
84
96
  }
85
97
  return builder;
86
98
  },
87
- artifactsTracked: () => (builder: TestSubject) => {
99
+ "it tracks artifacts": () => (builder: TestSubject) => {
88
100
  if (!Array.isArray(builder.artifacts)) {
89
101
  throw new Error("Artifacts array not initialized");
90
102
  }
@@ -10,25 +10,25 @@ export const specification: ITestSpecification<I, O> = (
10
10
  ) => {
11
11
  return [
12
12
  Suite.Default("Testing BaseBuilder functionality", {
13
- testInitialization: Given.Default(
13
+ testInitialization: Given["the default BaseBuilder"](
14
14
  ["BaseBuilder should initialize correctly"],
15
15
  [],
16
16
  [
17
- Then.initializedProperly(),
18
- Then.artifactsTracked(),
19
- Then.jobsCreated(),
20
- Then.specsGenerated(),
17
+ Then["it is initialized"](),
18
+ Then["it tracks artifacts"](),
19
+ // Then["it creates jobs"](),
20
+ // Then["it generates TestSpecifications"](),
21
21
  ]
22
22
  ),
23
- testSpecsGeneration: Given.Default(
23
+ testSpecsGeneration: Given["the default BaseBuilder"](
24
24
  ["BaseBuilder should generate specs from test specification"],
25
25
  [],
26
- [Then.specsGenerated()]
26
+ [Then["it generates TestSpecifications"]()]
27
27
  ),
28
- testJobsCreation: Given.Default(
28
+ testJobsCreation: Given["the default BaseBuilder"](
29
29
  ["BaseBuilder should create test jobs"],
30
30
  [],
31
- [Then.jobsCreated()]
31
+ [Then["it creates jobs"]()]
32
32
  ),
33
33
  }),
34
34
  ];
@@ -20,14 +20,17 @@ export type O = Ibdd_out<
20
20
  },
21
21
  // Givens
22
22
  {
23
- Default: [];
23
+ "the default BaseBuilder": [];
24
+ "a BaseBuilder with TestInput": [];
25
+ "a BaseBuilder with Test Resource Requirements": [];
24
26
  },
25
27
  // Whens
26
28
  {}, // No whens in these tests
27
29
  // Thens
28
30
  {
29
- initializedProperly: [];
30
- specsGenerated: [];
31
- jobsCreated: [];
31
+ "it is initialized": [];
32
+ "it generates TestSpecifications": [];
33
+ "it creates jobs": [];
34
+ "it tracks artifacts": [];
32
35
  }
33
36
  >;
@@ -122,12 +122,15 @@ export abstract class BaseBuilder<
122
122
 
123
123
  const fails = suiteDone.fails;
124
124
 
125
- await puppetMaster.writeFileSync(`bdd_errors.txt`, fails.toString());
125
+ await puppetMaster.writeFileSync([
126
+ `bdd_errors.txt`,
127
+ fails.toString(),
128
+ ]);
126
129
 
127
- await puppetMaster.writeFileSync(
130
+ await puppetMaster.writeFileSync([
128
131
  `tests.json`,
129
- JSON.stringify(this.toObj(), null, 2)
130
- );
132
+ JSON.stringify(this.toObj(), null, 2),
133
+ ]);
131
134
 
132
135
  return {
133
136
  failed: fails > 0,