testeranto 0.47.34 → 0.47.52

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 (309) hide show
  1. package/.nvmrc +1 -0
  2. package/Bundle.Dockerfile +45 -0
  3. package/README.md +86 -11
  4. package/Report.Dockerfile +43 -0
  5. package/dist/cjs-shim.js +12 -0
  6. package/dist/common/Features.js +3 -37
  7. package/dist/common/Init.js +30 -0
  8. package/dist/common/Node.js +15 -66
  9. package/dist/common/PM/index.js +7 -0
  10. package/dist/common/PM/main.js +641 -0
  11. package/dist/common/PM/node.js +88 -0
  12. package/dist/common/PM/web.js +132 -0
  13. package/dist/common/Project.js +109 -637
  14. package/dist/common/Puppeteer.js +103 -0
  15. package/dist/common/Reporter.js +112 -0
  16. package/dist/common/Scheduler.js +1 -0
  17. package/dist/common/SubPackages/puppeteer.js +21 -0
  18. package/dist/common/{subPackages → SubPackages}/react/component/node.js +4 -4
  19. package/dist/common/{subPackages → SubPackages}/react/component/web.js +4 -4
  20. package/dist/common/SubPackages/react/jsx/index.js +25 -0
  21. package/dist/common/SubPackages/react/jsx/node.js +10 -0
  22. package/dist/common/SubPackages/react/jsx/web.js +10 -0
  23. package/dist/common/{subPackages/react-dom/jsx → SubPackages/react-dom/component}/node.js +6 -6
  24. package/dist/common/SubPackages/react-dom/component/web.js +93 -0
  25. package/dist/common/SubPackages/react-dom/jsx/index.js +2 -0
  26. package/dist/common/SubPackages/react-dom/jsx/node.js +39 -0
  27. package/dist/common/SubPackages/react-dom/jsx/web.js +118 -0
  28. package/dist/common/SubPackages/react-test-renderer/MemoExoticComponent/node.js +44 -0
  29. package/dist/common/SubPackages/react-test-renderer/component/index.js +2 -0
  30. package/dist/common/{subPackages/react-test-renderer/component/index.js → SubPackages/react-test-renderer/component/interface.js} +23 -33
  31. package/dist/common/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/component}/node.js +3 -5
  32. package/dist/common/{subPackages/react/jsx → SubPackages/react-test-renderer/component}/web.js +3 -5
  33. package/dist/common/SubPackages/react-test-renderer/fc/node.js +50 -0
  34. package/dist/common/SubPackages/react-test-renderer/fc/web.js +50 -0
  35. package/dist/common/{subPackages → SubPackages}/react-test-renderer/jsx/index.js +7 -3
  36. package/dist/common/SubPackages/react-test-renderer/jsx/node.js +10 -0
  37. package/dist/common/SubPackages/react-test-renderer/jsx/web.js +10 -0
  38. package/dist/common/SubPackages/react-test-renderer/jsx-promised/index.js +42 -0
  39. package/dist/common/{subPackages/react/jsx → SubPackages/react-test-renderer/jsx-promised}/node.js +2 -2
  40. package/dist/common/TaskManBackEnd.js +174 -0
  41. package/dist/common/Web.js +31 -108
  42. package/dist/common/esbuildConfigs/features.js +14 -0
  43. package/dist/common/esbuildConfigs/index.js +21 -0
  44. package/dist/common/esbuildConfigs/inputFilesPlugin.js +49 -0
  45. package/dist/common/esbuildConfigs/node.js +39 -0
  46. package/dist/common/esbuildConfigs/report.js +14 -0
  47. package/dist/common/esbuildConfigs/tests.js +13 -0
  48. package/dist/common/esbuildConfigs/web.js +57 -0
  49. package/dist/common/lib/abstractBase.js +553 -0
  50. package/dist/common/lib/basebuilder.js +79 -0
  51. package/dist/common/lib/classBuilder.js +42 -0
  52. package/dist/common/lib/core.js +75 -0
  53. package/dist/common/lib/index.js +22 -0
  54. package/dist/common/lib/types.js +2 -0
  55. package/dist/common/mongooseSchemas.js +56 -0
  56. package/dist/common/preload.js +14 -27
  57. package/dist/common/puppeteerConfiger.js +24 -0
  58. package/dist/common/report.html.js +31 -0
  59. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  60. package/dist/common/utils.js +16 -0
  61. package/dist/common/web.html.js +22 -0
  62. package/dist/module/ExampleTab.js +112 -0
  63. package/dist/module/Features.js +2 -35
  64. package/dist/module/Init.js +25 -0
  65. package/dist/module/Node.js +15 -66
  66. package/dist/module/PM/index.js +3 -0
  67. package/dist/module/PM/main.js +611 -0
  68. package/dist/module/PM/node.js +81 -0
  69. package/dist/module/PM/web.js +125 -0
  70. package/dist/module/Project.js +110 -615
  71. package/dist/module/Puppeteer.js +98 -0
  72. package/dist/module/Reporter.js +107 -0
  73. package/dist/module/Scheduler.js +1 -0
  74. package/dist/module/SubPackages/puppeteer.js +16 -0
  75. package/dist/module/{subPackages → SubPackages}/react/component/node.js +3 -3
  76. package/dist/module/{subPackages → SubPackages}/react/component/web.js +3 -3
  77. package/dist/module/SubPackages/react/jsx/index.js +19 -0
  78. package/dist/module/SubPackages/react/jsx/node.js +5 -0
  79. package/dist/module/SubPackages/react/jsx/web.js +5 -0
  80. package/dist/module/{subPackages → SubPackages}/react-dom/component/node.js +7 -7
  81. package/dist/module/SubPackages/react-dom/component/web.js +88 -0
  82. package/dist/module/SubPackages/react-dom/jsx/node.js +31 -0
  83. package/dist/module/SubPackages/react-dom/jsx/web.js +90 -0
  84. package/dist/module/SubPackages/react-test-renderer/MemoExoticComponent/node.js +16 -0
  85. package/dist/module/SubPackages/react-test-renderer/component/index.js +1 -0
  86. package/dist/module/SubPackages/react-test-renderer/component/interface.js +39 -0
  87. package/dist/module/{subPackages → SubPackages}/react-test-renderer/component/node.js +2 -2
  88. package/dist/module/{subPackages → SubPackages}/react-test-renderer/component/web.js +2 -2
  89. package/dist/module/{subPackages → SubPackages}/react-test-renderer/fc/node.js +3 -3
  90. package/dist/module/SubPackages/react-test-renderer/fc/web.js +22 -0
  91. package/dist/module/{subPackages → SubPackages}/react-test-renderer/jsx/index.js +7 -3
  92. package/dist/module/SubPackages/react-test-renderer/jsx/node.js +5 -0
  93. package/dist/module/SubPackages/react-test-renderer/jsx/web.js +5 -0
  94. package/dist/module/SubPackages/react-test-renderer/jsx-promised/index.js +16 -0
  95. package/dist/module/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/jsx-promised}/node.js +1 -1
  96. package/dist/module/TaskManBackEnd.js +169 -0
  97. package/dist/module/TaskManFrontEnd.js +600 -0
  98. package/dist/module/Web.js +31 -108
  99. package/dist/module/esbuildConfigs/features.js +12 -0
  100. package/dist/module/esbuildConfigs/index.js +19 -0
  101. package/dist/module/esbuildConfigs/inputFilesPlugin.js +44 -0
  102. package/dist/module/esbuildConfigs/node.js +34 -0
  103. package/dist/module/esbuildConfigs/report.js +14 -0
  104. package/dist/module/esbuildConfigs/tests.js +11 -0
  105. package/dist/module/esbuildConfigs/web.js +52 -0
  106. package/dist/module/lib/abstractBase.js +545 -0
  107. package/dist/module/lib/basebuilder.js +75 -0
  108. package/dist/module/lib/classBuilder.js +38 -0
  109. package/dist/module/lib/core.js +72 -0
  110. package/dist/module/lib/index.js +18 -0
  111. package/dist/module/lib/types.js +1 -0
  112. package/dist/module/mongooseSchemas.js +50 -0
  113. package/dist/module/preload.js +15 -26
  114. package/dist/module/puppeteerConfiger.js +19 -0
  115. package/dist/module/report.html.js +29 -0
  116. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  117. package/dist/module/utils.js +9 -0
  118. package/dist/module/web.html.js +20 -0
  119. package/dist/prebuild/TaskManBackEnd.mjs +174 -0
  120. package/dist/prebuild/TaskManFrontEnd.css +12301 -0
  121. package/dist/prebuild/TaskManFrontEnd.js +81264 -0
  122. package/dist/types/Features.d.ts +1 -34
  123. package/dist/types/Init.d.ts +2 -0
  124. package/dist/types/Node.d.ts +5 -11
  125. package/dist/types/PM/index.d.ts +20 -0
  126. package/dist/types/PM/main.d.ts +31 -0
  127. package/dist/types/PM/node.d.ts +27 -0
  128. package/dist/types/PM/web.d.ts +25 -0
  129. package/dist/types/Project.d.ts +3 -29
  130. package/dist/types/Puppeteer.d.ts +2 -0
  131. package/dist/types/Reporter.d.ts +1 -0
  132. package/dist/types/Scheduler.d.ts +0 -0
  133. package/dist/types/SubPackages/puppeteer.d.ts +6 -0
  134. package/dist/types/SubPackages/react/component/node.d.ts +7 -0
  135. package/dist/types/SubPackages/react/component/web.d.ts +7 -0
  136. package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
  137. package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
  138. package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
  139. package/dist/types/SubPackages/react-dom/component/node.d.ts +12 -0
  140. package/dist/types/SubPackages/react-dom/component/web.d.ts +11 -0
  141. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
  142. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +6 -0
  143. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
  144. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +5 -0
  145. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
  146. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +9 -0
  147. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +8 -0
  148. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +3 -0
  149. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
  150. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +8 -0
  151. package/dist/types/{subPackages → SubPackages}/react-test-renderer/jsx/index.d.ts +5 -4
  152. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +8 -0
  153. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +8 -0
  154. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
  155. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +4 -0
  156. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +4 -0
  157. package/dist/types/TaskManBackEnd.d.ts +3 -0
  158. package/dist/types/Types.d.ts +49 -16
  159. package/dist/types/Web.d.ts +5 -11
  160. package/dist/types/esbuildConfigs/features.d.ts +4 -0
  161. package/dist/types/esbuildConfigs/index.d.ts +4 -0
  162. package/dist/types/esbuildConfigs/inputFilesPlugin.d.ts +5 -0
  163. package/dist/types/esbuildConfigs/node.d.ts +4 -0
  164. package/dist/types/esbuildConfigs/report.d.ts +0 -0
  165. package/dist/types/esbuildConfigs/tests.d.ts +4 -0
  166. package/dist/types/esbuildConfigs/web.d.ts +4 -0
  167. package/dist/types/lib/abstractBase.d.ts +104 -0
  168. package/dist/types/lib/basebuilder.d.ts +27 -0
  169. package/dist/types/lib/classBuilder.d.ts +7 -0
  170. package/dist/types/lib/core.d.ts +8 -0
  171. package/dist/types/lib/index.d.ts +59 -0
  172. package/dist/types/lib/types.d.ts +62 -0
  173. package/dist/types/mongooseSchemas.d.ts +124 -0
  174. package/dist/types/preload.d.ts +0 -1
  175. package/dist/types/puppeteerConfiger.d.ts +4 -0
  176. package/dist/types/report.html.d.ts +2 -0
  177. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  178. package/dist/types/utils.d.ts +2 -0
  179. package/dist/types/web.html.d.ts +2 -0
  180. package/index.html +30 -0
  181. package/package.json +151 -79
  182. package/src/ExampleTab.tsx +219 -0
  183. package/src/Features.ts +2 -58
  184. package/src/Init.ts +51 -0
  185. package/src/Node.ts +71 -157
  186. package/src/PM/index.ts +25 -0
  187. package/src/PM/main.ts +830 -0
  188. package/src/PM/node.ts +128 -0
  189. package/src/PM/web.ts +166 -0
  190. package/src/Project.ts +158 -797
  191. package/src/Puppeteer.ts +141 -0
  192. package/src/Reporter.ts +126 -0
  193. package/src/Scheduler.ts +0 -0
  194. package/src/SubPackages/puppeteer.ts +51 -0
  195. package/src/SubPackages/react/component/node.ts +43 -0
  196. package/src/SubPackages/react/component/web.ts +43 -0
  197. package/src/SubPackages/react/jsx/index.ts +42 -0
  198. package/src/SubPackages/react/jsx/node.ts +26 -0
  199. package/src/SubPackages/react/jsx/web.ts +30 -0
  200. package/src/{subPackages → SubPackages}/react-dom/component/node.ts +24 -44
  201. package/src/SubPackages/react-dom/component/web.ts +143 -0
  202. package/src/SubPackages/react-dom/jsx/index.ts +6 -0
  203. package/src/SubPackages/react-dom/jsx/node.ts +68 -0
  204. package/src/SubPackages/react-dom/jsx/web.ts +139 -0
  205. package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +38 -0
  206. package/src/SubPackages/react-test-renderer/component/index.ts +23 -0
  207. package/src/SubPackages/react-test-renderer/component/interface.ts +48 -0
  208. package/src/SubPackages/react-test-renderer/component/node.ts +17 -0
  209. package/src/SubPackages/react-test-renderer/component/web.ts +17 -0
  210. package/src/SubPackages/react-test-renderer/fc/node.ts +49 -0
  211. package/src/SubPackages/react-test-renderer/fc/web.ts +48 -0
  212. package/src/SubPackages/react-test-renderer/jsx/index.ts +48 -0
  213. package/src/SubPackages/react-test-renderer/jsx/node.ts +20 -0
  214. package/src/SubPackages/react-test-renderer/jsx/web.ts +20 -0
  215. package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +40 -0
  216. package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +19 -0
  217. package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +22 -0
  218. package/src/TaskManBackEnd.ts +228 -0
  219. package/src/TaskManFrontEnd.tsx +1222 -0
  220. package/src/Types.ts +222 -17
  221. package/src/Web.ts +86 -217
  222. package/src/cjs-shim.js +12 -0
  223. package/src/esbuildConfigs/features.ts +17 -0
  224. package/src/esbuildConfigs/index.ts +23 -0
  225. package/src/esbuildConfigs/inputFilesPlugin.ts +65 -0
  226. package/src/esbuildConfigs/node.ts +62 -0
  227. package/src/esbuildConfigs/report.ts +15 -0
  228. package/src/esbuildConfigs/tests.ts +14 -0
  229. package/src/esbuildConfigs/web.ts +79 -0
  230. package/src/lib/abstractBase.ts +910 -0
  231. package/src/lib/basebuilder.ts +214 -0
  232. package/src/lib/classBuilder.ts +131 -0
  233. package/src/lib/core.ts +224 -0
  234. package/src/lib/index.ts +226 -0
  235. package/src/lib/types.ts +303 -0
  236. package/src/mongooseSchemas.ts +105 -0
  237. package/src/preload.ts +14 -28
  238. package/src/puppeteerConfiger.ts +26 -0
  239. package/src/report.html.ts +29 -0
  240. package/src/utils.ts +15 -0
  241. package/src/web.html.ts +20 -0
  242. package/tests/Rectangle.test.ts +189 -0
  243. package/trash/TaskMan.Dockerfile +23 -0
  244. package/trash/TaskMan1.Dockerfile +43 -0
  245. package/trash/devBot.dockerfile +12 -0
  246. package/trash/docker-compose-dev.yml +9 -0
  247. package/trash/docker-compose-prod.yml +18 -0
  248. package/trash/electronBuild.ts +32 -0
  249. package/tsconfig.json +18 -6
  250. package/tsconfig.module.json +14 -4
  251. package/tsconfig.types.json +13 -4
  252. package/dist/common/NodeWriter.js +0 -56
  253. package/dist/common/core.js +0 -396
  254. package/dist/common/electron.js +0 -52
  255. package/dist/common/subPackages/react/jsx/index.js +0 -26
  256. package/dist/common/subPackages/react-dom/component/node.js +0 -101
  257. package/dist/common/subPackages/react-dom/component/web.js +0 -61
  258. package/dist/common/subPackages/react-dom/jsx/web.js +0 -76
  259. package/dist/common/subPackages/react-test-renderer/component/node.js +0 -8
  260. package/dist/common/subPackages/react-test-renderer/component/web.js +0 -8
  261. package/dist/module/NodeWriter.js +0 -50
  262. package/dist/module/Report.js +0 -186
  263. package/dist/module/core.js +0 -387
  264. package/dist/module/electron.js +0 -47
  265. package/dist/module/subPackages/react/jsx/index.js +0 -22
  266. package/dist/module/subPackages/react/jsx/node.js +0 -5
  267. package/dist/module/subPackages/react/jsx/web.js +0 -5
  268. package/dist/module/subPackages/react-dom/component/web.js +0 -56
  269. package/dist/module/subPackages/react-dom/jsx/node.js +0 -93
  270. package/dist/module/subPackages/react-dom/jsx/web.js +0 -48
  271. package/dist/module/subPackages/react-test-renderer/component/index.js +0 -52
  272. package/dist/types/NodeWriter.d.ts +0 -2
  273. package/dist/types/core.d.ts +0 -220
  274. package/dist/types/subPackages/react/component/node.d.ts +0 -12
  275. package/dist/types/subPackages/react/component/web.d.ts +0 -12
  276. package/dist/types/subPackages/react/jsx/index.d.ts +0 -15
  277. package/dist/types/subPackages/react/jsx/node.d.ts +0 -4
  278. package/dist/types/subPackages/react/jsx/web.d.ts +0 -4
  279. package/dist/types/subPackages/react-dom/component/node.d.ts +0 -14
  280. package/dist/types/subPackages/react-dom/component/web.d.ts +0 -19
  281. package/dist/types/subPackages/react-dom/jsx/node.d.ts +0 -14
  282. package/dist/types/subPackages/react-dom/jsx/web.d.ts +0 -15
  283. package/dist/types/subPackages/react-test-renderer/component/index.d.ts +0 -20
  284. package/dist/types/subPackages/react-test-renderer/component/node.d.ts +0 -9
  285. package/dist/types/subPackages/react-test-renderer/component/web.d.ts +0 -9
  286. package/dist/types/subPackages/react-test-renderer/jsx/node.d.ts +0 -4
  287. package/dist/types/subPackages/react-test-renderer/jsx/web.d.ts +0 -4
  288. package/src/NodeWriter.ts +0 -72
  289. package/src/Report.tsx +0 -392
  290. package/src/core.ts +0 -1396
  291. package/src/electron.ts +0 -59
  292. package/src/subPackages/react/component/node.ts +0 -75
  293. package/src/subPackages/react/component/web.ts +0 -80
  294. package/src/subPackages/react/jsx/index.ts +0 -64
  295. package/src/subPackages/react/jsx/node.ts +0 -29
  296. package/src/subPackages/react/jsx/web.ts +0 -29
  297. package/src/subPackages/react-dom/component/web.ts +0 -129
  298. package/src/subPackages/react-dom/jsx/node.ts +0 -150
  299. package/src/subPackages/react-dom/jsx/web.ts +0 -117
  300. package/src/subPackages/react-test-renderer/component/index.ts +0 -101
  301. package/src/subPackages/react-test-renderer/component/node.ts +0 -30
  302. package/src/subPackages/react-test-renderer/component/web.ts +0 -30
  303. package/src/subPackages/react-test-renderer/fc/node.tsx +0 -77
  304. package/src/subPackages/react-test-renderer/jsx/index.ts +0 -51
  305. package/src/subPackages/react-test-renderer/jsx/node.ts +0 -31
  306. package/src/subPackages/react-test-renderer/jsx/web.ts +0 -31
  307. /package/dist/common/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/jsx-promised}/web.js +0 -0
  308. /package/dist/{types/electron.d.ts → module/SubPackages/react-dom/jsx/index.js} +0 -0
  309. /package/dist/module/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/jsx-promised}/web.js +0 -0
@@ -0,0 +1,910 @@
1
+ import { IBaseTest } from "../Types";
2
+ import { PM } from "../PM/index.js";
3
+
4
+ import { ITTestResourceConfiguration, ITestArtifactory, ITLog } from ".";
5
+
6
+ export type IGivens<
7
+ ITestShape extends IBaseTest<
8
+ unknown,
9
+ unknown,
10
+ unknown,
11
+ unknown,
12
+ unknown,
13
+ unknown,
14
+ unknown,
15
+ Record<string, any>,
16
+ Record<string, any>,
17
+ Record<string, any>,
18
+ Record<string, any>,
19
+ Record<string, any>
20
+ >
21
+ > = Record<string, BaseGiven<ITestShape>>;
22
+
23
+ export abstract class BaseSuite<
24
+ ITestShape extends IBaseTest<
25
+ unknown,
26
+ unknown,
27
+ unknown,
28
+ unknown,
29
+ unknown,
30
+ unknown,
31
+ unknown,
32
+ Record<string, any>,
33
+ Record<string, any>,
34
+ Record<string, any>,
35
+ Record<string, any>,
36
+ Record<string, any>
37
+ >
38
+ > {
39
+ name: string;
40
+ givens: IGivens<ITestShape>;
41
+ checks: BaseCheck<ITestShape>[];
42
+ store: ITestShape["istore"];
43
+ fails: BaseGiven<ITestShape>[];
44
+ testResourceConfiguration: ITTestResourceConfiguration;
45
+ index: number;
46
+
47
+ constructor(
48
+ name: string,
49
+ index: number,
50
+ givens: IGivens<ITestShape> = {},
51
+ checks: BaseCheck<ITestShape>[] = []
52
+ ) {
53
+ this.name = name;
54
+ this.index = index;
55
+ this.givens = givens;
56
+ this.checks = checks;
57
+ this.fails = [];
58
+ }
59
+
60
+ public toObj() {
61
+ return {
62
+ name: this.name,
63
+ givens: Object.keys(this.givens).map((k) => this.givens[k].toObj()),
64
+ fails: this.fails,
65
+ };
66
+ }
67
+
68
+ setup(
69
+ s: ITestShape["iinput"],
70
+ artifactory: ITestArtifactory,
71
+ tr: ITTestResourceConfiguration,
72
+ pm: PM
73
+ ): Promise<ITestShape["isubject"]> {
74
+ return new Promise((res) => res(s as unknown as ITestShape["isubject"]));
75
+ }
76
+
77
+ assertThat(t: ITestShape["then"]): unknown {
78
+ return t;
79
+ }
80
+
81
+ afterAll(store: ITestShape["istore"], artifactory: ITestArtifactory, pm: PM) {
82
+ return store;
83
+ }
84
+
85
+ async run(
86
+ input: ITestShape["iinput"],
87
+ testResourceConfiguration: ITTestResourceConfiguration,
88
+ artifactory: (fPath: string, value: unknown) => void,
89
+ tLog: (...string) => void,
90
+ pm: PM
91
+ ): Promise<BaseSuite<ITestShape>> {
92
+ this.testResourceConfiguration = testResourceConfiguration;
93
+ tLog("test resources: ", JSON.stringify(testResourceConfiguration));
94
+
95
+ const suiteArtifactory = (fPath: string, value: unknown) =>
96
+ artifactory(`suite-${this.index}-${this.name}/${fPath}`, value);
97
+
98
+ console.log("\nSuite:", this.index, this.name);
99
+ tLog("\nSuite:", this.index, this.name);
100
+ const sNdx = this.index;
101
+ const sName = this.name;
102
+
103
+ for (const [gNdx, g] of Object.entries(this.givens)) {
104
+ const beforeAllProxy = new Proxy(pm, {
105
+ get(target, prop, receiver) {
106
+ if (prop === "writeFileSync") {
107
+ return (fp, contents) =>
108
+ target[prop](`suite-${sNdx}/beforeAll/${fp}`, contents);
109
+ }
110
+
111
+ if (prop === "browser") {
112
+ return new Proxy(target[prop], {
113
+ get(bTarget, bProp, bReceiver) {
114
+ if (bProp === "pages") {
115
+ return async () => {
116
+ return bTarget.pages().then((pages) => {
117
+ return pages.map((page) => {
118
+ return new Proxy(page, {
119
+ get(pTarget, pProp, pReciever) {
120
+ if (pProp === "screenshot") {
121
+ return async (x) => {
122
+ return pm.customScreenShot(
123
+ {
124
+ ...x,
125
+ path:
126
+ `${testResourceConfiguration.fs}/suite-${sNdx}/beforeAll` +
127
+ "/" +
128
+ x.path,
129
+ },
130
+ page
131
+ );
132
+ // return await window["custom-screenshot"]({
133
+ // ...x,
134
+ // path:
135
+ // `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
136
+ // "/" +
137
+ // x.path,
138
+ // });
139
+ };
140
+ } else if (pProp === "mainFrame") {
141
+ return () => pTarget[pProp]();
142
+ } else if (pProp === "close") {
143
+ return () => pTarget[pProp]();
144
+ }
145
+
146
+ // else if (pProp === "mainFrame") {
147
+ // return () => target[pProp](...arguments);
148
+ // }
149
+ else {
150
+ return Reflect.get(...arguments);
151
+ }
152
+ },
153
+ });
154
+ });
155
+ });
156
+ // return (await target.pages()).map((page) => {
157
+ // return new Proxy(page, handler2);
158
+ // });
159
+ };
160
+ }
161
+ },
162
+ });
163
+ }
164
+
165
+ return Reflect.get(...arguments);
166
+ },
167
+ });
168
+
169
+ const subject = await this.setup(
170
+ input,
171
+ suiteArtifactory,
172
+ testResourceConfiguration,
173
+ beforeAllProxy
174
+ );
175
+
176
+ const giver = this.givens[gNdx];
177
+ try {
178
+ this.store = await giver.give(
179
+ subject,
180
+ gNdx,
181
+ testResourceConfiguration,
182
+ this.assertThat,
183
+ suiteArtifactory,
184
+ tLog,
185
+ pm,
186
+ sNdx
187
+ );
188
+ } catch (e) {
189
+ console.error(e);
190
+ this.fails.push(giver);
191
+ // return this;
192
+ }
193
+ }
194
+
195
+ const afterAllProxy = new Proxy(pm, {
196
+ get(target, prop, receiver) {
197
+ if (prop === "writeFileSync") {
198
+ return (fp, contents) =>
199
+ target[prop](`suite-${sNdx}/afterAll/${fp}`, contents);
200
+ }
201
+
202
+ if (prop === "browser") {
203
+ return new Proxy(target[prop], {
204
+ get(bTarget, bProp, bReceiver) {
205
+ if (bProp === "pages") {
206
+ return async () => {
207
+ return bTarget.pages().then((pages) => {
208
+ return pages.map((page) => {
209
+ return new Proxy(page, {
210
+ get(pTarget, pProp, pReciever) {
211
+ if (pProp === "screenshot") {
212
+ return async (x) => {
213
+ return pm.customScreenShot({
214
+ ...x,
215
+ path:
216
+ `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
217
+ "/" +
218
+ x.path,
219
+ });
220
+ // return await window["custom-screenshot"]({
221
+ // ...x,
222
+ // path:
223
+ // `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
224
+ // "/" +
225
+ // x.path,
226
+ // });
227
+ };
228
+ } else if (pProp === "mainFrame") {
229
+ return () => pTarget[pProp]();
230
+ } else if (pProp === "close") {
231
+ return () => pTarget[pProp]();
232
+ }
233
+
234
+ // else if (pProp === "mainFrame") {
235
+ // return () => target[pProp](...arguments);
236
+ // }
237
+ else {
238
+ return Reflect.get(...arguments);
239
+ }
240
+ },
241
+ });
242
+ });
243
+ });
244
+ // return (await target.pages()).map((page) => {
245
+ // return new Proxy(page, handler2);
246
+ // });
247
+ };
248
+ }
249
+ },
250
+ });
251
+ }
252
+
253
+ return Reflect.get(...arguments);
254
+ },
255
+ });
256
+
257
+ // pm.browser
258
+ try {
259
+ this.afterAll(this.store, artifactory, afterAllProxy);
260
+ } catch (e) {
261
+ console.error(e);
262
+ // this.fails.push(this);
263
+ // return this;
264
+ }
265
+
266
+ // for (const [ndx, thater] of this.checks.entries()) {
267
+ // await thater.check(
268
+ // subject,
269
+ // thater.name,
270
+ // testResourceConfiguration,
271
+ // this.assertThat,
272
+ // suiteArtifactory,
273
+ // tLog,
274
+ // pm
275
+ // );
276
+ // }
277
+
278
+ // @TODO fix me
279
+ // for (const k of Object.keys(this.givens)) {
280
+ // const giver = this.givens[k];
281
+
282
+ // try {
283
+ // giver.afterAll(this.store, artifactory, pm);
284
+ // } catch (e) {
285
+ // console.error(e);
286
+ // this.fails.push(giver);
287
+ // return this;
288
+ // }
289
+ // }
290
+ ////////////////
291
+
292
+ return this;
293
+ }
294
+ }
295
+
296
+ export abstract class BaseGiven<
297
+ ITestShape extends IBaseTest<
298
+ unknown,
299
+ unknown,
300
+ unknown,
301
+ unknown,
302
+ unknown,
303
+ unknown,
304
+ unknown,
305
+ Record<string, any>,
306
+ Record<string, any>,
307
+ Record<string, any>,
308
+ Record<string, any>,
309
+ Record<string, any>
310
+ >
311
+ > {
312
+ name: string;
313
+ features: string[];
314
+ whens: BaseWhen<ITestShape>[];
315
+ thens: BaseThen<ITestShape>[];
316
+ error: Error;
317
+ fail: any;
318
+ store: ITestShape["istore"];
319
+ recommendedFsPath: string;
320
+ givenCB: ITestShape["given"];
321
+ initialValues: any;
322
+
323
+ constructor(
324
+ name: string,
325
+ features: string[],
326
+ whens: BaseWhen<ITestShape>[],
327
+ thens: BaseThen<ITestShape>[],
328
+ givenCB: ITestShape["given"],
329
+ initialValues: any
330
+ ) {
331
+ this.name = name;
332
+ this.features = features;
333
+ this.whens = whens;
334
+ this.thens = thens;
335
+ this.givenCB = givenCB;
336
+ this.initialValues = initialValues;
337
+ }
338
+
339
+ beforeAll(store: ITestShape["istore"], artifactory: ITestArtifactory) {
340
+ return store;
341
+ }
342
+
343
+ toObj() {
344
+ return {
345
+ name: this.name,
346
+ whens: this.whens.map((w) => w.toObj()),
347
+ thens: this.thens.map((t) => t.toObj()),
348
+ error: this.error ? [this.error, this.error.stack] : null,
349
+ // fail: this.fail ? [this.fail] : false,
350
+ features: this.features,
351
+ };
352
+ }
353
+
354
+ abstract givenThat(
355
+ subject: ITestShape["isubject"],
356
+ testResourceConfiguration,
357
+ artifactory: ITestArtifactory,
358
+ givenCB: ITestShape["given"],
359
+ pm: PM
360
+ ): Promise<ITestShape["istore"]>;
361
+
362
+ async afterEach(
363
+ store: ITestShape["istore"],
364
+ key: string,
365
+ artifactory: ITestArtifactory,
366
+ pm: PM
367
+ ): Promise<unknown> {
368
+ return store;
369
+ }
370
+
371
+ async give(
372
+ subject: ITestShape["isubject"],
373
+ key: string,
374
+ testResourceConfiguration,
375
+ tester: (t: Awaited<ITestShape["then"]> | undefined) => boolean,
376
+ artifactory: ITestArtifactory,
377
+ tLog: ITLog,
378
+ pm: PM,
379
+ suiteNdx: number
380
+ ) {
381
+ tLog(`\n Given: ${this.name}`);
382
+
383
+ const givenArtifactory = (fPath: string, value: unknown) =>
384
+ artifactory(`given-${key}/${fPath}`, value);
385
+ try {
386
+ // tLog(`\n Given this.store`, this.store);
387
+
388
+ const beforeEachProxy = new Proxy(pm, {
389
+ get(target, prop, receiver) {
390
+ if (prop === "writeFileSync") {
391
+ return (fp, contents) =>
392
+ target[prop](
393
+ `suite-${suiteNdx}/given-${key}/when/beforeEach/${fp}`,
394
+ contents
395
+ );
396
+ }
397
+
398
+ return Reflect.get(...arguments);
399
+ },
400
+ });
401
+
402
+ this.store = await this.givenThat(
403
+ subject,
404
+ testResourceConfiguration,
405
+ givenArtifactory,
406
+ this.givenCB,
407
+ beforeEachProxy
408
+ );
409
+
410
+ for (const [whenNdx, whenStep] of this.whens.entries()) {
411
+ await whenStep.test(
412
+ this.store,
413
+ testResourceConfiguration,
414
+ tLog,
415
+ pm,
416
+ `suite-${suiteNdx}/given-${key}/when/${whenNdx}`
417
+ );
418
+ }
419
+
420
+ for (const [thenNdx, thenStep] of this.thens.entries()) {
421
+ const t = await thenStep.test(
422
+ this.store,
423
+ testResourceConfiguration,
424
+ tLog,
425
+ pm,
426
+ `suite-${suiteNdx}/given-${key}/then-${thenNdx}`
427
+ );
428
+ tester(t);
429
+ }
430
+ } catch (e) {
431
+ this.error = e;
432
+ tLog(e);
433
+ tLog("\u0007"); // bell
434
+ // throw e;
435
+ } finally {
436
+ try {
437
+ // const afterEachProxy = new Proxy(pm, {
438
+ // get(target, prop, receiver) {
439
+ // if (prop === "writeFileSync") {
440
+ // console.log("afterEachProxy", arguments, target[prop]);
441
+ // return (fp, contents) =>
442
+ // // target[prop](`${key}/andWhen/${fp}`, contents);
443
+ // target[prop](`${key}/afterEach/${fp}`, contents);
444
+ // }
445
+
446
+ // return Reflect.get(...arguments);
447
+ // },
448
+ // });
449
+
450
+ // await this.afterEach(this.store, key, givenArtifactory, afterEachProxy);
451
+
452
+ // await this.afterEach(this.store, key, givenArtifactory, pm);
453
+
454
+ const afterEachProxy = new Proxy(pm, {
455
+ get(target, prop, receiver) {
456
+ if (prop === "writeFileSync") {
457
+ return (fp, contents) =>
458
+ target[prop](
459
+ `suite-${suiteNdx}/given-${key}/afterAll/${fp}`,
460
+ contents
461
+ );
462
+ }
463
+
464
+ if (prop === "browser") {
465
+ return new Proxy(target[prop], {
466
+ get(bTarget, bProp, bReceiver) {
467
+ if (bProp === "pages") {
468
+ return async () => {
469
+ return bTarget.pages().then((pages) => {
470
+ return pages.map((page) => {
471
+ return new Proxy(page, {
472
+ get(pTarget, pProp, pReciever) {
473
+ if (pProp === "screenshot") {
474
+ return async (x) => {
475
+ // console.log(
476
+ // "custom-screenshot-MARK-afterEachProxy",
477
+ // window["custom-screenshot"].toString()
478
+ // );
479
+
480
+ return pm.customScreenShot(
481
+ {
482
+ ...x,
483
+ path:
484
+ `${testResourceConfiguration.fs}/suite-${suiteNdx}/given-${key}/afterEach` +
485
+ "/" +
486
+ x.path,
487
+ },
488
+ page
489
+ );
490
+
491
+ // return await pTarget[pProp]({
492
+ // ...x,
493
+ // path:
494
+ // `${testResourceConfiguration.fs}/suite-${suiteNdx}/given-${key}/afterEach` +
495
+ // "/" +
496
+ // x.path,
497
+ // });
498
+ };
499
+ } else if (pProp === "mainFrame") {
500
+ return () => pTarget[pProp]();
501
+ // return target[pProp];
502
+ // return Reflect.get(...arguments);
503
+ } else if (pProp === "exposeFunction") {
504
+ // return Reflect.get(target, prop, receiver);
505
+ return (...a) => pTarget[pProp](...a);
506
+ // return target[pProp];
507
+ } else if (pProp === "removeExposedFunction") {
508
+ // return Reflect.get(target, prop, receiver);
509
+ return pTarget[pProp].bind(pTarget);
510
+ // return target[pProp];
511
+ }
512
+ // else if (pProp === "#frameManager") {
513
+ // return () => target[pProp](...arguments);
514
+ // }
515
+ else {
516
+ return Reflect.get(...arguments);
517
+ }
518
+ },
519
+ });
520
+ });
521
+ });
522
+ // return (await target.pages()).map((page) => {
523
+ // return new Proxy(page, handler2);
524
+ // });
525
+ };
526
+ }
527
+ },
528
+ });
529
+ }
530
+
531
+ return Reflect.get(...arguments);
532
+ },
533
+ });
534
+
535
+ await this.afterEach(this.store, key, givenArtifactory, afterEachProxy);
536
+ } catch (e) {
537
+ console.error("afterEach failed! no error will be recorded!", e);
538
+ }
539
+ }
540
+ return this.store;
541
+ }
542
+ }
543
+
544
+ export abstract class BaseWhen<ITestShape extends IBaseTest> {
545
+ public name: string;
546
+ whenCB: (x: ITestShape["iselection"]) => ITestShape["then"];
547
+ error: boolean;
548
+
549
+ constructor(
550
+ name: string,
551
+ whenCB: (xyz: ITestShape["iselection"]) => ITestShape["then"]
552
+ ) {
553
+ this.name = name;
554
+ this.whenCB = whenCB;
555
+ }
556
+
557
+ abstract andWhen(
558
+ store: ITestShape["istore"],
559
+ whenCB: (x: ITestShape["iselection"]) => ITestShape["then"],
560
+ testResource,
561
+ pm: PM
562
+ );
563
+
564
+ toObj() {
565
+ return {
566
+ name: this.name,
567
+ error: this.error,
568
+ };
569
+ }
570
+
571
+ async test(
572
+ store: ITestShape["istore"],
573
+ testResourceConfiguration,
574
+ tLog: ITLog,
575
+ pm: PM,
576
+ key: string
577
+ ) {
578
+ tLog(" When:", this.name);
579
+
580
+ const name = this.name;
581
+ const andWhenProxy = new Proxy(pm, {
582
+ get(target, prop, receiver) {
583
+ if (prop === "writeFileSync") {
584
+ return (fp, contents) =>
585
+ // target[prop](`${key}/andWhen/${fp}`, contents);
586
+ target[prop](`${key}/andWhen/${fp}`, contents);
587
+ }
588
+
589
+ /////////////////////
590
+
591
+ if (prop === "browser") {
592
+ return new Proxy(target[prop], {
593
+ get(bTarget, bProp, bReceiver) {
594
+ if (bProp === "pages") {
595
+ return async () => {
596
+ return bTarget.pages().then((pages) => {
597
+ return pages.map((page) => {
598
+ return new Proxy(page, {
599
+ get(pTarget, pProp, pReciever) {
600
+ if (pProp === "screenshot") {
601
+ return async (x) => {
602
+ // console.log(
603
+ // "custom-screenshot-MARK-afterEachProxy",
604
+ // window["custom-screenshot"].toString()
605
+ // );
606
+
607
+ return pm.customScreenShot(
608
+ {
609
+ ...x,
610
+ path:
611
+ `${testResourceConfiguration.fs}/${key}/afterEach` +
612
+ "/" +
613
+ x.path,
614
+ },
615
+ page
616
+ );
617
+
618
+ // return await pTarget[pProp]({
619
+ // ...x,
620
+ // path:
621
+ // `${testResourceConfiguration.fs}/suite-${suiteNdx}/given-${key}/afterEach` +
622
+ // "/" +
623
+ // x.path,
624
+ // });
625
+ };
626
+ } else if (pProp === "mainFrame") {
627
+ return () => pTarget[pProp]();
628
+ // return target[pProp];
629
+ // return Reflect.get(...arguments);
630
+ } else if (pProp === "exposeFunction") {
631
+ // return Reflect.get(target, prop, receiver);
632
+ return pTarget[pProp].bind(pTarget);
633
+ // return target[pProp];
634
+ } else if (pProp === "removeExposedFunction") {
635
+ // return Reflect.get(target, prop, receiver);
636
+ return pTarget[pProp].bind(pTarget);
637
+ // return target[pProp];
638
+ } else {
639
+ return Reflect.get(...arguments);
640
+ }
641
+ },
642
+ });
643
+ });
644
+ });
645
+ // return (await target.pages()).map((page) => {
646
+ // return new Proxy(page, handler2);
647
+ // });
648
+ };
649
+ }
650
+ },
651
+ });
652
+ }
653
+
654
+ ///////////////////////
655
+
656
+ return Reflect.get(...arguments);
657
+ },
658
+ });
659
+
660
+ try {
661
+ return await this.andWhen(
662
+ store,
663
+ this.whenCB,
664
+ testResourceConfiguration,
665
+ andWhenProxy
666
+ );
667
+ } catch (e) {
668
+ this.error = true;
669
+ throw e;
670
+ }
671
+ }
672
+ }
673
+
674
+ export abstract class BaseThen<
675
+ ITestShape extends IBaseTest<
676
+ unknown,
677
+ unknown,
678
+ unknown,
679
+ unknown,
680
+ unknown,
681
+ unknown,
682
+ unknown,
683
+ Record<string, any>,
684
+ Record<string, any>,
685
+ Record<string, any>,
686
+ Record<string, any>,
687
+ Record<string, any>
688
+ >
689
+ > {
690
+ public name: string;
691
+ thenCB: (storeState: ITestShape["iselection"]) => ITestShape["then"];
692
+ error: boolean;
693
+
694
+ constructor(
695
+ name: string,
696
+ thenCB: (val: ITestShape["iselection"]) => ITestShape["then"]
697
+ ) {
698
+ this.name = name;
699
+ this.thenCB = thenCB;
700
+ this.error = false;
701
+ }
702
+
703
+ toObj() {
704
+ return {
705
+ name: this.name,
706
+ error: this.error,
707
+ };
708
+ }
709
+
710
+ abstract butThen(
711
+ store: ITestShape["istore"],
712
+ thenCB,
713
+ testResourceConfiguration: ITTestResourceConfiguration,
714
+ pm: PM
715
+ ): Promise<ITestShape["iselection"]>;
716
+
717
+ async test(
718
+ store: ITestShape["istore"],
719
+ testResourceConfiguration,
720
+ tLog: ITLog,
721
+ pm: PM,
722
+ filepath: string
723
+ ): Promise<ITestShape["then"] | undefined> {
724
+ tLog(" Then:", this.name);
725
+ try {
726
+ const butThenProxy = new Proxy(pm, {
727
+ get(target, prop, receiver) {
728
+ if (prop === "writeFileSync") {
729
+ return (fp, contents) =>
730
+ target[prop](`${filepath}/${fp}`, contents);
731
+ }
732
+
733
+ if (prop === "browser") {
734
+ return new Proxy(target[prop], {
735
+ get(bTarget, bProp, bReceiver) {
736
+ if (bProp === "pages") {
737
+ return async () => {
738
+ return bTarget.pages().then((pages) => {
739
+ return pages.map((page) => {
740
+ return new Proxy(page, {
741
+ get(pTarget, pProp, pReciever) {
742
+ if (pProp === "screenshot") {
743
+ return async (x) => {
744
+ return pm.customScreenShot(
745
+ {
746
+ ...x,
747
+ path:
748
+ `${testResourceConfiguration.fs}/${filepath}/butThen` +
749
+ "/" +
750
+ x.path,
751
+ },
752
+ page
753
+ );
754
+ // return await window["custom-screenshot"]({
755
+ // ...x,
756
+ // path:
757
+ // `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
758
+ // "/" +
759
+ // x.path,
760
+ // });
761
+ };
762
+ } else if (pProp === "close") {
763
+ return () => pTarget[pProp]();
764
+ } else if (pProp === "mainFrame") {
765
+ return () => pTarget[pProp]();
766
+ } else if (pProp === "exposeFunction") {
767
+ // return Reflect.get(target, prop, receiver);
768
+ return (...a) => pTarget[pProp](...a);
769
+ // return target[pProp];
770
+ } else if (pProp === "removeExposedFunction") {
771
+ // return Reflect.get(target, prop, receiver);
772
+ return pTarget[pProp].bind(pTarget);
773
+ // return target[pProp];
774
+ } else {
775
+ return Reflect.get(...arguments);
776
+ }
777
+ },
778
+ });
779
+ });
780
+ });
781
+ // return (await target.pages()).map((page) => {
782
+ // return new Proxy(page, handler2);
783
+ // });
784
+ };
785
+ }
786
+ },
787
+ });
788
+ }
789
+
790
+ return Reflect.get(...arguments);
791
+ },
792
+ });
793
+
794
+ const x = await this.butThen(
795
+ store,
796
+ this.thenCB,
797
+ testResourceConfiguration,
798
+ butThenProxy
799
+ // pm
800
+ );
801
+ return x;
802
+ } catch (e) {
803
+ console.log("test failed", e);
804
+ this.error = e.message;
805
+ throw e;
806
+ }
807
+ }
808
+ }
809
+
810
+ export abstract class BaseCheck<
811
+ ITestShape extends IBaseTest<
812
+ unknown,
813
+ unknown,
814
+ unknown,
815
+ unknown,
816
+ unknown,
817
+ unknown,
818
+ unknown,
819
+ Record<string, any>,
820
+ Record<string, any>,
821
+ Record<string, any>,
822
+ Record<string, any>,
823
+ Record<string, any>
824
+ >
825
+ > {
826
+ name: string;
827
+ features: string[];
828
+ checkCB: (whens, thens) => any;
829
+ whens: {
830
+ [K in keyof ITestShape["whens"]]: (p, tc) => BaseWhen<ITestShape>;
831
+ };
832
+ thens: {
833
+ [K in keyof ITestShape["thens"]]: (p, tc) => BaseThen<ITestShape>;
834
+ };
835
+
836
+ constructor(
837
+ name: string,
838
+ features: string[],
839
+ checkCB: (whens, thens) => any,
840
+ whens,
841
+ thens
842
+ ) {
843
+ this.name = name;
844
+ this.features = features;
845
+ this.checkCB = checkCB;
846
+ this.whens = whens;
847
+ this.thens = thens;
848
+ }
849
+
850
+ abstract checkThat(
851
+ subject: ITestShape["isubject"],
852
+ testResourceConfiguration,
853
+ artifactory: ITestArtifactory
854
+ ): Promise<ITestShape["istore"]>;
855
+
856
+ async afterEach(
857
+ store: ITestShape["istore"],
858
+ key: string,
859
+ cb,
860
+ pm: PM
861
+ ): Promise<unknown> {
862
+ return;
863
+ }
864
+
865
+ async check(
866
+ subject: ITestShape["isubject"],
867
+ key: string,
868
+ testResourceConfiguration,
869
+ tester,
870
+ artifactory: ITestArtifactory,
871
+ tLog: ITLog,
872
+ pm: PM
873
+ ) {
874
+ tLog(`\n Check: ${this.name}`);
875
+ const store = await this.checkThat(
876
+ subject,
877
+ testResourceConfiguration,
878
+ artifactory
879
+ );
880
+ await this.checkCB(
881
+ Object.entries(this.whens).reduce((a, [key, when]) => {
882
+ a[key] = async (payload) => {
883
+ return await when(payload, testResourceConfiguration).test(
884
+ store,
885
+ testResourceConfiguration,
886
+ tLog,
887
+ pm,
888
+ "x"
889
+ );
890
+ };
891
+ return a;
892
+ }, {}),
893
+ Object.entries(this.thens).reduce((a, [key, then]) => {
894
+ a[key] = async (payload) => {
895
+ const t = await then(payload, testResourceConfiguration).test(
896
+ store,
897
+ testResourceConfiguration,
898
+ tLog,
899
+ pm
900
+ );
901
+ tester(t);
902
+ };
903
+ return a;
904
+ }, {})
905
+ );
906
+
907
+ await this.afterEach(store, key, () => {}, pm);
908
+ return;
909
+ }
910
+ }