47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
import puppeteer from 'puppeteer';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
async function takeScreenshot() {
|
|
console.log('Launching browser...');
|
|
const browser = await puppeteer.launch({
|
|
headless: "new",
|
|
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
});
|
|
const page = await browser.newPage();
|
|
|
|
// Set viewport to a nice desktop size
|
|
await page.setViewport({ width: 1280, height: 800, deviceScaleFactor: 2 });
|
|
|
|
console.log('Navigating to app...');
|
|
try {
|
|
// Try local network IP if localhost fails, but localhost should work in this env
|
|
await page.goto('http://localhost:5173', { waitUntil: 'networkidle0', timeout: 10000 });
|
|
} catch (e) {
|
|
console.log('Retrying with networkidle2...');
|
|
try {
|
|
await page.goto('http://localhost:5173', { waitUntil: 'networkidle2', timeout: 10000 });
|
|
} catch (e2) {
|
|
console.error('Could not load page:', e2.message);
|
|
await browser.close();
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// Wait for animations/rendering
|
|
await new Promise(r => setTimeout(r, 2000));
|
|
|
|
const screenshotPath = path.join(__dirname, '../public/screenshot.png');
|
|
console.log(`Taking screenshot to ${screenshotPath}...`);
|
|
|
|
await page.screenshot({ path: screenshotPath });
|
|
|
|
await browser.close();
|
|
console.log('Done.');
|
|
}
|
|
|
|
takeScreenshot();
|