testeranto 0.219.13 → 0.219.15

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 (237) hide show
  1. package/package.json +1 -1
  2. package/src/testeranto.ts +1 -1
  3. package/dist/common/allTestsUtils.js +0 -17
  4. package/dist/common/package.json +0 -3
  5. package/dist/common/scripts/build-example.js +0 -105
  6. package/dist/common/src/Init.js +0 -38
  7. package/dist/common/src/Types.js +0 -63
  8. package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +0 -38
  9. package/dist/common/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -21
  10. package/dist/common/src/esbuildConfigs/featuresPlugin.js +0 -39
  11. package/dist/common/src/esbuildConfigs/index.js +0 -22
  12. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -30
  13. package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -24
  14. package/dist/common/src/esbuildConfigs/rebuildPlugin.js +0 -19
  15. package/dist/common/src/init-docs.js +0 -9
  16. package/dist/common/src/lib/tiposkripto/BaseGiven.js +0 -96
  17. package/dist/common/src/lib/tiposkripto/BaseSuite.js +0 -134
  18. package/dist/common/src/lib/tiposkripto/BaseThen.js +0 -65
  19. package/dist/common/src/lib/tiposkripto/BaseTiposkripto.js +0 -193
  20. package/dist/common/src/lib/tiposkripto/BaseWhen.js +0 -46
  21. package/dist/common/src/lib/tiposkripto/CoreTypes.js +0 -2
  22. package/dist/common/src/lib/tiposkripto/Node.js +0 -40
  23. package/dist/common/src/lib/tiposkripto/Tiposkripto.js +0 -49
  24. package/dist/common/src/lib/tiposkripto/Types.js +0 -2
  25. package/dist/common/src/lib/tiposkripto/Web.js +0 -70
  26. package/dist/common/src/lib/tiposkripto/abstractBase.test/MockGiven.js +0 -22
  27. package/dist/common/src/lib/tiposkripto/abstractBase.test/MockThen.js +0 -16
  28. package/dist/common/src/lib/tiposkripto/abstractBase.test/MockWhen.js +0 -18
  29. package/dist/common/src/lib/tiposkripto/abstractBase.test/adapter.js +0 -24
  30. package/dist/common/src/lib/tiposkripto/abstractBase.test/implementation.js +0 -38
  31. package/dist/common/src/lib/tiposkripto/abstractBase.test/index.js +0 -17
  32. package/dist/common/src/lib/tiposkripto/abstractBase.test/specification.js +0 -19
  33. package/dist/common/src/lib/tiposkripto/abstractBase.test/types.js +0 -2
  34. package/dist/common/src/lib/tiposkripto/index.js +0 -29
  35. package/dist/common/src/runtimes.js +0 -4
  36. package/dist/common/src/server/aider/configParser.js +0 -124
  37. package/dist/common/src/server/aider/docker.js +0 -30
  38. package/dist/common/src/server/getRunnables.js +0 -36
  39. package/dist/common/src/server/htmlTemplate.js +0 -44
  40. package/dist/common/src/server/nodeVersion.js +0 -5
  41. package/dist/common/src/server/runtimes/common.js +0 -136
  42. package/dist/common/src/server/runtimes/golang/docker.js +0 -62
  43. package/dist/common/src/server/runtimes/java/docker.js +0 -46
  44. package/dist/common/src/server/runtimes/node/docker.js +0 -42
  45. package/dist/common/src/server/runtimes/node/esbuild.js +0 -40
  46. package/dist/common/src/server/runtimes/node/node.js +0 -75
  47. package/dist/common/src/server/runtimes/python/docker.js +0 -31
  48. package/dist/common/src/server/runtimes/ruby/docker.js +0 -34
  49. package/dist/common/src/server/runtimes/rust/docker.js +0 -35
  50. package/dist/common/src/server/runtimes/web/docker.js +0 -42
  51. package/dist/common/src/server/runtimes/web/esbuild.js +0 -29
  52. package/dist/common/src/server/runtimes/web/hoist.js +0 -16
  53. package/dist/common/src/server/runtimes/web/web.js +0 -157
  54. package/dist/common/src/server/serverClasees/Server.js +0 -47
  55. package/dist/common/src/server/serverClasees/Server_Base.js +0 -18
  56. package/dist/common/src/server/serverClasees/Server_Docker.js +0 -904
  57. package/dist/common/src/server/serverClasees/Server_FS.js +0 -119
  58. package/dist/common/src/server/serverClasees/Server_HTTP.js +0 -189
  59. package/dist/common/src/server/serverClasees/Server_WS.js +0 -262
  60. package/dist/common/src/server/serverManagers/DockerManager.js +0 -28
  61. package/dist/common/src/server/serverManagers/HttpManager.js +0 -114
  62. package/dist/common/src/server/serverManagers/WsManager.js +0 -230
  63. package/dist/common/src/server/serverManagers/fs.js +0 -32
  64. package/dist/common/src/server/serverManagers/tcp.js +0 -51
  65. package/dist/common/src/server/types.js +0 -2
  66. package/dist/common/src/testeranto.js +0 -75
  67. package/dist/common/src/vscode/TerminalManager.js +0 -129
  68. package/dist/common/src/vscode/TestTreeItem.js +0 -77
  69. package/dist/common/src/vscode/extension.js +0 -185
  70. package/dist/common/src/vscode/providers/FeaturesTreeDataProvider.js +0 -445
  71. package/dist/common/src/vscode/providers/FileTreeDataProvider.js +0 -190
  72. package/dist/common/src/vscode/providers/ProcessesTreeDataProvider.js +0 -270
  73. package/dist/common/src/vscode/providers/ResultsTreeDataProvider.js +0 -87
  74. package/dist/common/src/vscode/providers/TestTreeDataProvider.js +0 -309
  75. package/dist/common/src/vscode/types.js +0 -9
  76. package/dist/common/testeranto/runtimes/node/node.js +0 -7
  77. package/dist/common/testeranto/runtimes/web/web.js +0 -6
  78. package/dist/common/testeranto/testeranto.js +0 -70
  79. package/dist/common/tsconfig.common.tsbuildinfo +0 -1
  80. package/dist/module/allTestsUtils.js +0 -13
  81. package/dist/module/package.json +0 -3
  82. package/dist/module/scripts/build-example.js +0 -100
  83. package/dist/module/src/Init.js +0 -33
  84. package/dist/module/src/Types.js +0 -62
  85. package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +0 -32
  86. package/dist/module/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -18
  87. package/dist/module/src/esbuildConfigs/featuresPlugin.js +0 -34
  88. package/dist/module/src/esbuildConfigs/index.js +0 -20
  89. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -25
  90. package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -21
  91. package/dist/module/src/esbuildConfigs/rebuildPlugin.js +0 -14
  92. package/dist/module/src/init-docs.js +0 -4
  93. package/dist/module/src/lib/tiposkripto/BaseGiven.js +0 -92
  94. package/dist/module/src/lib/tiposkripto/BaseSuite.js +0 -130
  95. package/dist/module/src/lib/tiposkripto/BaseThen.js +0 -61
  96. package/dist/module/src/lib/tiposkripto/BaseTiposkripto.js +0 -190
  97. package/dist/module/src/lib/tiposkripto/BaseWhen.js +0 -42
  98. package/dist/module/src/lib/tiposkripto/CoreTypes.js +0 -1
  99. package/dist/module/src/lib/tiposkripto/Node.js +0 -33
  100. package/dist/module/src/lib/tiposkripto/Tiposkripto.js +0 -14
  101. package/dist/module/src/lib/tiposkripto/Types.js +0 -1
  102. package/dist/module/src/lib/tiposkripto/Web.js +0 -63
  103. package/dist/module/src/lib/tiposkripto/abstractBase.test/MockGiven.js +0 -18
  104. package/dist/module/src/lib/tiposkripto/abstractBase.test/MockThen.js +0 -12
  105. package/dist/module/src/lib/tiposkripto/abstractBase.test/MockWhen.js +0 -14
  106. package/dist/module/src/lib/tiposkripto/abstractBase.test/adapter.js +0 -21
  107. package/dist/module/src/lib/tiposkripto/abstractBase.test/implementation.js +0 -35
  108. package/dist/module/src/lib/tiposkripto/abstractBase.test/index.js +0 -12
  109. package/dist/module/src/lib/tiposkripto/abstractBase.test/specification.js +0 -15
  110. package/dist/module/src/lib/tiposkripto/abstractBase.test/types.js +0 -1
  111. package/dist/module/src/lib/tiposkripto/index.js +0 -24
  112. package/dist/module/src/runtimes.js +0 -1
  113. package/dist/module/src/server/aider/configParser.js +0 -116
  114. package/dist/module/src/server/aider/docker.js +0 -28
  115. package/dist/module/src/server/getRunnables.js +0 -29
  116. package/dist/module/src/server/htmlTemplate.js +0 -40
  117. package/dist/module/src/server/nodeVersion.js +0 -2
  118. package/dist/module/src/server/runtimes/common.js +0 -127
  119. package/dist/module/src/server/runtimes/golang/docker.js +0 -55
  120. package/dist/module/src/server/runtimes/java/docker.js +0 -40
  121. package/dist/module/src/server/runtimes/node/docker.js +0 -36
  122. package/dist/module/src/server/runtimes/node/esbuild.js +0 -35
  123. package/dist/module/src/server/runtimes/node/node.js +0 -37
  124. package/dist/module/src/server/runtimes/python/docker.js +0 -25
  125. package/dist/module/src/server/runtimes/ruby/docker.js +0 -28
  126. package/dist/module/src/server/runtimes/rust/docker.js +0 -29
  127. package/dist/module/src/server/runtimes/web/docker.js +0 -36
  128. package/dist/module/src/server/runtimes/web/esbuild.js +0 -24
  129. package/dist/module/src/server/runtimes/web/hoist.js +0 -11
  130. package/dist/module/src/server/runtimes/web/web.js +0 -119
  131. package/dist/module/src/server/serverClasees/Server.js +0 -40
  132. package/dist/module/src/server/serverClasees/Server_Base.js +0 -14
  133. package/dist/module/src/server/serverClasees/Server_Docker.js +0 -897
  134. package/dist/module/src/server/serverClasees/Server_FS.js +0 -119
  135. package/dist/module/src/server/serverClasees/Server_HTTP.js +0 -182
  136. package/dist/module/src/server/serverClasees/Server_WS.js +0 -258
  137. package/dist/module/src/server/serverManagers/DockerManager.js +0 -28
  138. package/dist/module/src/server/serverManagers/HttpManager.js +0 -110
  139. package/dist/module/src/server/serverManagers/WsManager.js +0 -226
  140. package/dist/module/src/server/serverManagers/fs.js +0 -32
  141. package/dist/module/src/server/serverManagers/tcp.js +0 -47
  142. package/dist/module/src/server/types.js +0 -1
  143. package/dist/module/src/testeranto.js +0 -40
  144. package/dist/module/src/vscode/TerminalManager.js +0 -92
  145. package/dist/module/src/vscode/TestTreeItem.js +0 -40
  146. package/dist/module/src/vscode/extension.js +0 -148
  147. package/dist/module/src/vscode/providers/FeaturesTreeDataProvider.js +0 -408
  148. package/dist/module/src/vscode/providers/FileTreeDataProvider.js +0 -153
  149. package/dist/module/src/vscode/providers/ProcessesTreeDataProvider.js +0 -233
  150. package/dist/module/src/vscode/providers/ResultsTreeDataProvider.js +0 -50
  151. package/dist/module/src/vscode/providers/TestTreeDataProvider.js +0 -272
  152. package/dist/module/src/vscode/types.js +0 -6
  153. package/dist/module/testeranto/runtimes/node/node.js +0 -5
  154. package/dist/module/testeranto/runtimes/web/web.js +0 -4
  155. package/dist/module/testeranto/testeranto.js +0 -68
  156. package/dist/module/tsconfig.module.tsbuildinfo +0 -1
  157. package/dist/prebuild/chunk-QLT7PNPK.mjs +0 -162
  158. package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +0 -20
  159. package/dist/prebuild/init-docs.mjs +0 -56
  160. package/dist/prebuild/server/runtimes/node/node.mjs +0 -80
  161. package/dist/prebuild/server/runtimes/web/hoist.mjs +0 -12
  162. package/dist/prebuild/server/runtimes/web/web.mjs +0 -162
  163. package/dist/prebuild/testeranto-6SAYRVSE.mjs +0 -72
  164. package/dist/prebuild/testeranto.mjs +0 -1692
  165. package/dist/types/src/Init.d.ts +0 -2
  166. package/dist/types/src/Types.d.ts +0 -87
  167. package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +0 -2
  168. package/dist/types/src/esbuildConfigs/eslint-formatter-testeranto.d.ts +0 -2
  169. package/dist/types/src/esbuildConfigs/featuresPlugin.d.ts +0 -5
  170. package/dist/types/src/esbuildConfigs/index.d.ts +0 -3
  171. package/dist/types/src/esbuildConfigs/inputFilesPlugin.d.ts +0 -7
  172. package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +0 -2
  173. package/dist/types/src/esbuildConfigs/rebuildPlugin.d.ts +0 -6
  174. package/dist/types/src/init-docs.d.ts +0 -1
  175. package/dist/types/src/lib/tiposkripto/BaseGiven.d.ts +0 -42
  176. package/dist/types/src/lib/tiposkripto/BaseSuite.d.ts +0 -46
  177. package/dist/types/src/lib/tiposkripto/BaseThen.d.ts +0 -28
  178. package/dist/types/src/lib/tiposkripto/BaseTiposkripto.d.ts +0 -35
  179. package/dist/types/src/lib/tiposkripto/BaseWhen.d.ts +0 -27
  180. package/dist/types/src/lib/tiposkripto/CoreTypes.d.ts +0 -51
  181. package/dist/types/src/lib/tiposkripto/Node.d.ts +0 -9
  182. package/dist/types/src/lib/tiposkripto/Tiposkripto.d.ts +0 -5
  183. package/dist/types/src/lib/tiposkripto/Types.d.ts +0 -9
  184. package/dist/types/src/lib/tiposkripto/Web.d.ts +0 -9
  185. package/dist/types/src/lib/tiposkripto/abstractBase.test/MockGiven.d.ts +0 -9
  186. package/dist/types/src/lib/tiposkripto/abstractBase.test/MockThen.d.ts +0 -6
  187. package/dist/types/src/lib/tiposkripto/abstractBase.test/MockWhen.d.ts +0 -6
  188. package/dist/types/src/lib/tiposkripto/abstractBase.test/adapter.d.ts +0 -3
  189. package/dist/types/src/lib/tiposkripto/abstractBase.test/implementation.d.ts +0 -3
  190. package/dist/types/src/lib/tiposkripto/abstractBase.test/index.d.ts +0 -28
  191. package/dist/types/src/lib/tiposkripto/abstractBase.test/specification.d.ts +0 -3
  192. package/dist/types/src/lib/tiposkripto/abstractBase.test/types.d.ts +0 -39
  193. package/dist/types/src/lib/tiposkripto/index.d.ts +0 -56
  194. package/dist/types/src/runtimes.d.ts +0 -2
  195. package/dist/types/src/server/aider/configParser.d.ts +0 -11
  196. package/dist/types/src/server/aider/docker.d.ts +0 -2
  197. package/dist/types/src/server/getRunnables.d.ts +0 -3
  198. package/dist/types/src/server/htmlTemplate.d.ts +0 -2
  199. package/dist/types/src/server/nodeVersion.d.ts +0 -2
  200. package/dist/types/src/server/runtimes/common.d.ts +0 -12
  201. package/dist/types/src/server/runtimes/golang/docker.d.ts +0 -5
  202. package/dist/types/src/server/runtimes/java/docker.d.ts +0 -14
  203. package/dist/types/src/server/runtimes/node/docker.d.ts +0 -14
  204. package/dist/types/src/server/runtimes/node/esbuild.d.ts +0 -4
  205. package/dist/types/src/server/runtimes/node/node.d.ts +0 -1
  206. package/dist/types/src/server/runtimes/python/docker.d.ts +0 -14
  207. package/dist/types/src/server/runtimes/ruby/docker.d.ts +0 -14
  208. package/dist/types/src/server/runtimes/rust/docker.d.ts +0 -14
  209. package/dist/types/src/server/runtimes/web/docker.d.ts +0 -15
  210. package/dist/types/src/server/runtimes/web/esbuild.d.ts +0 -4
  211. package/dist/types/src/server/runtimes/web/hoist.d.ts +0 -1
  212. package/dist/types/src/server/runtimes/web/web.d.ts +0 -1
  213. package/dist/types/src/server/serverClasees/Server.d.ts +0 -8
  214. package/dist/types/src/server/serverClasees/Server_Base.d.ts +0 -9
  215. package/dist/types/src/server/serverClasees/Server_Docker.d.ts +0 -81
  216. package/dist/types/src/server/serverClasees/Server_FS.d.ts +0 -0
  217. package/dist/types/src/server/serverClasees/Server_HTTP.d.ts +0 -20
  218. package/dist/types/src/server/serverClasees/Server_WS.d.ts +0 -23
  219. package/dist/types/src/server/serverManagers/DockerManager.d.ts +0 -0
  220. package/dist/types/src/server/serverManagers/HttpManager.d.ts +0 -9
  221. package/dist/types/src/server/serverManagers/WsManager.d.ts +0 -10
  222. package/dist/types/src/server/serverManagers/fs.d.ts +0 -0
  223. package/dist/types/src/server/serverManagers/tcp.d.ts +0 -27
  224. package/dist/types/src/server/types.d.ts +0 -68
  225. package/dist/types/src/testeranto.d.ts +0 -1
  226. package/dist/types/src/vscode/TerminalManager.d.ts +0 -18
  227. package/dist/types/src/vscode/TestTreeItem.d.ts +0 -13
  228. package/dist/types/src/vscode/extension.d.ts +0 -3
  229. package/dist/types/src/vscode/providers/FeaturesTreeDataProvider.d.ts +0 -17
  230. package/dist/types/src/vscode/providers/FileTreeDataProvider.d.ts +0 -13
  231. package/dist/types/src/vscode/providers/ProcessesTreeDataProvider.d.ts +0 -23
  232. package/dist/types/src/vscode/providers/ResultsTreeDataProvider.d.ts +0 -10
  233. package/dist/types/src/vscode/providers/TestTreeDataProvider.d.ts +0 -16
  234. package/dist/types/src/vscode/types.d.ts +0 -14
  235. package/dist/types/testeranto/testeranto.d.ts +0 -3
  236. package/dist/types/tsconfig.types.tsbuildinfo +0 -1
  237. package/dist/vscode/extension.mjs +0 -5116
