mycontext-cli 4.2.8 → 4.2.11
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/README.md +13 -4
- package/dist/README.md +13 -4
- package/dist/agents/implementations/ArchitectAgent.js.map +1 -1
- package/dist/agents/implementations/BuildStrategyAgent.js.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DemoRecorderAgent.d.ts +73 -0
- package/dist/agents/implementations/DemoRecorderAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DemoRecorderAgent.js +485 -0
- package/dist/agents/implementations/DemoRecorderAgent.js.map +1 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts +4 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -1
- package/dist/agents/implementations/DesignPipelineAgent.js +82 -10
- package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -1
- package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
- package/dist/agents/implementations/FeaturePlannerAgent.d.ts +10 -0
- package/dist/agents/implementations/FeaturePlannerAgent.d.ts.map +1 -0
- package/dist/agents/implementations/FeaturePlannerAgent.js +35 -0
- package/dist/agents/implementations/FeaturePlannerAgent.js.map +1 -0
- package/dist/agents/implementations/QASubAgent.js.map +1 -1
- package/dist/agents/implementations/SecurityAgent.js.map +1 -1
- package/dist/agents/implementations/VOScriptExtractorAgent.d.ts +84 -0
- package/dist/agents/implementations/VOScriptExtractorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/VOScriptExtractorAgent.js +414 -0
- package/dist/agents/implementations/VOScriptExtractorAgent.js.map +1 -0
- package/dist/agents/implementations/VisionNavigatorAgent.d.ts +52 -0
- package/dist/agents/implementations/VisionNavigatorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/VisionNavigatorAgent.js +313 -0
- package/dist/agents/implementations/VisionNavigatorAgent.js.map +1 -0
- package/dist/agents/implementations/VisionTestCoordinator.d.ts +51 -0
- package/dist/agents/implementations/VisionTestCoordinator.d.ts.map +1 -0
- package/dist/agents/implementations/VisionTestCoordinator.js +348 -0
- package/dist/agents/implementations/VisionTestCoordinator.js.map +1 -0
- package/dist/agents/implementations/VisualValidatorAgent.d.ts +83 -0
- package/dist/agents/implementations/VisualValidatorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/VisualValidatorAgent.js +472 -0
- package/dist/agents/implementations/VisualValidatorAgent.js.map +1 -0
- package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/clients/ClaudeSDKClient.d.ts +4 -0
- package/dist/clients/ClaudeSDKClient.d.ts.map +1 -1
- package/dist/clients/ClaudeSDKClient.js +8 -0
- package/dist/clients/ClaudeSDKClient.js.map +1 -1
- package/dist/clients/MyContextAIClient.d.ts +4 -0
- package/dist/clients/MyContextAIClient.d.ts.map +1 -1
- package/dist/clients/MyContextAIClient.js +69 -0
- package/dist/clients/MyContextAIClient.js.map +1 -1
- package/dist/clients/ProviderChain.d.ts +1 -0
- package/dist/clients/ProviderChain.d.ts.map +1 -1
- package/dist/clients/ProviderChain.js +3 -0
- package/dist/clients/ProviderChain.js.map +1 -1
- package/dist/clients/XAIClient.d.ts +4 -0
- package/dist/clients/XAIClient.d.ts.map +1 -1
- package/dist/clients/XAIClient.js +8 -0
- package/dist/clients/XAIClient.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +10 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +110 -204
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan-feature.d.ts +3 -0
- package/dist/commands/plan-feature.d.ts.map +1 -0
- package/dist/commands/plan-feature.js +57 -0
- package/dist/commands/plan-feature.js.map +1 -0
- package/dist/commands/sanitize.d.ts.map +1 -1
- package/dist/commands/sanitize.js +95 -7
- package/dist/commands/sanitize.js.map +1 -1
- package/dist/commands/vision-test.d.ts +67 -0
- package/dist/commands/vision-test.d.ts.map +1 -0
- package/dist/commands/vision-test.js +347 -0
- package/dist/commands/vision-test.js.map +1 -0
- package/dist/core/ai/AICore.d.ts +13 -0
- package/dist/core/ai/AICore.d.ts.map +1 -1
- package/dist/core/ai/AICore.js +65 -0
- package/dist/core/ai/AICore.js.map +1 -1
- package/dist/doctor/rules/node-rules.d.ts.map +1 -1
- package/dist/doctor/rules/node-rules.js +41 -0
- package/dist/doctor/rules/node-rules.js.map +1 -1
- package/dist/interfaces/AIClient.d.ts +1 -0
- package/dist/interfaces/AIClient.d.ts.map +1 -1
- package/dist/interfaces/AIClient.js.map +1 -1
- package/dist/mcp/vision-test-runner.d.ts +57 -0
- package/dist/mcp/vision-test-runner.d.ts.map +1 -0
- package/dist/mcp/vision-test-runner.js +337 -0
- package/dist/mcp/vision-test-runner.js.map +1 -0
- package/dist/mcp/vision-testing-server.d.ts +38 -0
- package/dist/mcp/vision-testing-server.d.ts.map +1 -0
- package/dist/mcp/vision-testing-server.js +637 -0
- package/dist/mcp/vision-testing-server.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/services/ProjectScanner.d.ts.map +1 -1
- package/dist/services/ProjectScanner.js +8 -5
- package/dist/services/ProjectScanner.js.map +1 -1
- package/dist/services/gemini-vision.d.ts +3 -11
- package/dist/services/gemini-vision.d.ts.map +1 -1
- package/dist/services/gemini-vision.js +13 -132
- package/dist/services/gemini-vision.js.map +1 -1
- package/dist/services/llmClarifier.d.ts +9 -0
- package/dist/services/llmClarifier.d.ts.map +1 -0
- package/dist/services/llmClarifier.js +22 -0
- package/dist/services/llmClarifier.js.map +1 -0
- package/dist/services/vision-element-finder.d.ts +64 -0
- package/dist/services/vision-element-finder.d.ts.map +1 -0
- package/dist/services/vision-element-finder.js +446 -0
- package/dist/services/vision-element-finder.js.map +1 -0
- package/dist/types/flow-testing.d.ts +1 -1
- package/dist/types/flow-testing.d.ts.map +1 -1
- package/dist/types/vision-testing.d.ts +382 -0
- package/dist/types/vision-testing.d.ts.map +1 -0
- package/dist/types/vision-testing.js +9 -0
- package/dist/types/vision-testing.js.map +1 -0
- package/dist/utils/claudeAgentClient.d.ts +4 -0
- package/dist/utils/claudeAgentClient.d.ts.map +1 -1
- package/dist/utils/claudeAgentClient.js +8 -0
- package/dist/utils/claudeAgentClient.js.map +1 -1
- package/dist/utils/geminiClient.d.ts +41 -6
- package/dist/utils/geminiClient.d.ts.map +1 -1
- package/dist/utils/geminiClient.js +124 -18
- package/dist/utils/geminiClient.js.map +1 -1
- package/dist/utils/githubModelsClient.d.ts +19 -6
- package/dist/utils/githubModelsClient.d.ts.map +1 -1
- package/dist/utils/githubModelsClient.js +94 -7
- package/dist/utils/githubModelsClient.js.map +1 -1
- package/dist/utils/openRouterClient.d.ts +12 -3
- package/dist/utils/openRouterClient.d.ts.map +1 -1
- package/dist/utils/openRouterClient.js +91 -2
- package/dist/utils/openRouterClient.js.map +1 -1
- package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -1
- package/dist/utils/unifiedDesignContextLoader.js +15 -0
- package/dist/utils/unifiedDesignContextLoader.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vision Test Runner
|
|
4
|
+
*
|
|
5
|
+
* Main execution engine for vision-based testing.
|
|
6
|
+
* Manages Playwright browser lifecycle, coordinates vision agents,
|
|
7
|
+
* and produces comprehensive test reports.
|
|
8
|
+
*
|
|
9
|
+
* REPLACES: browser-test-runner.ts (old selector-based testing)
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.VisionTestRunner = void 0;
|
|
49
|
+
const playwright_1 = require("playwright");
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const fs = __importStar(require("fs-extra"));
|
|
52
|
+
const VisionTestCoordinator_1 = require("../agents/implementations/VisionTestCoordinator");
|
|
53
|
+
const ContextService_1 = require("../services/ContextService");
|
|
54
|
+
const uuid_1 = require("uuid");
|
|
55
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
56
|
+
class VisionTestRunner {
|
|
57
|
+
constructor(projectPath) {
|
|
58
|
+
this.projectPath = projectPath;
|
|
59
|
+
this.contextService = new ContextService_1.ContextService(projectPath);
|
|
60
|
+
this.screenshotsDir = path.join(projectPath, ".mycontext", "vision-screenshots");
|
|
61
|
+
this.videosDir = path.join(projectPath, ".mycontext", "vision-videos");
|
|
62
|
+
fs.ensureDirSync(this.screenshotsDir);
|
|
63
|
+
fs.ensureDirSync(this.videosDir);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Run a vision test mission
|
|
67
|
+
*/
|
|
68
|
+
async runTest(mission, config = { headless: true }) {
|
|
69
|
+
const executionId = (0, uuid_1.v4)();
|
|
70
|
+
const startTime = Date.now();
|
|
71
|
+
console.log(chalk_1.default.bold.magenta(`\n${"═".repeat(70)}`));
|
|
72
|
+
console.log(chalk_1.default.bold.magenta(`🚀 VISION TEST RUNNER`));
|
|
73
|
+
console.log(chalk_1.default.bold.magenta(`${"═".repeat(70)}\n`));
|
|
74
|
+
console.log(chalk_1.default.white(`Mission: ${mission.name}`));
|
|
75
|
+
console.log(chalk_1.default.gray(`Description: ${mission.description}`));
|
|
76
|
+
console.log(chalk_1.default.gray(`Expected Outcome: ${mission.expectedOutcome}`));
|
|
77
|
+
console.log(chalk_1.default.gray(`Browser: ${config.headless ? "Headless" : "Headed"}`));
|
|
78
|
+
console.log(chalk_1.default.gray(`Execution ID: ${executionId}\n`));
|
|
79
|
+
try {
|
|
80
|
+
// Initialize context service
|
|
81
|
+
await this.contextService.initialize();
|
|
82
|
+
// Launch browser
|
|
83
|
+
await this.launchBrowser(config);
|
|
84
|
+
if (!this.context) {
|
|
85
|
+
throw new Error("Failed to create browser context");
|
|
86
|
+
}
|
|
87
|
+
// Create new page
|
|
88
|
+
const page = await this.context.newPage();
|
|
89
|
+
// Set viewport if specified
|
|
90
|
+
if (config.viewport) {
|
|
91
|
+
await page.setViewportSize(config.viewport);
|
|
92
|
+
}
|
|
93
|
+
// Navigate to start URL
|
|
94
|
+
const startUrl = config.baseUrl ||
|
|
95
|
+
mission.sourceFlow ||
|
|
96
|
+
mission.validationRules?.[0]?.expectedValue ||
|
|
97
|
+
"http://localhost:3000";
|
|
98
|
+
console.log(chalk_1.default.cyan(`\n🌐 Navigating to: ${startUrl}\n`));
|
|
99
|
+
await page.goto(startUrl, { waitUntil: "domcontentloaded" });
|
|
100
|
+
// Wait a moment for page to settle
|
|
101
|
+
await page.waitForTimeout(1000);
|
|
102
|
+
// Create and run vision test coordinator
|
|
103
|
+
const coordinator = new VisionTestCoordinator_1.VisionTestCoordinator();
|
|
104
|
+
const coordinatorOutput = await coordinator.run({
|
|
105
|
+
page,
|
|
106
|
+
browserContext: this.context,
|
|
107
|
+
mission,
|
|
108
|
+
projectPath: this.projectPath,
|
|
109
|
+
});
|
|
110
|
+
// Get the result
|
|
111
|
+
const result = coordinatorOutput.result;
|
|
112
|
+
// Close page
|
|
113
|
+
await page.close();
|
|
114
|
+
// Display final summary
|
|
115
|
+
this.displaySummary(result);
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error(chalk_1.default.red(`\n❌ Test execution failed: ${error.message}`));
|
|
120
|
+
console.error(chalk_1.default.gray(error.stack));
|
|
121
|
+
const endTime = Date.now();
|
|
122
|
+
// Return error result
|
|
123
|
+
const errorResult = {
|
|
124
|
+
missionId: mission.id,
|
|
125
|
+
executionId,
|
|
126
|
+
status: "error",
|
|
127
|
+
startedAt: new Date(startTime).toISOString(),
|
|
128
|
+
completedAt: new Date(endTime).toISOString(),
|
|
129
|
+
duration: endTime - startTime,
|
|
130
|
+
steps: [],
|
|
131
|
+
validationResults: [],
|
|
132
|
+
finalState: {
|
|
133
|
+
url: "",
|
|
134
|
+
},
|
|
135
|
+
error: {
|
|
136
|
+
message: error.message,
|
|
137
|
+
stack: error.stack,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
return errorResult;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
// Always close browser
|
|
144
|
+
await this.closeBrowser();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Generate a demo (record a flow without assertions)
|
|
149
|
+
*/
|
|
150
|
+
async generateDemo(request) {
|
|
151
|
+
const requestId = (0, uuid_1.v4)();
|
|
152
|
+
const startTime = Date.now();
|
|
153
|
+
console.log(chalk_1.default.bold.blue(`\n${"═".repeat(70)}`));
|
|
154
|
+
console.log(chalk_1.default.bold.blue(`🎬 DEMO GENERATION`));
|
|
155
|
+
console.log(chalk_1.default.bold.blue(`${"═".repeat(70)}\n`));
|
|
156
|
+
console.log(chalk_1.default.white(`Flow: ${request.flow}`));
|
|
157
|
+
console.log(chalk_1.default.gray(`Start URL: ${request.startUrl}`));
|
|
158
|
+
console.log(chalk_1.default.gray(`Formats: ${request.config.outputFormats.join(", ")}\n`));
|
|
159
|
+
try {
|
|
160
|
+
// Create a temporary mission for demo recording
|
|
161
|
+
const demoMission = {
|
|
162
|
+
id: requestId,
|
|
163
|
+
name: request.metadata?.title || "Demo Recording",
|
|
164
|
+
description: request.metadata?.description || request.flow,
|
|
165
|
+
mission: request.flow,
|
|
166
|
+
expectedOutcome: "Demo recorded successfully",
|
|
167
|
+
tags: request.metadata?.tags || ["demo"],
|
|
168
|
+
createdAt: new Date().toISOString(),
|
|
169
|
+
updatedAt: new Date().toISOString(),
|
|
170
|
+
recordDemo: true,
|
|
171
|
+
demoConfig: request.config,
|
|
172
|
+
sourceFlow: request.startUrl,
|
|
173
|
+
};
|
|
174
|
+
// Run test with demo recording enabled
|
|
175
|
+
const result = await this.runTest(demoMission, {
|
|
176
|
+
headless: false, // Show browser for demos
|
|
177
|
+
recordVideo: true,
|
|
178
|
+
});
|
|
179
|
+
if (result.status === "error") {
|
|
180
|
+
throw new Error(result.error?.message || "Demo generation failed");
|
|
181
|
+
}
|
|
182
|
+
const endTime = Date.now();
|
|
183
|
+
const demoResult = {
|
|
184
|
+
requestId,
|
|
185
|
+
status: result.demoArtifacts ? "success" : "failed",
|
|
186
|
+
artifacts: result.demoArtifacts,
|
|
187
|
+
duration: endTime - startTime,
|
|
188
|
+
};
|
|
189
|
+
console.log(chalk_1.default.green(`\n✅ Demo generation complete!`));
|
|
190
|
+
console.log(chalk_1.default.gray(`Duration: ${(demoResult.duration / 1000).toFixed(1)}s\n`));
|
|
191
|
+
return demoResult;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.error(chalk_1.default.red(`\n❌ Demo generation failed: ${error.message}`));
|
|
195
|
+
const endTime = Date.now();
|
|
196
|
+
return {
|
|
197
|
+
requestId,
|
|
198
|
+
status: "failed",
|
|
199
|
+
artifacts: {
|
|
200
|
+
generatedAt: new Date().toISOString(),
|
|
201
|
+
formats: {},
|
|
202
|
+
},
|
|
203
|
+
duration: endTime - startTime,
|
|
204
|
+
error: error.message,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Run multiple tests in sequence
|
|
210
|
+
*/
|
|
211
|
+
async runTestSuite(missions, config = { headless: true }) {
|
|
212
|
+
console.log(chalk_1.default.bold.cyan(`\n${"═".repeat(70)}`));
|
|
213
|
+
console.log(chalk_1.default.bold.cyan(`🧪 VISION TEST SUITE`));
|
|
214
|
+
console.log(chalk_1.default.bold.cyan(`${"═".repeat(70)}\n`));
|
|
215
|
+
console.log(chalk_1.default.white(`Tests: ${missions.length}\n`));
|
|
216
|
+
const results = [];
|
|
217
|
+
for (let i = 0; i < missions.length; i++) {
|
|
218
|
+
const mission = missions[i];
|
|
219
|
+
if (!mission)
|
|
220
|
+
continue; // Safety check for undefined
|
|
221
|
+
console.log(chalk_1.default.yellow(`\n[${i + 1}/${missions.length}] Running: ${mission.name}`));
|
|
222
|
+
const result = await this.runTest(mission, config);
|
|
223
|
+
results.push(result);
|
|
224
|
+
// Brief pause between tests
|
|
225
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
226
|
+
}
|
|
227
|
+
// Print suite summary
|
|
228
|
+
console.log(chalk_1.default.bold.cyan(`\n${"═".repeat(70)}`));
|
|
229
|
+
console.log(chalk_1.default.bold.cyan(`📊 TEST SUITE SUMMARY`));
|
|
230
|
+
console.log(chalk_1.default.bold.cyan(`${"═".repeat(70)}\n`));
|
|
231
|
+
const passed = results.filter((r) => r.status === "passed").length;
|
|
232
|
+
const failed = results.filter((r) => r.status === "failed").length;
|
|
233
|
+
const errors = results.filter((r) => r.status === "error").length;
|
|
234
|
+
console.log(chalk_1.default.green(`✓ Passed: ${passed}`));
|
|
235
|
+
console.log(chalk_1.default.red(`✗ Failed: ${failed}`));
|
|
236
|
+
console.log(chalk_1.default.yellow(`⚠ Errors: ${errors}`));
|
|
237
|
+
console.log(chalk_1.default.white(`Total: ${results.length}\n`));
|
|
238
|
+
return results;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Launch browser with configuration
|
|
242
|
+
*/
|
|
243
|
+
async launchBrowser(config) {
|
|
244
|
+
console.log(chalk_1.default.gray(`\n🌐 Launching browser...`));
|
|
245
|
+
this.browser = await playwright_1.chromium.launch({
|
|
246
|
+
headless: config.headless !== false,
|
|
247
|
+
slowMo: config.slowMo || 0,
|
|
248
|
+
});
|
|
249
|
+
const contextOptions = {
|
|
250
|
+
viewport: config.viewport || { width: 1280, height: 720 },
|
|
251
|
+
};
|
|
252
|
+
// Enable video recording if requested
|
|
253
|
+
if (config.recordVideo) {
|
|
254
|
+
contextOptions.recordVideo = {
|
|
255
|
+
dir: this.videosDir,
|
|
256
|
+
size: config.viewport || { width: 1280, height: 720 },
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
this.context = await this.browser.newContext(contextOptions);
|
|
260
|
+
console.log(chalk_1.default.green(`✓ Browser ready\n`));
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Close browser
|
|
264
|
+
*/
|
|
265
|
+
async closeBrowser() {
|
|
266
|
+
if (this.context) {
|
|
267
|
+
await this.context.close();
|
|
268
|
+
this.context = undefined;
|
|
269
|
+
}
|
|
270
|
+
if (this.browser) {
|
|
271
|
+
await this.browser.close();
|
|
272
|
+
this.browser = undefined;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Display test summary
|
|
277
|
+
*/
|
|
278
|
+
displaySummary(result) {
|
|
279
|
+
console.log(chalk_1.default.bold.magenta(`\n${"═".repeat(70)}`));
|
|
280
|
+
console.log(chalk_1.default.bold.magenta(`📋 TEST SUMMARY`));
|
|
281
|
+
console.log(chalk_1.default.bold.magenta(`${"═".repeat(70)}\n`));
|
|
282
|
+
// Status
|
|
283
|
+
const statusColor = result.status === "passed" ? "green" : "red";
|
|
284
|
+
console.log(chalk_1.default[statusColor](`Status: ${result.status.toUpperCase()}`));
|
|
285
|
+
// Duration
|
|
286
|
+
console.log(chalk_1.default.white(`Duration: ${((result.duration || 0) / 1000).toFixed(1)}s`));
|
|
287
|
+
// Steps
|
|
288
|
+
const successfulSteps = result.steps.filter((s) => s.success).length;
|
|
289
|
+
console.log(chalk_1.default.white(`Steps: ${successfulSteps}/${result.steps.length} successful`));
|
|
290
|
+
// Validations
|
|
291
|
+
if (result.validationResults.length > 0) {
|
|
292
|
+
const passedValidations = result.validationResults.filter((v) => v.passed).length;
|
|
293
|
+
console.log(chalk_1.default.white(`Validations: ${passedValidations}/${result.validationResults.length} passed`));
|
|
294
|
+
}
|
|
295
|
+
// Visual Summary
|
|
296
|
+
if (result.visualSummary) {
|
|
297
|
+
console.log(chalk_1.default.white(`Screenshots: ${result.visualSummary.totalScreenshots}`));
|
|
298
|
+
if (result.visualSummary.visualRegressionsDetected > 0) {
|
|
299
|
+
console.log(chalk_1.default.yellow(`Visual Regressions: ${result.visualSummary.visualRegressionsDetected}`));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Demo Artifacts
|
|
303
|
+
if (result.demoArtifacts) {
|
|
304
|
+
console.log(chalk_1.default.white(`Demo Formats: ${Object.keys(result.demoArtifacts.formats).join(", ")}`));
|
|
305
|
+
}
|
|
306
|
+
// Final URL
|
|
307
|
+
console.log(chalk_1.default.gray(`\nFinal URL: ${result.finalState.url}`));
|
|
308
|
+
// Error details
|
|
309
|
+
if (result.error) {
|
|
310
|
+
console.log(chalk_1.default.red(`\nError: ${result.error.message}`));
|
|
311
|
+
}
|
|
312
|
+
console.log(chalk_1.default.bold.magenta(`\n${"═".repeat(70)}\n`));
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Take a screenshot (utility method)
|
|
316
|
+
*/
|
|
317
|
+
async takeScreenshot(page, name) {
|
|
318
|
+
const filename = `${name}-${Date.now()}.png`;
|
|
319
|
+
const filepath = path.join(this.screenshotsDir, filename);
|
|
320
|
+
await page.screenshot({ path: filepath, fullPage: true });
|
|
321
|
+
return filepath;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get browser instance (for external use)
|
|
325
|
+
*/
|
|
326
|
+
getBrowser() {
|
|
327
|
+
return this.browser;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Get browser context (for external use)
|
|
331
|
+
*/
|
|
332
|
+
getContext() {
|
|
333
|
+
return this.context;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
exports.VisionTestRunner = VisionTestRunner;
|
|
337
|
+
//# sourceMappingURL=vision-test-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision-test-runner.js","sourceRoot":"","sources":["../../src/mcp/vision-test-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Vision Testing MCP Server
|
|
4
|
+
*
|
|
5
|
+
* A Model Context Protocol server for vision-based UI testing.
|
|
6
|
+
* Provides AI-powered autonomous navigation, visual validation,
|
|
7
|
+
* and professional demo generation.
|
|
8
|
+
*
|
|
9
|
+
* REPLACES: testing-server.ts (old selector-based testing)
|
|
10
|
+
*
|
|
11
|
+
* MCP Tools:
|
|
12
|
+
* - create_vision_test: Create a vision test mission
|
|
13
|
+
* - run_vision_test: Execute a vision test
|
|
14
|
+
* - generate_demo: Record and generate demo artifacts
|
|
15
|
+
* - visual_regression: Run visual regression tests
|
|
16
|
+
* - extract_vo_script: Generate voice-over script from test
|
|
17
|
+
* - list_vision_tests: List all vision test missions
|
|
18
|
+
* - get_vision_test_report: Get detailed test report
|
|
19
|
+
*/
|
|
20
|
+
export declare class VisionTestingMCPServer {
|
|
21
|
+
private server;
|
|
22
|
+
private testRunner;
|
|
23
|
+
private missionManager;
|
|
24
|
+
private contextService;
|
|
25
|
+
private projectPath;
|
|
26
|
+
constructor(projectPath?: string);
|
|
27
|
+
private setupToolHandlers;
|
|
28
|
+
private getAvailableTools;
|
|
29
|
+
private handleCreateVisionTest;
|
|
30
|
+
private handleRunVisionTest;
|
|
31
|
+
private handleGenerateDemo;
|
|
32
|
+
private handleVisualRegression;
|
|
33
|
+
private handleExtractVOScript;
|
|
34
|
+
private handleListVisionTests;
|
|
35
|
+
private handleGetTestReport;
|
|
36
|
+
start(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=vision-testing-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision-testing-server.d.ts","sourceRoot":"","sources":["../../src/mcp/vision-testing-server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAqBH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,CAAC,EAAE,MAAM;IAuBhC,OAAO,CAAC,iBAAiB;IA6CzB,OAAO,CAAC,iBAAiB;YAgOX,sBAAsB;YA4EtB,mBAAmB;YA8FnB,kBAAkB;YAuGlB,sBAAsB;YAyBtB,qBAAqB;YA6BrB,qBAAqB;YAmCrB,mBAAmB;IA0B3B,KAAK;CAKZ"}
|