🧪 Test Matrix — 3D Curve Weaving System

🧪 Test Matrix — 3D Curve Weaving System

Visual Regression Test Checklist

Usa questa checklist per verificare che tutti gli effetti 3D siano visibili e corretti.


1. LAYER STACK VERIFICATION

Test: Contare i layer SVG

document.querySelectorAll('.mp-hero-curve').length

Expected: 4
Status: [ ]


Test: Verificare z-index progression

Array.from(document.querySelectorAll('.mp-hero-curve')).map(el => 
  getComputedStyle(el).zIndex
)

Expected: ["0", "2", "4", "6"]
Status: [ ]


2. STROKE WIDTH GRADATION

Test: Misurare stroke width di ogni layer

Array.from(document.querySelectorAll('.mp-hero-curve__body')).map(el => 
  getComputedStyle(el).strokeWidth
)

Expected: ["16px", "20px", "17px", "22px"] (o simile)
Status: [ ]


Test visivo: Layer frontali devono apparire più spessi

  • L3 (davanti INTELLIGENCE) è il PIÙ SPESSO
  • L1 (davanti VISION dx) è più spesso di L0
  • L0 (dietro VISION sx) è il PIÙ SOTTILE

3. OPACITY HIERARCHY

Test: Verificare trasparenza crescente dal fondo al top

Array.from(document.querySelectorAll('.mp-hero-curve__body')).map(el => 
  getComputedStyle(el).opacity
)

Expected: L0 < L2 < L1 < L3 (es. ["0.72", "0.8", "0.92", "0.95"])
Status: [ ]


Test visivo: Opacità percepita

  • L0 (dietro VISION) appare SBIADITO
  • L3 (davanti INTELLIGENCE) appare SOLIDO e definito

4. COLOR SATURATION

Test visivo: Saturazione colore

  • L0 (dietro): colori MENO SATURI (grigiasti)
  • L3 (davanti): colori PIÙ SATURI (vividi, brillanti)
  • Transizione graduale da L0 → L3

5. DROP SHADOW (Profondità)

Test visivo: Ombre portate

  • L0: ombra MINIMA o assente
  • L1: ombra VISIBILE sotto la curva
  • L3: ombra FORTE e NETTA (più grande offset)

Test: Misurare blur shadow

Ispeziona DevTools → Computed → filter → drop-shadow

  • L0: blur ≈ 3-4px
  • L1: blur ≈ 8-12px
  • L3: blur ≈ 14-16px

6. CLIPPING ZONES

Test: Layer L0 visibile SOLO in top-left

getComputedStyle(document.querySelector('.mp-hero-curve--l0')).clipPath

Expected: inset(0px 50% 54% 0px) o simile
Visual: Curva visibile solo nella metà SINISTRA del testo VISION
Status: [ ]


Test: Layer L1 visibile SOLO in top-right

getComputedStyle(document.querySelector('.mp-hero-curve--l1')).clipPath

Expected: inset(0px 0px 54% 50%)
Visual: Curva visibile solo nella metà DESTRA del testo VISION
Status: [ ]


Test: Layer L2 visibile dal 42% in giù

getComputedStyle(document.querySelector('.mp-hero-curve--l2')).clipPath

Expected: inset(42% 0px 0px 26%)
Visual: Curva attorno alla foto e “Into”
Status: [ ]


Test: Layer L3 visibile solo nel bottom 28%

getComputedStyle(document.querySelector('.mp-hero-curve--l3')).clipPath

Expected: inset(72% 0px 0px 0px)
Visual: Curva sopra INTELLIGENCE
Status: [ ]


7. GRADIENT COLORS

Test: Verificare che i gradienti siano applicati

Ispeziona DevTools → Elements → <path class="mp-hero-curve__body">

  • L0: stroke="url(#curveGradientL0)"
  • L1: stroke="url(#curveGradientL1)"
  • L2: stroke="url(#curveGradientL2)"
  • L3: stroke="url(#curveGradientL3)"

