testeranto 0.172.0 → 0.177.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 (203) hide show
  1. package/README.md +2 -4
  2. package/dist/common/src/PM/base.js +5 -1
  3. package/dist/common/src/PM/main.js +57 -54
  4. package/dist/common/src/PM/node.js +4 -1
  5. package/dist/common/src/PM/pure.js +4 -1
  6. package/dist/common/src/PM/web.js +6 -3
  7. package/dist/common/src/Pure.js +0 -4
  8. package/dist/common/src/Pure.test.js +1 -1
  9. package/dist/common/src/ReportServer.js +2 -126
  10. package/dist/common/src/ReportServer.test.ts/index.js +78 -0
  11. package/dist/common/src/ReportServerLib.js +141 -0
  12. package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +1 -1
  13. package/dist/common/src/esbuildConfigs/node.js +1 -3
  14. package/dist/common/src/lib/BaseSuite.js +13 -11
  15. package/dist/common/src/lib/abstractBase.js +39 -40
  16. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +10 -9
  17. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +7 -7
  18. package/dist/common/src/lib/basebuilder.js +13 -2
  19. package/dist/common/src/lib/core.js +1 -0
  20. package/dist/common/src/lib/pmProxy.js +215 -201
  21. package/dist/common/src/lib/pmProxy.test/adapter.js +2 -2
  22. package/dist/common/src/lib/pmProxy.test/implementation.js +1 -1
  23. package/dist/common/testeranto.config.js +47 -32
  24. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  25. package/dist/module/src/PM/base.js +5 -1
  26. package/dist/module/src/PM/main.js +22 -19
  27. package/dist/module/src/PM/node.js +4 -1
  28. package/dist/module/src/PM/pure.js +4 -1
  29. package/dist/module/src/PM/web.js +6 -3
  30. package/dist/module/src/Pure.js +0 -4
  31. package/dist/module/src/Pure.test.js +1 -1
  32. package/dist/module/src/ReportServer.js +2 -123
  33. package/dist/module/src/ReportServer.test.ts/index.js +73 -0
  34. package/dist/module/src/ReportServerLib.js +134 -0
  35. package/dist/module/src/TestPage.js +29 -17
  36. package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +1 -1
  37. package/dist/module/src/components/pure/TestPageView.js +29 -17
  38. package/dist/module/src/esbuildConfigs/node.js +1 -3
  39. package/dist/module/src/lib/BaseSuite.js +13 -11
  40. package/dist/module/src/lib/abstractBase.js +39 -40
  41. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +10 -9
  42. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +7 -7
  43. package/dist/module/src/lib/basebuilder.js +13 -2
  44. package/dist/module/src/lib/core.js +1 -0
  45. package/dist/module/src/lib/pmProxy.js +215 -201
  46. package/dist/module/src/lib/pmProxy.test/adapter.js +2 -2
  47. package/dist/module/src/lib/pmProxy.test/implementation.js +1 -1
  48. package/dist/module/testeranto.config.js +47 -32
  49. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  50. package/dist/prebuild/App.js +3 -3
  51. package/dist/prebuild/ReportServer.mjs +21 -9
  52. package/dist/prebuild/build.mjs +1 -1
  53. package/dist/prebuild/run.mjs +27 -20
  54. package/dist/types/src/PM/base.d.ts +1 -1
  55. package/dist/types/src/PM/node.d.ts +1 -1
  56. package/dist/types/src/PM/pure.d.ts +1 -1
  57. package/dist/types/src/PM/web.d.ts +1 -1
  58. package/dist/types/src/ReportServer.test.ts/index.d.ts +29 -0
  59. package/dist/types/src/ReportServerLib.d.ts +1 -0
  60. package/dist/types/src/Types.d.ts +0 -1
  61. package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +2 -1
  62. package/dist/types/src/lib/BaseSuite.d.ts +2 -0
  63. package/dist/types/src/lib/abstractBase.d.ts +5 -7
  64. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +7 -4
  65. package/dist/types/src/lib/pmProxy.d.ts +3 -3
  66. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  67. package/package.json +3 -3
  68. package/src/PM/base.ts +7 -5
  69. package/src/PM/main.ts +26 -21
  70. package/src/PM/node.ts +6 -1
  71. package/src/PM/pure.ts +6 -1
  72. package/src/PM/web.ts +7 -3
  73. package/src/Pure.test.ts +6 -6
  74. package/src/Pure.ts +0 -8
  75. package/src/ReportServer.test.ts/index.ts +194 -0
  76. package/src/ReportServer.ts +2 -132
  77. package/src/ReportServerLib.ts +147 -0
  78. package/src/TestPage.tsx +65 -5
  79. package/src/Types.ts +0 -1
  80. package/src/components/pure/ProjectPageView.test/implementation.tsx +1 -1
  81. package/src/components/pure/TestPageView.tsx +65 -5
  82. package/src/esbuildConfigs/node.ts +1 -1
  83. package/src/lib/BaseSuite.ts +16 -21
  84. package/src/lib/abstractBase.ts +59 -48
  85. package/src/lib/baseBuilder.test/baseBuilder.test.implementation.ts +22 -10
  86. package/src/lib/baseBuilder.test/baseBuilder.test.specification.ts +9 -9
  87. package/src/lib/baseBuilder.test/baseBuilder.test.types.ts +7 -4
  88. package/src/lib/basebuilder.ts +13 -4
  89. package/src/lib/core.ts +1 -0
  90. package/src/lib/pmProxy.test/adapter.ts +2 -2
  91. package/src/lib/pmProxy.test/implementation.ts +3 -3
  92. package/src/lib/pmProxy.test/types.ts +0 -2
  93. package/src/lib/pmProxy.ts +135 -80
  94. package/testeranto/App.js +3 -3
  95. package/testeranto/bundles/node/core/metafile.json +8 -0
  96. package/testeranto/bundles/pure/core/metafile.json +8 -0
  97. package/testeranto/bundles/web/core/metafile.json +15086 -0
  98. package/testeranto/bundles/web/{allTests → core}/src/components/pure/ProjectPageView.test/index.html +1 -1
  99. package/testeranto/bundles/web/{allTests → core}/src/components/pure/ProjectPageView.test/index.mjs +4109 -1642
  100. package/testeranto/projects.json +1 -1
  101. package/testeranto/reports/core/config.json +24 -0
  102. package/testeranto/reports/{allTests → core}/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +6 -1
  103. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/logs.txt +59 -0
  104. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/message.txt +2 -0
  105. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/prompt.txt +27 -0
  106. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/suite-0/given-basicRender/then-0/butThen/happyPath.png +0 -0
  107. package/testeranto/reports/{allTests → core}/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +15 -33
  108. package/testeranto/reports/core/summary.json +9 -0
  109. package/testeranto.config.ts +49 -32
  110. package/tsc.log +78 -92
  111. package/testeranto/bundles/node/allTests/chunk-3EUGBAOM.mjs +0 -113
  112. package/testeranto/bundles/node/allTests/chunk-E75CSRER.mjs +0 -800
  113. package/testeranto/bundles/node/allTests/chunk-M6DO7VMB.mjs +0 -252
  114. package/testeranto/bundles/node/allTests/metafile.json +0 -1229
  115. package/testeranto/bundles/node/allTests/src/lib/BaseSuite.test/node.test.mjs +0 -323
  116. package/testeranto/bundles/node/allTests/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +0 -223
  117. package/testeranto/bundles/node/allTests/src/lib/classBuilder.test/classBuilder.test.mjs +0 -411
  118. package/testeranto/bundles/node/allTests/src/lib/core.test/core.test.mjs +0 -528
  119. package/testeranto/bundles/node/allTests/src/lib/pmProxy.test/index.mjs +0 -4752
  120. package/testeranto/bundles/pure/allTests/chunk-KHDVEHF7.mjs +0 -185
  121. package/testeranto/bundles/pure/allTests/chunk-VMUSFSZM.mjs +0 -797
  122. package/testeranto/bundles/pure/allTests/metafile.json +0 -1054
  123. package/testeranto/bundles/pure/allTests/src/Pure.test.mjs +0 -429
  124. package/testeranto/bundles/pure/allTests/src/lib/BaseSuite.test/pure.test.mjs +0 -425
  125. package/testeranto/bundles/pure/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +0 -381
  126. package/testeranto/bundles/web/allTests/chunk-HPYA4YZC.mjs +0 -2283
  127. package/testeranto/bundles/web/allTests/chunk-U7AW26HL.mjs +0 -997
  128. package/testeranto/bundles/web/allTests/metafile.json +0 -25
  129. package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.html +0 -19
  130. package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.mjs +0 -440
  131. package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.html +0 -19
  132. package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs +0 -244
  133. package/testeranto/reports/allTests/config.json +0 -104
  134. package/testeranto/reports/allTests/src/Pure.test/pure/lint_errors.txt +0 -0
  135. package/testeranto/reports/allTests/src/Pure.test/pure/message.txt +0 -2
  136. package/testeranto/reports/allTests/src/Pure.test/pure/prompt.txt +0 -13
  137. package/testeranto/reports/allTests/src/Pure.test/pure/type_errors.txt +0 -101
  138. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/bdd_errors.txt +0 -1
  139. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/logs.txt +0 -50
  140. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/message.txt +0 -2
  141. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/prompt.txt +0 -17
  142. package/testeranto/reports/allTests/src/components/pure/ProjectPageView.test/index/web/tests.json +0 -32
  143. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/bdd_errors.txt +0 -1
  144. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -0
  145. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/logs.txt +0 -52
  146. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/message.txt +0 -2
  147. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -13
  148. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/tests.json +0 -31
  149. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/type_errors.txt +0 -111
  150. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/bdd_errors.txt +0 -1
  151. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -0
  152. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/message.txt +0 -2
  153. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -14
  154. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/tests.json +0 -31
  155. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +0 -111
  156. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/bdd_errors.txt +0 -1
  157. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -0
  158. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/logs.txt +0 -108
  159. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/message.txt +0 -2
  160. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -14
  161. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/tests.json +0 -31
  162. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -111
  163. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/bdd_errors.txt +0 -1
  164. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +0 -0
  165. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/logs.txt +0 -35
  166. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/message.txt +0 -2
  167. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +0 -16
  168. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +0 -77
  169. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +0 -62
  170. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +0 -0
  171. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message.txt +0 -2
  172. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +0 -18
  173. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +0 -62
  174. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/bdd_errors.txt +0 -1
  175. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +0 -0
  176. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +0 -69
  177. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/message.txt +0 -2
  178. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +0 -16
  179. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +0 -77
  180. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +0 -62
  181. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/bdd_errors.txt +0 -1
  182. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.txt +0 -0
  183. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt +0 -700
  184. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/message.txt +0 -2
  185. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/prompt.txt +0 -16
  186. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/tests.json +0 -164
  187. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/type_errors.txt +0 -138
  188. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/lint_errors.txt +0 -21
  189. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/logs.txt +0 -7
  190. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/message.txt +0 -2
  191. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/prompt.txt +0 -18
  192. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/type_errors.txt +0 -63
  193. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/bdd_errors.txt +0 -1
  194. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/lint_errors.txt +0 -20
  195. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +0 -31
  196. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/message.txt +0 -2
  197. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/prompt.txt +0 -16
  198. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/tests.json +0 -134
  199. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/type_errors.txt +0 -76
  200. package/testeranto/reports/allTests/summary.json +0 -79
  201. package/testeranto/reportsnode_build_errors +0 -20
  202. package/testeranto/reportspure_build_errors +0 -343
  203. package/testeranto/reportsweb_build_errors +0 -25
