#!/usr/bin/env node /** * Script to download a website with its assets for insertr testing * Usage: node download-site.js */ import fs from 'fs'; import path from 'path'; import { execSync } from 'child_process'; async function downloadSite(url, outputDir) { console.log(`Downloading ${url} to ${outputDir}`); // Create output directory if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } try { // Use wget to download the site with assets // --page-requisites: download all files needed to display page // --convert-links: convert links to work locally // --adjust-extension: add proper extensions // --no-parent: don't ascend to parent directory // --no-host-directories: don't create host directories // --cut-dirs=1: cut directory levels const wgetCmd = `wget --page-requisites --convert-links --adjust-extension --no-parent --no-host-directories --directory-prefix="${outputDir}" --user-agent="Mozilla/5.0 (compatible; insertr-test-bot)" "${url}"`; execSync(wgetCmd, { stdio: 'inherit' }); console.log('✅ Download completed successfully'); // Create README for the site const readmeContent = `# ${path.basename(outputDir)} ## Original URL ${url} ## Downloaded ${new Date().toISOString()} ## Testing Notes - Site downloaded with assets for insertr testing - Check HTML structure for suitable content sections - Add insertr classes to editable sections ## Insertr Enhancement Status - [ ] Content sections identified - [ ] Insertr classes added - [ ] Enhanced version tested - [ ] Results documented `; fs.writeFileSync(path.join(outputDir, 'README.md'), readmeContent); } catch (error) { console.error('❌ Download failed:', error.message); process.exit(1); } } // Parse command line arguments const args = process.argv.slice(2); if (args.length < 2) { console.log('Usage: node download-site.js '); process.exit(1); } const [url, outputDir] = args; downloadSite(url, outputDir);