testeranto 0.177.0 → 0.197.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 (546) hide show
  1. package/ALL_LICENSES.txt +11246 -0
  2. package/LICENSE +21 -0
  3. package/README.md +24 -4
  4. package/default-project.json +44 -0
  5. package/design-editor/DesignEditor.tsx +247 -0
  6. package/design-editor/index.ts +2 -0
  7. package/design-editor/server.ts +121 -0
  8. package/design-editor/types.ts +16 -0
  9. package/designs/default-project.json +210 -0
  10. package/dist/common/design-editor/DesignEditor.js +239 -0
  11. package/dist/common/design-editor/index.js +18 -0
  12. package/dist/common/design-editor/server.js +98 -0
  13. package/dist/common/design-editor/types.js +2 -0
  14. package/dist/common/src/App.js +53 -0
  15. package/dist/common/src/Node.js +4 -8
  16. package/dist/common/src/PM/PM_WithEslintAndTsc.js +10 -34
  17. package/dist/common/src/PM/base.js +1 -1
  18. package/dist/common/src/PM/main.js +581 -113
  19. package/dist/common/src/PM/node.js +4 -2
  20. package/dist/common/src/PM/nodeSidecar.js +1 -0
  21. package/dist/common/src/PM/pure.js +20 -57
  22. package/dist/common/src/PM/pureSidecar.js +1 -1
  23. package/dist/common/src/PM/types.js +1 -0
  24. package/dist/common/src/PM/web.js +7 -4
  25. package/dist/common/src/Pure.js +1 -1
  26. package/dist/common/src/Pure.test.js +49 -79
  27. package/dist/common/src/ReportServer.js +8 -2
  28. package/dist/common/src/build.js +31 -40
  29. package/dist/common/src/components/DesignEditorPage.js +169 -0
  30. package/dist/common/src/components/SunriseAnimation.js +291 -0
  31. package/dist/common/src/components/SunriseAnimation.test/interface.js +67 -0
  32. package/dist/common/src/components/SunriseAnimation.test/types.js +2 -0
  33. package/dist/common/src/components/TestStatusBadge.js +1 -21
  34. package/dist/common/src/components/pure/AppFrame.js +69 -0
  35. package/dist/common/src/components/pure/AppFrame.test/implementation.js +63 -0
  36. package/dist/common/src/components/pure/AppFrame.test/index.js +14 -0
  37. package/dist/common/src/components/pure/AppFrame.test/specification.js +25 -0
  38. package/dist/common/src/components/pure/AppFrame.test/types.js +3 -0
  39. package/dist/common/src/components/pure/FeaturesReporterView.js +23 -0
  40. package/dist/common/src/components/pure/FeaturesReporterView.test/implementation.js +84 -0
  41. package/dist/common/src/components/pure/FeaturesReporterView.test/index.js +14 -0
  42. package/dist/common/src/components/pure/FeaturesReporterView.test/specification.js +27 -0
  43. package/dist/common/src/components/pure/FeaturesReporterView.test/types.js +2 -0
  44. package/dist/common/src/components/pure/ModalContent.js +86 -0
  45. package/dist/common/src/components/pure/ModalContent.test/implementation.js +35 -0
  46. package/dist/common/src/components/pure/ModalContent.test/index.js +58 -0
  47. package/dist/common/src/components/pure/ModalContent.test/specification.js +19 -0
  48. package/dist/common/src/components/pure/ModalContent.test/types.js +4 -0
  49. package/dist/common/src/{NavBar.js → components/pure/NavBar.js} +9 -10
  50. package/dist/common/src/components/pure/ProcessManager.js +112 -0
  51. package/dist/common/src/components/pure/ProcessManagerView.js +237 -0
  52. package/dist/common/src/components/pure/ProjectPageView.js +53 -76
  53. package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +167 -54
  54. package/dist/common/src/components/pure/ProjectPageView.test/index.js +5 -1
  55. package/dist/common/src/components/pure/ProjectPageView.test/specification.js +15 -2
  56. package/dist/common/src/components/pure/ProjectPageView.test/types.js +2 -0
  57. package/dist/common/src/components/pure/ProjectsPageView.js +72 -0
  58. package/dist/common/src/components/pure/SettingsButton.js +13 -0
  59. package/dist/common/src/components/pure/SingleProcessView.js +214 -0
  60. package/dist/common/src/components/pure/TestPageView.js +513 -0
  61. package/dist/common/src/components/pure/TestPageView.test/implementation.js +157 -0
  62. package/dist/common/src/components/pure/TestPageView.test/index.js +15 -0
  63. package/dist/common/src/components/pure/TestPageView.test/specification.js +26 -0
  64. package/dist/common/src/components/pure/TestPageView.test/types.js +4 -0
  65. package/dist/common/src/components/pure/ThemeCard.js +15 -0
  66. package/dist/common/src/components/stateful/FeaturesReporter.js +59 -0
  67. package/dist/common/src/components/stateful/FileTree.js +40 -0
  68. package/dist/common/src/components/stateful/ProcessManagerPage.js +112 -0
  69. package/dist/common/src/components/stateful/ProjectPage.js +101 -0
  70. package/dist/common/src/components/stateful/ProjectsPage.js +118 -0
  71. package/dist/common/src/components/stateful/SettingsPage.js +72 -0
  72. package/dist/common/src/components/stateful/SingleProcessPage.js +147 -0
  73. package/dist/common/src/components/stateful/TestPage.js +229 -0
  74. package/dist/common/src/components/stateful/TextEditorPage.js +154 -0
  75. package/dist/common/src/defaultConfig.js +1 -0
  76. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +3 -4
  77. package/dist/common/src/esbuildConfigs/web.js +1 -1
  78. package/dist/common/src/lib/BaseSuite.js +7 -3
  79. package/dist/common/src/lib/BaseSuite.test/mock.js +17 -41
  80. package/dist/common/src/lib/BaseSuite.test/test.js +33 -42
  81. package/dist/common/src/lib/Sidecar.js +1 -0
  82. package/dist/common/src/lib/abstractBase.js +40 -13
  83. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.adapter.js +12 -12
  84. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +15 -13
  85. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.mock.js +28 -17
  86. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.pure.js +2 -2
  87. package/dist/common/src/lib/basebuilder.js +29 -35
  88. package/dist/common/src/lib/classBuilder.js +5 -3
  89. package/dist/common/src/lib/core.js +3 -6
  90. package/dist/common/src/lib/core.test/MockCore.js +0 -14
  91. package/dist/common/src/lib/core.test/core.test.adapter.js +2 -9
  92. package/dist/common/src/lib/core.test/core.test.implementation.js +3 -7
  93. package/dist/common/src/lib/index.js +13 -14
  94. package/dist/common/src/lib/pmProxy.js +37 -16
  95. package/dist/common/src/lib/pmProxy.test/adapter.js +20 -4
  96. package/dist/common/src/lib/pmProxy.test/implementation.js +93 -34
  97. package/dist/common/src/lib/pmProxy.test/mockPMBase.js +9 -0
  98. package/dist/common/src/lib/pmProxy.test/specification.js +3 -0
  99. package/dist/common/src/mothership/index.js +5 -0
  100. package/dist/common/src/mothership/test.js +44 -25
  101. package/dist/common/src/types/features.js +34 -0
  102. package/dist/common/src/utils/api.js +57 -27
  103. package/dist/common/src/utils/featureUtils.js +29 -0
  104. package/dist/common/src/utils/logFiles.js +51 -0
  105. package/dist/common/src/utils/makePrompt.js +116 -0
  106. package/dist/common/src/web.html.js +2 -6
  107. package/dist/common/testeranto.config.js +54 -24
  108. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  109. package/dist/module/design-editor/DesignEditor.js +203 -0
  110. package/dist/module/design-editor/index.js +2 -0
  111. package/dist/module/design-editor/server.js +92 -0
  112. package/dist/module/design-editor/types.js +1 -0
  113. package/dist/module/src/App.js +19 -17
  114. package/dist/module/src/Node.js +4 -8
  115. package/dist/module/src/PM/PM_WithEslintAndTsc.js +11 -35
  116. package/dist/module/src/PM/base.js +1 -1
  117. package/dist/module/src/PM/main.js +577 -109
  118. package/dist/module/src/PM/node.js +4 -2
  119. package/dist/module/src/PM/nodeSidecar.js +1 -0
  120. package/dist/module/src/PM/pure.js +20 -57
  121. package/dist/module/src/PM/pureSidecar.js +1 -1
  122. package/dist/module/src/PM/types.js +1 -0
  123. package/dist/module/src/PM/web.js +7 -4
  124. package/dist/module/src/Pure.js +1 -1
  125. package/dist/module/src/Pure.test.js +49 -79
  126. package/dist/module/src/ReportServer.js +8 -2
  127. package/dist/module/src/build.js +26 -38
  128. package/dist/module/src/components/DesignEditorPage.js +132 -0
  129. package/dist/module/src/components/SunriseAnimation.test/interface.js +32 -1
  130. package/dist/module/src/components/SunriseAnimation.test/types.js +1 -0
  131. package/dist/module/src/components/TestStatusBadge.js +1 -21
  132. package/dist/module/src/components/pure/AppFrame.js +32 -0
  133. package/dist/module/src/components/pure/AppFrame.test/implementation.js +57 -0
  134. package/dist/module/src/components/pure/AppFrame.test/index.js +9 -0
  135. package/dist/module/src/components/pure/AppFrame.test/specification.js +21 -0
  136. package/dist/module/src/components/pure/AppFrame.test/types.js +2 -0
  137. package/dist/module/src/components/pure/FeaturesReporterView.js +16 -0
  138. package/dist/module/src/components/pure/FeaturesReporterView.test/implementation.js +81 -0
  139. package/dist/module/src/components/pure/FeaturesReporterView.test/index.js +9 -0
  140. package/dist/module/src/components/pure/FeaturesReporterView.test/specification.js +23 -0
  141. package/dist/module/src/components/pure/FeaturesReporterView.test/types.js +1 -0
  142. package/dist/module/src/components/pure/ModalContent.js +79 -0
  143. package/dist/module/src/components/pure/ModalContent.test/implementation.js +32 -0
  144. package/dist/module/src/components/pure/ModalContent.test/index.js +53 -0
  145. package/dist/module/src/components/pure/ModalContent.test/specification.js +15 -0
  146. package/dist/module/src/components/pure/ModalContent.test/types.js +3 -0
  147. package/dist/module/src/{NavBar.js → components/pure/NavBar.js} +10 -11
  148. package/dist/module/src/components/pure/ProcessManager.js +75 -0
  149. package/dist/module/src/components/pure/ProcessManagerView.js +200 -0
  150. package/dist/module/src/components/pure/ProjectPageView.js +54 -77
  151. package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +167 -54
  152. package/dist/module/src/components/pure/ProjectPageView.test/index.js +5 -1
  153. package/dist/module/src/components/pure/ProjectPageView.test/specification.js +15 -2
  154. package/dist/module/src/components/pure/ProjectPageView.test/types.js +2 -0
  155. package/dist/module/src/components/pure/ProjectsPageView.js +21 -14
  156. package/dist/module/src/components/pure/SettingsButton.js +6 -0
  157. package/dist/module/src/components/pure/SingleProcessView.js +214 -0
  158. package/dist/module/src/components/pure/TestPageView.js +470 -142
  159. package/dist/module/src/components/pure/TestPageView.test/implementation.js +121 -0
  160. package/dist/module/src/components/pure/TestPageView.test/index.js +10 -0
  161. package/dist/module/src/components/pure/TestPageView.test/specification.js +22 -0
  162. package/dist/module/src/components/pure/TestPageView.test/types.js +3 -0
  163. package/dist/module/src/components/pure/ThemeCard.js +8 -0
  164. package/dist/module/src/components/stateful/FeaturesReporter.js +22 -0
  165. package/dist/module/src/components/stateful/FileTree.js +33 -0
  166. package/dist/module/src/components/stateful/ProcessManagerPage.js +75 -0
  167. package/dist/module/src/components/stateful/ProjectPage.js +7 -6
  168. package/dist/module/src/components/stateful/ProjectsPage.js +32 -6
  169. package/dist/module/src/components/stateful/SettingsPage.js +35 -0
  170. package/dist/module/src/components/stateful/SingleProcessPage.js +110 -0
  171. package/dist/module/src/components/stateful/TestPage.js +123 -13
  172. package/dist/module/src/components/stateful/TextEditorPage.js +117 -0
  173. package/dist/module/src/defaultConfig.js +1 -0
  174. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +3 -4
  175. package/dist/module/src/esbuildConfigs/web.js +1 -1
  176. package/dist/module/src/lib/BaseSuite.js +7 -3
  177. package/dist/module/src/lib/BaseSuite.test/mock.js +17 -41
  178. package/dist/module/src/lib/BaseSuite.test/test.js +33 -42
  179. package/dist/module/src/lib/Sidecar.js +1 -0
  180. package/dist/module/src/lib/abstractBase.js +40 -13
  181. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.adapter.js +12 -12
  182. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +15 -13
  183. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.mock.js +28 -17
  184. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.pure.js +1 -1
  185. package/dist/module/src/lib/basebuilder.js +29 -35
  186. package/dist/module/src/lib/classBuilder.js +5 -3
  187. package/dist/module/src/lib/core.js +3 -6
  188. package/dist/module/src/lib/core.test/MockCore.js +0 -14
  189. package/dist/module/src/lib/core.test/core.test.adapter.js +2 -9
  190. package/dist/module/src/lib/core.test/core.test.implementation.js +3 -7
  191. package/dist/module/src/lib/index.js +13 -14
  192. package/dist/module/src/lib/pmProxy.js +37 -16
  193. package/dist/module/src/lib/pmProxy.test/adapter.js +20 -4
  194. package/dist/module/src/lib/pmProxy.test/implementation.js +93 -34
  195. package/dist/module/src/lib/pmProxy.test/mockPMBase.js +9 -0
  196. package/dist/module/src/lib/pmProxy.test/specification.js +3 -0
  197. package/dist/module/src/mothership/index.js +5 -0
  198. package/dist/module/src/mothership/test.js +44 -25
  199. package/dist/module/src/types/features.js +31 -0
  200. package/dist/module/src/utils/api.js +56 -25
  201. package/dist/module/src/utils/featureUtils.js +24 -0
  202. package/dist/module/src/utils/logFiles.js +46 -0
  203. package/dist/module/src/utils/makePrompt.js +109 -0
  204. package/dist/module/src/web.html.js +2 -6
  205. package/dist/module/testeranto.config.js +54 -24
  206. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  207. package/dist/prebuild/App.css +53 -80
  208. package/dist/prebuild/App.js +15520 -4397
  209. package/dist/prebuild/ReportServer.mjs +104 -6
  210. package/dist/prebuild/build.mjs +95 -108
  211. package/dist/prebuild/mothership/index.mjs +5 -0
  212. package/dist/prebuild/run.mjs +704 -221
  213. package/dist/types/design-editor/DesignEditor.d.ts +18 -0
  214. package/dist/types/design-editor/server.d.ts +1 -0
  215. package/dist/types/src/App.d.ts +1 -0
  216. package/dist/types/src/PM/index.d.ts +1 -1
  217. package/dist/types/src/PM/main.d.ts +37 -3
  218. package/dist/types/src/PM/pure.d.ts +10 -7
  219. package/dist/types/src/PM/web.d.ts +1 -1
  220. package/dist/types/src/Pure.test.d.ts +13 -1
  221. package/dist/types/src/Types.d.ts +1 -0
  222. package/dist/types/src/components/DesignEditorPage.d.ts +1 -0
  223. package/dist/types/src/components/SunriseAnimation.d.ts +5 -0
  224. package/dist/types/src/components/SunriseAnimation.test/interface.d.ts +11 -0
  225. package/dist/types/src/components/SunriseAnimation.test/types.d.ts +39 -0
  226. package/dist/types/src/components/pure/AppFrame.d.ts +11 -0
  227. package/dist/types/src/components/pure/AppFrame.test/implementation.d.ts +3 -0
  228. package/dist/types/src/components/pure/AppFrame.test/index.d.ts +5 -0
  229. package/dist/types/src/components/pure/AppFrame.test/specification.d.ts +3 -0
  230. package/dist/types/src/components/pure/AppFrame.test/types.d.ts +33 -0
  231. package/dist/types/src/components/pure/FeaturesReporterView.d.ts +7 -0
  232. package/dist/types/src/components/pure/FeaturesReporterView.test/implementation.d.ts +3 -0
  233. package/dist/types/src/components/pure/FeaturesReporterView.test/index.d.ts +2 -0
  234. package/dist/types/src/components/pure/FeaturesReporterView.test/specification.d.ts +3 -0
  235. package/dist/types/src/components/pure/FeaturesReporterView.test/types.d.ts +54 -0
  236. package/dist/types/src/components/pure/ModalContent.d.ts +7 -0
  237. package/dist/types/src/components/pure/ModalContent.test/implementation.d.ts +3 -0
  238. package/dist/types/src/components/pure/ModalContent.test/index.d.ts +3 -0
  239. package/dist/types/src/components/pure/ModalContent.test/specification.d.ts +3 -0
  240. package/dist/types/src/components/pure/ModalContent.test/types.d.ts +45 -0
  241. package/dist/types/src/{NavBar.d.ts → components/pure/NavBar.d.ts} +4 -0
  242. package/dist/types/src/components/pure/ProcessManager.d.ts +8 -0
  243. package/dist/types/src/components/pure/ProcessManagerView.d.ts +20 -0
  244. package/dist/types/src/components/pure/ProjectPageView.d.ts +7 -7
  245. package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +1 -2
  246. package/dist/types/src/components/pure/ProjectPageView.test/types.d.ts +29 -11
  247. package/dist/types/src/components/pure/ProjectsPageView.d.ts +29 -0
  248. package/dist/types/src/components/pure/SettingsButton.d.ts +2 -0
  249. package/dist/types/src/components/pure/SingleProcessView.d.ts +0 -0
  250. package/dist/types/src/components/pure/TestPageView.d.ts +15 -0
  251. package/dist/types/src/components/pure/TestPageView.test/implementation.d.ts +12 -0
  252. package/dist/types/src/components/pure/TestPageView.test/index.d.ts +3 -0
  253. package/dist/types/src/components/pure/TestPageView.test/specification.d.ts +11 -0
  254. package/dist/types/src/components/pure/TestPageView.test/types.d.ts +65 -0
  255. package/dist/types/src/components/pure/ThemeCard.d.ts +9 -0
  256. package/dist/types/src/components/stateful/FeaturesReporter.d.ts +2 -0
  257. package/dist/types/src/components/stateful/FileTree.d.ts +8 -0
  258. package/dist/types/src/components/stateful/ProcessManagerPage.d.ts +2 -0
  259. package/dist/types/src/components/stateful/ProjectPage.d.ts +1 -0
  260. package/dist/types/src/components/stateful/ProjectsPage.d.ts +1 -0
  261. package/dist/types/src/components/stateful/SettingsPage.d.ts +2 -0
  262. package/dist/types/src/components/stateful/SingleProcessPage.d.ts +2 -0
  263. package/dist/types/src/components/stateful/TestPage.d.ts +1 -0
  264. package/dist/types/src/components/stateful/TextEditorPage.d.ts +1 -0
  265. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +3 -3
  266. package/dist/types/src/lib/abstractBase.d.ts +1 -1
  267. package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +1 -1
  268. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.pure.d.ts +1 -1
  269. package/dist/types/src/lib/basebuilder.d.ts +1 -1
  270. package/dist/types/src/lib/index.d.ts +8 -8
  271. package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +1 -1
  272. package/dist/types/src/types/features.d.ts +7 -0
  273. package/dist/types/src/utils/api.d.ts +1 -5
  274. package/dist/types/src/utils/featureUtils.d.ts +6 -0
  275. package/dist/types/src/utils/logFiles.d.ts +71 -0
  276. package/dist/types/src/utils/makePrompt.d.ts +2 -0
  277. package/dist/types/src/web.html.d.ts +1 -1
  278. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  279. package/docs/index.md +17 -0
  280. package/docs/test-page-components.md +91 -0
  281. package/docs/testing.prompt.txt +1 -3
  282. package/index.d.ts +38 -13
  283. package/marketing.md +166 -0
  284. package/package.json +38 -11
  285. package/src/App.tsx +22 -25
  286. package/src/Node.ts +6 -9
  287. package/src/PM/PM_WithEslintAndTsc.ts +16 -97
  288. package/src/PM/__tests__/nodeSidecar.testeranto.ts +2 -0
  289. package/src/PM/base.ts +1 -3
  290. package/src/PM/index.ts +1 -1
  291. package/src/PM/main.ts +673 -128
  292. package/src/PM/node.ts +5 -2
  293. package/src/PM/nodeSidecar.ts +1 -0
  294. package/src/PM/pure.ts +28 -72
  295. package/src/PM/pureSidecar.ts +1 -1
  296. package/src/PM/types.ts +0 -0
  297. package/src/PM/web.ts +9 -4
  298. package/src/Pure.test.ts +66 -101
  299. package/src/Pure.ts +1 -1
  300. package/src/README.md +85 -0
  301. package/src/ReportServer.ts +10 -3
  302. package/src/Types.ts +1 -0
  303. package/src/app.scss +169 -0
  304. package/src/build.ts +33 -55
  305. package/src/components/DesignEditorPage.tsx +169 -0
  306. package/src/components/{pure/ProjectPageView.test/index.ts → SunriseAnimation.test/index.tsx} +7 -4
  307. package/src/components/SunriseAnimation.test/interface.ts +49 -0
  308. package/src/components/SunriseAnimation.test/types.ts +53 -0
  309. package/src/components/TestStatusBadge.tsx +2 -23
  310. package/src/components/pure/AppFrame.test/implementation.tsx +72 -0
  311. package/src/components/pure/AppFrame.test/index.tsx +22 -0
  312. package/src/components/pure/AppFrame.test/specification.ts +35 -0
  313. package/src/components/pure/AppFrame.test/types.ts +65 -0
  314. package/src/components/pure/AppFrame.tsx +134 -0
  315. package/src/components/pure/FeaturesReporterView.test/implementation.tsx +106 -0
  316. package/src/components/pure/FeaturesReporterView.test/index.tsx +18 -0
  317. package/src/components/pure/FeaturesReporterView.test/specification.ts +39 -0
  318. package/src/components/pure/FeaturesReporterView.test/types.ts +77 -0
  319. package/src/components/pure/FeaturesReporterView.tsx +37 -0
  320. package/src/components/pure/ModalContent.test/implementation.tsx +45 -0
  321. package/src/components/pure/ModalContent.test/index.tsx +67 -0
  322. package/src/components/pure/ModalContent.test/specification.ts +27 -0
  323. package/src/components/pure/ModalContent.test/types.ts +72 -0
  324. package/src/components/pure/ModalContent.tsx +182 -0
  325. package/src/{NavBar.tsx → components/pure/NavBar.tsx} +31 -15
  326. package/src/components/pure/ProcessManager.tsx +117 -0
  327. package/src/components/pure/ProcessManagerView.tsx +414 -0
  328. package/src/components/pure/ProjectPageView.test/implementation.tsx +186 -57
  329. package/src/components/pure/ProjectPageView.test/index.tsx +18 -0
  330. package/src/components/pure/ProjectPageView.test/specification.ts +15 -2
  331. package/src/components/pure/ProjectPageView.test/types.ts +57 -13
  332. package/src/components/pure/ProjectPageView.tsx +155 -121
  333. package/src/components/pure/ProjectsPageView.tsx +73 -32
  334. package/src/components/pure/SettingsButton.md +1 -0
  335. package/src/components/pure/SettingsButton.tsx +11 -0
  336. package/src/components/pure/SingleProcessView.tsx +235 -0
  337. package/src/components/pure/TestPageView.test/implementation.ts +162 -0
  338. package/src/components/pure/TestPageView.test/index.tsx +20 -0
  339. package/src/components/pure/TestPageView.test/specification.ts +58 -0
  340. package/src/components/pure/TestPageView.test/types.ts +92 -0
  341. package/src/components/pure/TestPageView.tsx +1009 -299
  342. package/src/components/pure/ThemeCard.tsx +34 -0
  343. package/src/components/stateful/FeaturesReporter.tsx +24 -0
  344. package/src/components/stateful/FileTree.tsx +66 -0
  345. package/src/components/stateful/ProcessManagerPage.tsx +108 -0
  346. package/src/components/stateful/ProjectPage.tsx +10 -8
  347. package/src/components/stateful/ProjectsPage.tsx +36 -7
  348. package/src/components/stateful/SettingsPage.tsx +82 -0
  349. package/src/components/stateful/SingleProcessPage.tsx +155 -0
  350. package/src/components/stateful/TestPage.tsx +147 -30
  351. package/src/components/stateful/TextEditorPage.tsx +170 -0
  352. package/src/defaultConfig.ts +1 -0
  353. package/src/esbuildConfigs/inputFilesPlugin.ts +3 -4
  354. package/src/esbuildConfigs/web.ts +2 -1
  355. package/src/lib/BaseSuite.test/mock.ts +21 -68
  356. package/src/lib/BaseSuite.test/test.ts +39 -65
  357. package/src/lib/BaseSuite.ts +9 -3
  358. package/src/lib/Sidecar.ts +2 -0
  359. package/src/lib/abstractBase.test/MockGiven.ts +1 -1
  360. package/src/lib/abstractBase.ts +47 -20
  361. package/src/lib/baseBuilder.test/baseBuilder.test.adapter.ts +14 -13
  362. package/src/lib/baseBuilder.test/baseBuilder.test.implementation.ts +17 -14
  363. package/src/lib/baseBuilder.test/baseBuilder.test.mock.ts +27 -17
  364. package/src/lib/baseBuilder.test/baseBuilder.test.pure.ts +1 -1
  365. package/src/lib/basebuilder.ts +48 -54
  366. package/src/lib/classBuilder.ts +11 -10
  367. package/src/lib/core.test/MockCore.ts +0 -23
  368. package/src/lib/core.test/core.test.adapter.ts +6 -12
  369. package/src/lib/core.test/core.test.implementation.ts +7 -10
  370. package/src/lib/core.ts +5 -20
  371. package/src/lib/index.ts +28 -27
  372. package/src/lib/pmProxy.test/adapter.ts +18 -4
  373. package/src/lib/pmProxy.test/implementation.ts +130 -46
  374. package/src/lib/pmProxy.test/mockPMBase.ts +12 -1
  375. package/src/lib/pmProxy.test/specification.ts +11 -0
  376. package/src/lib/pmProxy.ts +42 -17
  377. package/src/lib/types.ts +2 -0
  378. package/src/mothership/index.ts +6 -0
  379. package/src/mothership/test.ts +53 -26
  380. package/src/style.md +2 -0
  381. package/src/style.scss +3 -486
  382. package/src/templates/frontpage.html +331 -0
  383. package/src/templates/frontpage.md +79 -0
  384. package/src/themes.scss +48 -16
  385. package/src/types/features.ts +38 -0
  386. package/src/utils/api.ts +66 -33
  387. package/src/utils/featureUtils.tsx +42 -0
  388. package/src/utils/logFiles.ts +60 -0
  389. package/src/utils/makePrompt.ts +149 -0
  390. package/src/web.html.ts +6 -6
  391. package/stargazers.txt +15 -0
  392. package/stargzers.js +68 -0
  393. package/testeranto/App.css +53 -80
  394. package/testeranto/App.js +15520 -4397
  395. package/testeranto/bundles/node/core/chunk-4CSH4UJE.mjs +872 -0
  396. package/testeranto/bundles/node/core/chunk-4JTDLQVA.mjs +253 -0
  397. package/testeranto/bundles/node/core/chunk-C3APFDUV.mjs +70 -0
  398. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +295 -0
  399. package/testeranto/bundles/node/core/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +243 -0
  400. package/testeranto/bundles/node/core/src/lib/classBuilder.test/classBuilder.test.mjs +411 -0
  401. package/testeranto/bundles/node/core/src/lib/core.test/core.test.mjs +494 -0
  402. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +4755 -0
  403. package/testeranto/bundles/pure/core/chunk-62UVCSQC.mjs +1022 -0
  404. package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
  405. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +352 -0
  406. package/testeranto/bundles/pure/core/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +241 -0
  407. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.html +15 -0
  408. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.html +1 -5
  409. package/testeranto/bundles/web/core/src/components/pure/TestPageView.test/index.html +15 -0
  410. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +15 -0
  411. package/testeranto/bundles/web/core/src/lib/baseBuilder.test/baseBuilder.test.web.html +15 -0
  412. package/testeranto/metafiles/node/core.json +2906 -0
  413. package/testeranto/metafiles/pure/core.json +860 -0
  414. package/testeranto/metafiles/web/core.json +546 -0
  415. package/testeranto/reports/core/config.json +103 -2
  416. package/testeranto/reports/core/src/Pure.test/pure/exit.log +0 -0
  417. package/testeranto/reports/core/src/Pure.test/pure/lint_errors.txt +0 -0
  418. package/testeranto/reports/core/src/Pure.test/pure/message.txt +17 -0
  419. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +14 -0
  420. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +71 -0
  421. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log +0 -0
  422. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +3 -0
  423. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +1 -0
  424. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +0 -0
  425. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
  426. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
  427. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +3 -0
  428. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +1 -0
  429. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +0 -0
  430. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
  431. package/testeranto/reports/core/src/components/pure/TestPageView.test/index/web/debug.log +0 -0
  432. package/testeranto/reports/core/src/components/pure/TestPageView.test/index/web/error.log +3 -0
  433. package/testeranto/reports/core/src/components/pure/TestPageView.test/index/web/exit.log +1 -0
  434. package/testeranto/reports/core/src/components/pure/TestPageView.test/index/web/info.log +0 -0
  435. package/testeranto/reports/core/src/components/pure/TestPageView.test/index/web/warn.log +0 -0
  436. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/exit.log +1 -0
  437. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -0
  438. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/message.txt +17 -0
  439. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +14 -0
  440. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stderr.log +0 -0
  441. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +0 -0
  442. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +31 -0
  443. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +61 -0
  444. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/exit.log +0 -0
  445. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -0
  446. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/message.txt +17 -0
  447. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +15 -0
  448. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +61 -0
  449. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/debug.log +0 -0
  450. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/error.log +3 -0
  451. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/exit.log +1 -0
  452. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/info.log +0 -0
  453. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/warn.log +0 -0
  454. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/exit.log +1 -0
  455. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +10 -0
  456. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/message.txt +17 -0
  457. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +17 -0
  458. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/stderr.log +0 -0
  459. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/stdout.log +6 -0
  460. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/suite-0/given-testInitialization/then-0/butThen/hello.txt +1 -0
  461. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/suite-0/given-testInitialization/then-1/butThen/artifact_test.txt +1 -0
  462. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/tests.json +71 -0
  463. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +42 -0
  464. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/exit.log +0 -0
  465. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +10 -0
  466. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message.txt +17 -0
  467. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +17 -0
  468. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +42 -0
  469. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/debug.log +0 -0
  470. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/error.log +3 -0
  471. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/exit.log +1 -0
  472. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/info.log +0 -0
  473. package/testeranto/reports/core/src/lib/baseBuilder.test/baseBuilder.test.web/web/warn.log +0 -0
  474. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/exit.log +1 -0
  475. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.txt +0 -0
  476. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/message.txt +17 -0
  477. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/prompt.txt +17 -0
  478. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/stderr.log +0 -0
  479. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/stdout.log +619 -0
  480. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/tests.json +165 -0
  481. package/testeranto/reports/core/src/lib/classBuilder.test/classBuilder.test/node/type_errors.txt +88 -0
  482. package/testeranto/reports/core/src/lib/core.test/core.test/node/exit.log +1 -0
  483. package/testeranto/reports/core/src/lib/core.test/core.test/node/lint_errors.txt +21 -0
  484. package/testeranto/reports/core/src/lib/core.test/core.test/node/message.txt +17 -0
  485. package/testeranto/reports/core/src/lib/core.test/core.test/node/prompt.txt +19 -0
  486. package/testeranto/reports/core/src/lib/core.test/core.test/node/stderr.log +0 -0
  487. package/testeranto/reports/core/src/lib/core.test/core.test/node/stdout.log +0 -0
  488. package/testeranto/reports/core/src/lib/core.test/core.test/node/type_errors.txt +45 -0
  489. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
  490. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
  491. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
  492. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +17 -0
  493. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +88 -0
  494. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +10 -0
  495. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/tests.json +152 -0
  496. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +52 -0
  497. package/testeranto/reports/core/summary.json +74 -5
  498. package/testeranto/reportsweb_build_errors +546 -0
  499. package/testeranto.config.ts +58 -25
  500. package/tsc.log +378 -211
  501. package/tsconfig.common.json +4 -2
  502. package/tsconfig.json +9 -6
  503. package/tsconfig.module.json +3 -2
  504. package/tsconfig.types.json +3 -1
  505. package/dist/common/src/components/pure/ProjectPageView.test/adapter.js +0 -20
  506. package/dist/common/src/lib/dailyAnimation.js +0 -130
  507. package/dist/module/src/Footer.js +0 -5
  508. package/dist/module/src/ProjectPage.js +0 -319
  509. package/dist/module/src/ProjectsPage.js +0 -1
  510. package/dist/module/src/SettingsButton.js +0 -157
  511. package/dist/module/src/TestPage.js +0 -271
  512. package/dist/module/src/TestReport.js +0 -368
  513. package/dist/module/src/components/pure/ProjectPageView.test/adapter.js +0 -17
  514. package/dist/module/src/lib/dailyAnimation.js +0 -130
  515. package/dist/types/src/components/pure/ProjectPageView.test/adapter.d.ts +0 -3
  516. package/dist/types/testeranto.config.d.ts +0 -3
  517. package/docs/testing.ai.txt +0 -106
  518. package/docs.html +0 -572
  519. package/example.css +0 -351
  520. package/index.html +0 -284
  521. package/scripts/compile-docs.js +0 -140
  522. package/src/App.scss +0 -132
  523. package/src/Footer.tsx +0 -8
  524. package/src/Project.scss +0 -1
  525. package/src/ProjectPage.tsx +0 -459
  526. package/src/ProjectsPage.tsx +0 -1
  527. package/src/ReportApp.scss +0 -1
  528. package/src/SettingsButton.tsx +0 -268
  529. package/src/TestPage.tsx +0 -476
  530. package/src/TestReport.scss +0 -24
  531. package/src/TestReport.tsx +0 -411
  532. package/src/components/pure/ProjectPageView.test/adapter.ts +0 -21
  533. package/src/fonts.scss +0 -55
  534. package/src/lib/dailyAnimation.ts +0 -147
  535. package/style.css +0 -12156
  536. package/testeranto/bundles/node/core/metafile.json +0 -8
  537. package/testeranto/bundles/pure/core/metafile.json +0 -8
  538. package/testeranto/bundles/web/core/metafile.json +0 -15086
  539. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +0 -39991
  540. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +0 -18
  541. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/logs.txt +0 -59
  542. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/message.txt +0 -2
  543. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/prompt.txt +0 -27
  544. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/suite-0/given-basicRender/then-0/butThen/happyPath.png +0 -0
  545. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +0 -50
  546. /package/dist/types/src/{lib/dailyAnimation.d.ts → PM/types.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ import Testeranto from "testeranto-react/src/react-dom/component/web";
2
+ import { MemoryRouter } from "react-router-dom";
3
+ import { implementation } from "./implementation";
4
+ import { specification } from "./specification";
5
+ import { ProjectPageView } from "../ProjectPageView";
6
+ import React from "react";
7
+
8
+ const WrappedProjectPageView = (props) => (
9
+ <MemoryRouter>
10
+ <ProjectPageView {...props}> </ProjectPageView>
11
+ </MemoryRouter>
12
+ );
13
+
14
+ export default Testeranto(
15
+ implementation,
16
+ specification,
17
+ WrappedProjectPageView
18
+ );
@@ -14,17 +14,30 @@ export const specification: ITestSpecification<I, O> = (
14
14
  "ProjectPageView should render",
15
15
  "It should contain a container-fluid div",
16
16
  "It should render the NavBar component",
17
+ "NavBar should display project title",
18
+ "It should render test results table",
19
+ "It should display test-suite-1 results",
20
+ "It should display test-suite-2 results",
17
21
  ],
18
22
  [],
19
- [Then.happyPath()]
23
+ [
24
+ Then.hasContainerFluid(),
25
+ Then.hasNavBar(),
26
+ Then.hasNavBarTitle(),
27
+ Then.hasTestTable(),
28
+ Then.rendersTestSuite1(),
29
+ Then.rendersTestSuite2(),
30
+ Then.takeScreenshot("happy-state.png"),
31
+ ]
20
32
  ),