@@ -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
  >;
@@ -72,6 +72,7 @@ export abstract class BaseBuilder<
72
72
  const suiteRunner =
73
73
  (suite: BaseSuite<I, O>) =>
74
74
  async (puppetMaster: IPM, tLog: ITLog): Promise<BaseSuite<I, O>> => {
75
+ console.log("mark17");
75
76
  const x = await suite.run(
76
77
  input,
77
78
  puppetMaster.testResourceConfiguration,
@@ -85,6 +86,7 @@ export abstract class BaseBuilder<
85
86
  tLog,
86
87
  puppetMaster
87
88
  );
89
+ console.log("mark18");
88
90
 
89
91
  return x;
90
92
  };
@@ -113,7 +115,9 @@ export abstract class BaseBuilder<
113
115
  //
114
116
  };
115
117
 
118
+ console.log("mark14");
116
119
  const suiteDone: BaseSuite<I, O> = await runner(puppetMaster, tLog);
120
+ console.log("mark15");
117
121
 
118
122
  // const logPromise = new Promise(async (res) => {
119
123
  // await puppetMaster.end(access);
@@ -122,12 +126,17 @@ export abstract class BaseBuilder<
122
126
 
123
127
  const fails = suiteDone.fails;
124
128
 
125
- await puppetMaster.writeFileSync(`bdd_errors.txt`, fails.toString());
129
+ await puppetMaster.writeFileSync([
130
+ `bdd_errors.txt`,
131
+ fails.toString(),
132
+ ]);
126
133
 
