@tostudy-ai/mcp-setup 1.0.3 → 1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"e2e-wizard-flow.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/e2e-wizard-flow.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqGH;;GAEG;AACH,iBAAe,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiCvD;AAED;;GAEG;AACH,iBAAe,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CnD;AAED;;GAEG;AACH,iBAAe,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C9C;AAED;;GAEG;AACH,iBAAe,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BlD;AAED;;GAEG;AACH,iBAAe,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4ErD;AAED;;GAEG;AACH,iBAAe,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwDvD;AAqCD;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCnC;AAQD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,IAAI,IAAI,WAAW,GACpB,CAAC"}
1
+ {"version":3,"file":"e2e-wizard-flow.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/e2e-wizard-flow.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA6GH;;GAEG;AACH,iBAAe,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCvD;AAED;;GAEG;AACH,iBAAe,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDnD;AAED;;GAEG;AACH,iBAAe,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA2C9C;AAED;;GAEG;AACH,iBAAe,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BlD;AAED;;GAEG;AACH,iBAAe,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6ErD;AAED;;GAEG;AACH,iBAAe,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDvD;AAqCD;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCnC;AAQD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,IAAI,IAAI,WAAW,GACpB,CAAC"}
@@ -11,30 +11,36 @@
11
11
  * NOTE: This test requires the MCP server to be running for full E2E verification.
12
12
  * Run with: npx tsx src/__tests__/e2e-wizard-flow.test.ts
13
13
  */
14
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
15
- import { platform } from 'node:os';
14
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, rmSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ import { platform, tmpdir } from "node:os";
16
17
  // Import the modules we're testing
17
- import { getClaudeConfigPath, isClaudeInstalled, readClaudeConfig, addTostudyMcpServer, removeTostudyMcpServer, isTostudyMcpConfigured, getTostudyMcpConfig, } from '../config.js';
18
- import { getInstalledIDEs, detectAllIDEs } from '../detect.js';
19
- import { runDiagnostics } from '../diagnose.js';
20
- import { repairAllIssues } from '../repair.js';
18
+ import { getClaudeConfigPath, isClaudeInstalled, readClaudeConfig, addTostudyMcpServer, removeTostudyMcpServer, isTostudyMcpConfigured, getTostudyMcpConfig, extractApiKey, extractMcpUrl, } from "../config.js";
19
+ import { getInstalledIDEs, detectAllIDEs } from "../detect.js";
20
+ import { runDiagnostics } from "../diagnose.js";
21
+ import { repairAllIssues } from "../repair.js";
21
22
  // Test utilities
22
- const TEST_API_KEY = 'test-e2e-api-key-12345678901234567890123456789012';
23
- const TEST_PLATFORM_URL = 'https://tostudy.com';
23
+ const TEST_API_KEY = "test-e2e-api-key-12345678901234567890123456789012";
24
+ const TEST_PLATFORM_URL = "https://tostudy.com";
24
25
  const results = [];
25
26
  let testConfigBackup = null;
27
+ const originalHome = process.env.HOME;
28
+ const testHome = join(tmpdir(), "tostudy-mcp-setup-e2e-home");
29
+ rmSync(testHome, { recursive: true, force: true });
30
+ mkdirSync(testHome, { recursive: true });
31
+ process.env.HOME = testHome;
26
32
  function log(message) {
27
33
  process.stdout.write(`${message}\n`);
28
34
  }
29
35
  function logStep(step, description) {
30
- log(`\n${''.repeat(60)}`);
36
+ log(`\n${"".repeat(60)}`);
31
37
  log(`Step ${step}: ${description}`);
32
- log(''.repeat(60));
38
+ log("".repeat(60));
33
39
  }
34
40
  function logResult(name, passed, message) {
35
- const icon = passed ? '' : '';
36
- const color = passed ? '\x1b[32m' : '\x1b[31m';
37
- const reset = '\x1b[0m';
41
+ const icon = passed ? "" : "";
42
+ const color = passed ? "\x1b[32m" : "\x1b[31m";
43
+ const reset = "\x1b[0m";
38
44
  log(` ${color}${icon}${reset} ${name}: ${message}`);
39
45
  }
