Por Que Capturar Evidencia Visual?
Cuando un test falla, la pregunta mas comun es “como se veia la pantalla cuando fallo?” Un stack trace te dice que asercion fallo, pero un screenshot muestra el estado real de la aplicacion en ese momento. La grabacion de video va mas alla — muestra toda la secuencia de eventos que llevaron a la falla.
Captura de Screenshots
Playwright
export default defineConfig({
use: {
screenshot: 'only-on-failure',
},
});
test('flujo de checkout', async ({ page }) => {
await page.goto('/cart');
await page.screenshot({ path: 'screenshots/cart.png' });
await page.click('#checkout');
await page.screenshot({ path: 'screenshots/checkout.png', fullPage: true });
});
Cypress
module.exports = defineConfig({
screenshotOnRunFailure: true,
screenshotsFolder: 'cypress/screenshots',
});
cy.screenshot('pagina-carrito');
cy.get('.header').screenshot('componente-header');
Selenium
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File("screenshots/failure.png"));
Grabacion de Video
Playwright
export default defineConfig({
use: {
video: 'retain-on-failure',
},
});
Cypress
module.exports = defineConfig({
video: true,
videoCompression: 32,
videosFolder: 'cypress/videos',
});
Playwright Trace Viewer
use: {
trace: 'on-first-retry',
}
// npx playwright show-trace test-results/trace.zip
Integracion CI/CD
GitHub Actions Artifacts
- name: Ejecutar tests de Playwright
run: npx playwright test
continue-on-error: true
- name: Subir artifacts de test
uses: actions/upload-artifact@v4
if: always()
with:
name: evidencia-test
path: |
test-results/
playwright-report/
retention-days: 30
Evidencia a Nivel de Paso
test('flujo de compra completa', async ({ page }) => {
await page.goto('/products');
await page.screenshot({ path: 'evidence/01-pagina-productos.png' });
await page.click('[data-testid="add-to-cart"]');
await page.screenshot({ path: 'evidence/02-agregado-al-carrito.png' });
await page.goto('/cart');
await page.screenshot({ path: 'evidence/03-pagina-carrito.png' });
await page.click('#checkout');
await page.screenshot({ path: 'evidence/04-formulario-pago.png' });
await page.click('#submit-payment');
await expect(page.locator('.confirmation')).toBeVisible();
await page.screenshot({ path: 'evidence/05-confirmacion.png' });
});
Mejores Practicas
- Siempre capturar en falla — requisito minimo
- Capturar pagina completa — screenshots parciales pierden contexto
- Nombres descriptivos — incluir nombre de test, paso y timestamp
- Politicas de retencion — 30 dias es tipico
- Comprimir videos — balance entre calidad y tamano
- Usar Playwright traces — proporcionan datos de depuracion mas ricos que solo video
Ejercicios
Ejercicio 1: Estrategia de Screenshots
Configura screenshots automaticos en falla y pasos clave. Ejecuta tests, revisa evidencia.
Ejercicio 2: Grabacion de Video
Habilita grabacion en Playwright o Cypress. Introduce falla deliberada y usa video para diagnosticar.
Ejercicio 3: Pipeline de Evidencia CI/CD
Configura pipeline CI para capturar screenshots, videos y traces. Sube como artifacts con retencion de 30 dias.