127
- await puppetMaster.writeFileSync(
134
+ await puppetMaster.writeFileSync([
128
135
  `tests.json`,
129
- JSON.stringify(this.toObj(), null, 2)
130
- );
136
+ JSON.stringify(this.toObj(), null, 2),
137
+ ]);
138
+
139
+ console.log("mark13");
131
140
 
132
141
  return {
133
142
  failed: fails > 0,
package/src/lib/core.ts CHANGED
@@ -90,6 +90,7 @@ export default abstract class TesterantoCore<
90
90
  initialValues,
91
91
  pm
92
92
  ) {
93
+ console.log("mark800");
93
94
  return fullAdapter.beforeEach(
94
95
  subject,
95
96
  initializer,
@@ -22,12 +22,12 @@ export const testAdapter: ITestAdapter<I> = {
22
22
  },
23
23
 
24
24
  andWhen: async (store, whenCB, testResource, pm) => {
25
- const proxiedPM = andWhenProxy(pm, "some/path");
25
+ const proxiedPM = andWhenProxy(pm, "some/path", store);
26
26
  return whenCB(store, proxiedPM);
27
27
  },
28
28
 
29
29
  butThen: async (store, thenCB, testResource, pm) => {
30
- const proxiedPM = butThenProxy(pm, "some/path");
30
+ const proxiedPM = butThenProxy(pm, "some/path", store);
31
31
  return thenCB(store, proxiedPM);
32
32
  },
33
33
 
@@ -20,11 +20,11 @@ export const implementation: ITestImplementation<I, O, M> = {
20
20
  },
21
21
  thens: {
22
22
  theButTheProxyReturns:
23
- (method: IProxiedFunctions, expectedPath: string) =>
24
- (store: { butThenProxy: IProxy }) => {
23
+ (method: string, expectedPath: string) =>
24
+ (store: { pathRewriter: PathRewriter }) => {
25
25
  const mockPm = new MockPMBase() as unknown as IPM;
26
26
  const filepath = "test/path";
27
- const proxiedPm = store.butThenProxy(mockPm, filepath);
27
+ const rewritePath = createPathRewriter(`${filepath}/butThen`);
28
28
 
29
29
  let actualPath: string;
30
30
  let actualContent: any;
@@ -8,8 +8,6 @@ export type I = Ibdd_in<
8
8
  { butThenProxy: IProxy },
9
9
  { proxies: ITestProxies; filepath: string; mockPm: IPM },
10
10
  { butThenProxy: IProxy },
11
- // { butThenProxy: IProxy },
12
-
13
11
  { proxies: ITestProxies; filepath: string; mockPm: IPM },
14
12
  [string, string],
15
13
  (
@@ -8,9 +8,14 @@ export type IProxyBase = (
8
8
  mappings: [string, (...x: any) => any][]
9
9
  ) => IPM;
10
10
 
11
- export type IProxy = (pm: IPM, filepath: string) => IPM;
12
- export type IProxyAfterEach = (pm: IPM, suite: string, given: string) => IPM;
13
- export type IProxyBeforeEach = (pm: IPM, suite: string) => IPM;
11
+ export type IProxy = (pm: IPM, filepath: string, step: any) => IPM;
12
+ export type IProxyAfterEach = (
13
+ pm: IPM,
14
+ suite: string,
15
+ given: string,
16
+ step: any
17
+ ) => IPM;
18
+ export type IProxyBeforeEach = (pm: IPM, suite: string, step: any) => IPM;
14
19
 
15
20
  export type IProxiedFunctions =
16
21
  | "screencast"
@@ -38,18 +43,31 @@ const baseProxy: IProxyBase = function (
38
43
  });
39
44
  };
40
45
 
41
- export const butThenProxy: IProxy = (pm: IPM, filepath: string) => {
46
+ export const butThenProxy: IProxy = (
47
+ pm: IPM,
48
+ filepath: string,
49
+ addArtifact
50
+ ) => {
42
51
  return baseProxy(pm, [
43
52
  [
44
53
  "screencast",
45
54
  (opts, p) => {
46
55
  const path = `${filepath}/butThen/${opts.path}`;
47
- console.log(`[Proxy] Captured artifact path for butThen:`, path);
48
- if ((pm as any).currentStep?.addArtifact) {
49
- (pm as any).currentStep.addArtifact(path);
50
- } else {
51
- console.warn('No currentStep or addArtifact method found');
52
- }
56
+ addArtifact(path);
57
+ // console.log(
58
+ // `[ARTIFACT] Preparing to add to ${step.constructor.name}:`,
59
+ // path
60
+ // );
61
+ // try {
62
+
63
+ // console.log(
64
+ // `[ARTIFACT] Successfully added to ${step.constructor.name}`
65
+ // );
66
+ // console.log(`[ARTIFACT] Current artifacts:`, JSON.stringify(step.artifacts));
67
+ // } catch (e) {
68
+ // console.error(`[ARTIFACT] Failed to add ${path}:`, e);
69
+ // throw e;
70
+ // }
53
71
  return [
54
72
  {
55
73
  ...opts,
@@ -59,32 +77,27 @@ export const butThenProxy: IProxy = (pm: IPM, filepath: string) => {
59
77
  ];
60
78
  },
61
79
  ],
62
-
63
- ["createWriteStream", (fp) => {
64
- const path = `${filepath}/butThen/${fp}`;
65
- console.log(`[Proxy] Captured artifact path for butThen:`, path);
66
- if ((pm as any).currentStep?.addArtifact) {
67
- (pm as any).currentStep.addArtifact(path);
68
- } else {
69
- console.warn('No currentStep or addArtifact method found');
70
- }
71
- return [path];
72
- }],
73
-
80
+ [
81
+ "createWriteStream",
82
+ (fp) => {
83
+ const path = `${filepath}/butThen/${fp}`;
84
+ addArtifact(path);
85
+ return [path];
86
+ },
87
+ ],
74
88
  [
75
89
  "writeFileSync",
76
90
  (fp, contents) => {
77
91
  const path = `${filepath}/butThen/${fp}`;
78
- (pm as any).currentStep?.artifacts?.push(path);
92
+ addArtifact(path);
79
93
  return [path, contents];
80
94
  },
81
95
  ],
82
-
83
96
  [
84
97
  "customScreenShot",
85
98
  (opts, p) => {
86
99
  const path = `${filepath}/butThen/${opts.path}`;
87
- (pm as any).currentStep?.artifacts?.push(path);
100
+ addArtifact(path);
88
101
  return [
89
102
  {
90
103
  ...opts,
@@ -97,13 +110,17 @@ export const butThenProxy: IProxy = (pm: IPM, filepath: string) => {
97
110
  ]);
98
111
  };
99
112
 
100
- export const andWhenProxy: IProxy = (pm: IPM, filepath: string) =>
101
- baseProxy(pm, [
113
+ export const andWhenProxy: IProxy = (
114
+ pm: IPM,
115
+ filepath: string,
116
+ addArtifact
117
+ ) => {
118
+ return baseProxy(pm, [
102
119
  [
103
120
  "screencast",
104
121
  (opts, p) => {
105
122
  const path = `${filepath}/andWhen/${opts.path}`;
106
- (pm as any).currentStep?.artifacts?.push(path);
123
+ addArtifact(path);
107
124
  return [
108
125
  {
109
126
  ...opts,
@@ -114,23 +131,30 @@ export const andWhenProxy: IProxy = (pm: IPM, filepath: string) =>
114
131
  },
115
132
  ],
116
133
 
117
- ["createWriteStream", (fp) => {
118
- const path = `${filepath}/andWhen/${fp}`;
119
- (pm as any).currentStep?.artifacts?.push(path);
120
- return [path];
121
- }],
134
+ [
135
+ "createWriteStream",
136
+ (fp) => {
137
+ const path = `${filepath}/andWhen/${fp}`;
138
+ addArtifact(path);
139
+ return [path];
140
+ },
141
+ ],
122
142
 
123
- ["writeFileSync", (fp, contents) => {
124
- const path = `${filepath}/andWhen/${fp}`;
125
- (pm as any).currentStep?.artifacts?.push(path);
126
- return [path, contents];
127
- }],
143
+ [
144
+ "writeFileSync",
145
+ (fp, contents) => {
146
+ const path = `${filepath}/andWhen/${fp}`;
147
+ addArtifact(path);
148
+ return [path, contents];
149
+ },
150
+ ],
128
151
 
129
152
  [
130
153
  "customScreenShot",
131
154
  (opts, p) => {
132
155
  const path = `${filepath}/andWhen/${opts.path}`;
133
- (pm as any).currentStep?.artifacts?.push(path);
156
+ // console.log("STEP2", JSON.stringify(step));
157
+ addArtifact(path);
134
158
  return [
135
159
  {
136
160
  ...opts,
@@ -141,18 +165,20 @@ export const andWhenProxy: IProxy = (pm: IPM, filepath: string) =>
141
165
  },
142
166
  ],
143
167
  ]);
168
+ };
144
169
 
145
170
  export const afterEachProxy: IProxyAfterEach = (
146
171
  pm: IPM,
147
172
  suite: string,
148
- given: string
149
- ): IPM =>
150
- baseProxy(pm, [
173
+ given: string,
174
+ addArtifact
175
+ ): IPM => {
176
+ return baseProxy(pm, [
151
177
  [
152
178
  "screencast",
153
179
  (opts, p) => {
154
180
  const path = `suite-${suite}/given-${given}/afterEach/${opts.path}`;
155
- (pm as any).currentStep?.artifacts?.push(path);
181
+ addArtifact(path);
156
182
  return [
157
183
  {
158
184
  ...opts,
@@ -163,17 +189,19 @@ export const afterEachProxy: IProxyAfterEach = (
163
189
  },
164
190
  ],
165
191
 
166
- ["createWriteStream", (fp) => {
167
- const path = `suite-${suite}/afterEach/${fp}`;
168
- (pm as any).currentStep?.artifacts?.push(path);
169
- return [path];
170
- }],
171
-
192
+ [
193
+ "createWriteStream",
194
+ (fp) => {
195
+ const path = `suite-${suite}/afterEach/${fp}`;
196
+ addArtifact(path);
197
+ return [path];
198
+ },
199
+ ],
172
200
  [
173
201
  "writeFileSync",
174
202
  (fp, contents) => {
175
203
  const path = `suite-${suite}/given-${given}/afterEach/${fp}`;
176
- (pm as any).currentStep?.artifacts?.push(path);
204
+ addArtifact(path);
177
205
  return [path, contents];
178
206
  },
179
207
  ],
@@ -182,7 +210,8 @@ export const afterEachProxy: IProxyAfterEach = (
182
210
  "customScreenShot",
183
211
  (opts, p) => {
184
212
  const path = `suite-${suite}/given-${given}/afterEach/${opts.path}`;
185
- (pm as any).currentStep?.artifacts?.push(path);
213
+ addArtifact(path);
214
+ // console.log("STEP3", JSON.stringify(step));
186
215
  return [
187
216
  {
188
217
  ...opts,
@@ -193,17 +222,20 @@ export const afterEachProxy: IProxyAfterEach = (
193
222
  },
194
223
  ],
195
224
  ]);
225
+ };
196
226
 
197
227
  export const beforeEachProxy: IProxyBeforeEach = (
198
228
  pm: IPM,
199
- suite: string
200
- ): IPM =>
201
- baseProxy(pm, [
229
+ suite: string,
230
+ addArtifact
231
+ ): IPM => {
232
+ return baseProxy(pm, [
202
233
  [
203
234
  "screencast",
204
235
  (opts, p) => {
205
236
  const path = `suite-${suite}/beforeEach/${opts.path}`;
206
- (pm as any).currentStep?.artifacts?.push(path);
237
+ addArtifact(path);
238
+
207
239
  return [
208
240
  {
209
241
  ...opts,
@@ -218,7 +250,7 @@ export const beforeEachProxy: IProxyBeforeEach = (
218
250
  "writeFileSync",
219
251
  (fp, contents) => {
220
252
  const path = `suite-${suite}/beforeEach/${fp}`;
221
- (pm as any).currentStep?.artifacts?.push(path);
253
+ addArtifact(path);
222
254
  return [path, contents];
223
255
  },
224
256
  ],
@@ -227,7 +259,7 @@ export const beforeEachProxy: IProxyBeforeEach = (
227
259
  "customScreenShot",
228
260
  (opts, p) => {
229
261
  const path = `suite-${suite}/beforeEach/${opts.path}`;
230
- (pm as any).currentStep?.artifacts?.push(path);
262
+ addArtifact(path);
231
263
  return [
232
264
  {
233
265
  ...opts,
@@ -238,20 +270,29 @@ export const beforeEachProxy: IProxyBeforeEach = (
238
270
  },
239
271
  ],
240
272
 
241
- ["createWriteStream", (fp) => {
242
- const path = `suite-${suite}/beforeEach/${fp}`;
243
- (pm as any).currentStep?.artifacts?.push(path);
244
- return [path];
245
- }],
273
+ [
274
+ "createWriteStream",
275
+ (fp) => {
276
+ const path = `suite-${suite}/beforeEach/${fp}`;
277
+ addArtifact(path);
278
+ return [path];
279
+ },
280
+ ],
246
281
  ]);
282
+ };
247
283
 
248
- export const beforeAllProxy: IProxy = (pm: IPM, suite: string): IPM =>
249
- baseProxy(pm, [
284
+ export const beforeAllProxy: IProxy = (
285
+ pm: IPM,
286
+ suite: string,
287
+ addArtifact
288
+ ): IPM => {
289
+ return baseProxy(pm, [
250
290
  [
251
291
  "writeFileSync",
252
292
  (fp, contents) => {
253
293
  const path = `suite-${suite}/beforeAll/${fp}`;
254
- (pm as any).currentStep?.artifacts?.push(path);
294
+ addArtifact(path);
295
+
255
296
  return [path, contents];
256
297
  },
257
298
  ],
@@ -260,7 +301,7 @@ export const beforeAllProxy: IProxy = (pm: IPM, suite: string): IPM =>
260
301
  "customScreenShot",
261
302
  (opts, p) => {
262
303
  const path = `suite-${suite}/beforeAll/${opts.path}`;
263
- (pm as any).currentStep?.artifacts?.push(path);
304
+ addArtifact(path);
264
305
  return [
265
306
  {
266
307
  ...opts,
@@ -271,26 +312,38 @@ export const beforeAllProxy: IProxy = (pm: IPM, suite: string): IPM =>
271
312
  },
272
313
  ],
273
314
 
274
- ["createWriteStream", (fp) => {
275
- const path = `suite-${suite}/beforeAll/${fp}`;
276
- (pm as any).currentStep?.artifacts?.push(path);
277
- return [path];
278
- }],
315
+ [
316
+ "createWriteStream",
317
+ (fp) => {
318
+ const path = `suite-${suite}/beforeAll/${fp}`;
319
+ addArtifact(path);
320
+ return [path];
321
+ },
322
+ ],
279
323
  ]);
324
+ };
280
325
 
281
- export const afterAllProxy: IProxy = (pm: IPM, suite: string): IPM =>
282
- baseProxy(pm, [
283
- ["createWriteStream", (fp) => {
284
- const path = `suite-${suite}/afterAll/${fp}`;
285
- (pm as any).currentStep?.artifacts?.push(path);
286
- return [path];
287
- }],
326
+ export const afterAllProxy: IProxy = (
327
+ pm: IPM,
328
+ suite: string,
329
+ addArtifact
330
+ ): IPM => {
331
+ return baseProxy(pm, [
332
+ [
333
+ "createWriteStream",
334
+ (fp) => {
335
+ const path = `suite-${suite}/afterAll/${fp}`;
336
+ addArtifact(path);
337
+ return [path];
338
+ },
339
+ ],
288
340
 
289
341
  [
290
342
  "writeFileSync",
291
343
  (fp, contents) => {
292
344
  const path = `suite-${suite}/afterAll/${fp}`;
293
- (pm as any).currentStep?.artifacts?.push(path);
345
+ console.log("MARK10");
346
+ addArtifact(path);
294
347
  return [path, contents];
295
348
  },
296
349
  ],
@@ -299,7 +352,8 @@ export const afterAllProxy: IProxy = (pm: IPM, suite: string): IPM =>
299
352
  "customScreenShot",
300
353
  (opts, p) => {
301
354
  const path = `suite-${suite}/afterAll/${opts.path}`;
302
- (pm as any).currentStep?.artifacts?.push(path);
355
+ addArtifact(path);
356
+ console.log("MARK9");
303
357
  return [
304
358
  {
305
359
  ...opts,
@@ -310,3 +364,4 @@ export const afterAllProxy: IProxy = (pm: IPM, suite: string): IPM =>
310
364
  },
311
365
  ],
312
366
  ]);
367
+ };
package/testeranto/App.js CHANGED
@@ -32271,7 +32271,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
32271
32271
  onClick: () => navigate(`/projects/${projectName}#${runtime}`)
32272
32272
  },
32273
32273
  "View Build Logs"
32274
- ))) : testData ? /* @__PURE__ */ import_react58.default.createElement("div", { className: "test-results" }, testData.givens.map((given, i) => /* @__PURE__ */ import_react58.default.createElement("div", { key: i, className: "mb-4 card" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "card-header bg-primary text-white" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "d-flex justify-content-between align-items-center" }, /* @__PURE__ */ import_react58.default.createElement("h4", null, "Given: ", given.name), given.artifacts?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "dropdown" }, /* @__PURE__ */ import_react58.default.createElement(
32274
+ ))) : testData ? /* @__PURE__ */ import_react58.default.createElement("div", { className: "test-results" }, testData.givens.map((given, i) => /* @__PURE__ */ import_react58.default.createElement("div", { key: i, className: "mb-4 card" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "card-header bg-primary text-white" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "d-flex justify-content-between align-items-center" }, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("h4", null, "Given: ", given.name), given.features?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "mt-1" }, /* @__PURE__ */ import_react58.default.createElement("small", null, "Features:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, given.features.map((feature, fi) => /* @__PURE__ */ import_react58.default.createElement("li", { key: fi }, feature.startsWith("http") ? /* @__PURE__ */ import_react58.default.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer", className: "text-white" }, new URL(feature).hostname) : /* @__PURE__ */ import_react58.default.createElement("span", { className: "text-white" }, feature)))))), given.artifacts?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "dropdown" }, /* @__PURE__ */ import_react58.default.createElement(
32275
32275
  "button",
32276
32276
  {
32277
32277
  className: "btn btn-sm btn-light dropdown-toggle",
@@ -32290,7 +32290,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
32290
32290
  rel: "noopener noreferrer"
32291
32291
  },
32292
32292
  artifact.split("/").pop()
32293
- ))))))), /* @__PURE__ */ import_react58.default.createElement("div", { className: "card-body" }, given.whens.map((when, j) => /* @__PURE__ */ import_react58.default.createElement("div", { key: `w-${j}`, className: `p-3 mb-2 ${when.error ? "bg-danger text-white" : "bg-success text-white"}` }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "d-flex justify-content-between align-items-start" }, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("strong", null, "When:"), " ", when.name, when.error && /* @__PURE__ */ import_react58.default.createElement("pre", { className: "mt-2" }, when.error)), when.artifacts?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "ms-3" }, /* @__PURE__ */ import_react58.default.createElement("strong", null, "Artifacts:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, when.artifacts.map((artifact, ai) => /* @__PURE__ */ import_react58.default.createElement("li", { key: ai }, /* @__PURE__ */ import_react58.default.createElement(
32293
+ ))))))), /* @__PURE__ */ import_react58.default.createElement("div", { className: "card-body" }, given.whens.map((when, j) => /* @__PURE__ */ import_react58.default.createElement("div", { key: `w-${j}`, className: `p-3 mb-2 ${when.error ? "bg-danger text-white" : "bg-success text-white"}` }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "d-flex justify-content-between align-items-start" }, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("strong", null, "When:"), " ", when.name, when.features?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react58.default.createElement("small", null, "Features:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, when.features.map((feature, fi) => /* @__PURE__ */ import_react58.default.createElement("li", { key: fi }, feature.startsWith("http") ? /* @__PURE__ */ import_react58.default.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer" }, new URL(feature).hostname) : feature)))), when.error && /* @__PURE__ */ import_react58.default.createElement("pre", { className: "mt-2" }, when.error))), when.artifacts?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "ms-3" }, /* @__PURE__ */ import_react58.default.createElement("strong", null, "Artifacts:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, when.artifacts.map((artifact, ai) => /* @__PURE__ */ import_react58.default.createElement("li", { key: ai }, /* @__PURE__ */ import_react58.default.createElement(
32294
32294
  "a",
32295
32295
  {
32296
32296
  href: `/testeranto/reports/${projectName}/${testName2.split(".").slice(0, -1).join(".")}/${runtime}/${artifact}`,
@@ -32299,7 +32299,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
32299
32299
  rel: "noopener noreferrer"
32300
32300
  },
32301
32301
  artifact.split("/").pop()
32302
- )))))))), given.thens.map((then, k) => /* @__PURE__ */ import_react58.default.createElement("div", { key: `t-${k}`, className: `p-3 mb-2 ${then.error ? "bg-danger text-white" : "bg-success text-white"}` }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "d-flex justify-content-between align-items-start" }, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("strong", null, "Then:"), " ", then.name, then.error && /* @__PURE__ */ import_react58.default.createElement("pre", { className: "mt-2" }, then.error)), then.artifacts?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "ms-3" }, /* @__PURE__ */ import_react58.default.createElement("strong", null, "Artifacts:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, then.artifacts.map((artifact, ai) => /* @__PURE__ */ import_react58.default.createElement("li", { key: ai }, /* @__PURE__ */ import_react58.default.createElement(
32302
+ )))))))), given.thens.map((then, k) => /* @__PURE__ */ import_react58.default.createElement("div", { key: `t-${k}`, className: `p-3 mb-2 ${then.error ? "bg-danger text-white" : "bg-success text-white"}` }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "d-flex justify-content-between align-items-start" }, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("div", null, /* @__PURE__ */ import_react58.default.createElement("strong", null, "Then:"), " ", then.name, then.features?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react58.default.createElement("small", null, "Features:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, then.features.map((feature, fi) => /* @__PURE__ */ import_react58.default.createElement("li", { key: fi }, feature.startsWith("http") ? /* @__PURE__ */ import_react58.default.createElement("a", { href: feature, target: "_blank", rel: "noopener noreferrer" }, new URL(feature).hostname) : feature)))), then.error && /* @__PURE__ */ import_react58.default.createElement("pre", { className: "mt-2" }, then.error))), then.artifacts?.length > 0 && /* @__PURE__ */ import_react58.default.createElement("div", { className: "ms-3" }, /* @__PURE__ */ import_react58.default.createElement("strong", null, "Artifacts:"), /* @__PURE__ */ import_react58.default.createElement("ul", { className: "list-unstyled" }, then.artifacts.map((artifact, ai) => /* @__PURE__ */ import_react58.default.createElement("li", { key: ai }, /* @__PURE__ */ import_react58.default.createElement(
32303
32303
  "a",
32304
32304
  {
32305
32305
  href: `/testeranto/reports/${projectName}/${testName2.split(".").slice(0, -1).join(".")}/${runtime}/${artifact}`,
@@ -0,0 +1,8 @@
1
+ {
2
+ "errors": [],
3
+ "warnings": [],
4
+ "metafile": {
5
+ "inputs": {},
6
+ "outputs": {}
7
+ }
8
+ }