Test visivo: Progressione colore Light Mode

  • L0: toni INDACO/BLU scuro (#1a1b6e)
  • L1: toni VIOLA (#6d28d9)
  • L2: toni FUCHSIA (#c026d3)
  • L3: toni ROSA NEON (#f43f82)

Test visivo: Progressione colore Dark Mode

Toggle dark mode (se disponibile)

  • L0: verde scuro (#003d22)
  • L1: verde medio (#00994d)
  • L2: verde brillante (#00ff88)
  • L3: acquamarina (#7fffd4)

8. BREATHING ANIMATION

Test: Animazione attiva su L1 e L3

Osserva per 10 secondi:

  • L1 (davanti VISION) pulsa LENTAMENTE (≈6s cycle)
  • L3 (davanti INTELLIGENCE) pulsa LENTAMENTE (≈5s cycle)
  • L0 e L2 NON pulsano (statici)

Test: Verifica keyframes esistono

document.styleSheets[0].cssRules[0].name

Cerca: mp-curve-breathe
Status: [ ]


9. DRAW-ON ANIMATION (Spine)

Test: Spine si disegna al caricamento pagina

Ricarica la pagina (F5) e osserva:

  • Il filo sottile SOPRA la curva si “disegna” da sinistra a destra
  • Durata ≈ 2-3 secondi
  • Inizia DOPO un piccolo delay (≈0.4s)

Test: Verifica stroke-dasharray applicato

getComputedStyle(document.querySelector('.mp-hero-curve__spine')).strokeDasharray

Expected: Numero grande (es. 3200)
Status: [ ]


10. HOVER INTERACTIONS

Test: Hover sull’hero → depth exaggeration

Passa il mouse sull’area .mp-cinema-hero:

  • L1 e L3 si ESPANDONO (stroke più spesso)
  • L0 si RESTRINGE (stroke più sottile)
  • Transizione SMOOTH (≈0.4-0.6s)

Test: Misurare stroke dopo hover

Con mouse OVER l’hero:

getComputedStyle(document.querySelector('.mp-hero-curve--l1 .mp-hero-curve__body')).strokeWidth

Expected: 22px (più grande del default 20px)
Status: [ ]


11. PARALLAX MOVEMENT (opzionale, se JS attivo)

Test: Mouse tracking

Muovi il mouse lentamente sopra l’hero:

  • Layer L3 (z:6) si muove DI PIÙ
  • Layer L0 (z:0) si muove DI MENO o per niente
  • Effetto “3D scene” (layers a profondità diverse)

Test: Verifica transform applicato

Con mouse in movimento:

getComputedStyle(document.querySelector('.mp-hero-curve--l3')).transform

Expected: matrix(1, 0, 0, 1, X, Y) dove X,Y ≠ 0
Status: [ ]


12. DARK MODE INVERSION

Test: Toggle dark mode

Attiva dark mode e verifica:

  • Colori gradiente CAMBIANO (indaco → verde)
  • Layer L0 diventa PIÙ CHIARO (inversione logica)
  • Contrasto generale rimane LEGGIBILE

Test: Verifica CSS variables

getComputedStyle(document.documentElement).getPropertyValue('--mp-curve-c2')

Light mode: #c026d3 (fuchsia)
Dark mode: #00ff88 (verde)
Status: [ ]


13. RESPONSIVE BEHAVIOR

Test: Mobile viewport (< 768px)

Ridimensiona finestra a 375px width:

  • Curve si ADATTANO (no overflow orizzontale)
  • Clipping rimane CORRETTO
  • Stroke width si RIDUCE proporzionalmente (opzionale)

Test: No horizontal scroll

document.body.scrollWidth <= window.innerWidth

Expected: true
Status: [ ]


14. PERFORMANCE

Test: Frame rate durante hover

Apri DevTools → Performance → Registra 3 secondi con hover:

  • FPS ≥ 55 (smooth)
  • No layout thrashing
  • GPU acceleration attiva (check Layer panel)

Test: Verifica hardware acceleration

getComputedStyle(document.querySelector('.mp-hero-curve--l1')).willChange

Expected: transform o auto
Status: [ ]


15. ACCESSIBILITY

Test: Screen reader ignora decorazioni

document.querySelector('.mp-hero-curve').getAttribute('aria-hidden')

Expected: "true"
Status: [ ]


Test: Focus non trappolato nelle curve SVG

Tab attraverso la pagina:

  • Focus NON si ferma sugli elementi .mp-hero-curve
  • Focus va direttamente dai link/button reali

16. BROWSER COMPATIBILITY

Test: Safari

  • Gradienti SVG rendering corretto
  • Drop shadows visibili
  • Clipping funziona

Test: Firefox

  • Background-clip: text funziona (VISION gradient)
  • Filter stack (drop-shadow + brightness) OK
  • No glitch visivi

Test: Chrome/Edge

  • Tutto funziona (baseline)

17. CONSOLE ERRORS

Test: No JS errors

Apri DevTools → Console:

  • Nessun errore rosso
  • Se JS caricato, messaggio: [3D Curve] System initialized ✓

18. DEBUG MODE (se JS attivo)

Test: Attiva debug mode

CONFIG.debugMode = true;
// poi ricarica o chiama init()

Verifica:

  • Overlay rossi appaiono sulle zone OCCLUSE
  • Confini delle clip-path sono visibili
  • Log dettagliati in console

FINAL CHECKLIST

  • Tutti i 4 layer sono visibili nelle zone corrette
  • Profondità percepita è CHIARA (front vs back)
  • Hover accentua la profondità
  • Animazioni sono smooth (no jank)
  • Colori sono corretti in light/dark mode
  • Responsive funziona senza overflow
  • No errori console
  • Performance accettabile (>55 FPS)

SCORING

Totale test passati: __ / 50+

  • 45-50: 🏆 Eccellente — Production ready
  • 35-44: ✅ Buono — Minor tweaks needed
  • 25-34: ⚠️ Sufficiente — Richiede fix
  • < 25: ❌ Critico — Debug necessario

Tester: _____
**Date**: __
_____
**Browser**: __
_____
**Viewport**: __
_______
Notes:

[Spazio per note aggiuntive o bug trovati]







Last Updated: 2026-04-18
Version: 2.0 — QA Test Matrix