MCPcopy
hub / github.com/coder/mux / main

Function main

scripts/reproWorkspaceSwitchTearWeb.ts:401–605  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

399}
400
401async function main() {
402 const muxRoot = await fs.mkdtemp(path.join(os.tmpdir(), "mux-web-repro-"));
403 const demoProject = prepareDemoProject(muxRoot);
404 const backendPort = await getFreePort();
405 let vitePort = await getFreePort();
406 while (vitePort === backendPort) vitePort = await getFreePort();
407 const child = spawn("make", ["dev-server"], {
408 cwd: process.cwd(),
409 stdio: ["ignore", "ignore", "ignore"],
410 env: {
411 ...process.env,
412 MUX_ROOT: muxRoot,
413 MUX_MOCK_AI: "1",
414 BACKEND_PORT: String(backendPort),
415 VITE_PORT: String(vitePort),
416 MUX_ENABLE_TUTORIALS_IN_SANDBOX: "0",
417 VITE_ALLOWED_HOSTS: "all",
418 NODE_ENV: "development",
419 },
420 });
421 const terminateServer = () => {
422 if (child.exitCode == null && !child.killed) {
423 child.kill("SIGTERM");
424 }
425 };
426 for (const signal of ["SIGINT", "SIGTERM"] as const) {
427 process.on(signal, terminateServer);
428 }
429
430 try {
431 await waitForHttpReady(`http://127.0.0.1:${vitePort}`);
432 const browser = await chromium.launch({ headless: true });
433 try {
434 const page = await browser.newPage({ viewport: { width: 1600, height: 900 } });
435 await page.goto(`http://127.0.0.1:${vitePort}`, { waitUntil: "domcontentloaded" });
436 await page.evaluate(() => {
437 localStorage.setItem(
438 "tutorialState",
439 JSON.stringify({
440 disabled: false,
441 completed: { settings: true, creation: true, workspace: true },
442 })
443 );
444 });
445 await page.reload({ waitUntil: "domcontentloaded" });
446
447 await waitForProjectPage(page);
448 const trunkBranch = readTrunkBranch(demoProject.projectPath);
449 const workspaceA = await createWorkspaceViaOrpc({
450 page,
451 projectPath: demoProject.projectPath,
452 branchName: `switch-tear-a-${Date.now()}`,
453 trunkBranch,
454 });
455 const workspaceB = await createWorkspaceViaOrpc({
456 page,
457 projectPath: demoProject.projectPath,
458 branchName: `switch-tear-b-${Date.now()}`,

Callers 1

Calls 15

prepareDemoProjectFunction · 0.90
waitForProjectPageFunction · 0.85
readTrunkBranchFunction · 0.85
createWorkspaceViaOrpcFunction · 0.85
ensureProjectExpandedFunction · 0.85
buildMarkerFunction · 0.85
waitForMockResponseFunction · 0.85
captureSwitchFunction · 0.85
captureOpenTransitionFunction · 0.85
detectGeometryShiftFunction · 0.85
detectVisualInstabilityFunction · 0.85
stripPngFunction · 0.85

Tested by

no test coverage detected