Testare un componente React con Vitest e Testing Library
Incolla un componente React e ottieni un piano di test, il file di test con query per ruolo, user-event e mock di rete con MSW, più la configurazione mancante. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.
Intermedio · Codice · In attesa di revisione editoriale
Prompt
Agisci come ingegnere della qualità frontend esperto di Testing Library e di test che verificano il comportamento, non i dettagli di implementazione.
Contesto:
- Codice del componente: {{codice_componente}}
- Comportamento da coprire: {{comportamento}}
- Strumenti: {{strumenti}}
- Chiamate di rete: {{rete}}
Se il componente dipende da context, rotte o provider che non compaiono nel codice, chiedimi come vengono montati prima di scrivere i test.
Consegna:
1. Un piano di test in tabella: caso, tipo (rendering, interazione, errore, accessibilità), priorità.
2. Il file di test completo: prima le query per ruolo e nome accessibile (`getByRole`), `userEvent` invece di `fireEvent`, `findBy` per l'asincrono e asserzioni su ciò che vede l'utente.
3. Mock di rete secondo {{rete}}, con un caso di successo, uno di errore e uno di caricamento lento se pertinente.
4. Un helper `renderWithProviders` se servono provider.
5. La configurazione minima se manca: ambiente jsdom o happy-dom, file di setup con i matcher di jest-dom e gli script del package.json.
6. Le lacune di copertura rimaste e perché non conviene coprirle con test unitari (per esempio perché spettano a un test end-to-end).
Vincoli:
- Niente test di snapshot se non motivati.
- Non accedere a stato interno, classi CSS o `data-testid` se esiste una query accessibile.
- Se scrivendo i test scopri un bug o un problema di accessibilità nel componente, segnalamelo a parte; non correggerlo in silenzio.
- Non inventare props o testi assenti dal codice; usa [DA COMPLETARE] se manca qualcosa.
Formato: piano, blocchi di codice con nome del file ed elenco dei comandi da eseguire.Come usarlo
- Incolla il componente completo e, se ci sono, i suoi hook o servizi. 2. Descrivi con parole semplici cosa deve fare dal punto di vista dell’utente. 3. Esegui i test e incolla eventuali errori per iterare.
Esempio d'uso
Componente: RiepilogoCarrello.tsx (elenco prodotti, cambio quantità, pulsante di pagamento) · Comportamento: ricalcola il totale e mostra un errore se il pagamento fallisce · Strumenti: Vitest + RTL · Rete: MSW.
Esempio di risultato
Piano dei test
| Caso | Tipo | Priorità |
|---|---|---|
| Cambiare la quantità ricalcola il totale | Interazione | Alta |
| Paga è disabilitato durante l'elaborazione | Interazione | Alta |
| Errore visibile se l'API fallisce | Errore | Alta |
RiepilogoCarrello.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 { RiepilogoCarrello } from './RiepilogoCarrello';
const server = setupServer(http.post('/api/pagamento', () => HttpResponse.json({ ok: true }))); // [DA COMPLETARE: endpoint reale]
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
it('ricalcola il totale quando cambia la quantità', async () => {
const user = userEvent.setup();
render(<RiepilogoCarrello />);
const quantita = screen.getByRole('spinbutton', { name: /quantità/i });
await user.clear(quantita);
await user.type(quantita, '3');
expect(screen.getByText(/totale/i)).toHaveTextContent('[DA COMPLETARE: totale atteso]');
});
it('disabilita Paga e mostra un errore se l’API fallisce', async () => {
server.use(http.post('/api/pagamento', async () => { await delay(100); return new HttpResponse(null, { status: 500 }); }));
const user = userEvent.setup();
render(<RiepilogoCarrello />);
const paga = screen.getByRole('button', { name: /paga/i });
await user.click(paga);
expect(paga).toBeDisabled();
expect(await screen.findByRole('alert')).toBeInTheDocument();
});
Le query per ruolo falliranno se il campo non ha un'etichetta accessibile: in quel caso il problema è del componente, non del test…
Dati chiave
- Categoria
- Programmazione e sviluppo · React
- Tipo di output
- Codice
- Livello
- Intermedio
- Pensato per
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificato in
- In attesa di verifica editoriale
- Variabili
- Codice del componente, Comportamento da coprire, Strumenti e Chiamate di rete
- Lingua
- Italiano
- Prezzo
- Gratuito, senza registrazione
- Aggiornato
- 07/11/2026
Domande frequenti
Perché cercare per ruolo invece che per data-testid?
Perché così il test usa la pagina come un utente reale o una tecnologia assistiva. Se il test non trova un pulsante per ruolo e nome, probabilmente non lo troverà nemmeno uno screen reader.
Cos’è MSW e perché usarlo?
Mock Service Worker intercetta le richieste di rete nei test. Ti permette di provare il componente con risposte realistiche senza simulare fetch a mano in ogni test.
A cosa serve questo prompt?
Incolla un componente React e ottieni un piano di test, il file di test con query per ruolo, user-event e mock di rete con MSW, più la configurazione mancante.
Con quali strumenti di IA funziona?
È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.
Come personalizzo il prompt?
Clicca su «Personalizza» e compila le variabili (Codice del componente, Comportamento da coprire, Strumenti e Chiamate di rete). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.
Serve esperienza per usarlo?
È di livello intermedio: conviene conoscere l'argomento per fornire un buon contesto e valutare il risultato con occhio critico.
Questo prompt è gratuito?
Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.
Posso fidarmi dell'output dell'IA?
Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.