@devness/coverit 0.1.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/dist/agents/orchestrator.d.ts +21 -0
  4. package/dist/agents/orchestrator.d.ts.map +1 -0
  5. package/dist/agents/orchestrator.js +235 -0
  6. package/dist/agents/orchestrator.js.map +1 -0
  7. package/dist/agents/reporter.d.ts +13 -0
  8. package/dist/agents/reporter.d.ts.map +1 -0
  9. package/dist/agents/reporter.js +323 -0
  10. package/dist/agents/reporter.js.map +1 -0
  11. package/dist/ai/anthropic-provider.d.ts +19 -0
  12. package/dist/ai/anthropic-provider.d.ts.map +1 -0
  13. package/dist/ai/anthropic-provider.js +83 -0
  14. package/dist/ai/anthropic-provider.js.map +1 -0
  15. package/dist/ai/claude-cli-provider.d.ts +22 -0
  16. package/dist/ai/claude-cli-provider.d.ts.map +1 -0
  17. package/dist/ai/claude-cli-provider.js +197 -0
  18. package/dist/ai/claude-cli-provider.js.map +1 -0
  19. package/dist/ai/index.d.ts +15 -0
  20. package/dist/ai/index.d.ts.map +1 -0
  21. package/dist/ai/index.js +16 -0
  22. package/dist/ai/index.js.map +1 -0
  23. package/dist/ai/ollama-provider.d.ts +17 -0
  24. package/dist/ai/ollama-provider.d.ts.map +1 -0
  25. package/dist/ai/ollama-provider.js +88 -0
  26. package/dist/ai/ollama-provider.js.map +1 -0
  27. package/dist/ai/openai-provider.d.ts +20 -0
  28. package/dist/ai/openai-provider.d.ts.map +1 -0
  29. package/dist/ai/openai-provider.js +74 -0
  30. package/dist/ai/openai-provider.js.map +1 -0
  31. package/dist/ai/prompts.d.ts +36 -0
  32. package/dist/ai/prompts.d.ts.map +1 -0
  33. package/dist/ai/prompts.js +259 -0
  34. package/dist/ai/prompts.js.map +1 -0
  35. package/dist/ai/provider-factory.d.ts +26 -0
  36. package/dist/ai/provider-factory.d.ts.map +1 -0
  37. package/dist/ai/provider-factory.js +111 -0
  38. package/dist/ai/provider-factory.js.map +1 -0
  39. package/dist/ai/types.d.ts +37 -0
  40. package/dist/ai/types.d.ts.map +1 -0
  41. package/dist/ai/types.js +10 -0
  42. package/dist/ai/types.js.map +1 -0
  43. package/dist/analysis/code-scanner.d.ts +9 -0
  44. package/dist/analysis/code-scanner.d.ts.map +1 -0
  45. package/dist/analysis/code-scanner.js +409 -0
  46. package/dist/analysis/code-scanner.js.map +1 -0
  47. package/dist/analysis/dependency-graph.d.ts +9 -0
  48. package/dist/analysis/dependency-graph.d.ts.map +1 -0
  49. package/dist/analysis/dependency-graph.js +149 -0
  50. package/dist/analysis/dependency-graph.js.map +1 -0
  51. package/dist/analysis/diff-analyzer.d.ts +9 -0
  52. package/dist/analysis/diff-analyzer.d.ts.map +1 -0
  53. package/dist/analysis/diff-analyzer.js +232 -0
  54. package/dist/analysis/diff-analyzer.js.map +1 -0
  55. package/dist/analysis/index.d.ts +5 -0
  56. package/dist/analysis/index.d.ts.map +1 -0
  57. package/dist/analysis/index.js +5 -0
  58. package/dist/analysis/index.js.map +1 -0
  59. package/dist/analysis/strategy-planner.d.ts +11 -0
  60. package/dist/analysis/strategy-planner.d.ts.map +1 -0
  61. package/dist/analysis/strategy-planner.js +384 -0
  62. package/dist/analysis/strategy-planner.js.map +1 -0
  63. package/dist/cli/index.d.ts +9 -0
  64. package/dist/cli/index.d.ts.map +1 -0
  65. package/dist/cli/index.js +288 -0
  66. package/dist/cli/index.js.map +1 -0
  67. package/dist/executors/base-executor.d.ts +35 -0
  68. package/dist/executors/base-executor.d.ts.map +1 -0
  69. package/dist/executors/base-executor.js +138 -0
  70. package/dist/executors/base-executor.js.map +1 -0
  71. package/dist/executors/browser-runner.d.ts +24 -0
  72. package/dist/executors/browser-runner.d.ts.map +1 -0
  73. package/dist/executors/browser-runner.js +194 -0
  74. package/dist/executors/browser-runner.js.map +1 -0
  75. package/dist/executors/cloud-runner.d.ts +41 -0
  76. package/dist/executors/cloud-runner.d.ts.map +1 -0
  77. package/dist/executors/cloud-runner.js +153 -0
  78. package/dist/executors/cloud-runner.js.map +1 -0
  79. package/dist/executors/index.d.ts +12 -0
  80. package/dist/executors/index.d.ts.map +1 -0
  81. package/dist/executors/index.js +28 -0
  82. package/dist/executors/index.js.map +1 -0
  83. package/dist/executors/local-runner.d.ts +40 -0
  84. package/dist/executors/local-runner.d.ts.map +1 -0
  85. package/dist/executors/local-runner.js +395 -0
  86. package/dist/executors/local-runner.js.map +1 -0
  87. package/dist/executors/reporter.d.ts +6 -0
  88. package/dist/executors/reporter.d.ts.map +1 -0
  89. package/dist/executors/reporter.js +6 -0
  90. package/dist/executors/reporter.js.map +1 -0
  91. package/dist/executors/simulator-runner.d.ts +30 -0
  92. package/dist/executors/simulator-runner.d.ts.map +1 -0
  93. package/dist/executors/simulator-runner.js +339 -0
  94. package/dist/executors/simulator-runner.js.map +1 -0
  95. package/dist/generators/api-test.d.ts +22 -0
  96. package/dist/generators/api-test.d.ts.map +1 -0
  97. package/dist/generators/api-test.js +235 -0
  98. package/dist/generators/api-test.js.map +1 -0
  99. package/dist/generators/base-generator.d.ts +79 -0
  100. package/dist/generators/base-generator.d.ts.map +1 -0
  101. package/dist/generators/base-generator.js +234 -0
  102. package/dist/generators/base-generator.js.map +1 -0
  103. package/dist/generators/desktop-test.d.ts +22 -0
  104. package/dist/generators/desktop-test.d.ts.map +1 -0
  105. package/dist/generators/desktop-test.js +290 -0
  106. package/dist/generators/desktop-test.js.map +1 -0
  107. package/dist/generators/e2e-browser.d.ts +19 -0
  108. package/dist/generators/e2e-browser.d.ts.map +1 -0
  109. package/dist/generators/e2e-browser.js +233 -0
  110. package/dist/generators/e2e-browser.js.map +1 -0
  111. package/dist/generators/index.d.ts +21 -0
  112. package/dist/generators/index.d.ts.map +1 -0
  113. package/dist/generators/index.js +66 -0
  114. package/dist/generators/index.js.map +1 -0
  115. package/dist/generators/mobile-test.d.ts +22 -0
  116. package/dist/generators/mobile-test.d.ts.map +1 -0
  117. package/dist/generators/mobile-test.js +286 -0
  118. package/dist/generators/mobile-test.js.map +1 -0
  119. package/dist/generators/unit-test.d.ts +23 -0
  120. package/dist/generators/unit-test.d.ts.map +1 -0
  121. package/dist/generators/unit-test.js +282 -0
  122. package/dist/generators/unit-test.js.map +1 -0
  123. package/dist/index.d.ts +12 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +13 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/mcp/server.d.ts +8 -0
  128. package/dist/mcp/server.d.ts.map +1 -0
  129. package/dist/mcp/server.js +217 -0
  130. package/dist/mcp/server.js.map +1 -0
  131. package/dist/types/index.d.ts +295 -0
  132. package/dist/types/index.d.ts.map +1 -0
  133. package/dist/types/index.js +8 -0
  134. package/dist/types/index.js.map +1 -0
  135. package/dist/utils/framework-detector.d.ts +28 -0
  136. package/dist/utils/framework-detector.d.ts.map +1 -0
  137. package/dist/utils/framework-detector.js +184 -0
  138. package/dist/utils/framework-detector.js.map +1 -0
  139. package/dist/utils/git.d.ts +33 -0
  140. package/dist/utils/git.d.ts.map +1 -0
  141. package/dist/utils/git.js +82 -0
  142. package/dist/utils/git.js.map +1 -0
  143. package/dist/utils/logger.d.ts +17 -0
  144. package/dist/utils/logger.d.ts.map +1 -0
  145. package/dist/utils/logger.js +47 -0
  146. package/dist/utils/logger.js.map +1 -0
  147. package/package.json +86 -0
