@cotestdev/ai-runner 0.0.4 → 0.0.6

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 (148) hide show
  1. package/dist/agents/logger.d.ts.map +1 -0
  2. package/dist/agents/logger.js.map +1 -0
  3. package/dist/agents/playwright-executor.d.ts.map +1 -0
  4. package/dist/agents/playwright-executor.js.map +1 -0
  5. package/dist/agents/tools/playwright-backend-adapter.d.ts.map +1 -0
  6. package/dist/agents/tools/playwright-backend-adapter.js.map +1 -0
  7. package/dist/agents/types.d.ts.map +1 -0
  8. package/dist/{core-infra/src → agents}/types.js.map +1 -1
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/runner.d.ts.map +1 -0
  12. package/dist/runner.js.map +1 -0
  13. package/dist/tools/index.d.ts.map +1 -0
  14. package/dist/tools/index.js.map +1 -0
  15. package/dist/tools/playwright-groups.d.ts.map +1 -0
  16. package/dist/tools/playwright-groups.js.map +1 -0
  17. package/dist/types/external.d.ts.map +1 -0
  18. package/dist/types/external.js.map +1 -0
  19. package/dist/types/index.d.ts.map +1 -0
  20. package/dist/types/index.js.map +1 -0
  21. package/package.json +2 -2
  22. package/dist/ai-runner/src/agents/logger.d.ts.map +0 -1
  23. package/dist/ai-runner/src/agents/logger.js.map +0 -1
  24. package/dist/ai-runner/src/agents/playwright-executor.d.ts.map +0 -1
  25. package/dist/ai-runner/src/agents/playwright-executor.js.map +0 -1
  26. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.d.ts.map +0 -1
  27. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.js.map +0 -1
  28. package/dist/ai-runner/src/agents/types.d.ts.map +0 -1
  29. package/dist/ai-runner/src/agents/types.js.map +0 -1
  30. package/dist/ai-runner/src/index.d.ts.map +0 -1
  31. package/dist/ai-runner/src/index.js.map +0 -1
  32. package/dist/ai-runner/src/runner.d.ts.map +0 -1
  33. package/dist/ai-runner/src/runner.js.map +0 -1
  34. package/dist/ai-runner/src/tools/index.d.ts.map +0 -1
  35. package/dist/ai-runner/src/tools/index.js.map +0 -1
  36. package/dist/ai-runner/src/tools/playwright-groups.d.ts.map +0 -1
  37. package/dist/ai-runner/src/tools/playwright-groups.js.map +0 -1
  38. package/dist/ai-runner/src/types/external.d.ts.map +0 -1
  39. package/dist/ai-runner/src/types/external.js.map +0 -1
  40. package/dist/ai-runner/src/types/index.d.ts.map +0 -1
  41. package/dist/ai-runner/src/types/index.js.map +0 -1
  42. package/dist/core-infra/src/directory-validator.d.ts +0 -29
  43. package/dist/core-infra/src/directory-validator.d.ts.map +0 -1
  44. package/dist/core-infra/src/directory-validator.js +0 -91
  45. package/dist/core-infra/src/directory-validator.js.map +0 -1
  46. package/dist/core-infra/src/index.d.ts +0 -14
  47. package/dist/core-infra/src/index.d.ts.map +0 -1
  48. package/dist/core-infra/src/index.js +0 -44
  49. package/dist/core-infra/src/index.js.map +0 -1
  50. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts +0 -14
  51. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts.map +0 -1
  52. package/dist/core-infra/src/mcp/file-mcp-manager.js +0 -46
  53. package/dist/core-infra/src/mcp/file-mcp-manager.js.map +0 -1
  54. package/dist/core-infra/src/mcp/index.d.ts +0 -21
  55. package/dist/core-infra/src/mcp/index.d.ts.map +0 -1
  56. package/dist/core-infra/src/mcp/index.js +0 -17
  57. package/dist/core-infra/src/mcp/index.js.map +0 -1
  58. package/dist/core-infra/src/mcp/mcp-client.d.ts +0 -128
  59. package/dist/core-infra/src/mcp/mcp-client.d.ts.map +0 -1
  60. package/dist/core-infra/src/mcp/mcp-client.js +0 -163
  61. package/dist/core-infra/src/mcp/mcp-client.js.map +0 -1
  62. package/dist/core-infra/src/mcp/mcp-manager.d.ts +0 -21
  63. package/dist/core-infra/src/mcp/mcp-manager.d.ts.map +0 -1
  64. package/dist/core-infra/src/mcp/mcp-manager.js +0 -99
  65. package/dist/core-infra/src/mcp/mcp-manager.js.map +0 -1
  66. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts +0 -19
  67. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts.map +0 -1
  68. package/dist/core-infra/src/mcp/playwright-mcp-manager.js +0 -121
  69. package/dist/core-infra/src/mcp/playwright-mcp-manager.js.map +0 -1
  70. package/dist/core-infra/src/model.d.ts +0 -13
  71. package/dist/core-infra/src/model.d.ts.map +0 -1
  72. package/dist/core-infra/src/model.js +0 -191
  73. package/dist/core-infra/src/model.js.map +0 -1
  74. package/dist/core-infra/src/repositories/BaseRepository.d.ts +0 -69
  75. package/dist/core-infra/src/repositories/BaseRepository.d.ts.map +0 -1
  76. package/dist/core-infra/src/repositories/BaseRepository.js +0 -213
  77. package/dist/core-infra/src/repositories/BaseRepository.js.map +0 -1
  78. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts +0 -70
  79. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts.map +0 -1
  80. package/dist/core-infra/src/repositories/DirectoryRepository.js +0 -336
  81. package/dist/core-infra/src/repositories/DirectoryRepository.js.map +0 -1
  82. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts +0 -34
  83. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts.map +0 -1
  84. package/dist/core-infra/src/repositories/ExplorationRepository.js +0 -54
  85. package/dist/core-infra/src/repositories/ExplorationRepository.js.map +0 -1
  86. package/dist/core-infra/src/repositories/FileRepository.d.ts +0 -56
  87. package/dist/core-infra/src/repositories/FileRepository.d.ts.map +0 -1
  88. package/dist/core-infra/src/repositories/FileRepository.js +0 -132
  89. package/dist/core-infra/src/repositories/FileRepository.js.map +0 -1
  90. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts +0 -38
  91. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts.map +0 -1
  92. package/dist/core-infra/src/repositories/ModelConfigRepository.js +0 -59
  93. package/dist/core-infra/src/repositories/ModelConfigRepository.js.map +0 -1
  94. package/dist/core-infra/src/repositories/ProjectRepository.d.ts +0 -32
  95. package/dist/core-infra/src/repositories/ProjectRepository.d.ts.map +0 -1
  96. package/dist/core-infra/src/repositories/ProjectRepository.js +0 -67
  97. package/dist/core-infra/src/repositories/ProjectRepository.js.map +0 -1
  98. package/dist/core-infra/src/repositories/SettingsRepository.d.ts +0 -19
  99. package/dist/core-infra/src/repositories/SettingsRepository.d.ts.map +0 -1
  100. package/dist/core-infra/src/repositories/SettingsRepository.js +0 -72
  101. package/dist/core-infra/src/repositories/SettingsRepository.js.map +0 -1
  102. package/dist/core-infra/src/repositories/TableDataRepository.d.ts +0 -22
  103. package/dist/core-infra/src/repositories/TableDataRepository.d.ts.map +0 -1
  104. package/dist/core-infra/src/repositories/TableDataRepository.js +0 -33
  105. package/dist/core-infra/src/repositories/TableDataRepository.js.map +0 -1
  106. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts +0 -120
  107. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts.map +0 -1
  108. package/dist/core-infra/src/repositories/TestCaseRepository.js +0 -463
  109. package/dist/core-infra/src/repositories/TestCaseRepository.js.map +0 -1
  110. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts +0 -35
  111. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts.map +0 -1
  112. package/dist/core-infra/src/repositories/TestPlanRepository.js +0 -80
  113. package/dist/core-infra/src/repositories/TestPlanRepository.js.map +0 -1
  114. package/dist/core-infra/src/repositories/TestResultRepository.d.ts +0 -30
  115. package/dist/core-infra/src/repositories/TestResultRepository.d.ts.map +0 -1
  116. package/dist/core-infra/src/repositories/TestResultRepository.js +0 -54
  117. package/dist/core-infra/src/repositories/TestResultRepository.js.map +0 -1
  118. package/dist/core-infra/src/repositories/index.d.ts +0 -17
  119. package/dist/core-infra/src/repositories/index.d.ts.map +0 -1
  120. package/dist/core-infra/src/repositories/index.js +0 -31
  121. package/dist/core-infra/src/repositories/index.js.map +0 -1
  122. package/dist/core-infra/src/storageService.d.ts +0 -131
  123. package/dist/core-infra/src/storageService.d.ts.map +0 -1
  124. package/dist/core-infra/src/storageService.js +0 -304
  125. package/dist/core-infra/src/storageService.js.map +0 -1
  126. package/dist/core-infra/src/types.d.ts +0 -219
  127. package/dist/core-infra/src/types.d.ts.map +0 -1
  128. package/dist/core-infra/src/types.js +0 -3
  129. /package/dist/{ai-runner/src/agents → agents}/logger.d.ts +0 -0
  130. /package/dist/{ai-runner/src/agents → agents}/logger.js +0 -0
  131. /package/dist/{ai-runner/src/agents → agents}/playwright-executor.d.ts +0 -0
  132. /package/dist/{ai-runner/src/agents → agents}/playwright-executor.js +0 -0
  133. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.d.ts +0 -0
  134. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.js +0 -0
  135. /package/dist/{ai-runner/src/agents → agents}/types.d.ts +0 -0
  136. /package/dist/{ai-runner/src/agents → agents}/types.js +0 -0
  137. /package/dist/{ai-runner/src/index.d.ts → index.d.ts} +0 -0
  138. /package/dist/{ai-runner/src/index.js → index.js} +0 -0
  139. /package/dist/{ai-runner/src/runner.d.ts → runner.d.ts} +0 -0
  140. /package/dist/{ai-runner/src/runner.js → runner.js} +0 -0
  141. /package/dist/{ai-runner/src/tools → tools}/index.d.ts +0 -0
  142. /package/dist/{ai-runner/src/tools → tools}/index.js +0 -0
  143. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.d.ts +0 -0
  144. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.js +0 -0
  145. /package/dist/{ai-runner/src/types → types}/external.d.ts +0 -0
  146. /package/dist/{ai-runner/src/types → types}/external.js +0 -0
  147. /package/dist/{ai-runner/src/types → types}/index.d.ts +0 -0
  148. /package/dist/{ai-runner/src/types → types}/index.js +0 -0
