Sistema di validazione grafica automatica creato e configurato per bitprepared.it.
scripts/visual-regression/package.json- Dipendenzescripts/visual-regression/capture.js- Screenshot multi-viewportscripts/visual-regression/compare.js- Confronto pixelmatchscripts/visual-regression/create-baseline.js- Generazione baselinescripts/visual-regression/README.md- Documentazione
tests/visual-baseline/{desktop,mobile,tablet}/- Baseline imagesscreenshots/{serve,static,diff}/{desktop,mobile,tablet}/- Temp images
Makefile- Nuovi target: validate-graphics, visual-baseline, visual-clean.gitignore- screenshots/ e node_modules/ ignorati
cd scripts/visual-regression
npm installmake visual-baseline
git add tests/visual-baseline/
git commit -m "Add visual baseline"make validate-graphicsOutput:
- ✅ Pass:
Validazione completata - ❌ Fail: Report HTML in
screenshots/report/index.html
Apri report per vedere differenze:
xdg-open screenshots/report/index.htmlContenuto:
- Tabella tutti test (57 tests: 19 pagine × 3 viewports)
- Percentuale differenza pixel
- Status ✅/❌
- Link a diff images
- Filtri: All, Failures Only
make helpNuovi target:
validate-graphics- Validazione completavisual-baseline- Crea/aggiorna baselinevisual-clean- Pulisci screenshot temp
- Desktop: 1920×1080
- Tablet: 768×1024
- Mobile: 375×667
Critical (5):
/- Homepage/eventi/epppi/- Layout evento speciale/about/- About staff/software/- Indice software/blog/- Blog
Eventi (2):
/eventi/campo-eg//eventi/stage/
Software (10):
/software/libreoffice//software/gimp//software/qgis//software/mayalinux//software/vlc//software/wordpress//software/flora//software/code//software/prbm/
Altro (1):
/articles/
- Screenshot: Playwright (Chromium headless)
- Confronto: pixelmatch (pixel-by-pixel)
- Threshold: 1% pixel diversi
- Report: HTML + JSON
-
capture.js:- Avvia
make serve(porta 4000) - Screenshot 19 pagine × 3 viewports
- Avvia
make serve-static(porta 8000) - Screenshot 19 pagine × 3 viewports
- Avvia
-
compare.js:- Confronta screenshots vs baseline
- Genera diff images
- Calcola % differenze
- Genera report HTML
- Exit code 1 se fail
# 1. Sviluppi feature
git checkout -b feature/new-layout
# 2. Valida graficamente
make validate-graphics
# 3a. Se OK:
# ✅ Validazione completata
# Procedi con deploy
# 3b. Se differenze:
# ❌ Validazione fallita
# Apri report: xdg-open screenshots/report/index.html
# 4. Review diff images
# Se differenze accettabili (fix bug grafico):
make visual-baseline
git add tests/visual-baseline/
git commit -m "Update baseline after fix"
# Se differenze bug da fixare:
# Fix codice CSS/HTML
# Ripeti da step 2
# 5. Deploy
git pushEdit scripts/visual-regression/compare.js:
const THRESHOLD_PERCENT = 1; // Modifica quiEdit scripts/visual-regression/capture.js:
const pages = [
'/',
'/new-page/', // Aggiungi qui
// ...
];Edit scripts/visual-regression/capture.js:
const viewports = {
desktop: { width: 1920, height: 1080 },
custom: { width: 1440, height: 900 }, // Aggiungi qui
};Verifica installazione:
cd scripts/visual-regression
node -e "console.log(require('pixelmatch'), require('pngjs'), require('@playwright/test'))"Verifica target Makefile:
make help | grep visual-
Tempo totale: ~5-10 minuti
- Screenshot: 3-5 min (57 images × 2 server)
- Confronto: ~10 sec
- Report: ~5 sec
-
Spazio disco:
- Baseline: ~50 MB
- Screenshots temp: ~150 MB
- Report: ~1 MB
Dipendenze non installate:
cd scripts/visual-regression
npm installBaseline mancante:
make visual-baselineServer non parte:
# Verifica Docker attivo
docker ps
# Verifica porte libere
netstat -tuln | grep -E '4000|8000'Screenshot vuoti:
# Aumenta timeout in capture.js
await page.goto(fullUrl, {
waitUntil: 'networkidle',
timeout: 60000 // Aumenta da 30000
});-
Prima volta: Crea baseline
make visual-baseline git add tests/visual-baseline/ git commit -m "Add visual baseline" -
Prima di ogni release: Valida
make validate-graphics
-
Se cambia grafica intenzionalmente: Aggiorna baseline
make visual-baseline git add tests/visual-baseline/ git commit -m "Update baseline for new design"
- Playwright: https://playwright.dev/
- pixelmatch: https://github.com/mapbox/pixelmatch
- Makefile:
make help
Creato: 2026-04-21 Versione: 1.0.0 Stato: ✅ Pronto per uso