@@ -0,0 +1,395 @@
1
+ /**
2
+ * Local Runner — Executes generated tests on the local machine.
3
+ *
4
+ * Auto-detects the test framework from the GeneratedTest metadata and
5
+ * spawns the appropriate CLI command. Parses JSON reporter output into
6
+ * a normalized ExecutionResult with optional coverage.
7
+ *
8
+ * This is the primary executor — all other runners are specialized variants.
9
+ */
10
+ import { spawn } from "node:child_process";
11
+ import { existsSync } from "node:fs";
12
+ import { readFile, mkdir, writeFile } from "node:fs/promises";
13
+ import { join, dirname, resolve } from "node:path";
14
+ import { BaseExecutor } from "./base-executor.js";
15
+ export class LocalRunner extends BaseExecutor {
16
+ async execute(test, config) {
17
+ const result = this.createBaseResult(test.planId);
18
+ const start = Date.now();
19
+ try {
20
+ // Write the test file to disk so the runner can find it
21
+ await this.ensureTestFile(test);
22
+ const cmd = this.buildCommand(test, config);
23
+ const cwd = this.resolveWorkingDir(test);
24
+ const spawnResult = await this.withTimeout(this.withRetry(() => this.runProcess(cmd, cwd), config.retries), config.timeout);
25
+ result.output = this.combineOutput(spawnResult);
26
+ result.duration = Date.now() - start;
27
+ // Parse framework-specific JSON output
28
+ this.parseResult(test.framework, spawnResult, result);
29
+ // Attempt to read coverage if requested
30
+ if (config.collectCoverage) {
31
+ const coverage = await this.readCoverageFromDisk(cwd);
32
+ if (coverage) {
33
+ result.coverage = this.parseCoverage(coverage);
34
+ }
35
+ }
36
+ }
37
+ catch (err) {
38
+ result.duration = Date.now() - start;
39
+ const message = err instanceof Error ? err.message : String(err);
40
+ if (message.includes("timed out")) {
41
+ result.status = "timeout";
42
+ }
43
+ else {
44
+ result.status = "error";
45
+ }
46
+ result.output = message;
47
+ result.failures.push({
48
+ testName: "(execution)",
49
+ message,
50
+ });
51
+ }
52
+ return result;
53
+ }
54
+ // ── Command building ──────────────────────────────────────────
55
+ buildCommand(test, config) {
56
+ const file = test.filePath;
57
+ const coverageFlag = config.collectCoverage;
58
+ switch (test.framework) {
59
+ case "vitest":
60
+ return this.vitestCommand(file, coverageFlag);
61
+ case "jest":
62
+ return this.jestCommand(file, coverageFlag);
63
+ case "playwright":
64
+ return this.playwrightCommand(file);
65
+ case "pytest":
66
+ return this.pytestCommand(file);
67
+ case "go-test":
68
+ return this.goTestCommand(file);
69
+ default:
70
+ // Best-effort: try vitest for unknown TS/JS frameworks
71
+ return this.vitestCommand(file, coverageFlag);
72
+ }
73
+ }
74
+ vitestCommand(file, coverage) {
75
+ const args = ["bunx", "vitest", "run", file, "--reporter=json"];
76
+ if (coverage)
77
+ args.push("--coverage", "--coverage.reporter=json");
78
+ return args;
79
+ }
80
+ jestCommand(file, coverage) {
81
+ const args = ["bunx", "jest", file, "--json", "--no-cache"];
82
+ if (coverage)
83
+ args.push("--coverage", "--coverageReporters=json-summary");
84
+ return args;
85
+ }
86
+ playwrightCommand(file) {
87
+ return ["bunx", "playwright", "test", file, "--reporter=json"];
88
+ }
89
+ pytestCommand(file) {
90
+ return [
91
+ "python",
92
+ "-m",
93
+ "pytest",
94
+ file,
95
+ "--tb=short",
96
+ "-q",
97
+ "--json-report",
98
+ "--json-report-file=-",
99
+ ];
100
+ }
101
+ goTestCommand(file) {
102
+ // `file` is a package path for Go, e.g. ./pkg/auth
103
+ return ["go", "test", "-json", "-count=1", file];
104
+ }
105
+ // ── Process execution ─────────────────────────────────────────
106
+ runProcess(cmd, cwd) {
107
+ return new Promise((resolve, reject) => {
108
+ let child;
109
+ try {
110
+ child = spawn(cmd[0], cmd.slice(1), {
111
+ cwd,
112
+ stdio: ["ignore", "pipe", "pipe"],
113
+ env: {
114
+ ...process.env,
115
+ // Force CI-friendly output in common frameworks
116
+ CI: "true",
117
+ FORCE_COLOR: "0",
118
+ NODE_OPTIONS: "--experimental-vm-modules",
119
+ },
120
+ });
121
+ }
122
+ catch (err) {
123
+ reject(new Error(`Failed to spawn process: ${err instanceof Error ? err.message : String(err)}`));
124
+ return;
125
+ }
126
+ const stdoutChunks = [];
127
+ const stderrChunks = [];
128
+ child.stdout?.on("data", (chunk) => stdoutChunks.push(chunk));
129
+ child.stderr?.on("data", (chunk) => stderrChunks.push(chunk));
130
+ child.on("error", (err) => {
131
+ reject(new Error(`Process error: ${err.message}`));
132
+ });
133
+ child.on("close", (code) => {
134
+ resolve({
135
+ exitCode: code ?? 1,
136
+ stdout: Buffer.concat(stdoutChunks).toString("utf-8"),
137
+ stderr: Buffer.concat(stderrChunks).toString("utf-8"),
138
+ });
139
+ });
140
+ });
141
+ }
142
+ // ── Result parsing ────────────────────────────────────────────
143
+ parseResult(framework, spawn, result) {
144
+ switch (framework) {
145
+ case "vitest":
146
+ this.parseVitestResult(spawn, result);
147
+ break;
148
+ case "jest":
149
+ this.parseJestResult(spawn, result);
150
+ break;
151
+ case "playwright":
152
+ this.parsePlaywrightResult(spawn, result);
153
+ break;
154
+ case "pytest":
155
+ this.parsePytestResult(spawn, result);
156
+ break;
157
+ case "go-test":
158
+ this.parseGoTestResult(spawn, result);
159
+ break;
160
+ default:
161
+ this.parseFallbackResult(spawn, result);
162
+ break;
163
+ }
164
+ }
165
+ parseVitestResult(spawn, result) {
166
+ const json = this.parseJsonOutput(spawn.stdout);
167
+ if (!json) {
168
+ this.parseFallbackResult(spawn, result);
169
+ return;
170
+ }
171
+ // Vitest JSON reporter: { numTotalTests, numPassedTests, numFailedTests, ... testResults[] }
172
+ result.totalTests = json.numTotalTests ?? 0;
173
+ result.passed = json.numPassedTests ?? 0;
174
+ result.failed = json.numFailedTests ?? 0;
175
+ result.skipped =
176
+ (json.numPendingTests ?? 0) + (json.numTodoTests ?? 0);
177
+ result.status = this.deriveStatus(spawn.exitCode, result.failed);
178
+ // Extract failures
179
+ if (Array.isArray(json.testResults)) {
180
+ for (const suite of json.testResults) {
181
+ if (!Array.isArray(suite.assertionResults))
182
+ continue;
183
+ for (const test of suite.assertionResults) {
184
+ if (test.status === "failed") {
185
+ result.failures.push({
186
+ testName: test.fullName ?? test.title ?? "unknown",
187
+ message: Array.isArray(test.failureMessages)
188
+ ? test.failureMessages.join("\n")
189
+ : String(test.failureMessages ?? ""),
190
+ stack: test.failureMessages?.[0] ?? undefined,
191
+ });
192
+ }
193
+ }
194
+ }
195
+ }
196
+ // Vitest may embed coverage in the JSON output
197
+ if (json.coverageMap) {
198
+ const cov = this.parseCoverage(json.coverageMap);
199
+ if (cov)
200
+ result.coverage = cov;
201
+ }
202
+ }
203
+ parseJestResult(spawn, result) {
204
+ const json = this.parseJsonOutput(spawn.stdout);
205
+ if (!json) {
206
+ this.parseFallbackResult(spawn, result);
207
+ return;
208
+ }
209
+ result.totalTests = json.numTotalTests ?? 0;
210
+ result.passed = json.numPassedTests ?? 0;
211
+ result.failed = json.numFailedTests ?? 0;
212
+ result.skipped = json.numPendingTests ?? 0;
213
+ result.status = this.deriveStatus(spawn.exitCode, result.failed);
214
+ if (Array.isArray(json.testResults)) {
215
+ for (const suite of json.testResults) {
216
+ if (!Array.isArray(suite.testResults))
217
+ continue;
218
+ for (const test of suite.testResults) {
219
+ if (test.status === "failed") {
220
+ result.failures.push({
221
+ testName: test.fullName ?? test.title ?? "unknown",
222
+ message: Array.isArray(test.failureMessages)
223
+ ? test.failureMessages.join("\n")
224
+ : String(test.failureMessages ?? ""),
225
+ });
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ parsePlaywrightResult(spawn, result) {
232
+ const json = this.parseJsonOutput(spawn.stdout);
233
+ if (!json) {
234
+ this.parseFallbackResult(spawn, result);
235
+ return;
236
+ }
237
+ // Playwright JSON reporter: { stats: { expected, unexpected, skipped, ... }, suites[] }
238
+ const stats = json.stats ?? {};
239
+ result.passed = stats.expected ?? 0;
240
+ result.failed = stats.unexpected ?? 0;
241
+ result.skipped = stats.skipped ?? 0;
242
+ result.totalTests = result.passed + result.failed + result.skipped;
243
+ result.status = this.deriveStatus(spawn.exitCode, result.failed);
244
+ // Walk suites for failure details
245
+ this.extractPlaywrightFailures(json.suites ?? [], result.failures);
246
+ }
247
+ extractPlaywrightFailures(suites, failures) {
248
+ for (const suite of suites) {
249
+ if (Array.isArray(suite.specs)) {
250
+ for (const spec of suite.specs) {
251
+ if (!Array.isArray(spec.tests))
252
+ continue;
253
+ for (const test of spec.tests) {
254
+ if (!Array.isArray(test.results))
255
+ continue;
256
+ for (const run of test.results) {
257
+ if (run.status === "unexpected" || run.status === "failed") {
258
+ failures.push({
259
+ testName: spec.title ?? "unknown",
260
+ message: run.error?.message ?? run.error?.snippet ?? "Test failed",
261
+ stack: run.error?.stack ?? undefined,
262
+ });
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ // Recurse into nested suites
269
+ if (Array.isArray(suite.suites)) {
270
+ this.extractPlaywrightFailures(suite.suites, failures);
271
+ }
272
+ }
273
+ }
274
+ parsePytestResult(spawn, result) {
275
+ const json = this.parseJsonOutput(spawn.stdout);
276
+ if (!json) {
277
+ this.parseFallbackResult(spawn, result);
278
+ return;
279
+ }
280
+ // pytest-json-report format: { summary: { passed, failed, ... }, tests: [...] }
281
+ const summary = json.summary ?? {};
282
+ result.passed = summary.passed ?? 0;
283
+ result.failed = summary.failed ?? 0;
284
+ result.skipped = summary.skipped ?? 0;
285
+ result.totalTests = summary.total ?? result.passed + result.failed + result.skipped;
286
+ result.status = this.deriveStatus(spawn.exitCode, result.failed);
287
+ if (Array.isArray(json.tests)) {
288
+ for (const test of json.tests) {
289
+ if (test.outcome === "failed") {
290
+ result.failures.push({
291
+ testName: test.nodeid ?? "unknown",
292
+ message: test.call?.longrepr ?? test.call?.crash?.message ?? "Failed",
293
+ });
294
+ }
295
+ }
296
+ }
297
+ }
298
+ parseGoTestResult(spawn, result) {
299
+ // Go test -json emits newline-delimited JSON events
300
+ const lines = spawn.stdout.split("\n").filter(Boolean);
301
+ let passed = 0;
302
+ let failed = 0;
303
+ let skipped = 0;
304
+ for (const line of lines) {
305
+ try {
306
+ const event = JSON.parse(line);
307
+ if (event.Action === "pass" && event.Test)
308
+ passed++;
309
+ else if (event.Action === "fail" && event.Test) {
310
+ failed++;
311
+ result.failures.push({
312
+ testName: event.Test,
313
+ message: event.Output ?? "Test failed",
314
+ });
315
+ }
316
+ else if (event.Action === "skip" && event.Test)
317
+ skipped++;
318
+ }
319
+ catch {
320
+ // Non-JSON line, ignore
321
+ }
322
+ }
323
+ result.passed = passed;
324
+ result.failed = failed;
325
+ result.skipped = skipped;
326
+ result.totalTests = passed + failed + skipped;
327
+ result.status = this.deriveStatus(spawn.exitCode, failed);
328
+ }
329
+ /**
330
+ * Fallback when we cannot parse structured output.
331
+ * Derive pass/fail from the exit code alone.
332
+ */
333
+ parseFallbackResult(spawn, result) {
334
+ result.status = spawn.exitCode === 0 ? "passed" : "failed";
335
+ if (spawn.exitCode !== 0 && spawn.stderr) {
336
+ result.failures.push({
337
+ testName: "(runner)",
338
+ message: spawn.stderr.slice(0, 2000),
339
+ });
340
+ }
341
+ }
342
+ // ── Coverage ──────────────────────────────────────────────────
343
+ /** Try to read coverage-summary.json from common output locations. */
344
+ async readCoverageFromDisk(cwd) {
345
+ const candidates = [
346
+ join(cwd, "coverage", "coverage-summary.json"),
347
+ join(cwd, "coverage", "coverage-final.json"),
348
+ join(cwd, ".coverage", "coverage-summary.json"),
349
+ ];
350
+ for (const path of candidates) {
351
+ try {
352
+ if (existsSync(path)) {
353
+ const raw = await readFile(path, "utf-8");
354
+ return JSON.parse(raw);
355
+ }
356
+ }
357
+ catch {
358
+ // Continue to next candidate
359
+ }
360
+ }
361
+ return null;
362
+ }
363
+ // ── Helpers ───────────────────────────────────────────────────
364
+ resolveWorkingDir(test) {
365
+ // Walk up from the test file to find the nearest package.json
366
+ let dir = dirname(resolve(test.filePath));
367
+ while (dir !== "/" && dir !== ".") {
368
+ if (existsSync(join(dir, "package.json")))
369
+ return dir;
370
+ dir = dirname(dir);
371
+ }
372
+ return dirname(resolve(test.filePath));
373
+ }
374
+ async ensureTestFile(test) {
375
+ const fullPath = resolve(test.filePath);
376
+ await mkdir(dirname(fullPath), { recursive: true });
377
+ await writeFile(fullPath, test.content, "utf-8");
378
+ }
379
+ combineOutput(spawn) {
380
+ const parts = [];
381
+ if (spawn.stdout)
382
+ parts.push(spawn.stdout);
383
+ if (spawn.stderr)
384
+ parts.push(`[stderr]\n${spawn.stderr}`);
385
+ return parts.join("\n").slice(0, 50_000); // Cap at 50KB
386
+ }
387
+ deriveStatus(exitCode, failedCount) {
388
+ if (exitCode === 0 && failedCount === 0)
389
+ return "passed";
390
+ if (failedCount > 0)
391
+ return "failed";
392
+ return "error";
393
+ }
394
+ }
395
+ //# sourceMappingURL=local-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-runner.js","sourceRoot":"","sources":["../../src/executors/local-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Re-export from the canonical reporter location.
3
+ * The primary reporter lives in agents/reporter.ts.
4
+ */
5
+ export { generateReport, formatTerminalReport, formatMarkdownReport, } from "../agents/reporter.js";
6
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/executors/reporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Re-export from the canonical reporter location.
3
+ * The primary reporter lives in agents/reporter.ts.
4
+ */
5
+ export { generateReport, formatTerminalReport, formatMarkdownReport, } from "../agents/reporter.js";
6
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/executors/reporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Simulator Runner — Execute tests on mobile simulators and desktop app shells.
3
+ *
4
+ * Supports three targets:
5
+ * - iOS Simulator via `xcrun simctl` + Detox
6
+ * - Android Emulator via `emulator` CLI + Detox
7
+ * - Tauri desktop via `cargo tauri dev` + WebDriver
8
+ *
9
+ * Each path checks for tool availability before attempting execution
10
+ * and returns meaningful errors when the required toolchain is missing.
11
+ */
12
+ import { BaseExecutor } from "./base-executor.js";
13
+ import type { GeneratedTest, ExecutionConfig, ExecutionResult } from "../types/index.js";
14
+ export declare class SimulatorRunner extends BaseExecutor {
15
+ execute(test: GeneratedTest, config: ExecutionConfig): Promise<ExecutionResult>;
16
+ private executeMobile;
17
+ private executeIOS;
18
+ private executeAndroid;
19
+ private executeDesktop;
20
+ private detectMobilePlatform;
21
+ private findBootedIOSDevice;
22
+ private findAvailableIOSDevice;
23
+ private isCommandAvailable;
24
+ private exec;
25
+ /** Fire-and-forget process for background tasks like starting an emulator. */
26
+ private execBackground;
27
+ private findProjectRoot;
28
+ private combineOutput;
29
+ }
30
+ //# sourceMappingURL=simulator-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator-runner.d.ts","sourceRoot":"","sources":["../../src/executors/simulator-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,eAAgB,SAAQ,YAAY;IACzC,OAAO,CACX,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC;YA6Cb,aAAa;YA2Bb,UAAU;YA8DV,cAAc;YAqEd,cAAc;IAyE5B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,sBAAsB;YAoBhB,kBAAkB;IAWhC,OAAO,CAAC,IAAI;IA2CZ,8EAA8E;IAC9E,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;CAMtB"}