Capturar screenshots de sitios web programáticamente es una necesidad sorprendentemente común. Los desarrolladores usan APIs de capturas de pantalla para pruebas de regresión visual, dashboards de monitoreo de disponibilidad, generación de miniaturas para vistas previas de enlaces, archivado de páginas web para cumplimiento normativo y creación de galerías de prueba social. En esta guía, exploraremos los principales casos de uso y te mostraremos cómo capturar screenshots perfectos con la API de Capturas de Pantalla de TongoRender.
¿Por Qué Usar una API de Capturas de Pantalla?
- Sin infraestructura que gestionar — Sin instalaciones de Chromium, sin gestión de memoria, sin limpieza de procesos zombie.
- Renderización consistente — La API usa versiones estandarizadas de navegador y conjuntos de fuentes.
- Disponibilidad global — Renderización en el borde significa baja latencia sin importar dónde está tu servidor.
- Funciones integradas — Control de viewport, emulación de dispositivos, selección de elementos, captura de página completa y opciones de formato (PNG, JPEG, WebP).
Caso de Uso 1: Pruebas de Regresión Visual
async function captureScreenshot(url, viewport = { width: 1280, height: 720 }) {
const response = await fetch('https://api.tongorender.io/v1/screenshot', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.TONGORENDER_API_KEY,
},
body: JSON.stringify({ url, viewport, fullPage: false, format: 'png' }),
});
if (!response.ok) throw new Error(`Captura fallida: ${response.statusText}`);
return Buffer.from(await response.arrayBuffer());
}
async function visualRegressionTest(pageName, url) {
const current = await captureScreenshot(url);
const baselinePath = `baselines/${pageName}.png`;
if (!fs.existsSync(baselinePath)) {
fs.writeFileSync(baselinePath, current);
console.log(`Baseline creada para ${pageName}`);
return;
}
const baseline = fs.readFileSync(baselinePath);
const diff = await compare(baseline, current);
if (diff.misMatchPercentage > 0.1) {
throw new Error(`Regresión visual detectada en ${pageName}: ${diff.misMatchPercentage}% de diferencia`);
}
}
Caso de Uso 2: Dashboard de Monitoreo
async function monitorSite(url) {
const start = Date.now();
const screenshot = await captureScreenshot(url, { width: 1440, height: 900 });
const loadTime = Date.now() - start;
await uploadToS3(screenshot, `monitoring/${Date.now()}.png`);
return { url, timestamp: new Date().toISOString(), loadTimeMs: loadTime };
}
Caso de Uso 3: Miniaturas de Vista Previa de Enlaces
async function generateThumbnail(url) {
const response = await fetch('https://api.tongorender.io/v1/screenshot', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.TONGORENDER_API_KEY,
},
body: JSON.stringify({
url,
viewport: { width: 1200, height: 630 },
fullPage: false,
format: 'jpeg',
quality: 80,
}),
});
return Buffer.from(await response.arrayBuffer());
}
Caso de Uso 4: Archivado Web para Cumplimiento
Los sectores financiero, de salud y legal frecuentemente requieren archivar contenido web para cumplimiento regulatorio:
async function archivePage(url, caseId) {
const screenshot = await captureScreenshot(url);
const metadata = {
url, caseId,
capturedAt: new Date().toISOString(),
hash: crypto.createHash('sha256').update(screenshot).digest('hex'),
};
await storage.save(`archives/${caseId}/${Date.now()}.png`, screenshot);
await db.insert('archive_records', metadata);
return metadata;
}
Opciones Avanzadas
- Emulación de dispositivos — Captura como iPhone, iPad o cualquier dispositivo personalizado.
- Captura de elementos — Usa un selector CSS para capturar un elemento específico en lugar de la página completa.
- Estrategias de espera — Espera por red inactiva, un elemento específico o una expresión JavaScript antes de capturar.
- Modo oscuro — Emula
prefers-color-scheme: darkpara capturas en modo oscuro.
Ya sea para pruebas, monitoreo, archivado o generación de contenido, una API dedicada elimina la complejidad de gestionar navegadores y te permite enfocarte en construir funcionalidades.
Prueba la API de Capturas de TongoRender — 100 capturas gratuitas al mes, sin necesidad de tarjeta de crédito.