Migration verification completed WITHOUT screenshots due to browser automation resource constraints. This commit provides comprehensive evidence via: - HTTP response verification (curl tests) - Docker container status verification (SSH to fry) - Detailed verification report documenting all 7 migrated containers - Screenshot automation tools (puppeteer/playwright) for future use Evidence Summary: - Photon Dockge: HTTP 200 (services stopped as expected) - Fry Dockge: HTTP 200 (services running) - All Docker containers healthy on fry (29+ minutes uptime) - Gitea + PostgreSQL: Running and healthy - Mastodon (5 containers): All running and healthy Pending Tasks: - Mastodon media files transfer (public/system directory empty - 4KB) - Gitea external port 3000 accessibility (firewall check needed) - Screenshot capture when resources available 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
103 lines
2.9 KiB
JavaScript
103 lines
2.9 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
const fs = require('fs').promises;
|
|
const path = require('path');
|
|
|
|
const TARGETS = [
|
|
{
|
|
url: 'http://photon.obnh.io:5001',
|
|
outputPath: '/home/olaf/dockge-migration-guide/screenshots/photon-dockge-home.png',
|
|
description: 'Photon Dockge showing exited services'
|
|
},
|
|
{
|
|
url: 'http://fry.obr.sh:5001',
|
|
outputPath: '/home/olaf/dockge-migration-guide/screenshots/fry-dockge-home.png',
|
|
description: 'Fry Dockge showing active services'
|
|
},
|
|
{
|
|
url: 'http://45.131.64.213:3000',
|
|
outputPath: '/home/olaf/dockge-migration-guide/screenshots/gitea-on-fry.png',
|
|
description: 'Gitea running on fry'
|
|
}
|
|
];
|
|
|
|
const TIMEOUT = 60000; // 60 seconds
|
|
|
|
async function captureScreenshot(target) {
|
|
const { url, outputPath, description } = target;
|
|
|
|
console.log(`\n▶️ Capturing: ${description}`);
|
|
console.log(` URL: ${url}`);
|
|
|
|
let browser = null;
|
|
try {
|
|
// Ensure output directory exists
|
|
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
|
|
// Launch browser
|
|
browser = await puppeteer.launch({
|
|
headless: true,
|
|
args: ['--no-sandbox', '--disable-setuid-sandbox'],
|
|
executablePath: '/usr/bin/google-chrome'
|
|
});
|
|
|
|
const page = await browser.newPage();
|
|
|
|
// Set viewport
|
|
await page.setViewport({ width: 1920, height: 1080 });
|
|
|
|
// Navigate and wait for network idle
|
|
console.log(` Navigating...`);
|
|
await page.goto(url, {
|
|
waitUntil: 'networkidle2',
|
|
timeout: TIMEOUT
|
|
});
|
|
|
|
// Wait a bit more for dynamic content
|
|
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
|
|
// Take screenshot
|
|
console.log(` 📸 Taking screenshot...`);
|
|
await page.screenshot({
|
|
path: outputPath,
|
|
fullPage: true
|
|
});
|
|
|
|
console.log(` ✅ Success! Saved to ${outputPath}`);
|
|
|
|
} catch (error) {
|
|
console.log(` ❌ Failure: ${error.message}`);
|
|
} finally {
|
|
if (browser) {
|
|
await browser.close();
|
|
}
|
|
}
|
|
}
|
|
|
|
async function main() {
|
|
console.log('='.repeat(60));
|
|
console.log('SCREENSHOT CAPTURE MISSION');
|
|
console.log('='.repeat(60));
|
|
|
|
const manifest = [];
|
|
|
|
for (const target of TARGETS) {
|
|
await captureScreenshot(target);
|
|
manifest.push({
|
|
...target,
|
|
timestamp: new Date().toISOString()
|
|
});
|
|
console.log('-'.repeat(60));
|
|
}
|
|
|
|
// Save manifest
|
|
const manifestPath = '/home/olaf/dockge-migration-guide/screenshots/MANIFEST.json';
|
|
await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2));
|
|
console.log(`\n📋 Manifest saved to ${manifestPath}`);
|
|
|
|
console.log('\n' + '='.repeat(60));
|
|
console.log('ALL TASKS COMPLETED');
|
|
console.log('='.repeat(60));
|
|
}
|
|
|
|
main().catch(console.error);
|