@kosuke-ai/cli 0.0.13 → 0.0.14
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.
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/test.d.ts +27 -0
- package/dist/kosuke/commands/test.d.ts.map +1 -0
- package/dist/kosuke/commands/test.js +338 -0
- package/dist/kosuke/commands/test.js.map +1 -0
- package/dist/kosuke/types.d.ts +37 -1
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/error-analyzer.d.ts +32 -0
- package/dist/kosuke/utils/error-analyzer.d.ts.map +1 -0
- package/dist/kosuke/utils/error-analyzer.js +129 -0
- package/dist/kosuke/utils/error-analyzer.js.map +1 -0
- package/dist/kosuke/utils/log-collector.d.ts +81 -0
- package/dist/kosuke/utils/log-collector.d.ts.map +1 -0
- package/dist/kosuke/utils/log-collector.js +226 -0
- package/dist/kosuke/utils/log-collector.js.map +1 -0
- package/dist/kosuke/utils/playwright-agent.d.ts +39 -0
- package/dist/kosuke/utils/playwright-agent.d.ts.map +1 -0
- package/dist/kosuke/utils/playwright-agent.js +245 -0
- package/dist/kosuke/utils/playwright-agent.js.map +1 -0
- package/dist/kosuke/utils/test-generator.d.ts +22 -0
- package/dist/kosuke/utils/test-generator.d.ts.map +1 -0
- package/dist/kosuke/utils/test-generator.js +174 -0
- package/dist/kosuke/utils/test-generator.js.map +1 -0
- package/dist/kosuke/utils/visual-tester.d.ts +71 -0
- package/dist/kosuke/utils/visual-tester.d.ts.map +1 -0
- package/dist/kosuke/utils/visual-tester.js +202 -0
- package/dist/kosuke/utils/visual-tester.js.map +1 -0
- package/dist/lib.d.ts +2 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +1 -0
- package/dist/lib.js.map +1 -1
- package/package.json +6 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* ship --ticket=<ID> Implement a single ticket from tickets.json
|
|
13
13
|
* build Batch process all tickets from tickets.json
|
|
14
14
|
* review Review codebase against CLAUDE.md rules
|
|
15
|
+
* test --ticket=<ID> Run E2E tests with automated fixing
|
|
15
16
|
*
|
|
16
17
|
* Usage:
|
|
17
18
|
* bun run kosuke sync-rules
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
* bun run kosuke ship --ticket=SCHEMA-1
|
|
24
25
|
* bun run kosuke build
|
|
25
26
|
* bun run kosuke review
|
|
27
|
+
* bun run kosuke test --ticket=FRONTEND-1
|
|
26
28
|
*
|
|
27
29
|
* Environment Variables:
|
|
28
30
|
* ANTHROPIC_API_KEY - Required for Claude API
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* ship --ticket=<ID> Implement a single ticket from tickets.json
|
|
13
13
|
* build Batch process all tickets from tickets.json
|
|
14
14
|
* review Review codebase against CLAUDE.md rules
|
|
15
|
+
* test --ticket=<ID> Run E2E tests with automated fixing
|
|
15
16
|
*
|
|
16
17
|
* Usage:
|
|
17
18
|
* bun run kosuke sync-rules
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
* bun run kosuke ship --ticket=SCHEMA-1
|
|
24
25
|
* bun run kosuke build
|
|
25
26
|
* bun run kosuke review
|
|
27
|
+
* bun run kosuke test --ticket=FRONTEND-1
|
|
26
28
|
*
|
|
27
29
|
* Environment Variables:
|
|
28
30
|
* ANTHROPIC_API_KEY - Required for Claude API
|
|
@@ -38,6 +40,7 @@ import { ticketsCommand } from './kosuke/commands/tickets.js';
|
|
|
38
40
|
import { shipCommand } from './kosuke/commands/ship.js';
|
|
39
41
|
import { buildCommand } from './kosuke/commands/build.js';
|
|
40
42
|
import { reviewCommand } from './kosuke/commands/review.js';
|
|
43
|
+
import { testCommand } from './kosuke/commands/test.js';
|
|
41
44
|
async function main() {
|
|
42
45
|
const args = process.argv.slice(2);
|
|
43
46
|
const command = args[0];
|
|
@@ -130,6 +133,33 @@ async function main() {
|
|
|
130
133
|
await reviewCommand(options);
|
|
131
134
|
break;
|
|
132
135
|
}
|
|
136
|
+
case 'test': {
|
|
137
|
+
const ticketArg = args.find((arg) => arg.startsWith('--ticket='))?.split('=')[1];
|
|
138
|
+
if (!ticketArg) {
|
|
139
|
+
console.error('❌ --ticket flag is required\n');
|
|
140
|
+
console.log('Usage: kosuke test --ticket=FRONTEND-1 [--url=URL] [--headed] [--pr]');
|
|
141
|
+
console.log('\nExamples:');
|
|
142
|
+
console.log(' kosuke test --ticket=FRONTEND-1 # Test with auto-fix');
|
|
143
|
+
console.log(' kosuke test --ticket=FRONTEND-1 --url=http://localhost:4000');
|
|
144
|
+
console.log(' kosuke test --ticket=FRONTEND-1 --headed # Show browser');
|
|
145
|
+
console.log(' kosuke test --ticket=FRONTEND-1 --update-baseline # Update visuals');
|
|
146
|
+
console.log(' kosuke test --ticket=FRONTEND-1 --pr # Create PR');
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
const options = {
|
|
150
|
+
ticket: ticketArg,
|
|
151
|
+
url: args.find((arg) => arg.startsWith('--url='))?.split('=')[1],
|
|
152
|
+
headed: args.includes('--headed'),
|
|
153
|
+
debug: args.includes('--debug'),
|
|
154
|
+
updateBaseline: args.includes('--update-baseline'),
|
|
155
|
+
maxRetries: parseInt(args.find((arg) => arg.startsWith('--max-retries='))?.split('=')[1] || '3'),
|
|
156
|
+
ticketsFile: args.find((arg) => arg.startsWith('--tickets='))?.split('=')[1],
|
|
157
|
+
pr: args.includes('--pr'),
|
|
158
|
+
baseBranch: args.find((arg) => arg.startsWith('--base-branch='))?.split('=')[1],
|
|
159
|
+
};
|
|
160
|
+
await testCommand(options);
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
133
163
|
default:
|
|
134
164
|
console.error(`❌ Unknown command: ${command}\n`);
|
|
135
165
|
showHelp();
|
|
@@ -275,6 +305,30 @@ COMMANDS:
|
|
|
275
305
|
Examples:
|
|
276
306
|
kosuke review # Review uncommitted changes
|
|
277
307
|
|
|
308
|
+
test --ticket=<ID> [options]
|
|
309
|
+
Run E2E tests for a ticket with automated fixing
|
|
310
|
+
Uses Playwright for testing, Claude AI for analyzing and fixing issues
|
|
311
|
+
Iteratively tests and fixes until passing or max retries reached
|
|
312
|
+
|
|
313
|
+
Options:
|
|
314
|
+
--ticket=<ID> Ticket ID to test (required, e.g., FRONTEND-1)
|
|
315
|
+
--url=<URL> Base URL (default: http://localhost:3000)
|
|
316
|
+
--headed Show browser during testing
|
|
317
|
+
--debug Enable Playwright inspector
|
|
318
|
+
--update-baseline Update visual regression baselines
|
|
319
|
+
--max-retries=<N> Maximum fix-retest iterations (default: 3)
|
|
320
|
+
--tickets=<file> Path to tickets file (default: tickets.json)
|
|
321
|
+
--pr Create pull request with fixes
|
|
322
|
+
--base-branch=<name> Base branch for PR (default: current branch)
|
|
323
|
+
|
|
324
|
+
Examples:
|
|
325
|
+
kosuke test --ticket=FRONTEND-1 # Test with auto-fix
|
|
326
|
+
kosuke test --ticket=FRONTEND-1 --url=http://localhost:4000
|
|
327
|
+
kosuke test --ticket=FRONTEND-1 --headed # Show browser
|
|
328
|
+
kosuke test --ticket=FRONTEND-1 --update-baseline # Update visuals
|
|
329
|
+
kosuke test --ticket=FRONTEND-1 --max-retries=5 # More attempts
|
|
330
|
+
kosuke test --ticket=FRONTEND-1 --pr # Create PR with fixes
|
|
331
|
+
|
|
278
332
|
WORKFLOW:
|
|
279
333
|
|
|
280
334
|
By default, all commands apply changes locally without git operations.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test command - Automated E2E testing with iterative fixing
|
|
3
|
+
*
|
|
4
|
+
* This command:
|
|
5
|
+
* 1. Loads a ticket and generates/locates Playwright tests
|
|
6
|
+
* 2. Runs tests with visual regression, console/network/docker log collection
|
|
7
|
+
* 3. If tests fail: analyzes errors and applies fixes
|
|
8
|
+
* 4. Re-runs tests until passing or max retries reached
|
|
9
|
+
* 5. Runs linting after tests pass
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* kosuke test --ticket=FRONTEND-1 # Test with auto-fix
|
|
13
|
+
* kosuke test --ticket=FRONTEND-1 --url=http://localhost:4000
|
|
14
|
+
* kosuke test --ticket=FRONTEND-1 --headed # Show browser
|
|
15
|
+
* kosuke test --ticket=FRONTEND-1 --update-baseline # Update visual baselines
|
|
16
|
+
* kosuke test --ticket=FRONTEND-1 --pr # Create PR with fixes
|
|
17
|
+
*/
|
|
18
|
+
import type { TestOptions, TestResult } from '../types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Core test logic (git-agnostic, reusable)
|
|
21
|
+
*/
|
|
22
|
+
export declare function testCore(options: TestOptions): Promise<TestResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Main test command
|
|
25
|
+
*/
|
|
26
|
+
export declare function testCommand(options: TestOptions): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAU,MAAM,aAAa,CAAC;AAoCnE;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsPxE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDrE"}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test command - Automated E2E testing with iterative fixing
|
|
3
|
+
*
|
|
4
|
+
* This command:
|
|
5
|
+
* 1. Loads a ticket and generates/locates Playwright tests
|
|
6
|
+
* 2. Runs tests with visual regression, console/network/docker log collection
|
|
7
|
+
* 3. If tests fail: analyzes errors and applies fixes
|
|
8
|
+
* 4. Re-runs tests until passing or max retries reached
|
|
9
|
+
* 5. Runs linting after tests pass
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* kosuke test --ticket=FRONTEND-1 # Test with auto-fix
|
|
13
|
+
* kosuke test --ticket=FRONTEND-1 --url=http://localhost:4000
|
|
14
|
+
* kosuke test --ticket=FRONTEND-1 --headed # Show browser
|
|
15
|
+
* kosuke test --ticket=FRONTEND-1 --update-baseline # Update visual baselines
|
|
16
|
+
* kosuke test --ticket=FRONTEND-1 --pr # Create PR with fixes
|
|
17
|
+
*/
|
|
18
|
+
import { readFileSync, existsSync } from 'fs';
|
|
19
|
+
import { join } from 'path';
|
|
20
|
+
import { generateTest } from '../utils/test-generator.js';
|
|
21
|
+
import { runPlaywrightTests, isPlaywrightInstalled, installPlaywright, ensurePlaywrightConfig, } from '../utils/playwright-agent.js';
|
|
22
|
+
import { LogCollector } from '../utils/log-collector.js';
|
|
23
|
+
import { VisualTester } from '../utils/visual-tester.js';
|
|
24
|
+
import { analyzeAndFix } from '../utils/error-analyzer.js';
|
|
25
|
+
import { runComprehensiveLinting } from '../utils/validator.js';
|
|
26
|
+
import { runWithPR } from '../utils/pr-orchestrator.js';
|
|
27
|
+
/**
|
|
28
|
+
* Load tickets from file
|
|
29
|
+
*/
|
|
30
|
+
function loadTicketsFile(ticketsPath) {
|
|
31
|
+
if (!existsSync(ticketsPath)) {
|
|
32
|
+
throw new Error(`Tickets file not found: ${ticketsPath}\n` +
|
|
33
|
+
`Please generate tickets first using: kosuke tickets`);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const content = readFileSync(ticketsPath, 'utf-8');
|
|
37
|
+
return JSON.parse(content);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
throw new Error(`Failed to parse tickets file: ${error instanceof Error ? error.message : String(error)}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Find ticket by ID
|
|
45
|
+
*/
|
|
46
|
+
function findTicket(ticketsData, ticketId) {
|
|
47
|
+
return ticketsData.tickets.find((t) => t.id === ticketId);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Core test logic (git-agnostic, reusable)
|
|
51
|
+
*/
|
|
52
|
+
export async function testCore(options) {
|
|
53
|
+
const { ticket: ticketId, url = 'http://localhost:3000', headed = false, debug = false, maxRetries = 3, ticketsFile = 'tickets.json', } = options;
|
|
54
|
+
const cwd = process.cwd();
|
|
55
|
+
const ticketsPath = join(cwd, ticketsFile);
|
|
56
|
+
// Track metrics
|
|
57
|
+
let totalInputTokens = 0;
|
|
58
|
+
let totalOutputTokens = 0;
|
|
59
|
+
let totalCacheCreationTokens = 0;
|
|
60
|
+
let totalCacheReadTokens = 0;
|
|
61
|
+
let totalCost = 0;
|
|
62
|
+
let totalFixesApplied = 0;
|
|
63
|
+
let iterations = 0;
|
|
64
|
+
let testsRun = 0;
|
|
65
|
+
let testsPassed = 0;
|
|
66
|
+
let testsFailed = 0;
|
|
67
|
+
let visualDiffs = 0;
|
|
68
|
+
let testFilePath = '';
|
|
69
|
+
let tracePath = '';
|
|
70
|
+
try {
|
|
71
|
+
// 1. Load and validate ticket
|
|
72
|
+
console.log('📋 Loading ticket...');
|
|
73
|
+
const ticketsData = loadTicketsFile(ticketsPath);
|
|
74
|
+
const ticket = findTicket(ticketsData, ticketId);
|
|
75
|
+
if (!ticket) {
|
|
76
|
+
throw new Error(`Ticket ${ticketId} not found in ${ticketsFile}\n` +
|
|
77
|
+
`Available tickets: ${ticketsData.tickets.map((t) => t.id).join(', ')}`);
|
|
78
|
+
}
|
|
79
|
+
if (ticket.status !== 'Done' && ticket.status !== 'InProgress') {
|
|
80
|
+
throw new Error(`Ticket ${ticketId} status is "${ticket.status}".\n` +
|
|
81
|
+
`Tests should only be run on tickets that have been implemented (Done or InProgress).`);
|
|
82
|
+
}
|
|
83
|
+
console.log(` ✅ Loaded: ${ticket.id} - ${ticket.title}\n`);
|
|
84
|
+
// 2. Ensure Playwright is set up
|
|
85
|
+
console.log('🎭 Checking Playwright setup...');
|
|
86
|
+
if (!isPlaywrightInstalled(cwd)) {
|
|
87
|
+
console.log(' ℹ️ Playwright not found, installing...');
|
|
88
|
+
await installPlaywright(cwd);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log(' ✅ Playwright is installed\n');
|
|
92
|
+
}
|
|
93
|
+
ensurePlaywrightConfig(cwd);
|
|
94
|
+
// 3. Generate or locate test
|
|
95
|
+
console.log('🎭 Checking for existing tests...');
|
|
96
|
+
testFilePath = join(cwd, '.kosuke', 'tests', `${ticketId}.spec.ts`);
|
|
97
|
+
if (!existsSync(testFilePath)) {
|
|
98
|
+
console.log(' ℹ️ No test found, generating new test...');
|
|
99
|
+
const genResult = await generateTest(ticket, url, cwd);
|
|
100
|
+
testFilePath = genResult.filePath;
|
|
101
|
+
totalInputTokens += genResult.tokensUsed.input;
|
|
102
|
+
totalOutputTokens += genResult.tokensUsed.output;
|
|
103
|
+
totalCacheCreationTokens += genResult.tokensUsed.cacheCreation;
|
|
104
|
+
totalCacheReadTokens += genResult.tokensUsed.cacheRead;
|
|
105
|
+
totalCost += genResult.cost;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.log(' ✅ Test found:', testFilePath);
|
|
109
|
+
}
|
|
110
|
+
// 4. Test execution loop
|
|
111
|
+
let testsPassing = false;
|
|
112
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
113
|
+
iterations = attempt;
|
|
114
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
115
|
+
console.log(`🧪 Test Execution (Attempt ${attempt}/${maxRetries})`);
|
|
116
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
117
|
+
// Initialize log collector and visual tester
|
|
118
|
+
const logCollector = new LogCollector();
|
|
119
|
+
const visualTester = new VisualTester(cwd);
|
|
120
|
+
// Run tests with Playwright
|
|
121
|
+
const testResult = await runPlaywrightTests({
|
|
122
|
+
testFile: testFilePath,
|
|
123
|
+
baseUrl: url,
|
|
124
|
+
headed,
|
|
125
|
+
debug,
|
|
126
|
+
cwd,
|
|
127
|
+
});
|
|
128
|
+
testsRun = testResult.testsRun;
|
|
129
|
+
testsPassed = testResult.testsPassed;
|
|
130
|
+
testsFailed = testResult.testsFailed;
|
|
131
|
+
tracePath = testResult.tracePath;
|
|
132
|
+
// Collect Docker logs
|
|
133
|
+
await logCollector.collectDockerLogs('30s');
|
|
134
|
+
// Get visual diffs
|
|
135
|
+
visualDiffs = visualTester.getFailedDiffs().length;
|
|
136
|
+
// Display results
|
|
137
|
+
console.log(`\n📊 Test Results:`);
|
|
138
|
+
console.log(` ✅ Passed: ${testResult.testsPassed}`);
|
|
139
|
+
console.log(` ❌ Failed: ${testResult.testsFailed}`);
|
|
140
|
+
console.log(` 📸 Visual diffs: ${visualDiffs}`);
|
|
141
|
+
console.log(` ⏱️ Duration: ${(testResult.duration / 1000).toFixed(2)}s`);
|
|
142
|
+
// Check if all tests passed
|
|
143
|
+
if (testResult.success && !visualTester.hasRegressions()) {
|
|
144
|
+
testsPassing = true;
|
|
145
|
+
console.log('\n✅ All tests passed!');
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
// If this is the last attempt, don't try to fix
|
|
149
|
+
if (attempt === maxRetries) {
|
|
150
|
+
console.log(`\n❌ Max retries (${maxRetries}) reached. Tests still failing.`);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
// 5. Analyze errors and apply fixes
|
|
154
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
155
|
+
console.log(`🔍 Phase ${attempt}: Error Analysis & Fixing`);
|
|
156
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
157
|
+
console.log('📝 Collecting logs...');
|
|
158
|
+
const logs = logCollector.getErrors();
|
|
159
|
+
console.log(` 🔧 Console errors: ${logs.console.length}`);
|
|
160
|
+
console.log(` 🔧 Network failures: ${logs.network.length}`);
|
|
161
|
+
console.log(` 🔧 Docker logs: ${logs.docker.length}`);
|
|
162
|
+
// Analyze and fix
|
|
163
|
+
const analysisResult = await analyzeAndFix(ticket, testResult.failures, logs, testResult.tracePath, cwd);
|
|
164
|
+
totalFixesApplied += analysisResult.fixesApplied;
|
|
165
|
+
totalInputTokens += analysisResult.tokensUsed.input;
|
|
166
|
+
totalOutputTokens += analysisResult.tokensUsed.output;
|
|
167
|
+
totalCacheCreationTokens += analysisResult.tokensUsed.cacheCreation;
|
|
168
|
+
totalCacheReadTokens += analysisResult.tokensUsed.cacheRead;
|
|
169
|
+
totalCost += analysisResult.cost;
|
|
170
|
+
console.log(`\n 🔧 Applied ${analysisResult.fixesApplied} fixes`);
|
|
171
|
+
console.log(` 💰 Cost: $${analysisResult.cost.toFixed(4)}`);
|
|
172
|
+
// Continue to next iteration
|
|
173
|
+
console.log(`\n🔄 Re-running tests in next iteration...`);
|
|
174
|
+
}
|
|
175
|
+
// 6. Linting phase (if tests passed)
|
|
176
|
+
if (testsPassing) {
|
|
177
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
178
|
+
console.log(`🔧 Linting & Quality Checks`);
|
|
179
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
180
|
+
const lintResult = await runComprehensiveLinting();
|
|
181
|
+
console.log(`\n✅ Linting completed (${lintResult.fixCount} fixes applied)`);
|
|
182
|
+
// Return success result
|
|
183
|
+
return {
|
|
184
|
+
ticketId,
|
|
185
|
+
success: true,
|
|
186
|
+
testsRun,
|
|
187
|
+
testsPassed,
|
|
188
|
+
testsFailed: 0,
|
|
189
|
+
visualDiffs: 0,
|
|
190
|
+
fixesApplied: totalFixesApplied,
|
|
191
|
+
lintFixCount: lintResult.fixCount,
|
|
192
|
+
iterations,
|
|
193
|
+
tokensUsed: {
|
|
194
|
+
input: totalInputTokens,
|
|
195
|
+
output: totalOutputTokens,
|
|
196
|
+
cacheCreation: totalCacheCreationTokens,
|
|
197
|
+
cacheRead: totalCacheReadTokens,
|
|
198
|
+
},
|
|
199
|
+
cost: totalCost,
|
|
200
|
+
testFilePath,
|
|
201
|
+
tracePath,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Return failure result
|
|
206
|
+
return {
|
|
207
|
+
ticketId,
|
|
208
|
+
success: false,
|
|
209
|
+
testsRun,
|
|
210
|
+
testsPassed,
|
|
211
|
+
testsFailed,
|
|
212
|
+
visualDiffs,
|
|
213
|
+
fixesApplied: totalFixesApplied,
|
|
214
|
+
lintFixCount: 0,
|
|
215
|
+
iterations,
|
|
216
|
+
tokensUsed: {
|
|
217
|
+
input: totalInputTokens,
|
|
218
|
+
output: totalOutputTokens,
|
|
219
|
+
cacheCreation: totalCacheCreationTokens,
|
|
220
|
+
cacheRead: totalCacheReadTokens,
|
|
221
|
+
},
|
|
222
|
+
cost: totalCost,
|
|
223
|
+
testFilePath,
|
|
224
|
+
tracePath,
|
|
225
|
+
error: 'Tests failed after maximum retry attempts',
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
231
|
+
console.error(`\n❌ Test execution failed: ${errorMessage}`);
|
|
232
|
+
return {
|
|
233
|
+
ticketId,
|
|
234
|
+
success: false,
|
|
235
|
+
testsRun,
|
|
236
|
+
testsPassed,
|
|
237
|
+
testsFailed,
|
|
238
|
+
visualDiffs,
|
|
239
|
+
fixesApplied: totalFixesApplied,
|
|
240
|
+
lintFixCount: 0,
|
|
241
|
+
iterations,
|
|
242
|
+
tokensUsed: {
|
|
243
|
+
input: totalInputTokens,
|
|
244
|
+
output: totalOutputTokens,
|
|
245
|
+
cacheCreation: totalCacheCreationTokens,
|
|
246
|
+
cacheRead: totalCacheReadTokens,
|
|
247
|
+
},
|
|
248
|
+
cost: totalCost,
|
|
249
|
+
testFilePath,
|
|
250
|
+
tracePath,
|
|
251
|
+
error: errorMessage,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Main test command
|
|
257
|
+
*/
|
|
258
|
+
export async function testCommand(options) {
|
|
259
|
+
const { ticket: ticketId, pr = false } = options;
|
|
260
|
+
console.log(`🧪 Testing Ticket: ${ticketId}\n`);
|
|
261
|
+
try {
|
|
262
|
+
// Validate environment
|
|
263
|
+
if (!process.env.ANTHROPIC_API_KEY) {
|
|
264
|
+
throw new Error('ANTHROPIC_API_KEY environment variable is required');
|
|
265
|
+
}
|
|
266
|
+
if (pr && !process.env.GITHUB_TOKEN) {
|
|
267
|
+
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
268
|
+
}
|
|
269
|
+
// If --pr flag is provided, wrap with PR workflow
|
|
270
|
+
if (pr) {
|
|
271
|
+
const { result: testResult, prInfo } = await runWithPR({
|
|
272
|
+
branchPrefix: `test/fix-${ticketId}`,
|
|
273
|
+
baseBranch: options.baseBranch,
|
|
274
|
+
commitMessage: `test: fix issues found in ${ticketId}`,
|
|
275
|
+
prTitle: `test: Fix issues in ${ticketId}`,
|
|
276
|
+
prBody: `## 🧪 Test Fixes for ${ticketId}
|
|
277
|
+
|
|
278
|
+
This PR contains automated fixes for issues found during E2E testing of ticket ${ticketId}.
|
|
279
|
+
|
|
280
|
+
### 📊 Test Results
|
|
281
|
+
- Tests run: ${0} (will be filled by result)
|
|
282
|
+
- Fixes applied: ${0}
|
|
283
|
+
- Iterations: ${0}
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
🤖 *Generated by Kosuke CLI (\`kosuke test --ticket=${ticketId} --pr\`)*`,
|
|
288
|
+
}, async () => testCore(options));
|
|
289
|
+
// Display summary
|
|
290
|
+
displayTestSummary(testResult, prInfo.prUrl);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
// Run core logic without PR
|
|
294
|
+
const result = await testCore(options);
|
|
295
|
+
displayTestSummary(result);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
console.error('\n❌ Test command failed:', error);
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Display test summary
|
|
305
|
+
*/
|
|
306
|
+
function displayTestSummary(result, prUrl) {
|
|
307
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
308
|
+
console.log('📊 Test Summary');
|
|
309
|
+
console.log('='.repeat(60));
|
|
310
|
+
if (result.success) {
|
|
311
|
+
console.log('✅ Status: All tests passed');
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
console.log('❌ Status: Tests failed');
|
|
315
|
+
}
|
|
316
|
+
console.log(`🧪 Tests: ${result.testsPassed} passed, ${result.testsFailed} failed (${result.testsRun} total)`);
|
|
317
|
+
console.log(`📸 Visual: ${result.visualDiffs} regressions found`);
|
|
318
|
+
console.log(`🔧 Fixes: ${result.fixesApplied} applied`);
|
|
319
|
+
console.log(`🧹 Lint: ${result.lintFixCount} fixes applied`);
|
|
320
|
+
console.log(`🔄 Iterations: ${result.iterations}`);
|
|
321
|
+
console.log(`💰 Total cost: $${result.cost.toFixed(4)}`);
|
|
322
|
+
console.log(`🎭 Test file: ${result.testFilePath}`);
|
|
323
|
+
console.log(`📊 Trace: ${result.tracePath}`);
|
|
324
|
+
if (prUrl) {
|
|
325
|
+
console.log(`🔗 PR: ${prUrl}`);
|
|
326
|
+
}
|
|
327
|
+
console.log('='.repeat(60));
|
|
328
|
+
if (result.success) {
|
|
329
|
+
console.log('\n✅ Testing completed successfully!');
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
console.log(`\n❌ Testing failed: ${result.error || 'Unknown error'}`);
|
|
333
|
+
if (!prUrl) {
|
|
334
|
+
console.log('ℹ️ Review the logs and trace file above for more details.');
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../kosuke/commands/test.ts"],"names":[],"mappings":"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"}
|
package/dist/kosuke/types.d.ts
CHANGED
|
@@ -131,5 +131,41 @@ export interface ReviewResult {
|
|
|
131
131
|
};
|
|
132
132
|
cost: number;
|
|
133
133
|
}
|
|
134
|
-
export {
|
|
134
|
+
export interface TestOptions {
|
|
135
|
+
ticket: string;
|
|
136
|
+
url?: string;
|
|
137
|
+
headed?: boolean;
|
|
138
|
+
debug?: boolean;
|
|
139
|
+
updateBaseline?: boolean;
|
|
140
|
+
maxRetries?: number;
|
|
141
|
+
ticketsFile?: string;
|
|
142
|
+
pr?: boolean;
|
|
143
|
+
baseBranch?: string;
|
|
144
|
+
}
|
|
145
|
+
export interface TestResult {
|
|
146
|
+
ticketId: string;
|
|
147
|
+
success: boolean;
|
|
148
|
+
testsRun: number;
|
|
149
|
+
testsPassed: number;
|
|
150
|
+
testsFailed: number;
|
|
151
|
+
visualDiffs: number;
|
|
152
|
+
fixesApplied: number;
|
|
153
|
+
lintFixCount: number;
|
|
154
|
+
iterations: number;
|
|
155
|
+
tokensUsed: {
|
|
156
|
+
input: number;
|
|
157
|
+
output: number;
|
|
158
|
+
cacheCreation: number;
|
|
159
|
+
cacheRead: number;
|
|
160
|
+
};
|
|
161
|
+
cost: number;
|
|
162
|
+
testFilePath: string;
|
|
163
|
+
tracePath: string;
|
|
164
|
+
error?: string;
|
|
165
|
+
}
|
|
166
|
+
export type { AnalysisResult, TestFailure } from './utils/error-analyzer.js';
|
|
167
|
+
export type { ConsoleLog, NetworkLog, DockerLog, CollectedLogs } from './utils/log-collector.js';
|
|
168
|
+
export type { PlaywrightResult, PlaywrightOptions } from './utils/playwright-agent.js';
|
|
169
|
+
export type { GeneratedTest } from './utils/test-generator.js';
|
|
170
|
+
export type { VisualDiff, VisualTestOptions } from './utils/visual-tester.js';
|
|
135
171
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../kosuke/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../kosuke/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Analyzer - Analyze test failures and apply fixes
|
|
3
|
+
*
|
|
4
|
+
* Uses Claude to:
|
|
5
|
+
* - Analyze test failures, console errors, network failures, and backend logs
|
|
6
|
+
* - Identify root causes
|
|
7
|
+
* - Apply fixes to the codebase
|
|
8
|
+
*/
|
|
9
|
+
import type { Ticket } from '../types.js';
|
|
10
|
+
import type { CollectedLogs } from './log-collector.js';
|
|
11
|
+
export interface AnalysisResult {
|
|
12
|
+
rootCause: string;
|
|
13
|
+
fixesApplied: number;
|
|
14
|
+
tokensUsed: {
|
|
15
|
+
input: number;
|
|
16
|
+
output: number;
|
|
17
|
+
cacheCreation: number;
|
|
18
|
+
cacheRead: number;
|
|
19
|
+
};
|
|
20
|
+
cost: number;
|
|
21
|
+
}
|
|
22
|
+
export interface TestFailure {
|
|
23
|
+
testName: string;
|
|
24
|
+
errorMessage: string;
|
|
25
|
+
expected?: string;
|
|
26
|
+
received?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Analyze test failures and apply fixes
|
|
30
|
+
*/
|
|
31
|
+
export declare function analyzeAndFix(ticket: Ticket, testFailures: TestFailure[], logs: CollectedLogs, tracePath: string, cwd?: string): Promise<AnalysisResult>;
|
|
32
|
+
//# sourceMappingURL=error-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-analyzer.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/error-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,EAAE,EAC3B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAuBzB"}
|