Tester un composant React avec Vitest et Testing Library

Collez un composant React et obtenez un plan de test, le fichier de tests avec requêtes par rôle, user-event et mocks réseau MSW, plus la configuration manquante. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 4 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Intermédiaire · Code · En attente de relecture éditoriale

Prompt

Agis comme un ingénieur qualité frontend expert de Testing Library et des tests qui vérifient le comportement, pas les détails d'implémentation.

Contexte :
- Code du composant : {{code_composant}}
- Comportement à couvrir : {{comportement}}
- Outils : {{outils}}
- Appels réseau : {{reseau}}

Si le composant dépend de contextes, de routes ou de providers absents du code, demande-moi comment ils sont montés avant d'écrire les tests.

Livrables :
1. Un plan de test en tableau : cas, type (rendu, interaction, erreur, accessibilité), priorité.
2. Le fichier de tests complet : requêtes par rôle et nom accessible d'abord (`getByRole`), `userEvent` plutôt que `fireEvent`, `findBy` pour l'asynchrone et assertions sur ce que voit l'utilisateur.
3. Des mocks réseau selon {{reseau}}, avec un cas de succès, un cas d'erreur et un cas de chargement lent si c'est pertinent.
4. Un helper `renderWithProviders` si des providers sont nécessaires.
5. La configuration minimale si elle manque : environnement jsdom ou happy-dom, fichier de setup avec les matchers jest-dom et scripts du package.json.
6. Les trous de couverture restants et pourquoi il ne vaut pas la peine de les couvrir en test unitaire (par exemple parce qu'ils relèvent d'un test end-to-end).

Contraintes :
- Pas de tests de snapshot sauf justification.
- N'accède ni à l'état interne, ni aux classes CSS, ni aux `data-testid` quand une requête accessible existe.
- Si l'écriture des tests révèle un bug ou un problème d'accessibilité dans le composant, signale-le à part ; ne le corrige pas en silence.
- N'invente ni props ni textes absents du code ; utilise [À COMPLÉTER] si quelque chose manque.

Format : plan, blocs de code avec nom de fichier et liste des commandes à lancer.

Comment l'utiliser

  1. Colle le composant complet et, s’il y en a, ses hooks ou services. 2. Décris simplement ce qu’il doit faire du point de vue de l’utilisateur. 3. Lance les tests et colle les erreurs éventuelles pour itérer.

Exemple d'utilisation

Composant : ResumePanier.tsx (liste de produits, changement de quantité, bouton de paiement) · Comportement : recalcule le total et affiche une erreur si le paiement échoue · Outils : Vitest + RTL · Réseau : MSW.

Exemple de résultat

Plan de test

CasTypePriorité
Changer la quantité recalcule le totalInteractionHaute
Payer est désactivé pendant le traitementInteractionHaute
Erreur visible si l'API échoueErreurHaute

ResumePanier.test.tsx

import { afterAll, afterEach, beforeAll, expect, it } from 'vitest';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { http, HttpResponse, delay } from 'msw';
import { setupServer } from 'msw/node';
import { ResumePanier } from './ResumePanier';

const server = setupServer(http.post('/api/paiement', () => HttpResponse.json({ ok: true }))); // [À COMPLÉTER : vrai endpoint]
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());

it('recalcule le total quand la quantité change', async () => {
  const user = userEvent.setup();
  render(<ResumePanier />);
  const quantite = screen.getByRole('spinbutton', { name: /quantité/i });
  await user.clear(quantite);
  await user.type(quantite, '3');
  expect(screen.getByText(/total/i)).toHaveTextContent('[À COMPLÉTER : total attendu]');
});

it('désactive Payer et affiche une erreur si l’API échoue', async () => {
  server.use(http.post('/api/paiement', async () => { await delay(100); return new HttpResponse(null, { status: 500 }); }));
  const user = userEvent.setup();
  render(<ResumePanier />);
  const payer = screen.getByRole('button', { name: /payer/i });
  await user.click(payer);
  expect(payer).toBeDisabled();
  expect(await screen.findByRole('alert')).toBeInTheDocument();
});

Les requêtes par rôle échoueront si le champ n'a pas de libellé accessible : dans ce cas, c'est un problème du composant, pas du test…

Informations clés

Catégorie
Programmation et développement · React
Type de résultat
Code
Niveau
Intermédiaire
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Code du composant, Comportement à couvrir, Outils et Appels réseau
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Pourquoi requêter par rôle plutôt que par data-testid ?

Parce que le test utilise alors la page comme un vrai utilisateur ou une technologie d’assistance. Si le test ne trouve pas un bouton par son rôle et son nom, un lecteur d’écran ne le trouvera probablement pas non plus.

Qu’est-ce que MSW et pourquoi l’utiliser ?

Mock Service Worker intercepte les requêtes réseau dans les tests. Il permet de tester le composant avec des réponses réalistes sans simuler fetch à la main dans chaque test.

À quoi sert ce prompt ?

Collez un composant React et obtenez un plan de test, le fichier de tests avec requêtes par rôle, user-event et mocks réseau MSW, plus la configuration manquante.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Code du composant, Comportement à couvrir, Outils et Appels réseau). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau intermédiaire : il vaut mieux connaître le sujet pour fournir un bon contexte et relire le résultat d'un œil critique.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires