testeranto 0.79.6 → 0.79.7

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 (181) hide show
  1. package/dist/common/Features.js +84 -0
  2. package/dist/common/Node.js +23 -0
  3. package/dist/common/PM/index.js +7 -0
  4. package/dist/common/PM/main.js +641 -0
  5. package/dist/common/PM/node.js +88 -0
  6. package/dist/common/PM/web.js +132 -0
  7. package/dist/common/Project.js +186 -0
  8. package/dist/common/Puppeteer.js +104 -0
  9. package/dist/common/Reporter.js +112 -0
  10. package/dist/common/Scheduler.js +1 -0
  11. package/dist/common/SubPackages/puppeteer.js +21 -0
  12. package/dist/common/SubPackages/react/component/node.js +19 -0
  13. package/dist/common/SubPackages/react/component/web.js +19 -0
  14. package/dist/common/SubPackages/react/jsx/index.js +25 -0
  15. package/dist/common/SubPackages/react/jsx/node.js +10 -0
  16. package/dist/common/SubPackages/react/jsx/web.js +10 -0
  17. package/dist/common/SubPackages/react-dom/component/node.js +101 -0
  18. package/dist/common/SubPackages/react-dom/component/web.js +93 -0
  19. package/dist/common/SubPackages/react-dom/jsx/index.js +2 -0
  20. package/dist/common/SubPackages/react-dom/jsx/node.js +39 -0
  21. package/dist/common/SubPackages/react-dom/jsx/web.js +118 -0
  22. package/dist/common/SubPackages/react-test-renderer/MemoExoticComponent/node.js +44 -0
  23. package/dist/common/SubPackages/react-test-renderer/component/index.js +2 -0
  24. package/dist/common/SubPackages/react-test-renderer/component/interface.js +68 -0
  25. package/dist/common/SubPackages/react-test-renderer/component/node.js +8 -0
  26. package/dist/common/SubPackages/react-test-renderer/component/web.js +8 -0
  27. package/dist/common/SubPackages/react-test-renderer/fc/node.js +50 -0
  28. package/dist/common/SubPackages/react-test-renderer/fc/web.js +50 -0
  29. package/dist/common/SubPackages/react-test-renderer/jsx/index.js +48 -0
  30. package/dist/common/SubPackages/react-test-renderer/jsx/node.js +10 -0
  31. package/dist/common/SubPackages/react-test-renderer/jsx/web.js +10 -0
  32. package/dist/common/SubPackages/react-test-renderer/jsx-promised/index.js +42 -0
  33. package/dist/common/SubPackages/react-test-renderer/jsx-promised/node.js +10 -0
  34. package/dist/common/SubPackages/react-test-renderer/jsx-promised/web.js +10 -0
  35. package/dist/common/TaskManBackEnd.js +174 -0
  36. package/dist/common/Types.js +2 -0
  37. package/dist/common/Web.js +39 -0
  38. package/dist/common/esbuildConfigs/features.js +14 -0
  39. package/dist/common/esbuildConfigs/index.js +21 -0
  40. package/dist/common/esbuildConfigs/inputFilesPlugin.js +49 -0
  41. package/dist/common/esbuildConfigs/node.js +39 -0
  42. package/dist/common/esbuildConfigs/report.js +13 -0
  43. package/dist/common/esbuildConfigs/tests.js +13 -0
  44. package/dist/common/esbuildConfigs/web.js +57 -0
  45. package/dist/common/lib/abstractBase.js +553 -0
  46. package/dist/common/lib/basebuilder.js +79 -0
  47. package/dist/common/lib/classBuilder.js +42 -0
  48. package/dist/common/lib/core.js +75 -0
  49. package/dist/common/lib/index.js +22 -0
  50. package/dist/common/lib/types.js +2 -0
  51. package/dist/common/mongooseSchemas.js +56 -0
  52. package/dist/common/package.json +3 -0
  53. package/dist/common/preload.js +15 -0
  54. package/dist/common/puppeteerConfiger.js +24 -0
  55. package/dist/common/report.html.js +31 -0
  56. package/dist/common/tsconfig.common.tsbuildinfo +1 -0
  57. package/dist/common/utils.js +16 -0
  58. package/dist/common/web.html.js +22 -0
  59. package/dist/module/ExampleTab.js +112 -0
  60. package/dist/module/Features.js +73 -0
  61. package/dist/module/Node.js +18 -0
  62. package/dist/module/PM/index.js +3 -0
  63. package/dist/module/PM/main.js +611 -0
  64. package/dist/module/PM/node.js +81 -0
  65. package/dist/module/PM/web.js +125 -0
  66. package/dist/module/Project.js +179 -0
  67. package/dist/module/Puppeteer.js +99 -0
  68. package/dist/module/Reporter.js +107 -0
  69. package/dist/module/Scheduler.js +1 -0
  70. package/dist/module/SubPackages/puppeteer.js +16 -0
  71. package/dist/module/SubPackages/react/component/node.js +14 -0
  72. package/dist/module/SubPackages/react/component/web.js +14 -0
  73. package/dist/module/SubPackages/react/jsx/index.js +19 -0
  74. package/dist/module/SubPackages/react/jsx/node.js +5 -0
  75. package/dist/module/SubPackages/react/jsx/web.js +5 -0
  76. package/dist/module/SubPackages/react-dom/component/node.js +93 -0
  77. package/dist/module/SubPackages/react-dom/component/web.js +88 -0
  78. package/dist/module/SubPackages/react-dom/jsx/index.js +1 -0
  79. package/dist/module/SubPackages/react-dom/jsx/node.js +31 -0
  80. package/dist/module/SubPackages/react-dom/jsx/web.js +90 -0
  81. package/dist/module/SubPackages/react-test-renderer/MemoExoticComponent/node.js +16 -0
  82. package/dist/module/SubPackages/react-test-renderer/component/index.js +1 -0
  83. package/dist/module/SubPackages/react-test-renderer/component/interface.js +39 -0
  84. package/dist/module/SubPackages/react-test-renderer/component/node.js +3 -0
  85. package/dist/module/SubPackages/react-test-renderer/component/web.js +3 -0
  86. package/dist/module/SubPackages/react-test-renderer/fc/node.js +22 -0
  87. package/dist/module/SubPackages/react-test-renderer/fc/web.js +22 -0
  88. package/dist/module/SubPackages/react-test-renderer/jsx/index.js +19 -0
  89. package/dist/module/SubPackages/react-test-renderer/jsx/node.js +5 -0
  90. package/dist/module/SubPackages/react-test-renderer/jsx/web.js +5 -0
  91. package/dist/module/SubPackages/react-test-renderer/jsx-promised/index.js +16 -0
  92. package/dist/module/SubPackages/react-test-renderer/jsx-promised/node.js +5 -0
  93. package/dist/module/SubPackages/react-test-renderer/jsx-promised/web.js +5 -0
  94. package/dist/module/TaskManBackEnd.js +169 -0
  95. package/dist/module/TaskManFrontEnd.js +600 -0
  96. package/dist/module/Types.js +1 -0
  97. package/dist/module/Web.js +34 -0
  98. package/dist/module/esbuildConfigs/features.js +12 -0
  99. package/dist/module/esbuildConfigs/index.js +19 -0
  100. package/dist/module/esbuildConfigs/inputFilesPlugin.js +44 -0
  101. package/dist/module/esbuildConfigs/node.js +34 -0
  102. package/dist/module/esbuildConfigs/report.js +11 -0
  103. package/dist/module/esbuildConfigs/tests.js +11 -0
  104. package/dist/module/esbuildConfigs/web.js +52 -0
  105. package/dist/module/lib/abstractBase.js +545 -0
  106. package/dist/module/lib/basebuilder.js +75 -0
  107. package/dist/module/lib/classBuilder.js +38 -0
  108. package/dist/module/lib/core.js +72 -0
  109. package/dist/module/lib/index.js +18 -0
  110. package/dist/module/lib/types.js +1 -0
  111. package/dist/module/mongooseSchemas.js +50 -0
  112. package/dist/module/package.json +3 -0
  113. package/dist/module/preload.js +15 -0
  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 -0
  117. package/dist/module/utils.js +9 -0
  118. package/dist/module/web.html.js +20 -0
  119. package/dist/prebuild/Report.css +11358 -0
  120. package/dist/prebuild/Report.js +37666 -0
  121. package/dist/prebuild/TaskManBackEnd.mjs +180 -0
  122. package/dist/prebuild/TaskManFrontEnd.css +12301 -0
  123. package/dist/prebuild/TaskManFrontEnd.js +81737 -0
  124. package/dist/types/Features.d.ts +68 -0
  125. package/dist/types/Node.d.ts +6 -0
  126. package/dist/types/PM/index.d.ts +20 -0
  127. package/dist/types/PM/main.d.ts +31 -0
  128. package/dist/types/PM/node.d.ts +27 -0
  129. package/dist/types/PM/web.d.ts +25 -0
  130. package/dist/types/Project.d.ts +7 -0
  131. package/dist/types/Puppeteer.d.ts +1 -0
  132. package/dist/types/Reporter.d.ts +1 -0
  133. package/dist/types/Scheduler.d.ts +0 -0
  134. package/dist/types/SubPackages/puppeteer.d.ts +6 -0
  135. package/dist/types/SubPackages/react/component/node.d.ts +7 -0
  136. package/dist/types/SubPackages/react/component/web.d.ts +7 -0
  137. package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
  138. package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
  139. package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
  140. package/dist/types/SubPackages/react-dom/component/node.d.ts +12 -0
  141. package/dist/types/SubPackages/react-dom/component/web.d.ts +11 -0
  142. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
  143. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +6 -0
  144. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
  145. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +5 -0
  146. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
  147. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +9 -0
  148. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +8 -0
  149. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +3 -0
  150. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
  151. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +8 -0
  152. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +16 -0
  153. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +8 -0
  154. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +8 -0
  155. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
  156. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +4 -0
  157. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +4 -0
  158. package/dist/types/TaskManBackEnd.d.ts +1 -0
  159. package/dist/types/Types.d.ts +50 -0
  160. package/dist/types/Web.d.ts +6 -0
  161. package/dist/types/esbuildConfigs/features.d.ts +4 -0
  162. package/dist/types/esbuildConfigs/index.d.ts +4 -0
  163. package/dist/types/esbuildConfigs/inputFilesPlugin.d.ts +5 -0
  164. package/dist/types/esbuildConfigs/node.d.ts +4 -0
  165. package/dist/types/esbuildConfigs/report.d.ts +4 -0
  166. package/dist/types/esbuildConfigs/tests.d.ts +4 -0
  167. package/dist/types/esbuildConfigs/web.d.ts +4 -0
  168. package/dist/types/lib/abstractBase.d.ts +104 -0
  169. package/dist/types/lib/basebuilder.d.ts +27 -0
  170. package/dist/types/lib/classBuilder.d.ts +7 -0
  171. package/dist/types/lib/core.d.ts +8 -0
  172. package/dist/types/lib/index.d.ts +59 -0
  173. package/dist/types/lib/types.d.ts +64 -0
  174. package/dist/types/mongooseSchemas.d.ts +124 -0
  175. package/dist/types/preload.d.ts +0 -0
  176. package/dist/types/puppeteerConfiger.d.ts +4 -0
  177. package/dist/types/report.html.d.ts +2 -0
  178. package/dist/types/tsconfig.types.tsbuildinfo +1 -0
  179. package/dist/types/utils.d.ts +2 -0
  180. package/dist/types/web.html.d.ts +2 -0
  181. package/package.json +2 -2
@@ -0,0 +1,553 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseCheck = exports.BaseThen = exports.BaseWhen = exports.BaseGiven = exports.BaseSuite = void 0;
4
+ class BaseSuite {
5
+ constructor(name, index, givens = {}, checks = []) {
6
+ this.name = name;
7
+ this.index = index;
8
+ this.givens = givens;
9
+ this.checks = checks;
10
+ this.fails = [];
11
+ }
12
+ toObj() {
13
+ return {
14
+ name: this.name,
15
+ givens: Object.keys(this.givens).map((k) => this.givens[k].toObj()),
16
+ fails: this.fails,
17
+ };
18
+ }
19
+ setup(s, artifactory, tr, pm) {
20
+ return new Promise((res) => res(s));
21
+ }
22
+ assertThat(t) {
23
+ return t;
24
+ }
25
+ afterAll(store, artifactory, pm) {
26
+ return store;
27
+ }
28
+ async run(input, testResourceConfiguration, artifactory, tLog, pm) {
29
+ this.testResourceConfiguration = testResourceConfiguration;
30
+ tLog("test resources: ", JSON.stringify(testResourceConfiguration));
31
+ const suiteArtifactory = (fPath, value) => artifactory(`suite-${this.index}-${this.name}/${fPath}`, value);
32
+ console.log("\nSuite:", this.index, this.name);
33
+ tLog("\nSuite:", this.index, this.name);
34
+ const sNdx = this.index;
35
+ const sName = this.name;
36
+ for (const [gNdx, g] of Object.entries(this.givens)) {
37
+ const beforeAllProxy = new Proxy(pm, {
38
+ get(target, prop, receiver) {
39
+ if (prop === "writeFileSync") {
40
+ return (fp, contents) => target[prop](`suite-${sNdx}/beforeAll/${fp}`, contents);
41
+ }
42
+ if (prop === "browser") {
43
+ return new Proxy(target[prop], {
44
+ get(bTarget, bProp, bReceiver) {
45
+ if (bProp === "pages") {
46
+ return async () => {
47
+ return bTarget.pages().then((pages) => {
48
+ return pages.map((page) => {
49
+ return new Proxy(page, {
50
+ get(pTarget, pProp, pReciever) {
51
+ if (pProp === "screenshot") {
52
+ return async (x) => {
53
+ return pm.customScreenShot(Object.assign(Object.assign({}, x), { path: `${testResourceConfiguration.fs}/suite-${sNdx}/beforeAll` +
54
+ "/" +
55
+ x.path }), page);
56
+ // return await window["custom-screenshot"]({
57
+ // ...x,
58
+ // path:
59
+ // `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
60
+ // "/" +
61
+ // x.path,
62
+ // });
63
+ };
64
+ }
65
+ else if (pProp === "mainFrame") {
66
+ return () => pTarget[pProp]();
67
+ }
68
+ else if (pProp === "close") {
69
+ return () => pTarget[pProp]();
70
+ }
71
+ // else if (pProp === "mainFrame") {
72
+ // return () => target[pProp](...arguments);
73
+ // }
74
+ else {
75
+ return Reflect.get(...arguments);
76
+ }
77
+ },
78
+ });
79
+ });
80
+ });
81
+ // return (await target.pages()).map((page) => {
82
+ // return new Proxy(page, handler2);
83
+ // });
84
+ };
85
+ }
86
+ },
87
+ });
88
+ }
89
+ return Reflect.get(...arguments);
90
+ },
91
+ });
92
+ const subject = await this.setup(input, suiteArtifactory, testResourceConfiguration, beforeAllProxy);
93
+ const giver = this.givens[gNdx];
94
+ try {
95
+ this.store = await giver.give(subject, gNdx, testResourceConfiguration, this.assertThat, suiteArtifactory, tLog, pm, sNdx);
96
+ }
97
+ catch (e) {
98
+ console.error(e);
99
+ this.fails.push(giver);
100
+ // return this;
101
+ }
102
+ }
103
+ const afterAllProxy = new Proxy(pm, {
104
+ get(target, prop, receiver) {
105
+ if (prop === "writeFileSync") {
106
+ return (fp, contents) => target[prop](`suite-${sNdx}/afterAll/${fp}`, contents);
107
+ }
108
+ if (prop === "browser") {
109
+ return new Proxy(target[prop], {
110
+ get(bTarget, bProp, bReceiver) {
111
+ if (bProp === "pages") {
112
+ return async () => {
113
+ return bTarget.pages().then((pages) => {
114
+ return pages.map((page) => {
115
+ return new Proxy(page, {
116
+ get(pTarget, pProp, pReciever) {
117
+ if (pProp === "screenshot") {
118
+ return async (x) => {
119
+ return pm.customScreenShot(Object.assign(Object.assign({}, x), { path: `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
120
+ "/" +
121
+ x.path }));
122
+ // return await window["custom-screenshot"]({
123
+ // ...x,
124
+ // path:
125
+ // `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
126
+ // "/" +
127
+ // x.path,
128
+ // });
129
+ };
130
+ }
131
+ else if (pProp === "mainFrame") {
132
+ return () => pTarget[pProp]();
133
+ }
134
+ else if (pProp === "close") {
135
+ return () => pTarget[pProp]();
136
+ }
137
+ // else if (pProp === "mainFrame") {
138
+ // return () => target[pProp](...arguments);
139
+ // }
140
+ else {
141
+ return Reflect.get(...arguments);
142
+ }
143
+ },
144
+ });
145
+ });
146
+ });
147
+ // return (await target.pages()).map((page) => {
148
+ // return new Proxy(page, handler2);
149
+ // });
150
+ };
151
+ }
152
+ },
153
+ });
154
+ }
155
+ return Reflect.get(...arguments);
156
+ },
157
+ });
158
+ // pm.browser
159
+ try {
160
+ this.afterAll(this.store, artifactory, afterAllProxy);
161
+ }
162
+ catch (e) {
163
+ console.error(e);
164
+ // this.fails.push(this);
165
+ // return this;
166
+ }
167
+ // for (const [ndx, thater] of this.checks.entries()) {
168
+ // await thater.check(
169
+ // subject,
170
+ // thater.name,
171
+ // testResourceConfiguration,
172
+ // this.assertThat,
173
+ // suiteArtifactory,
174
+ // tLog,
175
+ // pm
176
+ // );
177
+ // }
178
+ // @TODO fix me
179
+ // for (const k of Object.keys(this.givens)) {
180
+ // const giver = this.givens[k];
181
+ // try {
182
+ // giver.afterAll(this.store, artifactory, pm);
183
+ // } catch (e) {
184
+ // console.error(e);
185
+ // this.fails.push(giver);
186
+ // return this;
187
+ // }
188
+ // }
189
+ ////////////////
190
+ return this;
191
+ }
192
+ }
193
+ exports.BaseSuite = BaseSuite;
194
+ class BaseGiven {
195
+ constructor(name, features, whens, thens, givenCB, initialValues) {
196
+ this.name = name;
197
+ this.features = features;
198
+ this.whens = whens;
199
+ this.thens = thens;
200
+ this.givenCB = givenCB;
201
+ this.initialValues = initialValues;
202
+ }
203
+ beforeAll(store, artifactory) {
204
+ return store;
205
+ }
206
+ toObj() {
207
+ return {
208
+ name: this.name,
209
+ whens: this.whens.map((w) => w.toObj()),
210
+ thens: this.thens.map((t) => t.toObj()),
211
+ error: this.error ? [this.error, this.error.stack] : null,
212
+ // fail: this.fail ? [this.fail] : false,
213
+ features: this.features,
214
+ };
215
+ }
216
+ async afterEach(store, key, artifactory, pm) {
217
+ return store;
218
+ }
219
+ async give(subject, key, testResourceConfiguration, tester, artifactory, tLog, pm, suiteNdx) {
220
+ tLog(`\n Given: ${this.name}`);
221
+ const givenArtifactory = (fPath, value) => artifactory(`given-${key}/${fPath}`, value);
222
+ try {
223
+ // tLog(`\n Given this.store`, this.store);
224
+ const beforeEachProxy = new Proxy(pm, {
225
+ get(target, prop, receiver) {
226
+ if (prop === "writeFileSync") {
227
+ return (fp, contents) => target[prop](`suite-${suiteNdx}/given-${key}/when/beforeEach/${fp}`, contents);
228
+ }
229
+ return Reflect.get(...arguments);
230
+ },
231
+ });
232
+ this.store = await this.givenThat(subject, testResourceConfiguration, givenArtifactory, this.givenCB, beforeEachProxy);
233
+ for (const [whenNdx, whenStep] of this.whens.entries()) {
234
+ await whenStep.test(this.store, testResourceConfiguration, tLog, pm, `suite-${suiteNdx}/given-${key}/when/${whenNdx}`);
235
+ }
236
+ for (const [thenNdx, thenStep] of this.thens.entries()) {
237
+ const t = await thenStep.test(this.store, testResourceConfiguration, tLog, pm, `suite-${suiteNdx}/given-${key}/then-${thenNdx}`);
238
+ tester(t);
239
+ }
240
+ }
241
+ catch (e) {
242
+ this.error = e;
243
+ tLog(e);
244
+ tLog("\u0007"); // bell
245
+ // throw e;
246
+ }
247
+ finally {
248
+ try {
249
+ // const afterEachProxy = new Proxy(pm, {
250
+ // get(target, prop, receiver) {
251
+ // if (prop === "writeFileSync") {
252
+ // console.log("afterEachProxy", arguments, target[prop]);
253
+ // return (fp, contents) =>
254
+ // // target[prop](`${key}/andWhen/${fp}`, contents);
255
+ // target[prop](`${key}/afterEach/${fp}`, contents);
256
+ // }
257
+ // return Reflect.get(...arguments);
258
+ // },
259
+ // });
260
+ // await this.afterEach(this.store, key, givenArtifactory, afterEachProxy);
261
+ // await this.afterEach(this.store, key, givenArtifactory, pm);
262
+ const afterEachProxy = new Proxy(pm, {
263
+ get(target, prop, receiver) {
264
+ if (prop === "writeFileSync") {
265
+ return (fp, contents) => target[prop](`suite-${suiteNdx}/given-${key}/afterAll/${fp}`, contents);
266
+ }
267
+ if (prop === "browser") {
268
+ return new Proxy(target[prop], {
269
+ get(bTarget, bProp, bReceiver) {
270
+ if (bProp === "pages") {
271
+ return async () => {
272
+ return bTarget.pages().then((pages) => {
273
+ return pages.map((page) => {
274
+ return new Proxy(page, {
275
+ get(pTarget, pProp, pReciever) {
276
+ if (pProp === "screenshot") {
277
+ return async (x) => {
278
+ // console.log(
279
+ // "custom-screenshot-MARK-afterEachProxy",
280
+ // window["custom-screenshot"].toString()
281
+ // );
282
+ return pm.customScreenShot(Object.assign(Object.assign({}, x), { path: `${testResourceConfiguration.fs}/suite-${suiteNdx}/given-${key}/afterEach` +
283
+ "/" +
284
+ x.path }), page);
285
+ // return await pTarget[pProp]({
286
+ // ...x,
287
+ // path:
288
+ // `${testResourceConfiguration.fs}/suite-${suiteNdx}/given-${key}/afterEach` +
289
+ // "/" +
290
+ // x.path,
291
+ // });
292
+ };
293
+ }
294
+ else if (pProp === "mainFrame") {
295
+ return () => pTarget[pProp]();
296
+ // return target[pProp];
297
+ // return Reflect.get(...arguments);
298
+ }
299
+ else if (pProp === "exposeFunction") {
300
+ // return Reflect.get(target, prop, receiver);
301
+ return (...a) => pTarget[pProp](...a);
302
+ // return target[pProp];
303
+ }
304
+ else if (pProp === "removeExposedFunction") {
305
+ // return Reflect.get(target, prop, receiver);
306
+ return pTarget[pProp].bind(pTarget);
307
+ // return target[pProp];
308
+ }
309
+ // else if (pProp === "#frameManager") {
310
+ // return () => target[pProp](...arguments);
311
+ // }
312
+ else {
313
+ return Reflect.get(...arguments);
314
+ }
315
+ },
316
+ });
317
+ });
318
+ });
319
+ // return (await target.pages()).map((page) => {
320
+ // return new Proxy(page, handler2);
321
+ // });
322
+ };
323
+ }
324
+ },
325
+ });
326
+ }
327
+ return Reflect.get(...arguments);
328
+ },
329
+ });
330
+ await this.afterEach(this.store, key, givenArtifactory, afterEachProxy);
331
+ }
332
+ catch (e) {
333
+ console.error("afterEach failed! no error will be recorded!", e);
334
+ }
335
+ }
336
+ return this.store;
337
+ }
338
+ }
339
+ exports.BaseGiven = BaseGiven;
340
+ class BaseWhen {
341
+ constructor(name, whenCB) {
342
+ this.name = name;
343
+ this.whenCB = whenCB;
344
+ }
345
+ toObj() {
346
+ return {
347
+ name: this.name,
348
+ error: this.error,
349
+ };
350
+ }
351
+ async test(store, testResourceConfiguration, tLog, pm, key) {
352
+ tLog(" When:", this.name);
353
+ const name = this.name;
354
+ const andWhenProxy = new Proxy(pm, {
355
+ get(target, prop, receiver) {
356
+ if (prop === "writeFileSync") {
357
+ return (fp, contents) =>
358
+ // target[prop](`${key}/andWhen/${fp}`, contents);
359
+ target[prop](`${key}/andWhen/${fp}`, contents);
360
+ }
361
+ /////////////////////
362
+ if (prop === "browser") {
363
+ return new Proxy(target[prop], {
364
+ get(bTarget, bProp, bReceiver) {
365
+ if (bProp === "pages") {
366
+ return async () => {
367
+ return bTarget.pages().then((pages) => {
368
+ return pages.map((page) => {
369
+ return new Proxy(page, {
370
+ get(pTarget, pProp, pReciever) {
371
+ if (pProp === "screenshot") {
372
+ return async (x) => {
373
+ // console.log(
374
+ // "custom-screenshot-MARK-afterEachProxy",
375
+ // window["custom-screenshot"].toString()
376
+ // );
377
+ return pm.customScreenShot(Object.assign(Object.assign({}, x), { path: `${testResourceConfiguration.fs}/${key}/afterEach` +
378
+ "/" +
379
+ x.path }), page);
380
+ // return await pTarget[pProp]({
381
+ // ...x,
382
+ // path:
383
+ // `${testResourceConfiguration.fs}/suite-${suiteNdx}/given-${key}/afterEach` +
384
+ // "/" +
385
+ // x.path,
386
+ // });
387
+ };
388
+ }
389
+ else if (pProp === "mainFrame") {
390
+ return () => pTarget[pProp]();
391
+ // return target[pProp];
392
+ // return Reflect.get(...arguments);
393
+ }
394
+ else if (pProp === "exposeFunction") {
395
+ // return Reflect.get(target, prop, receiver);
396
+ return pTarget[pProp].bind(pTarget);
397
+ // return target[pProp];
398
+ }
399
+ else if (pProp === "removeExposedFunction") {
400
+ // return Reflect.get(target, prop, receiver);
401
+ return pTarget[pProp].bind(pTarget);
402
+ // return target[pProp];
403
+ }
404
+ else {
405
+ return Reflect.get(...arguments);
406
+ }
407
+ },
408
+ });
409
+ });
410
+ });
411
+ // return (await target.pages()).map((page) => {
412
+ // return new Proxy(page, handler2);
413
+ // });
414
+ };
415
+ }
416
+ },
417
+ });
418
+ }
419
+ ///////////////////////
420
+ return Reflect.get(...arguments);
421
+ },
422
+ });
423
+ try {
424
+ return await this.andWhen(store, this.whenCB, testResourceConfiguration, andWhenProxy);
425
+ }
426
+ catch (e) {
427
+ this.error = true;
428
+ throw e;
429
+ }
430
+ }
431
+ }
432
+ exports.BaseWhen = BaseWhen;
433
+ class BaseThen {
434
+ constructor(name, thenCB) {
435
+ this.name = name;
436
+ this.thenCB = thenCB;
437
+ this.error = false;
438
+ }
439
+ toObj() {
440
+ return {
441
+ name: this.name,
442
+ error: this.error,
443
+ };
444
+ }
445
+ async test(store, testResourceConfiguration, tLog, pm, filepath) {
446
+ tLog(" Then:", this.name);
447
+ try {
448
+ const butThenProxy = new Proxy(pm, {
449
+ get(target, prop, receiver) {
450
+ if (prop === "writeFileSync") {
451
+ return (fp, contents) => target[prop](`${filepath}/${fp}`, contents);
452
+ }
453
+ if (prop === "browser") {
454
+ return new Proxy(target[prop], {
455
+ get(bTarget, bProp, bReceiver) {
456
+ if (bProp === "pages") {
457
+ return async () => {
458
+ return bTarget.pages().then((pages) => {
459
+ return pages.map((page) => {
460
+ return new Proxy(page, {
461
+ get(pTarget, pProp, pReciever) {
462
+ if (pProp === "screenshot") {
463
+ return async (x) => {
464
+ return pm.customScreenShot(Object.assign(Object.assign({}, x), { path: `${testResourceConfiguration.fs}/${filepath}/butThen` +
465
+ "/" +
466
+ x.path }), page);
467
+ // return await window["custom-screenshot"]({
468
+ // ...x,
469
+ // path:
470
+ // `${testResourceConfiguration.fs}/suite-${sNdx}/afterAll` +
471
+ // "/" +
472
+ // x.path,
473
+ // });
474
+ };
475
+ }
476
+ else if (pProp === "close") {
477
+ return () => pTarget[pProp]();
478
+ }
479
+ else if (pProp === "mainFrame") {
480
+ return () => pTarget[pProp]();
481
+ }
482
+ else if (pProp === "exposeFunction") {
483
+ // return Reflect.get(target, prop, receiver);
484
+ return (...a) => pTarget[pProp](...a);
485
+ // return target[pProp];
486
+ }
487
+ else if (pProp === "removeExposedFunction") {
488
+ // return Reflect.get(target, prop, receiver);
489
+ return pTarget[pProp].bind(pTarget);
490
+ // return target[pProp];
491
+ }
492
+ else {
493
+ return Reflect.get(...arguments);
494
+ }
495
+ },
496
+ });
497
+ });
498
+ });
499
+ // return (await target.pages()).map((page) => {
500
+ // return new Proxy(page, handler2);
501
+ // });
502
+ };
503
+ }
504
+ },
505
+ });
506
+ }
507
+ return Reflect.get(...arguments);
508
+ },
509
+ });
510
+ const x = await this.butThen(store, this.thenCB, testResourceConfiguration, butThenProxy
511
+ // pm
512
+ );
513
+ return x;
514
+ }
515
+ catch (e) {
516
+ console.log("test failed", e);
517
+ this.error = e.message;
518
+ throw e;
519
+ }
520
+ }
521
+ }
522
+ exports.BaseThen = BaseThen;
523
+ class BaseCheck {
524
+ constructor(name, features, checkCB, whens, thens) {
525
+ this.name = name;
526
+ this.features = features;
527
+ this.checkCB = checkCB;
528
+ this.whens = whens;
529
+ this.thens = thens;
530
+ }
531
+ async afterEach(store, key, cb, pm) {
532
+ return;
533
+ }
534
+ async check(subject, key, testResourceConfiguration, tester, artifactory, tLog, pm) {
535
+ tLog(`\n Check: ${this.name}`);
536
+ const store = await this.checkThat(subject, testResourceConfiguration, artifactory);
537
+ await this.checkCB(Object.entries(this.whens).reduce((a, [key, when]) => {
538
+ a[key] = async (payload) => {
539
+ return await when(payload, testResourceConfiguration).test(store, testResourceConfiguration, tLog, pm, "x");
540
+ };
541
+ return a;
542
+ }, {}), Object.entries(this.thens).reduce((a, [key, then]) => {
543
+ a[key] = async (payload) => {
544
+ const t = await then(payload, testResourceConfiguration).test(store, testResourceConfiguration, tLog, pm);
545
+ tester(t);
546
+ };
547
+ return a;
548
+ }, {}));
549
+ await this.afterEach(store, key, () => { }, pm);
550
+ return;
551
+ }
552
+ }
553
+ exports.BaseCheck = BaseCheck;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseBuilder = void 0;
4
+ class BaseBuilder {
5
+ constructor(input, suitesOverrides, givenOverides, whenOverides, thenOverides, checkOverides, testResourceRequirement, testSpecification) {
6
+ this.input = input;
7
+ this.artifacts = [];
8
+ this.artifacts = [];
9
+ this.testResourceRequirement = testResourceRequirement;
10
+ this.suitesOverrides = suitesOverrides;
11
+ this.givenOverides = givenOverides;
12
+ this.whenOverides = whenOverides;
13
+ this.thenOverides = thenOverides;
14
+ this.checkOverides = checkOverides;
15
+ this.testSpecification = testSpecification;
16
+ this.specs = testSpecification(this.Suites(), this.Given(), this.When(), this.Then(), this.Check());
17
+ this.testJobs = this.specs.map((suite) => {
18
+ const suiteRunner = (suite) => async (puppetMaster, tLog) => {
19
+ await puppetMaster.startPuppeteer({
20
+ browserWSEndpoint: puppetMaster.testResourceConfiguration.browserWSEndpoint,
21
+ }, puppetMaster.testResourceConfiguration.fs);
22
+ return await suite.run(input, puppetMaster.testResourceConfiguration, (fPath, value) => puppetMaster.testArtiFactoryfileWriter(tLog, (p) => {
23
+ this.artifacts.push(p);
24
+ })(puppetMaster.testResourceConfiguration.fs + "/" + fPath, value), tLog, puppetMaster);
25
+ };
26
+ const runner = suiteRunner(suite);
27
+ return {
28
+ test: suite,
29
+ toObj: () => {
30
+ return suite.toObj();
31
+ },
32
+ runner,
33
+ receiveTestResourceConfig: async function (puppetMaster) {
34
+ await puppetMaster.mkdirSync();
35
+ const logFilePath = "log.txt";
36
+ const access = await puppetMaster.createWriteStream(logFilePath);
37
+ const tLog = (...l) => {
38
+ puppetMaster.write(access, `${l.toString()}\n`);
39
+ };
40
+ const suiteDone = await runner(puppetMaster, tLog);
41
+ const logPromise = new Promise((res, rej) => {
42
+ puppetMaster.end(access);
43
+ res(true);
44
+ });
45
+ const numberOfFailures = Object.keys(suiteDone.givens).filter((k) => {
46
+ return suiteDone.givens[k].error;
47
+ }).length;
48
+ puppetMaster.writeFileSync(`exitcode`, numberOfFailures.toString());
49
+ puppetMaster.writeFileSync(`tests.json`, JSON.stringify(this.toObj(), null, 2));
50
+ console.log(`exiting gracefully with ${numberOfFailures} failures.`);
51
+ return {
52
+ failed: numberOfFailures,
53
+ artifacts: this.artifacts || [],
54
+ logPromise,
55
+ };
56
+ },
57
+ };
58
+ });
59
+ }
60
+ Specs() {
61
+ return this.specs;
62
+ }
63
+ Suites() {
64
+ return this.suitesOverrides;
65
+ }
66
+ Given() {
67
+ return this.givenOverides;
68
+ }
69
+ When() {
70
+ return this.whenOverides;
71
+ }
72
+ Then() {
73
+ return this.thenOverides;
74
+ }
75
+ Check() {
76
+ return this.checkOverides;
77
+ }
78
+ }
79
+ exports.BaseBuilder = BaseBuilder;