40
46
  function assert(condition, message) {
@@ -47,7 +53,7 @@ async function runTest(name, testFn) {
47
53
  try {
48
54
  await testFn();
49
55
  const duration = Date.now() - start;
50
- results.push({ name, passed: true, message: 'OK', duration });
56
+ results.push({ name, passed: true, message: "OK", duration });
51
57
  logResult(name, true, `OK (${duration}ms)`);
52
58
  }
53
59
  catch (error) {
@@ -63,7 +69,7 @@ async function runTest(name, testFn) {
63
69
  function backupConfig() {
64
70
  const configPath = getClaudeConfigPath();
65
71
  if (existsSync(configPath)) {
66
- testConfigBackup = readFileSync(configPath, 'utf-8');
72
+ testConfigBackup = readFileSync(configPath, "utf-8");
67
73
  log(` Backed up existing config from ${configPath}`);
68
74
  }
69
75
  }
@@ -73,7 +79,7 @@ function backupConfig() {
73
79
  function restoreConfig() {
74
80
  const configPath = getClaudeConfigPath();
75
81
  if (testConfigBackup !== null) {
76
- writeFileSync(configPath, testConfigBackup, 'utf-8');
82
+ writeFileSync(configPath, testConfigBackup, "utf-8");
77
83
  log(` Restored original config to ${configPath}`);
78
84
  }
79
85
  else if (existsSync(configPath)) {
@@ -87,30 +93,30 @@ function restoreConfig() {
87
93
  * Step 1: Environment Detection
88
94
  */
89
95
  async function testEnvironmentDetection() {
90
- logStep(1, 'Environment Detection');
91
- await runTest('Claude Code installation check', () => {
96
+ logStep(1, "Environment Detection");
97
+ await runTest("Claude Code installation check", () => {
92
98
  const installed = isClaudeInstalled();
93
99
  // This test passes whether Claude is installed or not
94
100
  // We just verify the function works
95
101
  log(` Claude Code installed: ${installed}`);
96
- assert(typeof installed === 'boolean', 'isClaudeInstalled should return boolean');
102
+ assert(typeof installed === "boolean", "isClaudeInstalled should return boolean");
97
103
  });
98
- await runTest('Config path resolution', () => {
104
+ await runTest("Config path resolution", () => {
99
105
  const configPath = getClaudeConfigPath();
100
- assert(typeof configPath === 'string', 'Config path should be a string');
101
- assert(configPath.length > 0, 'Config path should not be empty');
102
- assert(configPath.includes('claude_desktop_config.json'), 'Config path should end with claude_desktop_config.json');
106
+ assert(typeof configPath === "string", "Config path should be a string");
107
+ assert(configPath.length > 0, "Config path should not be empty");
108
+ assert(configPath.includes("claude_desktop_config.json"), "Config path should end with claude_desktop_config.json");
103
109
  log(` Config path: ${configPath}`);
104
110
  });
105
- await runTest('IDE detection', () => {
111
+ await runTest("IDE detection", () => {
106
112
  const allIDEs = detectAllIDEs();
107
- assert(Array.isArray(allIDEs), 'detectAllIDEs should return an array');
108
- assert(allIDEs.length === 4, 'Should check for 4 IDE types');
113
+ assert(Array.isArray(allIDEs), "detectAllIDEs should return an array");
114
+ assert(allIDEs.length === 4, "Should check for 4 IDE types");
109
115
  const installedIDEs = getInstalledIDEs();
110
- assert(Array.isArray(installedIDEs), 'getInstalledIDEs should return an array');
116
+ assert(Array.isArray(installedIDEs), "getInstalledIDEs should return an array");
111
117
  log(` Detected ${installedIDEs.length} installed IDE(s):`);
112
118
  for (const ide of installedIDEs) {
113
- const version = ide.version ? ` (${ide.version})` : '';
119
+ const version = ide.version ? ` (${ide.version})` : "";
114
120
  log(` - ${ide.name}${version}`);
115
121
  }
116
122
  });
@@ -119,39 +125,40 @@ async function testEnvironmentDetection() {
119
125
  * Step 2: Config File Operations
120
126
  */
121
127
  async function testConfigOperations() {
122
- logStep(2, 'Config File Operations');
123
- await runTest('Read config (initial state)', () => {
128
+ logStep(2, "Config File Operations");
129
+ await runTest("Read config (initial state)", () => {
124
130
  const config = readClaudeConfig();
125
- assert(typeof config === 'object', 'Config should be an object');
126
- assert(config.mcpServers !== undefined || config.mcpServers === undefined, 'mcpServers can be undefined');
131
+ assert(typeof config === "object", "Config should be an object");
132
+ assert(config.mcpServers !== undefined || config.mcpServers === undefined, "mcpServers can be undefined");
127
133
  log(` Current MCP servers: ${Object.keys(config.mcpServers || {}).length}`);
128
134
  });
129
- await runTest('Add MCP server configuration', () => {
135
+ await runTest("Add MCP server configuration", () => {
130
136
  addTostudyMcpServer(TEST_API_KEY, TEST_PLATFORM_URL);
131
137
  const config = readClaudeConfig();
132
- assert(config.mcpServers !== undefined, 'mcpServers should exist after adding');
138
+ assert(config.mcpServers !== undefined, "mcpServers should exist after adding");
133
139
  const mcpServers = config.mcpServers;
134
- assert(mcpServers['tostudy'] !== undefined, 'tostudy server should be configured');
135
- const mcpConfig = mcpServers['tostudy'];
136
- assert(mcpConfig.type === 'sse', 'Server type should be sse');
137
- assert(mcpConfig.url?.includes('/mcp/sse') === true, 'URL should include /mcp/sse');
138
- assert(mcpConfig.headers?.['Authorization']?.startsWith('Bearer ') === true, 'Authorization header should have Bearer prefix');
139
- log(` Server URL: ${mcpConfig.url}`);
140
+ assert(mcpServers["tostudy"] !== undefined, "tostudy server should be configured");
141
+ const mcpConfig = mcpServers["tostudy"];
142
+ assert(mcpConfig.command === "npx", "Server should use npx bridge");
143
+ assert(mcpConfig.args?.includes("mcp-remote") === true, "Args should include mcp-remote");
144
+ assert(extractMcpUrl(mcpConfig)?.includes("/mcp") === true, "URL should include /mcp");
145
+ assert(extractApiKey(mcpConfig) === TEST_API_KEY, "Authorization should preserve API key");
146
+ log(` Server URL: ${extractMcpUrl(mcpConfig)}`);
140
147
  });
141
- await runTest('Check MCP configuration status', () => {
148
+ await runTest("Check MCP configuration status", () => {
142
149
  const isConfigured = isTostudyMcpConfigured();
143
- assert(isConfigured === true, 'MCP should be configured after addTostudyMcpServer');
150
+ assert(isConfigured === true, "MCP should be configured after addTostudyMcpServer");
144
151
  });
145
- await runTest('Get MCP config details', () => {
152
+ await runTest("Get MCP config details", () => {
146
153
  const mcpConfig = getTostudyMcpConfig();
147
- assert(mcpConfig !== null, 'MCP config should not be null');
148
- assert(mcpConfig?.type === 'sse', 'Type should be sse');
149
- assert(mcpConfig?.url !== undefined, 'URL should be defined');
154
+ assert(mcpConfig !== null, "MCP config should not be null");
155
+ assert(mcpConfig?.command === "npx", "Command should be npx");
156
+ assert(extractMcpUrl(mcpConfig) !== null, "URL should be defined");
150
157
  });
151
- await runTest('Remove MCP server configuration', () => {
158
+ await runTest("Remove MCP server configuration", () => {
152
159
  removeTostudyMcpServer();
153
160
  const isConfigured = isTostudyMcpConfigured();
154
- assert(isConfigured === false, 'MCP should not be configured after removal');
161
+ assert(isConfigured === false, "MCP should not be configured after removal");
155
162
  });
156
163
  // Re-add for subsequent tests
157
164
  addTostudyMcpServer(TEST_API_KEY, TEST_PLATFORM_URL);
@@ -160,15 +167,15 @@ async function testConfigOperations() {
160
167
  * Step 3: Diagnostic Checks
161
168
  */
162
169
  async function testDiagnostics() {
163
- logStep(3, 'Diagnostic Checks');
164
- await runTest('Run full diagnostics', async () => {
170
+ logStep(3, "Diagnostic Checks");
171
+ await runTest("Run full diagnostics", async () => {
165
172
  const report = await runDiagnostics();
166
- assert(typeof report === 'object', 'Report should be an object');
167
- assert(typeof report.timestamp === 'string', 'Report should have timestamp');
168
- assert(typeof report.claudeInstalled === 'boolean', 'Report should have claudeInstalled');
169
- assert(typeof report.mcpConfigured === 'boolean', 'Report should have mcpConfigured');
170
- assert(Array.isArray(report.issues), 'Report should have issues array');
171
- assert(typeof report.passed === 'boolean', 'Report should have passed status');
173
+ assert(typeof report === "object", "Report should be an object");
174
+ assert(typeof report.timestamp === "string", "Report should have timestamp");
175
+ assert(typeof report.claudeInstalled === "boolean", "Report should have claudeInstalled");
176
+ assert(typeof report.mcpConfigured === "boolean", "Report should have mcpConfigured");
177
+ assert(Array.isArray(report.issues), "Report should have issues array");
178
+ assert(typeof report.passed === "boolean", "Report should have passed status");
172
179
  log(` Claude installed: ${report.claudeInstalled}`);
173
180
  log(` MCP configured: ${report.mcpConfigured}`);
174
181
  log(` Issues found: ${report.issues.length}`);
@@ -176,20 +183,20 @@ async function testDiagnostics() {
176
183
  if (report.issues.length > 0) {
177
184
  log(` Issues:`);
178
185
  for (const issue of report.issues) {
179
- const icon = issue.severity === 'critical' ? '🔴' : issue.severity === 'warning' ? '🟡' : '🔵';
186
+ const icon = issue.severity === "critical" ? "🔴" : issue.severity === "warning" ? "🟡" : "🔵";
180
187
  log(` ${icon} ${issue.title}`);
181
188
  }
182
189
  }
183
190
  });
184
- await runTest('Verify issue severity types', async () => {
191
+ await runTest("Verify issue severity types", async () => {
185
192
  const report = await runDiagnostics();
186
193
  for (const issue of report.issues) {
187
- assert(['critical', 'warning', 'info'].includes(issue.severity), `Issue severity should be valid: ${issue.severity}`);
188
- assert(typeof issue.id === 'string', 'Issue should have id');
189
- assert(typeof issue.title === 'string', 'Issue should have title');
190
- assert(typeof issue.description === 'string', 'Issue should have description');
191
- assert(typeof issue.suggestion === 'string', 'Issue should have suggestion');
192
- assert(typeof issue.autoFixable === 'boolean', 'Issue should have autoFixable flag');
194
+ assert(["critical", "warning", "info"].includes(issue.severity), `Issue severity should be valid: ${issue.severity}`);
195
+ assert(typeof issue.id === "string", "Issue should have id");
196
+ assert(typeof issue.title === "string", "Issue should have title");
197
+ assert(typeof issue.description === "string", "Issue should have description");
198
+ assert(typeof issue.suggestion === "string", "Issue should have suggestion");
199
+ assert(typeof issue.autoFixable === "boolean", "Issue should have autoFixable flag");
193
200
  }
194
201
  });
195
202
  }
@@ -197,24 +204,24 @@ async function testDiagnostics() {
197
204
  * Step 4: Auto-Repair Functions
198
205
  */
199
206
  async function testRepairFunctions() {
200
- logStep(4, 'Auto-Repair Functions');
201
- await runTest('Repair all issues (with API key)', async () => {
207
+ logStep(4, "Auto-Repair Functions");
208
+ await runTest("Repair all issues (with API key)", async () => {
202
209
  const diagnostic = await runDiagnostics();
203
210
  const repairReport = repairAllIssues(diagnostic, TEST_API_KEY, TEST_PLATFORM_URL);
204
- assert(typeof repairReport === 'object', 'Repair report should be an object');
205
- assert(typeof repairReport.timestamp === 'string', 'Should have timestamp');
206
- assert(typeof repairReport.repairsAttempted === 'number', 'Should have repairsAttempted');
207
- assert(typeof repairReport.repairsSucceeded === 'number', 'Should have repairsSucceeded');
208
- assert(typeof repairReport.repairsFailed === 'number', 'Should have repairsFailed');
209
- assert(Array.isArray(repairReport.results), 'Should have results array');
210
- assert(Array.isArray(repairReport.requiresUserInput), 'Should have requiresUserInput array');
211
+ assert(typeof repairReport === "object", "Repair report should be an object");
212
+ assert(typeof repairReport.timestamp === "string", "Should have timestamp");
213
+ assert(typeof repairReport.repairsAttempted === "number", "Should have repairsAttempted");
214
+ assert(typeof repairReport.repairsSucceeded === "number", "Should have repairsSucceeded");
215
+ assert(typeof repairReport.repairsFailed === "number", "Should have repairsFailed");
216
+ assert(Array.isArray(repairReport.results), "Should have results array");
217
+ assert(Array.isArray(repairReport.requiresUserInput), "Should have requiresUserInput array");
211
218
  log(` Repairs attempted: ${repairReport.repairsAttempted}`);
212
219
  log(` Repairs succeeded: ${repairReport.repairsSucceeded}`);
213
220
  log(` Repairs failed: ${repairReport.repairsFailed}`);
214
221
  if (repairReport.results.length > 0) {
215
222
  log(` Results:`);
216
223
  for (const result of repairReport.results) {
217
- const icon = result.success ? '' : '';
224
+ const icon = result.success ? "" : "";
218
225
  log(` ${icon} ${result.issueId}: ${result.message}`);
219
226
  }
220
227
  }
@@ -224,14 +231,15 @@ async function testRepairFunctions() {
224
231
  * Step 5: MCP Server Connectivity (requires running server)
225
232
  */
226
233
  async function testServerConnectivity() {
227
- logStep(5, 'MCP Server Connectivity');
234
+ logStep(5, "MCP Server Connectivity");
228
235
  const mcpConfig = getTostudyMcpConfig();
229
- if (!mcpConfig?.url) {
230
- log(' Skipping connectivity tests - MCP not configured');
236
+ const mcpUrl = mcpConfig ? extractMcpUrl(mcpConfig) : null;
237
+ if (!mcpUrl) {
238
+ log(" Skipping connectivity tests - MCP not configured");
231
239
  return;
232
240
  }
233
- const baseUrl = mcpConfig.url.replace('/mcp/sse', '');
234
- await runTest('Health check endpoint', async () => {
241
+ const baseUrl = mcpUrl.replace(/\/mcp(\/sse)?$/, "");
242
+ await runTest("Health check endpoint", async () => {
235
243
  try {
236
244
  const controller = new AbortController();
237
245
  const timeout = setTimeout(() => controller.abort(), 5000);
@@ -245,11 +253,11 @@ async function testServerConnectivity() {
245
253
  const health = (await response.json());
246
254
  log(` Status: ${health.status}`);
247
255
  log(` Uptime: ${health.uptime}s`);
248
- assert(['healthy', 'degraded', 'unhealthy'].includes(health.status), 'Health status should be valid');
256
+ assert(["healthy", "degraded", "unhealthy"].includes(health.status), "Health status should be valid");
249
257
  }
250
258
  catch (error) {
251
- if (error.name === 'AbortError') {
252
- log(' Server not responding (timeout) - this is expected if server is not running');
259
+ if (error.name === "AbortError") {
260
+ log(" Server not responding (timeout) - this is expected if server is not running");
253
261
  }
254
262
  else {
255
263
  log(` Server not reachable: ${error.message}`);
@@ -257,7 +265,7 @@ async function testServerConnectivity() {
257
265
  // Don't fail - server might not be running during test
258
266
  }
259
267
  });
260
- await runTest('Detailed health check', async () => {
268
+ await runTest("Detailed health check", async () => {
261
269
  try {
262
270
  const controller = new AbortController();
263
271
  const timeout = setTimeout(() => controller.abort(), 5000);
@@ -270,13 +278,13 @@ async function testServerConnectivity() {
270
278
  }
271
279
  const health = (await response.json());
272
280
  log(` Status: ${health.status}`);
273
- log(` Database: ${health.services?.database?.status || 'N/A'}`);
274
- log(` Redis: ${health.services?.redis?.status || 'N/A'}`);
281
+ log(` Database: ${health.services?.database?.status || "N/A"}`);
282
+ log(` Redis: ${health.services?.redis?.status || "N/A"}`);
275
283
  log(` Active connections: ${health.connections?.active || 0}`);
276
284
  }
277
285
  catch (error) {
278
- if (error.name === 'AbortError') {
279
- log(' Server not responding (timeout)');
286
+ if (error.name === "AbortError") {
287
+ log(" Server not responding (timeout)");
280
288
  }
281
289
  else {
282
290
  log(` Server not reachable: ${error.message}`);
@@ -288,15 +296,15 @@ async function testServerConnectivity() {
288
296
  * Step 6: Integration Test - Complete Wizard Flow Simulation
289
297
  */
290
298
  async function testWizardFlowSimulation() {
291
- logStep(6, 'Wizard Flow Simulation');
292
- await runTest('Simulate complete wizard flow', async () => {
299
+ logStep(6, "Wizard Flow Simulation");
300
+ await runTest("Simulate complete wizard flow", async () => {
293
301
  // Step 1: Environment detection
294
302
  const installed = isClaudeInstalled();
295
303
  const installedIDEs = getInstalledIDEs();
296
304
  log(` 1. Environment detected: Claude=${installed}, IDEs=${installedIDEs.length}`);
297
305
  // Step 2: Check existing configuration
298
306
  const wasConfigured = isTostudyMcpConfigured();
299
- log(` 2. Previous configuration: ${wasConfigured ? 'exists' : 'none'}`);
307
+ log(` 2. Previous configuration: ${wasConfigured ? "exists" : "none"}`);
300
308
  // Step 3: Configure MCP server (simulate API key validation by adding)
301
309
  addTostudyMcpServer(TEST_API_KEY, TEST_PLATFORM_URL);
302
310
  log(` 3. MCP server configured`);
@@ -313,25 +321,24 @@ async function testWizardFlowSimulation() {
313
321
  }
314
322
  // Step 6: Verify final state
315
323
  const finalConfig = getTostudyMcpConfig();
316
- assert(finalConfig !== null, 'Config should exist after wizard');
317
- assert(finalConfig?.type === 'sse', 'Should use SSE transport');
318
- assert(finalConfig?.url?.includes('/mcp/sse') === true, 'URL should be correct');
324
+ assert(finalConfig !== null, "Config should exist after wizard");
325
+ assert(finalConfig?.command === "npx", "Should use npx bridge");
326
+ assert(extractMcpUrl(finalConfig)?.includes("/mcp") === true, "URL should be correct");
319
327
  log(` 6. Final verification: OK`);
320
328
  });
321
- await runTest('Verify config file structure', () => {
329
+ await runTest("Verify config file structure", () => {
322
330
  const config = readClaudeConfig();
323
- assert(config.mcpServers !== undefined, 'mcpServers should exist');
331
+ assert(config.mcpServers !== undefined, "mcpServers should exist");
324
332
  const mcpServers = config.mcpServers;
325
- assert(mcpServers['tostudy'] !== undefined, 'tostudy should be configured');
326
- const server = mcpServers['tostudy'];
327
- assert(server.type === 'sse', 'Type should be sse');
328
- assert(server.url !== undefined, 'URL should be defined');
329
- assert(server.headers !== undefined, 'Headers should be defined');
330
- const headers = server.headers;
331
- assert(headers['Authorization'] !== undefined, 'Authorization header should be defined');
333
+ assert(mcpServers["tostudy"] !== undefined, "tostudy should be configured");
334
+ const server = mcpServers["tostudy"];
335
+ assert(server.command === "npx", "Command should be npx");
336
+ assert(server.args !== undefined, "Args should be defined");
337
+ assert(extractMcpUrl(server) !== null, "URL should be defined");
338
+ assert(extractApiKey(server) !== null, "Authorization should be defined");
332
339
  log(` Config structure: valid`);
333
- log(` Server type: ${server.type}`);
334
- log(` URL: ${server.url}`);
340
+ log(` Server command: ${server.command}`);
341
+ log(` URL: ${extractMcpUrl(server)}`);
335
342
  log(` Has auth header: true`);
336
343
  });
337
344
  }
@@ -339,26 +346,26 @@ async function testWizardFlowSimulation() {
339
346
  * Print final summary
340
347
  */
341
348
  function printSummary() {
342
- log('\n' + ''.repeat(60));
343
- log('TEST SUMMARY');
344
- log(''.repeat(60));
349
+ log("\n" + "".repeat(60));
350
+ log("TEST SUMMARY");
351
+ log("".repeat(60));
345
352
  const passed = results.filter((r) => r.passed).length;
346
353
  const failed = results.filter((r) => !r.passed).length;
347
354
  const total = results.length;
348
355
  log(`\nTotal: ${total} | Passed: ${passed} | Failed: ${failed}\n`);
349
356
  if (failed > 0) {
350
- log('FAILED TESTS:');
357
+ log("FAILED TESTS:");
351
358
  for (const result of results.filter((r) => !r.passed)) {
352
359
  log(` ✗ ${result.name}`);
353
360
  log(` ${result.message}`);
354
361
  }
355
- log('');
362
+ log("");
356
363
  }
357
364
  const totalTime = results.reduce((sum, r) => sum + r.duration, 0);
358
365
  log(`Total time: ${totalTime}ms`);
359
- log('');
366
+ log("");
360
367
  if (failed === 0) {
361
- log('\x1b[32m✓ All E2E tests passed!\x1b[0m');
368
+ log("\x1b[32m✓ All E2E tests passed!\x1b[0m");
362
369
  }
363
370
  else {
364
371
  log(`\x1b[31m✗ ${failed} test(s) failed\x1b[0m`);
@@ -369,15 +376,15 @@ function printSummary() {
369
376
  * Main test runner
370
377
  */
371
378
  async function main() {
372
- log(''.repeat(60));
373
- log('E2E TEST: CLI Setup Wizard Flow');
374
- log(''.repeat(60));
379
+ log("".repeat(60));
380
+ log("E2E TEST: CLI Setup Wizard Flow");
381
+ log("".repeat(60));
375
382
  log(`Platform: ${platform()}`);
376
383
  log(`Node: ${process.version}`);
377
384
  log(`Time: ${new Date().toISOString()}`);
378
385
  try {
379
386
  // Backup current config
380
- log('\n--- Setup ---');
387
+ log("\n--- Setup ---");
381
388
  backupConfig();
382
389
  // Run all test steps
383
390
  await testEnvironmentDetection();
@@ -387,7 +394,7 @@ async function main() {
387
394
  await testServerConnectivity();
388
395
  await testWizardFlowSimulation();
389
396
  // Cleanup
390
- log('\n--- Cleanup ---');
397
+ log("\n--- Cleanup ---");
391
398
  restoreConfig();
392
399
  // Print summary
393
400
  printSummary();
@@ -397,9 +404,13 @@ async function main() {
397
404
  restoreConfig();
398
405
  process.exitCode = 1;
399
406
  }
407
+ finally {
408
+ process.env.HOME = originalHome;
409
+ rmSync(testHome, { recursive: true, force: true });
410
+ }
400
411
  }
401
412
  // Run if executed directly
402
- if (import.meta.url.endsWith(process.argv[1]?.replace(/^file:\/\//, '') || '')) {
413
+ if (import.meta.url.endsWith(process.argv[1]?.replace(/^file:\/\//, "") || "")) {
403
414
  main();
404
415
  }
405
416
  // Export for use as a module
@@ -1 +1 @@
1
- {"version":3,"file":"e2e-wizard-flow.test.js","sourceRoot":"","sources":["../../src/__tests__/e2e-wizard-flow.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e-wizard-flow.test.js","sourceRoot":"","sources":["../../src/__tests__/e2e-wizard-flow.test.ts"],"names":[],"mappings":"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"}