21
33
  errorHandling: Given.WithError(
22
34
  [
23
35
  "ProjectPageView should handle errors",
24
36
  "It should display error messages when present",
37
+ "It should capture screenshots of error state",
25
38
  ],
26
39
  [],
27
- [Then.unhappyPath()]
40
+ [Then.unhappyPath(), Then.takeScreenshot("error-state.png")]
28
41
  ),
29
42
  }),
30
43
  ];
@@ -1,23 +1,60 @@
1
1
  /* eslint-disable @typescript-eslint/no-empty-object-type */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
+
4
+ import ReactDom from "react-dom/client";
5
+
3
6
  import { Ibdd_in, Ibdd_out } from "../../../CoreTypes";
4
7
  import { IProjectPageViewProps } from "../ProjectPageView";
5
8
 
9
+ export type IInput = IProjectPageViewProps;
10
+
11
+ export type ISelection = {
12
+ htmlElement: HTMLElement;
13
+ reactElement: React.ReactElement;
14
+ domRoot: ReactDom.Root;
15
+ };
16
+
17
+ export type IStore = ISelection;
18
+
19
+ export type ISubject = {
20
+ htmlElement: HTMLElement;
21
+ domRoot: ReactDom.Root;
22
+ };
23
+
6
24
  export type I = Ibdd_in<
