@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 @@
1
+ {"version":3,"file":"desktop-test.js","sourceRoot":"","sources":["../../src/generators/desktop-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { GeneratorContext, GeneratorResult } from "../types/index.js";
2
+ import { BaseGenerator } from "./base-generator.js";
3
+ /**
4
+ * Generates Playwright E2E browser tests for page components,
5
+ * forms, navigation, and interactive elements.
6
+ */
7
+ export declare class E2EBrowserGenerator extends BaseGenerator {
8
+ generate(context: GeneratorContext): Promise<GeneratorResult>;
9
+ private buildE2EImports;
10
+ private buildPlaywrightDescribe;
11
+ private buildPlaywrightTest;
12
+ private generatePageTests;
13
+ private generateComponentTests;
14
+ private generateFormTests;
15
+ private guessRoute;
16
+ private toKebab;
17
+ private hasFormHooks;
18
+ }
19
+ //# sourceMappingURL=e2e-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-browser.d.ts","sourceRoot":"","sources":["../../src/generators/e2e-browser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,gBAAgB,EAChB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAC9C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAqGnE,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,iBAAiB;IA4DzB,OAAO,CAAC,sBAAsB;IAqD9B,OAAO,CAAC,iBAAiB;IA2DzB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,233 @@
1
+ // Generated by coverit — https://coverit.dev
2
+ import { readFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { BaseGenerator } from "./base-generator.js";
5
+ /**
6
+ * Generates Playwright E2E browser tests for page components,
7
+ * forms, navigation, and interactive elements.
8
+ */
9
+ export class E2EBrowserGenerator extends BaseGenerator {
10
+ async generate(context) {
11
+ const { plan, project, scanResults, existingTests } = context;
12
+ const tests = [];
13
+ const warnings = [];
14
+ const skipped = [];
15
+ for (const scan of scanResults) {
16
+ if (!plan.target.files.includes(scan.file))
17
+ continue;
18
+ // ── AI-powered generation (preferred path) ──────────────
19
+ if (this.aiProvider) {
20
+ try {
21
+ const sourceCode = await readFile(join(project.root, scan.file), "utf-8");
22
+ const aiResult = await this.generateWithAI({
23
+ sourceCode,
24
+ scanResult: scan,
25
+ testType: "e2e-browser",
26
+ framework: "playwright",
27
+ existingTests,
28
+ });
29
+ if (aiResult) {
30
+ const testFileName = this.generateTestFileName(scan.file, "e2e-browser");
31
+ tests.push({
32
+ planId: plan.id,
33
+ filePath: testFileName,
34
+ content: aiResult,
35
+ testType: "e2e-browser",
36
+ testCount: this.countTestCases(aiResult),
37
+ framework: "playwright",
38
+ });
39
+ continue; // Skip template fallback for this file
40
+ }
41
+ }
42
+ catch {
43
+ // Fall through to template-based generation
44
+ }
45
+ }
46
+ // ── Template-based generation (fallback) ────────────────
47
+ const components = scan.components;
48
+ if (components.length === 0) {
49
+ skipped.push({
50
+ target: scan.file,
51
+ reason: "No components detected for E2E testing",
52
+ });
53
+ continue;
54
+ }
55
+ const testFileName = this.generateTestFileName(scan.file, "e2e-browser");
56
+ const imports = this.buildE2EImports();
57
+ const bodyBlocks = [];
58
+ let testCount = 0;
59
+ for (const component of components) {
60
+ if (this.isAlreadyTested(component.name, existingTests)) {
61
+ skipped.push({
62
+ target: component.name,
63
+ reason: "Already has E2E tests",
64
+ });
65
+ continue;
66
+ }
67
+ const cases = component.isPage
68
+ ? this.generatePageTests(component)
69
+ : this.generateComponentTests(component);
70
+ bodyBlocks.push(this.buildPlaywrightDescribe(component.name, cases));
71
+ testCount += cases.length;
72
+ }
73
+ if (testCount === 0)
74
+ continue;
75
+ const content = this.assembleTestFile({
76
+ imports,
77
+ body: bodyBlocks,
78
+ });
79
+ tests.push({
80
+ planId: plan.id,
81
+ filePath: testFileName,
82
+ content,
83
+ testType: "e2e-browser",
84
+ testCount,
85
+ framework: "playwright",
86
+ });
87
+ }
88
+ return { tests, warnings, skipped };
89
+ }
90
+ // ── Import generation ──────────────────────────────────────
91
+ buildE2EImports() {
92
+ return [this.buildImports("playwright")];
93
+ }
94
+ // ── Playwright-specific describe block ─────────────────────
95
+ // Playwright uses `test.describe` instead of `describe`
96
+ buildPlaywrightDescribe(name, testCases) {
97
+ const body = testCases.map((t) => this.indent(t, 2)).join("\n\n");
98
+ return `test.describe('${this.escapeString(name)}', () => {\n${body}\n});`;
99
+ }
100
+ buildPlaywrightTest(name, body) {
101
+ const indentedBody = this.indent(body, 2);
102
+ return `test('${this.escapeString(name)}', async ({ page }) => {\n${indentedBody}\n});`;
103
+ }
104
+ // ── Page tests ─────────────────────────────────────────────
105
+ generatePageTests(component) {
106
+ const cases = [];
107
+ const route = this.guessRoute(component.name);
108
+ // Navigation test
109
+ cases.push(this.buildPlaywrightTest("should navigate to page", [
110
+ `await page.goto('${route}');`,
111
+ `await expect(page).toHaveURL('${route}');`,
112
+ ].join("\n")));
113
+ // Content rendering test
114
+ cases.push(this.buildPlaywrightTest("should render page content", [
115
+ `await page.goto('${route}');`,
116
+ `await expect(page.locator('main, [role="main"], #root')).toBeVisible();`,
117
+ ].join("\n")));
118
+ // Heading test
119
+ cases.push(this.buildPlaywrightTest("should display page heading", [
120
+ `await page.goto('${route}');`,
121
+ `const heading = page.locator('h1, h2').first();`,
122
+ `await expect(heading).toBeVisible();`,
123
+ ].join("\n")));
124
+ // Accessibility check
125
+ cases.push(this.buildPlaywrightTest("should pass basic accessibility checks", [
126
+ `await page.goto('${route}');`,
127
+ `const snapshot = await page.accessibility.snapshot();`,
128
+ `expect(snapshot).toBeTruthy();`,
129
+ ].join("\n")));
130
+ // Generate form-specific tests if hooks suggest form usage
131
+ if (this.hasFormHooks(component)) {
132
+ cases.push(...this.generateFormTests(component, route));
133
+ }
134
+ return cases;
135
+ }
136
+ // ── Component tests ────────────────────────────────────────
137
+ generateComponentTests(component) {
138
+ const cases = [];
139
+ const route = "/"; // default for non-page components
140
+ // Visibility test
141
+ cases.push(this.buildPlaywrightTest("should be visible on the page", [
142
+ `await page.goto('${route}');`,
143
+ `await expect(page.locator('[data-testid="${this.toKebab(component.name)}"]')).toBeVisible();`,
144
+ ].join("\n")));
145
+ // Interaction tests based on detected props
146
+ const clickableProps = component.props.filter((p) => /^on(Click|Press|Submit|Change)/i.test(p.name));
147
+ for (const prop of clickableProps) {
148
+ const action = prop.name.replace(/^on/, "").toLowerCase();
149
+ cases.push(this.buildPlaywrightTest(`should handle ${action} interaction`, [
150
+ `await page.goto('${route}');`,
151
+ `const target = page.locator('[data-testid="${this.toKebab(component.name)}"]');`,
152
+ `await target.click();`,
153
+ `// Verify expected state change after ${action}`,
154
+ `await expect(target).toBeVisible();`,
155
+ ].join("\n")));
156
+ }
157
+ // Accessibility check for components
158
+ cases.push(this.buildPlaywrightTest("should pass basic accessibility checks", [
159
+ `await page.goto('${route}');`,
160
+ `const snapshot = await page.accessibility.snapshot();`,
161
+ `expect(snapshot).toBeTruthy();`,
162
+ ].join("\n")));
163
+ return cases;
164
+ }
165
+ // ── Form tests ─────────────────────────────────────────────
166
+ generateFormTests(_component, route) {
167
+ const cases = [];
168
+ // Fill and submit test
169
+ cases.push(this.buildPlaywrightTest("should fill and submit the form", [
170
+ `await page.goto('${route}');`,
171
+ `// Fill form fields`,
172
+ `const inputs = page.locator('input:visible, textarea:visible, select:visible');`,
173
+ `const count = await inputs.count();`,
174
+ `for (let i = 0; i < count; i++) {`,
175
+ ` const input = inputs.nth(i);`,
176
+ ` const tagName = await input.evaluate(el => el.tagName.toLowerCase());`,
177
+ ` const type = await input.getAttribute('type') ?? 'text';`,
178
+ ` if (tagName === 'select') {`,
179
+ ` const option = input.locator('option').nth(1);`,
180
+ ` if (await option.count() > 0) await input.selectOption({ index: 1 });`,
181
+ ` } else if (type === 'checkbox' || type === 'radio') {`,
182
+ ` await input.check();`,
183
+ ` } else {`,
184
+ ` await input.fill('test value');`,
185
+ ` }`,
186
+ `}`,
187
+ `// Submit`,
188
+ `const submitBtn = page.locator('button[type="submit"], input[type="submit"]').first();`,
189
+ `if (await submitBtn.count() > 0) await submitBtn.click();`,
190
+ ].join("\n")));
191
+ // Validation test
192
+ cases.push(this.buildPlaywrightTest("should show validation errors on empty submit", [
193
+ `await page.goto('${route}');`,
194
+ `const submitBtn = page.locator('button[type="submit"], input[type="submit"]').first();`,
195
+ `if (await submitBtn.count() > 0) {`,
196
+ ` await submitBtn.click();`,
197
+ ` // Check for validation messages`,
198
+ ` const errorMessages = page.locator('[role="alert"], .error, .invalid-feedback, [aria-invalid="true"]');`,
199
+ ` // Form should either prevent submission or show errors`,
200
+ ` const url = page.url();`,
201
+ ` expect(url).toContain('${route}');`,
202
+ `}`,
203
+ ].join("\n")));
204
+ return cases;
205
+ }
206
+ // ── Helpers ────────────────────────────────────────────────
207
+ guessRoute(componentName) {
208
+ // Convert PascalCase component name to a plausible route
209
+ const kebab = this.toKebab(componentName)
210
+ .replace(/-page$/, "")
211
+ .replace(/-screen$/, "")
212
+ .replace(/-view$/, "");
213
+ if (kebab === "home" ||
214
+ kebab === "index" ||
215
+ kebab === "landing" ||
216
+ kebab === "main") {
217
+ return "/";
218
+ }
219
+ return `/${kebab}`;
220
+ }
221
+ toKebab(name) {
222
+ return name
223
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
224
+ .replace(/([A-Z])([A-Z][a-z])/g, "$1-$2")
225
+ .toLowerCase();
226
+ }
227
+ hasFormHooks(component) {
228
+ return component.hooks.some((h) => h.includes("useForm") ||
229
+ h.includes("useField") ||
230
+ h.includes("useState"));
231
+ }
232
+ }
233
+ //# sourceMappingURL=e2e-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-browser.js","sourceRoot":"","sources":["../../src/generators/e2e-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { AIProvider } from "../ai/types.js";
2
+ import type { ProjectInfo, TestType } from "../types/index.js";
3
+ import { BaseGenerator } from "./base-generator.js";
4
+ export { ApiTestGenerator } from "./api-test.js";
5
+ export { BaseGenerator } from "./base-generator.js";
6
+ export { DesktopTestGenerator } from "./desktop-test.js";
7
+ export { E2EBrowserGenerator } from "./e2e-browser.js";
8
+ export { MobileTestGenerator } from "./mobile-test.js";
9
+ export { UnitTestGenerator } from "./unit-test.js";
10
+ /**
11
+ * Factory function that returns the appropriate generator for a given test type.
12
+ * Some test types share generators with different configuration:
13
+ * - integration reuses UnitTestGenerator with integration mode
14
+ * - snapshot reuses E2EBrowserGenerator (captures visual snapshots)
15
+ * - performance reuses ApiTestGenerator (load/timing assertions)
16
+ *
17
+ * When an AI provider is supplied, the generator will attempt LLM-powered
18
+ * test creation before falling back to template-based output.
19
+ */
20
+ export declare function createGenerator(type: TestType, _project: ProjectInfo, aiProvider?: AIProvider | null): BaseGenerator;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAC7B,aAAa,CAoDf"}
@@ -0,0 +1,66 @@
1
+ // Generated by coverit — https://coverit.dev
2
+ import { ApiTestGenerator } from "./api-test.js";
3
+ import { DesktopTestGenerator } from "./desktop-test.js";
4
+ import { E2EBrowserGenerator } from "./e2e-browser.js";
5
+ import { MobileTestGenerator } from "./mobile-test.js";
6
+ import { UnitTestGenerator } from "./unit-test.js";
7
+ export { ApiTestGenerator } from "./api-test.js";
8
+ export { BaseGenerator } from "./base-generator.js";
9
+ export { DesktopTestGenerator } from "./desktop-test.js";
10
+ export { E2EBrowserGenerator } from "./e2e-browser.js";
11
+ export { MobileTestGenerator } from "./mobile-test.js";
12
+ export { UnitTestGenerator } from "./unit-test.js";
13
+ /**
14
+ * Factory function that returns the appropriate generator for a given test type.
15
+ * Some test types share generators with different configuration:
16
+ * - integration reuses UnitTestGenerator with integration mode
17
+ * - snapshot reuses E2EBrowserGenerator (captures visual snapshots)
18
+ * - performance reuses ApiTestGenerator (load/timing assertions)
19
+ *
20
+ * When an AI provider is supplied, the generator will attempt LLM-powered
21
+ * test creation before falling back to template-based output.
22
+ */
23
+ export function createGenerator(type, _project, aiProvider) {
24
+ let gen;
25
+ switch (type) {
26
+ case "unit": {
27
+ gen = new UnitTestGenerator();
28
+ break;
29
+ }
30
+ case "integration": {
31
+ const unitGen = new UnitTestGenerator();
32
+ unitGen.setIntegrationMode(true);
33
+ gen = unitGen;
34
+ break;
35
+ }
36
+ case "api": {
37
+ gen = new ApiTestGenerator();
38
+ break;
39
+ }
40
+ case "e2e-browser": {
41
+ gen = new E2EBrowserGenerator();
42
+ break;
43
+ }
44
+ case "e2e-mobile": {
45
+ gen = new MobileTestGenerator();
46
+ break;
47
+ }
48
+ case "e2e-desktop": {
49
+ gen = new DesktopTestGenerator();
50
+ break;
51
+ }
52
+ case "snapshot": {
53
+ gen = new E2EBrowserGenerator();
54
+ break;
55
+ }
56
+ case "performance": {
57
+ gen = new ApiTestGenerator();
58
+ break;
59
+ }
60
+ }
61
+ if (aiProvider) {
62
+ gen.setAIProvider(aiProvider);
63
+ }
64
+ return gen;
65
+ }
66
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAI7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAc,EACd,QAAqB,EACrB,UAA8B;IAE9B,IAAI,GAAkB,CAAC;IAEvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,GAAG,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACxC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACjC,GAAG,GAAG,OAAO,CAAC;YACd,MAAM;QACR,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAC7B,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAChC,MAAM;QACR,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAChC,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACjC,MAAM;QACR,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAChC,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAC7B,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { GeneratorContext, GeneratorResult } from "../types/index.js";
2
+ import { BaseGenerator } from "./base-generator.js";
3
+ /**
4
+ * Generates React Native Testing Library tests for mobile screens and components,
5
+ * plus Detox E2E test stubs when the project uses Detox.
6
+ */
7
+ export declare class MobileTestGenerator extends BaseGenerator {
8
+ generate(context: GeneratorContext): Promise<GeneratorResult>;
9
+ private buildMobileImports;
10
+ private generateScreenTests;
11
+ private generateComponentTests;
12
+ private generateDetoxTests;
13
+ private generateDetoxScreenTests;
14
+ private buildDetoxDescribe;
15
+ private buildDetoxTest;
16
+ private hasDetox;
17
+ private hasNavigationProp;
18
+ private buildDefaultProps;
19
+ private toKebab;
20
+ private relativeImportPath;
21
+ }
22
+ //# sourceMappingURL=mobile-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-test.d.ts","sourceRoot":"","sources":["../../src/generators/mobile-test.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAIV,gBAAgB,EAChB,eAAe,EAKhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAC9C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAwHnE,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,mBAAmB;IA+D3B,OAAO,CAAC,sBAAsB;IAwE9B,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,kBAAkB;CAK3B"}