Files
dockge-migration-guide/take_screenshots.js
olaf c6d8371ebe Add comprehensive verification report with curl/HTTP evidence
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>
2025-11-16 11:19:02 +00:00

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);