Tests unitaires CSS avec Jest
Testez les sorties CSS-in-JS et les composants stylisés avec des instantanés à l’aide de Jest et de comparateurs associés.
Tests unitaires CSS avec Jest est une leçon CSS Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CSS Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CSS Academy comprend 4 leçons au total.
Pourquoi tester le CSS avec Jest ?
Les tests unitaires du CSS vérifient les styles calculés, l'application des classes et le comportement de la mise en page de manière programmatique. Ils détectent les régressions de logique CSS (classe incorrecte appliquée, modificateur manquant) sans nécessiter de capture d'écran dans un navigateur ni d'inspection visuelle manuelle.
JSDOM et prise en charge du CSS
Jest utilise JSDOM par défaut, qui offre une prise en charge limitée du CSS : il ne calcule pas la mise en page et n'évalue pas les sélecteurs complexes. Pour vérifier la présence de classes et les styles intégrés, JSDOM suffit ; pour tester les propriétés calculées, utilisez jest-environment-jsdom avec des simulations de modules CSS.
Tester l'application des classes
Affichez un composant et vérifiez que les bonnes classes CSS sont appliquées en fonction des propriétés reçues ou de l'état. Cela vérifie que la logique conditionnelle des classes (active, désactivée, variante d'erreur) fonctionne correctement sans vérifier des valeurs de style précises.
<button class="btn-primary">Primary Button</button>
Modules CSS dans les tests
Jest transforme les importations de modules CSS à l'aide de identity-obj-proxy. Ce proxy renvoie la chaîne correspondant au nom de classe pour toute propriété consultée : styles.primary renvoie "primary". Les tests vérifient les noms de classes sans avoir besoin d'appliquer le véritable CSS.
jest-styled-components
Pour les projets Styled Components, jest-styled-components ajoute un comparateur toHaveStyleRule. Vérifiez qu'un composant stylisé applique les bonnes valeurs de propriétés CSS en fonction des propriétés reçues, sans nécessiter de véritable navigateur pour calculer les styles.
<button class="btn">Enabled</button>
<button class="btn" disabled>Disabled (0.5 opacity)</button>
@testing-library/jest-dom
jest-dom enrichit Jest de méthodes d'assertion propres au DOM : toHaveStyle (vérifie le style intégré ou calculé), toHaveClass (vérifie la liste des classes), toBeVisible (vérifie l'affichage, la visibilité ou l'opacité). Ces méthodes rendent les assertions CSS lisibles et explicites.
Tests par captures des noms de classes
Les captures de composants enregistrent le balisage généré, y compris les noms de classes. Les renommages de modules CSS ou les changements de logique conditionnelle des classes apparaissent dans les différences entre captures. Cette méthode est utile pour repérer rapidement les changements de classes involontaires, mais elle exige une discipline rigoureuse lors de la revue des captures.
Limites des tests CSS avec Jest
Jest ne peut pas calculer la mise en page (offsetWidth, getBoundingClientRect), évaluer les requêtes média ni exécuter les animations CSS. Ces opérations nécessitent un véritable environnement de navigateur via Playwright ou Cypress. Les tests CSS de Jest sont complémentaires aux tests dans un navigateur, et non un remplacement de ceux-ci.
Tester les propriétés personnalisées CSS
Définissez des propriétés personnalisées CSS sur un élément conteneur dans les tests : element.style.setProperty("--color-primary", "red"). Lisez les valeurs calculées avec getComputedStyle(el).getPropertyValue("--color-primary"). JSDOM prend en charge la lecture des propriétés personnalisées, mais pas leur mise en cascade.
Tester les classes d'animation
Vérifiez que les classes qui déclenchent l'animation sont ajoutées ou supprimées au bon moment : vérifiez qu'un composant de fenêtre modale ajoute la classe animate-enter à l'ouverture et la classe animate-exit avant son démontage. Le CSS de l'animation lui-même est testé avec VRT.
Couverture de la logique CSS
La logique CSS se trouve dans JS : chaînes de classes conditionnelles, valeurs du fournisseur de thème et génération d'objets de style. La couverture de Jest (Istanbul) couvre cette logique CSS en JavaScript. Écrivez des tests couvrant toutes les branches afin de vérifier chaque combinaison de variante et d'état.
Vérification des connaissances
Que fait identity-obj-proxy lorsqu'il est utilisé avec des modules CSS dans Jest ?
Résumé
Les tests unitaires du CSS avec Jest vérifient la logique d'application des classes, les styles conditionnels et le comportement des modules CSS sans véritable navigateur. Utilisez identity-obj-proxy pour les modules CSS, jest-styled-components pour Styled Components et les méthodes d'assertion de jest-dom pour obtenir des vérifications lisibles. Combinez-les avec VRT pour une couverture complète de la qualité CSS.
Questions Fréquemment Posées
La leçon « Tests unitaires CSS avec Jest » est-elle gratuite ?
Oui — le texte complet de « Tests unitaires CSS avec Jest » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CSS Academy, passe à CoddyKit PRO. Le cours CSS Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Tests unitaires CSS avec Jest » ?
Testez les sorties CSS-in-JS et les composants stylisés avec des instantanés à l’aide de Jest et de comparateurs associés. Tu pratiques CSS Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer CSS Academy ?
Aucune expérience préalable n'est requise. CSS Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Tests unitaires CSS avec Jest » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon CSS Academy ?
Oui. Chaque leçon CSS Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Notions de test de régression visuelle
- Percy et Chromatic pour Storybook
- Tests unitaires CSS avec Jest
- Tests d’accessibilité : color-contrast et focus