7
- null,
8
- IProjectPageViewProps,
9
- IProjectPageViewProps & { container?: HTMLElement },
10
- IProjectPageViewProps & { container?: HTMLElement },
11
- (...args: any[]) => IProjectPageViewProps,
12
- () => (
13
- props: IProjectPageViewProps,
14
- utils: any
15
- ) => IProjectPageViewProps & { container?: HTMLElement },
16
- () => (
17
- state: IProjectPageViewProps & { container?: HTMLElement }
18
- ) => IProjectPageViewProps & { container?: HTMLElement }
25
+ IInput,
26
+ ISubject,
27
+ ISelection,
28
+ IStore,
29
+ (s: IStore) => IStore,
30
+ (s: IStore) => IStore,
31
+ {
32
+ hasContainerFluid: () => (s: IStore) => IStore;
33
+ hasNavBar: () => (s: IStore) => IStore;
34
+ hasNavBarTitle: () => (s: IStore) => IStore;
35
+ hasTestTable: () => (s: IStore) => IStore;
36
+ rendersTestSuite1: () => (s: IStore) => IStore;
37
+ rendersTestSuite2: () => (s: IStore) => IStore;
38
+ unhappyPath: () => (s: IStore) => IStore;
39
+ takeScreenshot: (name: string) => (s: IStore, pm: any) => Promise<IStore>;
40
+ }
19
41
  >;