@@ -1,463 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestCaseRepository = void 0;
4
- const BaseRepository_1 = require("./BaseRepository");
5
- const path_1 = require("path");
6
- const fs_1 = require("fs");
7
- /**
8
- * TestCaseRepository handles all storage operations for test cases
9
- * Responsible for managing test case data, steps, and associated scripts
10
- * Supports hierarchical directory organization (up to 3 levels)
11
- */
12
- class TestCaseRepository extends BaseRepository_1.BaseRepository {
13
- constructor(projectId) {
14
- super((0, path_1.join)("projects", projectId, 'tests'));
15
- }
16
- /**
17
- * Get scripts directory - project-aware
18
- * When project is active: ~/.test_agent/projects/{projectId}/scripts
19
- * When no project: ~/.test_agent/scripts
20
- */
21
- getScriptsDir() {
22
- const testsBaseDir = this.getBaseDir(); // ~/.test_agent/projects/{projectId}/tests or ~/.test_agent/tests
23
- const parentDir = (0, path_1.join)(testsBaseDir, '..');
24
- return (0, path_1.join)(parentDir, 'scripts');
25
- }
26
- /**
27
- * Get steps directory - project-aware
28
- * When project is active: ~/.test_agent/projects/{projectId}/steps
29
- * When no project: ~/.test_agent/steps
30
- */
31
- getStepsDir() {
32
- const testsBaseDir = this.getBaseDir(); // ~/.test_agent/projects/{projectId}/tests or ~/.test_agent/tests
33
- const parentDir = (0, path_1.join)(testsBaseDir, '..');
34
- return (0, path_1.join)(parentDir, 'steps');
35
- }
36
- /**
37
- * Ensure scripts directory exists
38
- */
39
- ensureScriptsDir() {
40
- const scriptsDir = this.getScriptsDir();
41
- if (!(0, fs_1.existsSync)(scriptsDir)) {
42
- (0, fs_1.mkdirSync)(scriptsDir, { recursive: true });
43
- }
44
- }
45
- /**
46
- * Ensure steps directory exists
47
- */
48
- ensureStepsDir() {
49
- const stepsDir = this.getStepsDir();
50
- if (!(0, fs_1.existsSync)(stepsDir)) {
51
- (0, fs_1.mkdirSync)(stepsDir, { recursive: true });
52
- }
53
- }
54
- /**
55
- * Save a test case with support for directory paths
56
- */
57
- saveTestCase(testCase) {
58
- const dirPath = (0, path_1.join)(this.getBaseDir(), testCase.path);
59
- // Ensure directory exists
60
- if (!(0, fs_1.existsSync)(dirPath)) {
61
- (0, fs_1.mkdirSync)(dirPath, { recursive: true });
62
- }
63
- // Save to file within the directory path
64
- const filePath = (0, path_1.join)(dirPath, `${testCase.id}.json`);
65
- // C:\Users\85847\.test_agent\projects\43af4db4-3249-4135-b279-97b24f27106b\tests\aaa\ccc\ddd
66
- (0, fs_1.writeFileSync)(filePath, JSON.stringify(testCase, (key, value) => {
67
- if (key === 'steps' || key === 'playwrightScript' || key === 'table') {
68
- return undefined; // Return undefined to ignore this field
69
- }
70
- return value;
71
- }, 2), 'utf-8');
72
- }
73
- /**
74
- * Load a test case with its steps and script
75
- */
76
- loadTestCase(testId, path) {
77
- let filePath;
78
- if (path) {
79
- filePath = (0, path_1.join)(this.getBaseDir(), path, `${testId}.json`);
80
- }
81
- else {
82
- // Try to find test case in the base directory or any subdirectory
83
- filePath = (0, path_1.join)(this.getBaseDir(), `${testId}.json`);
84
- if (!(0, fs_1.existsSync)(filePath)) {
85
- // Search in all directories
86
- const found = this.findTestCaseFile(testId, this.getBaseDir());
87
- if (!found) {
88
- return null;
89
- }
90
- filePath = found;
91
- }
92
- }
93
- if (!(0, fs_1.existsSync)(filePath)) {
94
- return null;
95
- }
96
- try {
97
- const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
98
- const testCase = JSON.parse(content);
99
- // Load associated steps
100
- const steps = this.loadTestSteps(testId);
101
- testCase.steps = steps;
102
- return testCase;
103
- }
104
- catch {
105
- return null;
106
- }
107
- }
108
- /**
109
- * Recursively find a test case file by ID
110
- */
111
- findTestCaseFile(testId, searchPath) {
112
- try {
113
- const items = (0, fs_1.readdirSync)(searchPath);
114
- for (const item of items) {
115
- const itemPath = (0, path_1.join)(searchPath, item);
116
- const stat = (0, fs_1.statSync)(itemPath);
117
- if (stat.isDirectory() && item !== 'info.json') {
118
- // Skip deep nesting (max 3 levels from tests root)
119
- const relativePath = (0, path_1.relative)(this.getBaseDir(), itemPath);
120
- if (relativePath.split(/[\/\\]/).length > 3) {
121
- continue;
122
- }
123
- const result = this.findTestCaseFile(testId, itemPath);
124
- if (result) {
125
- return result;
126
- }
127
- }
128
- else if (item === `${testId}.json`) {
129
- return itemPath;
130
- }
131
- }
132
- }
133
- catch {
134
- // Skip if unable to read directory
135
- }
136
- return null;
137
- }
138
- /**
139
- * List all test cases sorted by creation date (newest first)
140
- * Returns a hierarchical directory tree
141
- */
142
- listTestCases() {
143
- return this.listTestCasesInDirectory(this.getBaseDir());
144
- }
145
- /**
146
- * Build complete directory tree
147
- */
148
- buildDirectoryTree() {
149
- return this.buildDirectoryTreeRecursive(this.getBaseDir(), '');
150
- }
151
- /**
152
- * Recursively build directory tree
153
- */
154
- buildDirectoryTreeRecursive(fullPath, relativePath) {
155
- const pathParts = relativePath ? relativePath.split('/') : [];
156
- const name = pathParts.length > 0 ? pathParts[pathParts.length - 1] : 'root';
157
- // Load directory info if exists
158
- let info = undefined;
159
- const infoPath = (0, path_1.join)(fullPath, 'info.json');
160
- if ((0, fs_1.existsSync)(infoPath)) {
161
- try {
162
- const content = (0, fs_1.readFileSync)(infoPath, 'utf-8');
163
- info = JSON.parse(content);
164
- }
165
- catch {
166
- // Skip invalid info.json
167
- }
168
- }
169
- const tree = {
170
- path: relativePath,
171
- name,
172
- info,
173
- children: [],
174
- tests: [],
175
- };
176
- try {
177
- const items = (0, fs_1.readdirSync)(fullPath);
178
- for (const item of items) {
179
- if (item === 'info.json') {
180
- continue;
181
- }
182
- const itemPath = (0, path_1.join)(fullPath, item);
183
- const stat = (0, fs_1.statSync)(itemPath);
184
- if (stat.isDirectory()) {
185
- const subPath = relativePath ? `${relativePath}/${item}` : item;
186
- // Check depth (max 3 levels)
187
- if (subPath.split('/').length <= 3) {
188
- tree.children.push(this.buildDirectoryTreeRecursive(itemPath, subPath));
189
- }
190
- }
191
- }
192
- // Load test files from current directory
193
- for (const item of items) {
194
- if (item.endsWith('.json') && item !== 'info.json') {
195
- try {
196
- const content = (0, fs_1.readFileSync)((0, path_1.join)(fullPath, item), 'utf-8');
197
- const testCase = JSON.parse(content);
198
- // Only include tests that belong to this directory
199
- if (testCase.path === relativePath) {
200
- tree.tests.push(testCase);
201
- }
202
- }
203
- catch {
204
- // Skip invalid test files
205
- }
206
- }
207
- }
208
- // Sort children by name and tests by creation date
209
- tree.children.sort((a, b) => a.name.localeCompare(b.name));
210
- tree.tests.sort((a, b) => b.createdAt - a.createdAt);
211
- }
212
- catch {
213
- // Return tree with no children/tests if unable to read
214
- }
215
- return tree;
216
- }
217
- /**
218
- * List test cases in a specific directory recursively.
219
- * Loads full test data including steps
220
- */
221
- listTestCasesRecursively(dirPath, seen = new Set()) {
222
- const fullPath = (0, path_1.join)(this.getBaseDir(), dirPath);
223
- const tests = [];
224
- const items = (0, fs_1.readdirSync)(fullPath);
225
- for (const item of items) {
226
- const itemPath = (0, path_1.join)(fullPath, item);
227
- const stat = (0, fs_1.statSync)(itemPath);
228
- if (stat.isDirectory()) {
229
- // Recursively list tests in subdirectories
230
- const subDirPath = dirPath ? `${dirPath}/${item}` : item;
231
- tests.push(...this.listTestCasesRecursively(subDirPath, seen));
232
- }
233
- else if (item.endsWith('.json') && item !== 'info.json') {
234
- // Load test case file
235
- const testId = item.replace('.json', '');
236
- if (seen.has(testId)) {
237
- continue; // Skip duplicates
238
- }
239
- seen.add(testId);
240
- const testCase = this.loadTestCase(testId, dirPath);
241
- if (testCase) {
242
- tests.push(testCase);
243
- }
244
- }
245
- }
246
- return tests.sort((a, b) => b.createdAt - a.createdAt);
247
- }
248
- /**
249
- * List test cases in a specific directory
250
- */
251
- listTestCasesInDirectory(dirPath) {
252
- const tests = [];
253
- try {
254
- const items = (0, fs_1.readdirSync)(dirPath);
255
- for (const item of items) {
256
- if (item.endsWith('.json') && item !== 'info.json') {
257
- try {
258
- const content = (0, fs_1.readFileSync)((0, path_1.join)(dirPath, item), 'utf-8');
259
- tests.push(JSON.parse(content));
260
- }
261
- catch {
262
- // Skip invalid files
263
- }
264
- }
265
- else {
266
- const itemPath = (0, path_1.join)(dirPath, item);
267
- const stat = (0, fs_1.statSync)(itemPath);
268
- if (stat.isDirectory()) {
269
- tests.push(...this.listTestCasesInDirectory(itemPath));
270
- }
271
- }
272
- }
273
- }
274
- catch {
275
- // Return empty array if unable to read
276
- }
277
- return tests.sort((a, b) => b.createdAt - a.createdAt);
278
- }
279
- /**
280
- * Delete a test case and its associated data
281
- */
282
- deleteTestCase(testId) {
283
- const filePath = this.findTestCaseFile(testId, this.getBaseDir());
284
- if (filePath) {
285
- (0, fs_1.rmSync)(filePath);
286
- }
287
- this.deleteTestSteps(testId);
288
- this.deleteTestScript(testId);
289
- }
290
- /**
291
- * Save test case steps
292
- */
293
- saveTestSteps(testId, steps) {
294
- // Ensure steps directory exists
295
- this.ensureStepsDir();
296
- // Reset any running steps
297
- let runningFound = false;
298
- steps.forEach(step => {
299
- if (runningFound || step.status === 'running') {
300
- runningFound = true;
301
- step.status = undefined;
302
- step.error = undefined;
303
- }
304
- });
305
- const stepsFile = this.getStepsFilePath(testId);
306
- (0, fs_1.writeFileSync)(stepsFile, JSON.stringify(steps, null, 2), 'utf-8');
307
- }
308
- /**
309
- * Load test case steps
310
- */
311
- loadTestSteps(testId) {
312
- const stepsFile = this.getStepsFilePath(testId);
313
- if (!(0, fs_1.existsSync)(stepsFile)) {
314
- return [];
315
- }
316
- const content = (0, fs_1.readFileSync)(stepsFile, 'utf-8');
317
- return JSON.parse(content);
318
- }
319
- /**
320
- * Delete all steps for a test case
321
- */
322
- deleteTestSteps(testId) {
323
- const stepsFile = this.getStepsFilePath(testId);
324
- if ((0, fs_1.existsSync)(stepsFile)) {
325
- (0, fs_1.rmSync)(stepsFile);
326
- }
327
- }
328
- updateStepBreakPoint(testId, id, isBreakpoint) {
329
- const steps = this.loadTestSteps(testId);
330
- const step = steps.find(s => s.id === id);
331
- if (step) {
332
- step.isBreakpoint = isBreakpoint;
333
- }
334
- this.saveTestSteps(testId, steps);
335
- }
336
- /**
337
- * Save a single test step or insert a new one
338
- * @returns true if updated, false if created
339
- */
340
- saveTestStep(testId, step, afterStepId) {
341
- const testCase = this.loadTestCase(testId);
342
- if (!testCase) {
343
- throw new Error(`Test case ${testId} not found`);
344
- }
345
- testCase.status = 'draft';
346
- let updated = false;
347
- let insertIndex = 0;
348
- const dbStep = testCase.steps.find(s => s.id === step.id);
349
- if (!dbStep) {
350
- if (afterStepId) {
351
- insertIndex = testCase.steps.findIndex(s => s.id === afterStepId);
352
- if (insertIndex !== -1) {
353
- insertIndex += 1;
354
- }
355
- else {
356
- insertIndex = testCase.steps.length;
357
- }
358
- testCase.steps.splice(insertIndex, 0, step);
359
- }
360
- else {
361
- testCase.steps.push(step);
362
- }
363
- }
364
- if (dbStep) {
365
- if (step.description) {
366
- dbStep.description = step.description;
367
- }
368
- dbStep.status = undefined;
369
- dbStep.error = undefined;
370
- updated = true;
371
- }
372
- this.saveTestSteps(testId, testCase.steps);
373
- return updated;
374
- }
375
- /**
376
- * Insert a new step after a specific step
377
- */
378
- insertStep(testId, afterStepId, newStep) {
379
- const testCase = this.loadTestCase(testId);
380
- if (!testCase) {
381
- throw new Error(`Test case ${testId} not found`);
382
- }
383
- testCase.status = 'draft';
384
- let insertIndex = 0;
385
- if (afterStepId) {
386
- insertIndex = testCase.steps.findIndex(s => s.id === afterStepId);
387
- if (insertIndex !== -1) {
388
- insertIndex += 1;
389
- }
390
- else {
391
- insertIndex = testCase.steps.length;
392
- }
393
- }
394
- testCase.steps.splice(insertIndex, 0, newStep);
395
- this.saveTestSteps(testId, testCase.steps);
396
- }
397
- /**
398
- * Delete a specific step by ID
399
- */
400
- deleteStep(testId, stepId) {
401
- let steps = this.loadTestSteps(testId);
402
- if (steps.length === 0) {
403
- return false;
404
- }
405
- const index = steps.findIndex(s => s.id === stepId);
406
- steps = [
407
- ...steps.slice(0, index),
408
- ...steps.slice(index + 1),
409
- ];
410
- this.saveTestSteps(testId, steps);
411
- const testCase = this.loadTestCase(testId);
412
- if (testCase && testCase.status !== 'draft') {
413
- testCase.status = 'draft';
414
- this.saveTestCase(testCase);
415
- }
416
- return true;
417
- }
418
- /**
419
- * Save Playwright script for a test case
420
- */
421
- saveTestScript(testId, script) {
422
- // Ensure scripts directory exists
423
- this.ensureScriptsDir();
424
- const scriptPath = this.getScriptFilePath(testId);
425
- (0, fs_1.writeFileSync)(scriptPath, script, 'utf-8');
426
- }
427
- /**
428
- * Load Playwright script for a test case
429
- */
430
- loadTestScript(testId) {
431
- const scriptPath = this.getScriptFilePath(testId);
432
- if (!(0, fs_1.existsSync)(scriptPath)) {
433
- return undefined;
434
- }
435
- return (0, fs_1.readFileSync)(scriptPath, 'utf-8');
436
- }
437
- hasTestScript(testId) {
438
- return (0, fs_1.existsSync)(this.getScriptFilePath(testId));
439
- }
440
- /**
441
- * Delete Playwright script for a test case
442
- */
443
- deleteTestScript(testId) {
444
- const scriptPath = this.getScriptFilePath(testId);
445
- if ((0, fs_1.existsSync)(scriptPath)) {
446
- (0, fs_1.rmSync)(scriptPath);
447
- }
448
- }
449
- /**
450
- * Get the file path for a test step file
451
- */
452
- getStepsFilePath(testId) {
453
- return (0, path_1.join)(this.getStepsDir(), `${testId}.json`);
454
- }
455
- /**
456
- * Get the file path for a test script file
457
- */
458
- getScriptFilePath(testId) {
459
- return (0, path_1.join)(this.getScriptsDir(), `${testId}.ts`);
460
- }
461
- }
462
- exports.TestCaseRepository = TestCaseRepository;
463
- //# sourceMappingURL=TestCaseRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestCaseRepository.js","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/TestCaseRepository.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import { BaseRepository } from './BaseRepository';
2
- import { TestPlan } from '../types';
3
- /**
4
- * TestPlanRepository handles all storage operations for test plans
5
- * Responsible for managing test plan data
6
- * Data stored in: ~/.test_agent/projects/{projectId}/test_plans/
7
- */
8
- export declare class TestPlanRepository extends BaseRepository {
9
- constructor(projectId: string);
10
- /**
11
- * Save a test plan
12
- */
13
- saveTestPlan(testPlan: TestPlan): void;
14
- /**
15
- * Load a test plan by ID
16
- */
17
- loadTestPlan(testPlanId: string): TestPlan | null;
18
- /**
19
- * List all test plans
20
- */
21
- listTestPlans(): TestPlan[];
22
- /**
23
- * Update a test plan
24
- */
25
- updateTestPlan(testPlan: TestPlan): void;
26
- /**
27
- * Delete a test plan
28
- */
29
- deleteTestPlan(testPlanId: string): void;
30
- /**
31
- * Check if a test plan exists
32
- */
33
- exists(testPlanId: string): boolean;
34
- }
35
- //# sourceMappingURL=TestPlanRepository.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestPlanRepository.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/TestPlanRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;gBACxC,SAAS,EAAE,MAAM;IAI7B;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAItC;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAIjD;;OAEG;IACH,aAAa,IAAI,QAAQ,EAAE;IAyB3B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAexC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestPlanRepository = void 0;
4
- const BaseRepository_1 = require("./BaseRepository");
5
- const path_1 = require("path");
6
- const fs_1 = require("fs");
7
- /**
8
- * TestPlanRepository handles all storage operations for test plans
9
- * Responsible for managing test plan data
10
- * Data stored in: ~/.test_agent/projects/{projectId}/test_plans/
11
- */
12
- class TestPlanRepository extends BaseRepository_1.BaseRepository {
13
- constructor(projectId) {
14
- super((0, path_1.join)('projects', projectId, 'test_plans'));
15
- }
16
- /**
17
- * Save a test plan
18
- */
19
- saveTestPlan(testPlan) {
20
- this.saveSync(testPlan.id, testPlan);
21
- }
22
- /**
23
- * Load a test plan by ID
24
- */
25
- loadTestPlan(testPlanId) {
26
- return this.loadSync(testPlanId);
27
- }
28
- /**
29
- * List all test plans
30
- */
31
- listTestPlans() {
32
- const baseDir = this.getBaseDir();
33
- if (!(0, fs_1.existsSync)(baseDir)) {
34
- return [];
35
- }
36
- const files = (0, fs_1.readdirSync)(baseDir);
37
- const testPlans = [];
38
- for (const file of files) {
39
- if (file.endsWith('.json')) {
40
- const testPlanId = file.replace('.json', '');
41
- const testPlan = this.loadTestPlan(testPlanId);
42
- if (testPlan) {
43
- testPlans.push(testPlan);
44
- }
45
- }
46
- }
47
- // Sort by updatedAt descending
48
- testPlans.sort((a, b) => b.updatedAt - a.updatedAt);
49
- return testPlans;
50
- }
51
- /**
52
- * Update a test plan
53
- */
54
- updateTestPlan(testPlan) {
55
- const existing = this.loadTestPlan(testPlan.id);
56
- if (!existing) {
57
- throw new Error(`Test plan with ID ${testPlan.id} not found`);
58
- }
59
- const updated = {
60
- ...existing,
61
- ...testPlan,
62
- updatedAt: Date.now(),
63
- };
64
- this.saveSync(updated.id, updated);
65
- }
66
- /**
67
- * Delete a test plan
68
- */
69
- deleteTestPlan(testPlanId) {
70
- this.deleteSync(testPlanId);
71
- }
72
- /**
73
- * Check if a test plan exists
74
- */
75
- exists(testPlanId) {
76
- return this.existsSync(testPlanId);
77
- }
78
- }
79
- exports.TestPlanRepository = TestPlanRepository;
80
- //# sourceMappingURL=TestPlanRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestPlanRepository.js","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/TestPlanRepository.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,+BAA4B;AAC5B,2BAA6C;AAE7C;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,+BAAc;IACpD,YAAY,SAAiB;QAC3B,KAAK,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAAkB;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,UAAkB;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAW,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACnC,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE,CAAC;oBACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAEpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAkB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,OAAO,GAAa;YACxB,GAAG,QAAQ;YACX,GAAG,QAAQ;YACX,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,UAAkB;QAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAkB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF;AA9ED,gDA8EC"}
@@ -1,30 +0,0 @@
1
- import { BaseRepository } from './BaseRepository';
2
- import { TestResult } from '../types';
3
- /**
4
- * TestResultRepository handles all storage operations for test results
5
- * Responsible for managing test execution results and history
6
- */
7
- export declare class TestResultRepository extends BaseRepository {
8
- constructor(projectId: string);
9
- /**
10
- * Save a test result
11
- */
12
- saveTestResult(result: TestResult): Promise<void>;
13
- /**
14
- * Load a test result by ID
15
- */
16
- loadTestResult(resultId: string): Promise<TestResult | null>;
17
- /**
18
- * Load all results for a specific test case
19
- */
20
- loadTestResults(testId: string): Promise<TestResult[]>;
21
- /**
22
- * Delete a test result
23
- */
24
- deleteTestResult(resultId: string): Promise<void>;
25
- /**
26
- * Delete all results for a specific test case
27
- */
28
- deleteTestResults(testId: string): Promise<void>;
29
- }
30
- //# sourceMappingURL=TestResultRepository.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestResultRepository.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/TestResultRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;gBACxC,SAAS,EAAE,MAAM;IAI/B;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIlE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAO5D;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQvD"}