UNPKG

puppeteer-vision-mcp-server

Version:

MCP Server for scraping webpages and converting to markdown

60 lines (59 loc) 2.35 kB
import fs from 'fs'; import path from 'path'; /** * Copies session state from a regular Chrome profile to make it available for Chrome for Testing * @param sourceUserDataDir Path to the source Chrome user data directory * @returns Whether the copy operation succeeded */ export async function copySessionState(sourceUserDataDir) { try { console.log(`Attempting to copy session state from: ${sourceUserDataDir}`); // Validate that the source directory exists if (!fs.existsSync(sourceUserDataDir)) { console.error(`Source user data directory does not exist: ${sourceUserDataDir}`); return false; } // The Default profile contains most user data const defaultProfilePath = path.join(sourceUserDataDir, 'Default'); if (!fs.existsSync(defaultProfilePath)) { console.error(`Default profile not found in user data directory: ${defaultProfilePath}`); return false; } // Cookie files to copy (critical for maintaining login sessions) const filesToCopy = [ 'Cookies', 'Cookies-journal', 'Login Data', 'Login Data-journal', 'Web Data', 'Web Data-journal' ]; // Check if files exist and copy them let filesCopied = 0; for (const fileName of filesToCopy) { const sourcePath = path.join(defaultProfilePath, fileName); if (fs.existsSync(sourcePath)) { try { // Create a backup first const backupPath = `${sourcePath}.backup`; fs.copyFileSync(sourcePath, backupPath); // Log successful backup console.log(`Created backup: ${backupPath}`); filesCopied++; } catch (err) { console.error(`Failed to create backup for ${sourcePath}:`, err); } } else { console.log(`File not found, skipping: ${sourcePath}`); } } console.log(`Successfully processed ${filesCopied} session files`); return filesCopied > 0; } catch (error) { console.error('Error copying session state:', error); return false; } }