20
42
 
43
+ // export type I = Ibdd_in<
44
+ // null,
45
+ // IProjectPageViewProps,
46
+ // IProjectPageViewProps & { container?: HTMLElement },
47
+ // IProjectPageViewProps & { container?: HTMLElement },
48
+ // (...args: any[]) => IProjectPageViewProps,
49
+ // () => (
50
+ // props: IProjectPageViewProps,
51
+ // utils: any
52
+ // ) => IProjectPageViewProps & { container?: HTMLElement },
53
+ // () => (
54
+ // state: IProjectPageViewProps & { container?: HTMLElement }
55
+ // ) => IProjectPageViewProps & { container?: HTMLElement }
56
+ // >;
57
+
21
58
  export type O = Ibdd_out<
22
59
  {
23
60
  Default: [string];
@@ -25,11 +62,18 @@ export type O = Ibdd_out<
25
62
  {
26
63
  Default: [];
27
64
  WithError: [];
65
+ Navigation: [];
28
66
  },
29
67
  {},
30
68
  {
31
- happyPath: [];
69
+ hasContainerFluid: [];
70
+ hasNavBar: [];
71
+ hasNavBarTitle: [];
72
+ hasTestTable: [];
73
+ rendersTestSuite1: [];
74
+ rendersTestSuite2: [];
32
75
  unhappyPath: [];
76
+ takeScreenshot: [string];
33
77
  }
34
78
  >;
35
79
 
@@ -1,9 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import React from 'react';
3
- import { Tab, Container, Alert, Table, Badge, Nav, Card, ListGroup } from 'react-bootstrap';
4
- import { NavBar } from '../../NavBar';
3
+ import { Tab, Container, Alert, Table, Badge, Nav, Card, ListGroup, Col, Row } from 'react-bootstrap';
4
+
5
5
  import { TestStatusBadge } from '../TestStatusBadge';
6
6
 
7
+ import { NavBar } from './NavBar';
8
+
9
+ import "./../../App.scss";
10
+
7
11
  const BuildLogViewer = ({ logs, runtime }: { logs: any, runtime: string }) => {
8
12
  if (!logs) return <Alert variant="info">Loading {runtime.toLowerCase()} build logs...</Alert>;
9
13
 
@@ -108,16 +112,16 @@ const BuildLogViewer = ({ logs, runtime }: { logs: any, runtime: string }) => {
108
112
  </div>
109
113
  <div className="mt-1">
110
114
  <pre className="mb-0 p-2 bg-light rounded">
111
- {warn.text || warn.message || JSON.stringify(warn)}
115
+ {JSON.stringify(warn)}
112
116
  </pre>
113
117
  </div>
114
- {warn.detail && (
118
+ {/* {warn.detail && (
115
119
  <div className="mt-1 small text-muted">
116
120
  <pre className="mb-0 p-2 bg-light rounded">
117
121
  {warn.detail}
118
122
  </pre>
119
123
  </div>
120
- )}
124
+ )} */}
121
125
  </ListGroup.Item>
122
126
  ))}
123
127
  </ListGroup>
@@ -151,16 +155,17 @@ const BuildLogViewer = ({ logs, runtime }: { logs: any, runtime: string }) => {
151
155
  </div>
152
156
  <div className="mt-1">
153
157
  <pre className="mb-0 p-2 bg-light rounded">
154
- {err.text || err.message || JSON.stringify(err)}
158
+ {/* {err.text || err.message || JSON.stringify(err)} */}
159
+ {JSON.stringify(err)}
155
160
  </pre>
156
161
  </div>
157
- {err.detail && (
162
+ {/* {err.detail && (
158
163
  <div className="mt-1 small text-muted">
159
164
  <pre className="mb-0 p-2 bg-light rounded">
160
165
  {err.detail}
161
166
  </pre>
162
167
  </div>
163
- )}
168
+ )} */}
164
169
  </ListGroup.Item>
165
170
  ))}
166
171
  </ListGroup>
@@ -180,17 +185,16 @@ const BuildLogViewer = ({ logs, runtime }: { logs: any, runtime: string }) => {
180
185
  };
181
186
 
182
187
  export type IProjectPageViewProps = {
183
- summary,
184
- nodeLogs,
185
- webLogs,
186
- pureLogs,
187
- config,
188
- loading,
189
- error,
190
- projectName,
191
- route,
192
- setRoute,
193
- navigate
188
+ summary: any;
189
+ nodeLogs: any;
190
+ webLogs: any;
191
+ pureLogs: any;
192
+ config: any;
193
+ loading: boolean;
194
+ error: string | null;
195
+ projectName: string;
196
+ activeTab: string;
197
+ setActiveTab: (tab: string) => void;
194
198
  };
195
199
 
196
200
  export const ProjectPageView = ({
@@ -202,16 +206,20 @@ export const ProjectPageView = ({
202
206
  loading,
203
207
  error,
204
208
  projectName,
205
- route,
206
- setRoute,
207
- navigate
209
+ activeTab,
210
+ setActiveTab
208
211
  }: IProjectPageViewProps) => {
209
212
  if (loading) return <div>Loading project data...</div>;
210
213
  if (error) return <Alert variant="danger">Error: {error}</Alert>;
211
214
  if (!summary) return <Alert variant="warning">No data found for project</Alert>;
212
215
 
213
- const testStatuses = Object.entries(summary).map(([testName, testData]) => {
214
- const runTime = config.tests?.find((t) => t[0] === testName)?.[1] || 'node';
216
+ const testStatuses = Object.entries(summary).map(([testName, testData]: [string, {
217
+ testsExist?: boolean;
218
+ runTimeErrors: number;
219
+ typeErrors: number;
220
+ staticErrors: number;
221
+ }]) => {
222
+ const runTime = config.tests?.find((t: [string, string]) => t[0] === testName)?.[1] || 'node';
215
223
  return {
216
224
  testName,
217
225
  testsExist: testData.testsExist !== false,
@@ -227,106 +235,132 @@ export const ProjectPageView = ({
227
235
  <NavBar
228
236
  title={projectName}
229
237
  backLink="/"
230
- navItems={[
231
- {
232
- to: `#tests`,
233
- label: testStatuses.some(t => t.runTimeErrors > 0) ? '❌ Tests' :
234
- testStatuses.some(t => t.typeErrors > 0 || t.staticErrors > 0) ? '⚠️ Tests' : '✅ Tests',
235
- active: route === 'tests',
236
- className: testStatuses.some(t => t.runTimeErrors > 0) ? 'text-danger fw-bold' :
237
- testStatuses.some(t => t.typeErrors > 0 || t.staticErrors > 0) ? 'text-warning fw-bold' : ''
238
- },
239
- {
240
- to: `#node`,
241
- label: nodeLogs?.errors?.length ? '❌ Node Build' :
242
- nodeLogs?.warnings?.length ? '⚠️ Node Build' : 'Node Build',
243
- active: route === 'node',
244
- className: nodeLogs?.errors?.length ? 'text-danger fw-bold' :
245
- nodeLogs?.warnings?.length ? 'text-warning fw-bold' : ''
246
- },
247
- {
248
- to: `#web`,
249
- label: webLogs?.errors?.length ? '❌ Web Build' :
250
- webLogs?.warnings?.length ? '⚠️ Web Build' : 'Web Build',
251
- active: route === 'web',
252
- className: webLogs?.errors?.length ? 'text-danger fw-bold' :
253
- webLogs?.warnings?.length ? 'text-warning fw-bold' : ''
254
- },
255
- {
256
- to: `#pure`,
257
- label: pureLogs?.errors?.length ? '❌ Pure Build' :
258
- pureLogs?.warnings?.length ? '⚠️ Pure Build' : 'Pure Build',
259
- active: route === 'pure',
260
- className: pureLogs?.errors?.length ? 'text-danger fw-bold' :
261
- pureLogs?.warnings?.length ? 'text-warning fw-bold' : ''
262
- },
263
- ]}
264
238
  />
265
239
 
266
- <Tab.Container activeKey={route} onSelect={(k) => {
267
- if (k) {
268
- setRoute(k);
269
- navigate(`#${k}`, { replace: true });
270
- }
271
- }}>
272
- <Tab.Content>
273
- <Tab.Pane eventKey="tests">
274
- <Table striped bordered hover>
275
- <thead>
276
- <tr>
277
- <th>Test</th>
278
- <th>Runtime</th>
279
- <th>Status</th>
280
- <th>Type Errors</th>
281
- <th>Lint Errors</th>
282
- </tr>
283
- </thead>
284
- <tbody>
285
- {testStatuses.map((test) => (
286
- <tr key={test.testName}>
287
- <td>
288
- <a href={`#/projects/${projectName}/tests/${encodeURIComponent(test.testName)}/${test.runTime}`}>
289
- {test.testName}
290
- </a>
291
- </td>
292
- <td>
293
- <Badge bg="secondary" className="ms-2">
294
- {test.runTime}
295
- </Badge>
296
- </td>
297
- <td>
298
- <TestStatusBadge
299
- testName={test.testName}
300
- testsExist={test.testsExist}
301
- runTimeErrors={test.runTimeErrors}
302
- />
303
- </td>
304
- <td>
305
- <a href={`#/projects/${projectName}/tests/${encodeURIComponent(test.testName)}/${test.runTime}#types`}>
306
- {test.typeErrors > 0 ? `❌ ${test.typeErrors}` : '✅'}
307
- </a>
308
- </td>
309
- <td>
310
- <a href={`#/projects/${projectName}/tests/${encodeURIComponent(test.testName)}/${test.runTime}#lint`}>
311
- {test.staticErrors > 0 ? `❌ ${test.staticErrors}` : '✅'}
312
- </a>
313
- </td>
240
+ <Row className="g-0">
241
+ <Col sm={3} className="border-end">
242
+ <Nav variant="pills" className="flex-column">
243
+ <Nav.Item>
244
+ <Nav.Link
245
+ active={activeTab === 'tests'}
246
+ onClick={() => setActiveTab('tests')}
247
+ className="d-flex flex-column align-items-start"
248
+ >
249
+ <div className="d-flex justify-content-between w-100">
250
+ <span>Tests</span>
251
+ {testStatuses.some(t => t.runTimeErrors > 0) ? (
252
+ <Badge bg="danger">❌</Badge>
253
+ ) : testStatuses.some(t => t.typeErrors > 0 || t.staticErrors > 0) ? (
254
+ <Badge bg="warning" text="dark">⚠️</Badge>
255
+ ) : (
256
+ <Badge bg="success">✓</Badge>
257
+ )}
258
+ </div>
259
+ </Nav.Link>
260
+ </Nav.Item>
261
+ <Nav.Item>
262
+ <Nav.Link
263
+ active={activeTab === 'node'}
264
+ onClick={() => setActiveTab('node')}
265
+ className="d-flex justify-content-between align-items-center"
266
+ >
267
+ Node build logs
268
+ {nodeLogs?.errors?.length ? (
269
+ <Badge bg="danger">❌ {nodeLogs.errors.length}</Badge>
270
+ ) : nodeLogs?.warnings?.length ? (
271
+ <Badge bg="warning" text="dark">⚠️</Badge>
272
+ ) : null}
273
+ </Nav.Link>
274
+ </Nav.Item>
275
+ <Nav.Item>
276
+ <Nav.Link
277
+ active={activeTab === 'web'}
278
+ onClick={() => setActiveTab('web')}
279
+ className="d-flex justify-content-between align-items-center"
280
+ >
281
+ Web build logs
282
+ {webLogs?.errors?.length ? (
283
+ <Badge bg="danger">❌ {webLogs.errors.length}</Badge>
284
+ ) : webLogs?.warnings?.length ? (
285
+ <Badge bg="warning" text="dark">⚠️</Badge>
286
+ ) : null}
287
+ </Nav.Link>
288
+ </Nav.Item>
289
+ <Nav.Item>
290
+ <Nav.Link
291
+ active={activeTab === 'pure'}
292
+ onClick={() => setActiveTab('pure')}
293
+ className="d-flex justify-content-between align-items-center"
294
+ >
295
+ Pure build logs
296
+ {pureLogs?.errors?.length ? (
297
+ <Badge bg="danger">❌ {pureLogs.errors.length}</Badge>
298
+ ) : pureLogs?.warnings?.length ? (
299
+ <Badge bg="warning" text="dark">⚠️</Badge>
300
+ ) : null}
301
+ </Nav.Link>
302
+ </Nav.Item>
303
+ </Nav>
304
+ </Col>
305
+ <Col sm={9}>
306
+ <div className="p-3">
307
+ {activeTab === 'tests' ? (
308
+ <Table striped bordered hover>
309
+ <thead>
310
+ <tr>
311
+ <th>Test</th>
312
+ <th>Runtime</th>
313
+ <th>Status</th>
314
+ <th>Type Errors</th>
315
+ <th>Lint Errors</th>
314
316
  </tr>
315
- ))}
316
- </tbody>
317
- </Table>
318
- </Tab.Pane>
319
- <Tab.Pane eventKey="node">
320
- <BuildLogViewer logs={nodeLogs} runtime="Node" />
321
- </Tab.Pane>
322
- <Tab.Pane eventKey="web">
323
- <BuildLogViewer logs={webLogs} runtime="Web" />
324
- </Tab.Pane>
325
- <Tab.Pane eventKey="pure">
326
- <BuildLogViewer logs={pureLogs} runtime="Pure" />
327
- </Tab.Pane>
328
- </Tab.Content>
329
- </Tab.Container>
317
+ </thead>
318
+ <tbody>
319
+ {testStatuses.map((test) => (
320
+ <tr key={test.testName} data-testid={`test-row-${test.testName}`}>
321
+ <td>
322
+ <a href={`#/projects/${projectName}/tests/${encodeURIComponent(test.testName)}/${test.runTime}`}>
323
+ {test.testName}
324
+ </a>
325
+ </td>
326
+ <td>
327
+ <Badge bg="secondary" className="ms-2">
328
+ {test.runTime}
329
+ </Badge>
330
+ </td>
331
+ <td>
332
+ <TestStatusBadge
333
+ testName={test.testName}
334
+ testsExist={test.testsExist}
335
+ runTimeErrors={test.runTimeErrors}
336
+ typeErrors={test.typeErrors}
337
+ staticErrors={test.staticErrors}
338
+ />
339
+ </td>
340
+ <td>
341
+ <a href={`#/projects/${projectName}/tests/${encodeURIComponent(test.testName)}/${test.runTime}#types`}>
342
+ {test.typeErrors > 0 ? `❌ ${test.typeErrors}` : '✅'}
343
+ </a>
344
+ </td>
345
+ <td>
346
+ <a href={`#/projects/${projectName}/tests/${encodeURIComponent(test.testName)}/${test.runTime}#lint`}>
347
+ {test.staticErrors > 0 ? `❌ ${test.staticErrors}` : '✅'}
348
+ </a>
349
+ </td>
350
+ </tr>
351
+ ))}
352
+ </tbody>
353
+ </Table>
354
+ ) : activeTab === 'node' ? (
355
+ <BuildLogViewer logs={nodeLogs} runtime="Node" />
356
+ ) : activeTab === 'web' ? (
357
+ <BuildLogViewer logs={webLogs} runtime="Web" />
358
+ ) : activeTab === 'pure' ? (
359
+ <BuildLogViewer logs={pureLogs} runtime="Pure" />
360
+ ) : null}
361
+ </div>
362
+ </Col>
363
+ </Row>
330
364
  </Container>
331
365
  );
332
366
  };
@@ -1,6 +1,36 @@
1
- import React from 'react';
2
- import { Table, Alert } from 'react-bootstrap';
3
- import { NavBar } from '../../NavBar';
1
+ import React from "react";
2
+ import { Table, Alert } from "react-bootstrap";
3
+
4
+ type Project = {
5
+ name: string;
6
+ nodeStatus: string;
7
+ webStatus: string;
8
+ pureStatus: string;
9
+ };
10
+
11
+ type TestSummary = {
12
+ [testName: string]: {
13
+ testsExist?: boolean;
14
+ runTimeErrors?: number;
15
+ typeErrors?: number;
16
+ staticErrors?: number;
17
+ };
18
+ };
19
+
20
+ type ProjectConfig = {
21
+ [projectName: string]: {
22
+ tests: [string, string][]; // [testName, runtime]
23
+ };
24
+ };
25
+
26
+ type ProjectsPageViewProps = {
27
+ projects: Project[];
28
+ summaries: TestSummary;
29
+ configs: ProjectConfig;
30
+ loading: boolean;
31
+ error: string | null;
32
+ navigate: (path: string) => void;
33
+ };
4
34
 
5
35
  export const ProjectsPageView = ({
6
36
  projects,
@@ -8,14 +38,18 @@ export const ProjectsPageView = ({
8
38
  configs,
9
39
  loading,
10
40
  error,
11
- navigate
12
- }) => {
41
+ navigate,
42
+ }: ProjectsPageViewProps) => {
13
43
  const getStatusIcon = (status: string) => {
14
44
  switch (status) {
15
- case 'success': return '✅';
16
- case 'failed': return '❌';
17
- case 'warning': return '⚠️';
18
- default: return '❓';
45
+ case "success":
46
+ return "✅";
47
+ case "failed":
48
+ return "❌";
49
+ case "warning":
50
+ return "⚠️";
51
+ default:
52
+ return "❓";
19
53
  }
20
54
  };
21
55
 
@@ -23,8 +57,7 @@ export const ProjectsPageView = ({
23
57
  if (error) return <Alert variant="danger">Error: {error}</Alert>;
24
58
 
25
59
  return (
26
- <div className="p-3">
27
- <NavBar title="Testeranto" backLink={null} />
60
+ <div className="">
28
61
  <Table striped bordered hover responsive>
29
62
  <thead>
30
63
  <tr>
@@ -39,30 +72,44 @@ export const ProjectsPageView = ({
39
72
  {projects.map((project) => (
40
73
  <tr key={project.name}>
41
74
  <td>
42
- <a href="#" onClick={(e) => {
43
- e.preventDefault();
44
- navigate(`/projects/${project.name}`);
45
- }}>{project.name}</a>
75
+ <a
76
+ href="#"
77
+ onClick={(e) => {
78
+ e.preventDefault();
79
+ navigate(`/projects/${project.name}`);
80
+ }}
81
+ >
82
+ {project.name}
83
+ </a>
46
84
  </td>
47
85
  <td>
48
- <div style={{ maxHeight: '200px', overflowY: 'auto' }}>
86
+ <div>
49
87
  {summaries[project.name] ? (
50
- Object.keys(summaries[project.name]).map(testName => {
88
+ Object.keys(summaries[project.name]).map((testName) => {
51
89
  const testData = summaries[project.name][testName];
52
- const runTime = configs[project.name].tests.find((t) => t[0] === testName)[1];
90
+ const runTime =
91
+ configs[project.name]?.tests?.find(
92
+ (t) => t[0] === testName
93
+ )?.[1] || "node";
53
94
  const hasRuntimeErrors = testData.runTimeErrors > 0;
54
- const hasStaticErrors = testData.typeErrors > 0 || testData.staticErrors > 0;
95
+ const hasStaticErrors =
96
+ testData.typeErrors > 0 || testData.staticErrors > 0;
55
97
 
56
98
  return (
57
99
  <div key={testName}>
58
100
  <a
59
- href={`#/projects/${project.name}/tests/${encodeURIComponent(testName)}/${runTime}`}
101
+ href={`#/projects/${project.name
102
+ }/tests/${encodeURIComponent(testName)}/${runTime}`}
60
103
  >
61
- {hasRuntimeErrors ? '❌ ' : hasStaticErrors ? '⚠️ ' : ''}
62
- {testName.split('/').pop()}
104
+ {hasRuntimeErrors
105
+ ? "❌ "
106
+ : hasStaticErrors
107
+ ? "⚠️ "
108
+ : ""}
109
+ {testName.split("/").pop() || testName}
63
110
  </a>
64
111
  </div>
65
- )
112
+ );
66
113
  })
67
114
  ) : (
68
115
  <div>Loading tests...</div>
@@ -70,23 +117,17 @@ export const ProjectsPageView = ({
70
117
  </div>
71
118
  </td>
72
119
  <td>
73
- <a
74
- href={`#/projects/${project.name}#node`}
75
- >
120
+ <a href={`#/projects/${project.name}#node`}>
76
121
  {getStatusIcon(project.nodeStatus)} Node build logs
77
122
  </a>
78
123
  </td>
79
124
  <td>
80
- <a
81
- href={`#/projects/${project.name}#web`}
82
- >
125
+ <a href={`#/projects/${project.name}#web`}>
83
126
  {getStatusIcon(project.webStatus)} Web build logs
84
127
  </a>
85
128
  </td>
86
129
  <td>
87
- <a
88
- href={`#/projects/${project.name}#pure`}
89
- >
130
+ <a href={`#/projects/${project.name}#pure`}>
90
131
  {getStatusIcon(project.pureStatus)} Pure build logs
91
132
  </a>
92
133
  </td>
@@ -0,0 +1 @@
1
+ The settings button should set theme once upon creation.
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { Nav } from 'react-bootstrap';
3
+ import { NavLink } from 'react-router-dom';
4
+
5
+ export const SettingsButton: React.FC = () => {
6
+ return (
7
+ <Nav.Link as={NavLink} to="/settings">
8
+ Settings
9
+ </Nav.Link>
10
+ );
11
+ };