@@ -1,148 +0,0 @@
1
- import * as vscode from "vscode";
2
- import { TerminalManager } from "./TerminalManager";
3
- import { TestTreeDataProvider } from "./providers/TestTreeDataProvider";
4
- import { FileTreeDataProvider } from "./providers/FileTreeDataProvider";
5
- import { ProcessesTreeDataProvider } from "./providers/ProcessesTreeDataProvider";
6
- import { FeaturesTreeDataProvider } from "./providers/FeaturesTreeDataProvider";
7
- import { TreeItemType } from "./types";
8
- export function activate(context) {
9
- console.log("[Testeranto] Extension activating...");
10
- // Create terminal manager
11
- const terminalManager = new TerminalManager();
12
- terminalManager.createAllTerminals();
13
- console.log("[Testeranto] Created terminals for all tests");
14
- // Create a status bar item
15
- const statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
16
- statusBarItem.text = "$(beaker) Testeranto";
17
- statusBarItem.tooltip = "Testeranto: Dockerized, AI powered BDD test framework";
18
- statusBarItem.command = "testeranto.showTests";
19
- statusBarItem.show();
20
- // Create tree data providers
21
- const testTreeDataProvider = new TestTreeDataProvider();
22
- const fileTreeDataProvider = new FileTreeDataProvider();
23
- const processesTreeDataProvider = new ProcessesTreeDataProvider();
24
- const featuresTreeDataProvider = new FeaturesTreeDataProvider();
25
- // Register commands
26
- const showTestsCommand = vscode.commands.registerCommand("testeranto.showTests", () => {
27
- vscode.window.showInformationMessage("Showing Testeranto tests");
28
- vscode.commands.executeCommand("testerantoTestsView.focus");
29
- });
30
- const runTestCommand = vscode.commands.registerCommand("testeranto.runTest", async (item) => {
31
- if (item.type === TreeItemType.Test) {
32
- const { runtime, testName } = item.data || {};
33
- vscode.window.showInformationMessage(`Running ${testName} for ${runtime}...`);
34
- const terminal = terminalManager.showTerminal(runtime, testName);
35
- if (terminal) {
36
- vscode.window.showInformationMessage(`Terminal for ${testName} is ready`, { modal: false });
37
- }
38
- else {
39
- vscode.window.showWarningMessage(`Terminal for ${testName} not found`);
40
- }
41
- }
42
- });
43
- const aiderCommand = vscode.commands.registerCommand("testeranto.aider", async (item) => {
44
- if (item.type === TreeItemType.Test) {
45
- const { runtime, testName } = item.data || {};
46
- vscode.window.showInformationMessage(`Connecting to aider process for ${testName} (${runtime})...`);
47
- const aiderTerminal = terminalManager.createAiderTerminal(runtime, testName);
48
- aiderTerminal.show();
49
- // Process test name to match Docker container naming convention
50
- let processedTestName = testName;
51
- // Remove file extension
52
- processedTestName = (processedTestName === null || processedTestName === void 0 ? void 0 : processedTestName.replace(/\.[^/.]+$/, "")) || "";
53
- // Remove 'example/' prefix if present
54
- processedTestName = processedTestName.replace(/^example\//, "");
55
- // Replace special characters with underscores (matching DockerManager)
56
- const sanitizedTestName = processedTestName.toLowerCase().replaceAll("/", "_").replaceAll(".", "-");
57
- // Construct container name matching DockerManager's convention
58
- const containerName = `${runtime}-${sanitizedTestName}-aider`;
59
- aiderTerminal.sendText("clear");
60
- setTimeout(() => {
61
- aiderTerminal.sendText(`echo "Connecting to aider container: ${containerName}"`);
62
- aiderTerminal.sendText(`docker exec -it ${containerName} /bin/bash`);
63
- }, 500);
64
- }
65
- });
66
- const openConfigCommand = vscode.commands.registerCommand("testeranto.openConfig", async () => {
67
- try {
68
- const uri = vscode.Uri.file("allTests.ts");
69
- const doc = await vscode.workspace.openTextDocument(uri);
70
- await vscode.window.showTextDocument(doc);
71
- }
72
- catch (err) {
73
- vscode.window.showWarningMessage("Could not open allTests.ts configuration file");
74
- }
75
- });
76
- const openFileCommand = vscode.commands.registerCommand("testeranto.openFile", async (item) => {
77
- var _a;
78
- if (item.type === TreeItemType.File) {
79
- const fileName = ((_a = item.data) === null || _a === void 0 ? void 0 : _a.fileName) || item.label;
80
- const uri = vscode.Uri.file(fileName);
81
- try {
82
- const doc = await vscode.workspace.openTextDocument(uri);
83
- await vscode.window.showTextDocument(doc);
84
- }
85
- catch (err) {
86
- const files = await vscode.workspace.findFiles(`**/${fileName}`, null, 1);
87
- if (files.length > 0) {
88
- const doc = await vscode.workspace.openTextDocument(files[0]);
89
- await vscode.window.showTextDocument(doc);
90
- }
91
- else {
92
- vscode.window.showWarningMessage(`Could not open file: ${fileName}`);
93
- }
94
- }
95
- }
96
- });
97
- const refreshCommand = vscode.commands.registerCommand("testeranto.refresh", () => {
98
- vscode.window.showInformationMessage("Refreshing all Testeranto views...");
99
- testTreeDataProvider.refresh();
100
- fileTreeDataProvider.refresh();
101
- processesTreeDataProvider.refresh();
102
- featuresTreeDataProvider.refresh();
103
- });
104
- const retryConnectionCommand = vscode.commands.registerCommand("testeranto.retryConnection", (provider) => {
105
- vscode.window.showInformationMessage("Retrying connection to Docker process server...");
106
- // Reset connection attempts and try to reconnect
107
- provider.connectionAttempts = 0;
108
- provider.isConnected = false;
109
- provider.connectWebSocket();
110
- provider.refresh();
111
- });
112
- // Register tree views
113
- const testTreeView = vscode.window.createTreeView("testerantoTestsView", {
114
- treeDataProvider: testTreeDataProvider,
115
- showCollapseAll: true
116
- });
117
- const fileTreeView = vscode.window.createTreeView("testerantoFilesView", {
118
- treeDataProvider: fileTreeDataProvider,
119
- showCollapseAll: true
120
- });
121
- const processesTreeView = vscode.window.createTreeView("testerantoResultsView", {
122
- treeDataProvider: processesTreeDataProvider,
123
- showCollapseAll: true
124
- });
125
- const featuresTreeView = vscode.window.createTreeView("testerantoFeaturesView", {
126
- treeDataProvider: featuresTreeDataProvider,
127
- showCollapseAll: true
128
- });
129
- // Clean up on deactivation
130
- context.subscriptions.push({
131
- dispose: () => {
132
- terminalManager.disposeAll();
133
- processesTreeDataProvider.dispose();
134
- }
135
- });
136
- // Register all commands and views
137
- context.subscriptions.push(showTestsCommand, runTestCommand, aiderCommand, openFileCommand, openConfigCommand, refreshCommand, retryConnectionCommand, testTreeView, fileTreeView, processesTreeView, featuresTreeView, statusBarItem);
138
- console.log("[Testeranto] Commands registered");
139
- console.log("[Testeranto] Four tree views registered");
140
- vscode.commands.getCommands().then((commands) => {
141
- const hasCommand = commands.includes("testeranto.showTests");
142
- console.log(`[Testeranto] Command available in palette: ${hasCommand}`);
143
- });
144
- console.log("[Testeranto] Extension activated successfully");
145
- }
146
- export function deactivate() {
147
- console.log("[Testeranto] Extension deactivated");
148
- }
@@ -1,408 +0,0 @@
1
- // This component shows a tree
2
- // It first breaksdown matching the file structure.
3
- // tests.json are further broken done via given-when-then
4
- // features are also spread into the tree
5
- // example: "testeranto/reports/allTests/example/node.Calculator.test.ts.json"
6
- // the tree should spread to "example/Calculator.test.ts"
7
- // then the json file is spread from there
8
- // • example(folder)
9
- // • Calculator.test.ts(file)
10
- // • node(runtime - specific results)
11
- // • Overall status
12
- // • Features
13
- // • Test Scenarios
14
- // • Scenario 1: ...
15
- // • GIVEN: ...
16
- // • Features
17
- // • WHEN Steps
18
- // • THEN Assertions
19
- // • python(runtime - specific results)
20
- // • ...
21
- import * as vscode from 'vscode';
22
- import { TestTreeItem } from '../TestTreeItem';
23
- import { TreeItemType } from '../types';
24
- import * as fs from 'fs';
25
- import * as path from 'path';
26
- export class FeaturesTreeDataProvider {
27
- constructor() {
28
- this._onDidChangeTreeData = new vscode.EventEmitter();
29
- this.onDidChangeTreeData = this._onDidChangeTreeData.event;
30
- // Determine the workspace root
31
- const workspaceFolders = vscode.workspace.workspaceFolders;
32
- if (workspaceFolders && workspaceFolders.length > 0) {
33
- this.resultsDir = path.join(workspaceFolders[0].uri.fsPath, 'testeranto', 'reports', 'allTests', 'example');
34
- }
35
- else {
36
- this.resultsDir = path.join(process.cwd(), 'testeranto', 'reports', 'allTests', 'example');
37
- }
38
- }
39
- refresh() {
40
- this._onDidChangeTreeData.fire();
41
- }
42
- getTreeItem(element) {
43
- return element;
44
- }
45
- getChildren(element) {
46
- if (!element) {
47
- return Promise.resolve(this.getSourceStructure());
48
- }
49
- else {
50
- const data = element.data;
51
- if (data === null || data === void 0 ? void 0 : data.sourcePath) {
52
- // Always get children for the source path
53
- return Promise.resolve(this.getSourceChildren(data.sourcePath));
54
- }
55
- else if ((data === null || data === void 0 ? void 0 : data.testFile) && data.testResultIndex === undefined) {
56
- // This handles the case when we're showing test results
57
- return Promise.resolve(this.getTestResults(data.testFile));
58
- }
59
- else if ((data === null || data === void 0 ? void 0 : data.testResultIndex) !== undefined) {
60
- return Promise.resolve(this.getTestDetails(data.testFile, data.testResultIndex));
61
- }
62
- }
63
- return Promise.resolve([]);
64
- }
65
- getSourceStructure() {
66
- // Check if results directory exists
67
- if (!fs.existsSync(this.resultsDir)) {
68
- return [
69
- new TestTreeItem('No test results found', TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
70
- description: 'Run tests to generate results in testeranto/reports/allTests/example/'
71
- }, undefined, new vscode.ThemeIcon('info'))
72
- ];
73
- }
74
- // Get all JSON files in the results directory
75
- const files = fs.readdirSync(this.resultsDir).filter(file => file.endsWith('.json'));
76
- if (files.length === 0) {
77
- return [
78
- new TestTreeItem('No test results found', TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
79
- description: 'Run tests to generate results'
80
- }, undefined, new vscode.ThemeIcon('info'))
81
- ];
82
- }
83
- // Build a tree structure based on file paths
84
- // First level: 'example' directory
85
- const treeRoot = { name: '', children: new Map(), fullPath: '', isFile: false };
86
- // Add 'example' node
87
- const exampleNode = {
88
- name: 'example',
89
- children: new Map(),
90
- fullPath: 'example',
91
- isFile: false
92
- };
93
- treeRoot.children.set('example', exampleNode);
94
- for (const file of files) {
95
- // Extract test name from filename (e.g., "node.Calculator.test.ts.json" -> "Calculator.test.ts")
96
- // Remove runtime prefix and .json extension
97
- const match = file.match(/^\w+\.(.+)\.json$/);
98
- if (match) {
99
- const testFileName = match[1]; // e.g., "Calculator.test.ts"
100
- // Add test file under 'example'
101
- if (!exampleNode.children.has(testFileName)) {
102
- exampleNode.children.set(testFileName, {
103
- name: testFileName,
104
- children: new Map(),
105
- fullPath: `example/${testFileName}`,
106
- isFile: true,
107
- fileName: file
108
- });
109
- }
110
- }
111
- }
112
- // Convert tree to TestTreeItems
113
- return this.buildSourceTreeItems(treeRoot);
114
- }
115
- buildSourceTreeItems(node) {
116
- const items = [];
117
- // Sort children: directories first, then files, alphabetically
118
- const sortedChildren = Array.from(node.children.values()).sort((a, b) => {
119
- if (a.isFile && !b.isFile)
120
- return 1;
121
- if (!a.isFile && b.isFile)
122
- return -1;
123
- return a.name.localeCompare(b.name);
124
- });
125
- for (const child of sortedChildren) {
126
- // Set collapsible state based on whether it's a file or directory
127
- // Directories can be expanded, files can be expanded to show test results
128
- const collapsibleState = vscode.TreeItemCollapsibleState.Collapsed;
129
- const treeItem = new TestTreeItem(child.name, TreeItemType.File, collapsibleState, {
130
- sourcePath: child.fullPath,
131
- testFile: child.fileName,
132
- fileName: child.fileName,
133
- // Add a flag to indicate if it's a file or directory
134
- isFile: child.isFile
135
- }, undefined, child.isFile ? new vscode.ThemeIcon("file-code") : new vscode.ThemeIcon("folder"));
136
- items.push(treeItem);
137
- }
138
- return items;
139
- }
140
- getSourceChildren(sourcePath) {
141
- // Check if results directory exists
142
- if (!fs.existsSync(this.resultsDir)) {
143
- return [];
144
- }
145
- // Get all JSON files in the results directory
146
- const files = fs.readdirSync(this.resultsDir).filter(file => file.endsWith('.json'));
147
- // Split sourcePath into parts
148
- const parts = sourcePath.split('/').filter(p => p.length > 0);
149
- // If we're at the root level, show 'example' directory
150
- if (parts.length === 0) {
151
- return [
152
- new TestTreeItem('example', TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
153
- sourcePath: 'example',
154
- isFile: false
155
- }, undefined, new vscode.ThemeIcon('folder'))
156
- ];
157
- }
158
- // If we're at the 'example' level, show test files
159
- if (parts.length === 1 && parts[0] === 'example') {
160
- // Group files by test name (without runtime prefix)
161
- const testFiles = new Map(); // testName -> list of runtime files
162
- for (const file of files) {
163
- const match = file.match(/^(\w+)\.(.+)\.json$/);
164
- if (match) {
165
- const runtime = match[1];
166
- const testName = match[2];
167
- if (!testFiles.has(testName)) {
168
- testFiles.set(testName, []);
169
- }
170
- testFiles.get(testName).push(file);
171
- }
172
- }
173
- // Create test file items
174
- const items = [];
175
- for (const [testName, runtimeFiles] of testFiles) {
176
- // Count passed/failed for this test across all runtimes
177
- let passedCount = 0;
178
- let failedCount = 0;
179
- for (const file of runtimeFiles) {
180
- try {
181
- const filePath = path.join(this.resultsDir, file);
182
- const content = fs.readFileSync(filePath, 'utf-8');
183
- const result = JSON.parse(content);
184
- if (result.status === true || result.failed === false) {
185
- passedCount++;
186
- }
187
- else {
188
- failedCount++;
189
- }
190
- }
191
- catch (_a) {
192
- // Skip if can't parse
193
- }
194
- }
195
- const total = runtimeFiles.length;
196
- const description = `${passedCount} passed, ${failedCount} failed`;
197
- items.push(new TestTreeItem(testName, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
198
- sourcePath: `example/${testName}`,
199
- testName: testName,
200
- isFile: true,
201
- description: description
202
- }, undefined, failedCount === 0 ?
203
- new vscode.ThemeIcon('file-code', new vscode.ThemeColor('testing.iconPassed')) :
204
- new vscode.ThemeIcon('file-code', new vscode.ThemeColor('testing.iconFailed'))));
205
- }
206
- return items.sort((a, b) => a.label.localeCompare(b.label));
207
- }
208
- // If we're at the test file level (e.g., "example/Calculator.test.ts"), show runtime-specific results
209
- if (parts.length === 2 && parts[0] === 'example') {
210
- const testName = parts[1];
211
- // Find all runtime files for this test
212
- const runtimeFiles = files.filter(file => {
213
- const match = file.match(/^(\w+)\.(.+)\.json$/);
214
- return match && match[2] === testName;
215
- });
216
- return runtimeFiles.map(file => {
217
- const match = file.match(/^(\w+)\.(.+)\.json$/);
218
- const runtime = match ? match[1] : 'unknown';
219
- // Read the file to get status
220
- let icon = new vscode.ThemeIcon('file-code');
221
- let description = '';
222
- try {
223
- const filePath = path.join(this.resultsDir, file);
224
- const content = fs.readFileSync(filePath, 'utf-8');
225
- const result = JSON.parse(content);
226
- if (result.status === true || result.failed === false) {
227
- icon = new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed'));
228
- description = 'PASSED';
229
- }
230
- else {
231
- icon = new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed'));
232
- description = `FAILED: ${result.fails || 0} failures`;
233
- }
234
- }
235
- catch (_a) {
236
- description = 'Error reading file';
237
- icon = new vscode.ThemeIcon('warning');
238
- }
239
- return new TestTreeItem(runtime, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
240
- sourcePath: `example/${testName}/${runtime}`,
241
- testFile: file,
242
- fileName: file,
243
- isFile: true,
244
- description: description
245
- }, undefined, icon);
246
- }).sort((a, b) => a.label.localeCompare(b.label));
247
- }
248
- // If we're at the runtime level under a test file (e.g., "example/Calculator.test.ts/node"), show test results
249
- if (parts.length === 3 && parts[0] === 'example') {
250
- const testName = parts[1];
251
- const runtime = parts[2];
252
- // Find the actual file
253
- const fileName = `${runtime}.${testName}.json`;
254
- if (files.includes(fileName)) {
255
- // Return the test results for this file
256
- return this.getTestResults(fileName);
257
- }
258
- }
259
- return [];
260
- }
261
- getTestFilesForRuntime(runtime) {
262
- const files = fs.readdirSync(this.resultsDir).filter(file => file.startsWith(runtime + '.') && file.endsWith('.json'));
263
- return files.map(file => {
264
- const filePath = path.join(this.resultsDir, file);
265
- try {
266
- const content = fs.readFileSync(filePath, 'utf-8');
267
- const result = JSON.parse(content);
268
- let icon;
269
- let description = '';
270
- if (result.status === true || result.failed === false) {
271
- icon = new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed'));
272
- description = 'All tests passed';
273
- }
274
- else {
275
- icon = new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed'));
276
- description = `${result.fails || 0} tests failed`;
277
- }
278
- return new TestTreeItem(file, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
279
- testFile: file,
280
- description: description
281
- }, undefined, icon);
282
- }
283
- catch (error) {
284
- return new TestTreeItem(file, TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
285
- testFile: file,
286
- description: 'Error reading file'
287
- }, undefined, new vscode.ThemeIcon('warning'));
288
- }
289
- });
290
- }
291
- getTestResults(testFile) {
292
- var _a;
293
- const filePath = path.join(this.resultsDir, testFile);
294
- try {
295
- const content = fs.readFileSync(filePath, 'utf-8');
296
- const result = JSON.parse(content);
297
- const items = [];
298
- // Add overall status
299
- const overallPassed = result.status === true || result.failed === false;
300
- items.push(new TestTreeItem(`Overall: ${overallPassed ? 'PASSED' : 'FAILED'}`, TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
301
- description: `Fails: ${result.fails || 0} | Features: ${((_a = result.features) === null || _a === void 0 ? void 0 : _a.length) || 0}`
302
- }, undefined, overallPassed ?
303
- new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed')) :
304
- new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed'))));
305
- // Add features section
306
- if (result.features && result.features.length > 0) {
307
- const featuresItem = new TestTreeItem(`Features (${result.features.length})`, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
308
- description: 'All test features'
309
- }, undefined, new vscode.ThemeIcon('symbol-array'));
310
- items.push(featuresItem);
311
- }
312
- // Add Givens section (test scenarios)
313
- if (result.givens && result.givens.length > 0) {
314
- const givensItem = new TestTreeItem(`Test Scenarios (${result.givens.length})`, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
315
- description: 'Given-When-Then test cases'
316
- }, undefined, new vscode.ThemeIcon('list-tree'));
317
- items.push(givensItem);
318
- // Add each given as a child
319
- for (let i = 0; i < result.givens.length; i++) {
320
- const given = result.givens[i];
321
- const givenPassed = given.status === true || given.failed === false;
322
- const givenItem = new TestTreeItem(`Scenario ${i + 1}: ${given.key || 'Unnamed'}`, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, {
323
- testFile: testFile,
324
- testResultIndex: i,
325
- description: givenPassed ? 'PASSED' : 'FAILED'
326
- }, undefined, givenPassed ?
327
- new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed')) :
328
- new vscode.ThemeIcon('error', new vscode.ThemeColor('testing.iconFailed')));
329
- items.push(givenItem);
330
- }
331
- }
332
- return items;
333
- }
334
- catch (error) {
335
- return [
336
- new TestTreeItem('Error reading test results', TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
337
- description: String(error)
338
- }, undefined, new vscode.ThemeIcon('error'))
339
- ];
340
- }
341
- }
342
- getTestDetails(testFile, index) {
343
- const filePath = path.join(this.resultsDir, testFile);
344
- try {
345
- const content = fs.readFileSync(filePath, 'utf-8');
346
- const result = JSON.parse(content);
347
- if (!result.givens || index >= result.givens.length) {
348
- return [
349
- new TestTreeItem('Test scenario not found', TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: 'Invalid test scenario index' }, undefined, new vscode.ThemeIcon('warning'))
350
- ];
351
- }
352
- const given = result.givens[index];
353
- const items = [];
354
- // Add GIVEN section
355
- const givenPassed = given.status === true || given.failed === false;
356
- items.push(new TestTreeItem(`GIVEN: ${given.key || 'Test Scenario'}`, TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: givenPassed ? 'PASSED' : 'FAILED' }, undefined, givenPassed ?
357
- new vscode.ThemeIcon('check') :
358
- new vscode.ThemeIcon('error')));
359
- // Add features for this given
360
- if (given.features && given.features.length > 0) {
361
- const featuresItem = new TestTreeItem(`Features (${given.features.length})`, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, { description: 'Features tested in this scenario' }, undefined, new vscode.ThemeIcon('symbol-array'));
362
- items.push(featuresItem);
363
- for (const feature of given.features) {
364
- items.push(new TestTreeItem(feature, TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: 'Feature' }, undefined, new vscode.ThemeIcon('symbol-string')));
365
- }
366
- }
367
- // Add WHEN steps
368
- if (given.whens && given.whens.length > 0) {
369
- const whensItem = new TestTreeItem(`WHEN Steps (${given.whens.length})`, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, { description: 'Actions performed' }, undefined, new vscode.ThemeIcon('list-ordered'));
370
- items.push(whensItem);
371
- for (let i = 0; i < given.whens.length; i++) {
372
- const when = given.whens[i];
373
- items.push(new TestTreeItem(`Step ${i + 1}: ${when.name || 'Action'}`, TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
374
- description: when.status || 'No status',
375
- tooltip: when.error ? `Error: ${when.error}` : undefined
376
- }, undefined, when.error ?
377
- new vscode.ThemeIcon('error') :
378
- new vscode.ThemeIcon('circle')));
379
- }
380
- }
381
- // Add THEN assertions
382
- if (given.thens && given.thens.length > 0) {
383
- const thensItem = new TestTreeItem(`THEN Assertions (${given.thens.length})`, TreeItemType.File, vscode.TreeItemCollapsibleState.Collapsed, { description: 'Expected outcomes' }, undefined, new vscode.ThemeIcon('checklist'));
384
- items.push(thensItem);
385
- for (let i = 0; i < given.thens.length; i++) {
386
- const then = given.thens[i];
387
- const assertionPassed = !then.error;
388
- items.push(new TestTreeItem(`Assertion ${i + 1}: ${then.name || 'Check'}`, TreeItemType.File, vscode.TreeItemCollapsibleState.None, {
389
- description: assertionPassed ? 'PASSED' : 'FAILED',
390
- tooltip: then.error ? `Error: ${then.error}` : undefined
391
- }, undefined, assertionPassed ?
392
- new vscode.ThemeIcon('check') :
393
- new vscode.ThemeIcon('error')));
394
- }
395
- }
396
- // Add error if present
397
- if (given.error) {
398
- items.push(new TestTreeItem('Error Details', TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: given.error }, undefined, new vscode.ThemeIcon('warning')));
399
- }
400
- return items;
401
- }
402
- catch (error) {
403
- return [
404
- new TestTreeItem('Error reading test details', TreeItemType.File, vscode.TreeItemCollapsibleState.None, { description: String(error) }, undefined, new vscode.ThemeIcon('error'))
405
- ];
406
- }
407
- }
408
- }