Unit testing CSS con Jest
Testi gli output CSS-in-JS e i componenti styled tramite snapshot utilizzando Jest e matcher correlati.
Unit testing CSS con Jest è una lezione CSS Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CSS Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CSS Academy include 4 lezioni in totale.
Perché testare il CSS con Jest?
I test unitari del CSS verificano programmaticamente gli stili calcolati, l'applicazione delle classi e il comportamento del layout. Rilevano le regressioni nella logica CSS, come l'applicazione della classe errata o la mancanza di un modificatore, senza richiedere uno screenshot del browser o un'ispezione visiva manuale.
JSDOM e supporto CSS
Jest utilizza JSDOM per impostazione predefinita, che offre un supporto CSS limitato: non calcola il layout né valuta selettori complessi. Per i test di base sulla presenza delle classi e sugli stili inline JSDOM è sufficiente; per testare le proprietà calcolate, utilizzi jest-environment-jsdom con mock dei CSS Module.
Test dell'applicazione delle classi
Esegua il rendering di un componente e verifichi che vengano applicate le classi CSS corrette in base alle props o allo stato. In questo modo verifica che la logica delle classi condizionali, come active, disabled e la variante error, funzioni correttamente senza verificare valori di stile specifici.
<button class="btn-primary">Primary Button</button>
CSS Modules nei test
Jest trasforma gli import dei CSS Module utilizzando identity-obj-proxy. Questo proxy restituisce la stringa del nome della classe per qualsiasi proprietà a cui si accede: styles.primary restituisce "primary". I test verificano i nomi delle classi senza dover applicare CSS reali.
jest-styled-components
Per i progetti Styled Components, jest-styled-components aggiunge il matcher toHaveStyleRule. Verifichi che un componente stilizzato applichi i valori corretti delle proprietà CSS in base alle props, senza richiedere un browser reale per calcolare gli stili.
<button class="btn">Enabled</button>
<button class="btn" disabled>Disabled (0.5 opacity)</button>
@testing-library/jest-dom
jest-dom estende Jest con matcher specifici per il DOM: toHaveStyle (verifica lo stile inline o calcolato), toHaveClass (verifica l'elenco delle classi), toBeVisible (verifica display, visibility e opacity). Questi matcher rendono le asserzioni CSS leggibili ed espressive.
Test degli snapshot per i nomi delle classi
Gli snapshot dei componenti acquisiscono il markup sottoposto a rendering, inclusi i nomi delle classi. Le rinominazioni dei CSS Module o le modifiche alla logica delle classi condizionali compaiono come differenze negli snapshot. È utile per rilevare rapidamente modifiche indesiderate alle classi, ma richiede una revisione accurata e disciplinata degli snapshot.
Limiti dei test CSS con Jest
Jest non può calcolare il layout, ad esempio offsetWidth e getBoundingClientRect, valutare le media query o eseguire animazioni CSS. Per queste operazioni è necessario un ambiente browser reale tramite Playwright o Cypress. I test CSS con Jest sono complementari ai test basati sul browser, non un loro sostituto.
Test delle proprietà personalizzate CSS
Imposti le proprietà personalizzate CSS su un elemento contenitore nei test: element.style.setProperty("--color-primary", "red"). Legga i valori calcolati con getComputedStyle(el).getPropertyValue("--color-primary"). JSDOM supporta la lettura delle proprietà personalizzate, ma non la cascata.
Test delle classi di animazione
Verifichi che le classi che attivano le animazioni vengano aggiunte o rimosse nei momenti corretti: testi che un componente modale aggiunga la classe animate-enter all'apertura e la classe animate-exit prima di essere smontato. Il CSS dell'animazione viene testato tramite VRT.
Copertura della logica CSS
La logica CSS risiede in JavaScript: stringhe di classi condizionali, valori del theme provider e generazione di oggetti di stile. La copertura di Jest (Istanbul) copre questa logica CSS in JavaScript. Scriva test per coprire tutti i rami, assicurandosi che ogni combinazione di variante e stato venga verificata.
Verifica delle conoscenze
Che cosa fa identity-obj-proxy quando viene utilizzato con i CSS Module in Jest?
Riepilogo
I test unitari CSS con Jest verificano la logica di applicazione delle classi, gli stili condizionali e il comportamento dei CSS Module senza un browser reale. Utilizzi identity-obj-proxy per i CSS Module, jest-styled-components per Styled Components e i matcher di jest-dom per asserzioni leggibili. Li combini con il VRT per una copertura completa della qualità CSS.
Domande Frequenti
La lezione «Unit testing CSS con Jest» è gratuita?
Sì — il testo completo di «Unit testing CSS con Jest» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CSS Academy, passa a CoddyKit PRO. Il corso CSS Academy include 4 lezioni in totale.
Cosa imparerò in «Unit testing CSS con Jest»?
Testi gli output CSS-in-JS e i componenti styled tramite snapshot utilizzando Jest e matcher correlati. Eserciti CSS Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CSS Academy?
Non è richiesta alcuna esperienza precedente. CSS Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Unit testing CSS con Jest»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CSS Academy?
Sì. Ogni lezione CSS Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Concetti di test di regressione visiva
- Percy e Chromatic per Storybook
- Unit testing CSS con Jest
- Test di accessibilità: color-contrast e focus