tRPC API's met typeveiligheid van begin tot eind · Les

Strategieën voor end-to-endtests

Implementeer end-to-endtests om gebruikersflows te simuleren en te controleren of de volledige tRPC-applicatie werkt zoals verwacht.

Les 3 van 411 stappen

Strategieën voor end-to-endtests is een gratis tRPC API's met typeveiligheid van begin tot eind-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject tRPC API's met typeveiligheid van begin tot eind. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus tRPC API's met typeveiligheid van begin tot eind bevat in totaal 4 lessen.

Test je app zoals een echte gebruiker

Welkom bij end-to-endtests (E2E-tests)! Deze strategie simuleert hoe een echte gebruiker van begin tot eind met je applicatie werkt. De volledige stack komt aan bod: je frontend, backend, database en netwerk.

E2E-tests zorgen ervoor dat alle onderdelen naadloos samenwerken, precies zoals in een liveomgeving. Zie het als een robotgebruiker die op je app klikt, erin typt en het gedrag ervan controleert.

Voorbij typesafety: validatie van de volledige stack

Hoewel tRPC uitstekende end-to-end-typesafety biedt, hebben E2E-tests een ander, cruciaal doel. Typesafety helpt bugs tijdens het compileren te voorkomen, maar E2E-tests ontdekken problemen die tijdens runtime kunnen ontstaan.

Daarbij gaat het onder andere om implementatieproblemen, configuratiefouten, netwerkproblemen en integratiebugs die statische analyse eenvoudigweg niet kan detecteren. E2E-testen valideert de daadwerkelijke gebruikerservaring in je volledige tRPC-aangedreven applicatie.

Je E2E-tool kiezen

Om E2E-tests te schrijven heb je een testframework nodig. Populaire keuzes zijn Playwright en Cypress. Met beide kun je browserinteracties automatiseren en de status van je applicatie controleren.

  • Playwright: staat bekend om ondersteuning voor meerdere browsers (Chromium, Firefox, WebKit), sterke parallellisatie en betrouwbare mogelijkheden om automatisch te wachten.
  • Cypress: biedt een uitstekende ontwikkelervaring met realtime herladen en krachtige hulpprogramma's voor foutopsporing, rechtstreeks in de browser.

In onze voorbeelden richten we ons vanwege de veelzijdigheid op Playwright.

Aan de slag met Playwright

Playwright instellen is eenvoudig. Je initialiseert het doorgaans in je project en Playwright handelt de installatie van browsers af. Vervolgens maakt het een configuratiebestand en een voorbeeldtest aan.

Open om te beginnen je terminal in de hoofdmap van je project en voer het volgende uit:

npm init playwright@latest
# Follow prompts: choose TypeScript, add a test file

Met deze opdracht installeer je Playwright en de binaire bestanden van de browsers en stel je het bestand playwright.config.ts in voor je testinstellingen.

Gebruikersgedrag nabootsen

Met Playwright kun je gebruikersacties simuleren, zoals op knoppen klikken, tekst in velden typen en door pagina's navigeren. Je gebruikt 'locators' om elementen op de pagina te vinden.

Hier zie je een fragment dat laat zien hoe je naar een pagina navigeert en een inlogformulier invult:

// tests/login.spec.ts
import { test, expect } from '@playwright/test';

test('should navigate to login and fill form', async ({ page }) => {
  await page.goto('http://localhost:3000/login');
  await page.locator('input[type="email"]').fill('test@example.com');
  await page.locator('input[type="password"]').fill('password123');
  await page.locator('button', { hasText: 'Login' }).click();
  // Further assertions would go here
});

tRPC testen via de frontend

Het is belangrijk om te onthouden dat E2E-tests de procedures van je tRPC-backend niet rechtstreeks aanroepen. In plaats daarvan werken ze met de gebruikersinterface (UI) van je frontend.

Wanneer je UI een tRPC-query of -mutatie activeert (bijvoorbeeld bij het verzenden van een formulier), observeert de E2E-test de resulterende wijzigingen op de pagina. Je controleert of de UI correct wordt bijgewerkt, wat aangeeft dat de onderliggende tRPC-aanroep en backendlogica naar verwachting hebben gewerkt.

Voorbeeld: end-to-end een bericht maken

Laten we een voorbeeld doorlopen: het testen van het maken van een nieuw bericht in je applicatie. De E2E-test simuleert hoe een gebruiker naar de pagina voor het maken van een bericht navigeert, een formulier invult, het verzendt en vervolgens controleert of het nieuwe bericht in een lijst verschijnt.

// tests/post-creation.spec.ts
import { test, expect } from '@playwright/test';

test('should allow a user to create a new post', async ({ page }) => {
  await page.goto('http://localhost:3000/posts/new');
  await page.locator('input[placeholder="Title"]').fill('My New E2E Post');
  await page.locator('textarea[placeholder="Content"]').fill('This is content from an E2E test.');
  await page.locator('button', { hasText: 'Create Post' }).click();

  // Assert redirection and new post visibility
  await expect(page).toHaveURL(/posts$/); // Should redirect to /posts
  await expect(page.locator('h2', { hasText: 'My New E2E Post' })).toBeVisible();
});

Testgegevens beheren voor E2E-tests

Voor betrouwbare E2E-tests heb je een voorspelbare beginstatus nodig. Dat betekent dat je je testgegevens zorgvuldig moet beheren. Vaak moet je je database vullen met specifieke gegevens voordat een test wordt uitgevoerd en die gegevens daarna weer opruimen.

Mogelijke strategieën zijn: vóór elke test speciale API-eindpunten aanroepen (bijvoorbeeld /api/test/reset-db) of rechtstreeks werken met een testdatabase-instantie. Zo begint elke test met een schone lei en staat deze los van andere tests.

Controles en strategieën voor wachten

Na het uitvoeren van acties gebruiken E2E-tests controles om te verifiëren of de applicatie de verwachte status heeft. Playwright biedt krachtige methoden voor controles, met automatisch wachten.

Deze functie voor 'automatisch wachten' is cruciaal bij het testen van asynchrone UI-updates. Zo weet je zeker dat elementen zichtbaar zijn of actie kunnen uitvoeren voordat een controle of actie wordt gestart.

// Example assertions after actions
await expect(page.locator('.success-message')).toBeVisible();
await expect(page.locator('#item-count')).toHaveText('10');
await expect(page).toHaveURL(/dashboard/); // Checks the current URL
await expect(page.locator('button', { hasText: 'Delete' })).toBeDisabled();

Korte controle: focus op E2E

End-to-endtests zijn cruciaal om de volledige doorstroming van je tRPC-applicatie te verifiëren. Welke van de volgende opties beschrijft het hoofddoel van een E2E-test het best?

E2E: het volledige verhaal van je applicatie

We hebben end-to-endtesten onderzocht en gekeken naar hun rol bij het valideren van de volledige gebruikersreis in tRPC-applicaties. Door echte gebruikersinteracties te simuleren met tools zoals Playwright, kun je ervoor zorgen dat je frontend en backend naadloos communiceren en de verwachte ervaring bieden.

E2E-tests vormen je laatste verdedigingslinie: ze ontdekken integratieproblemen en zorgen ervoor dat je applicatie vanuit het perspectief van de gebruiker werkt zoals bedoeld. Blijf deze strategieën oefenen om robuuste en betrouwbare tRPC-apps te bouwen!

Gratis beginnen

Leer tRPC API's met typeveiligheid van begin tot eind met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
10
Lessen
40

Veelgestelde vragen

Is de les “Strategieën voor end-to-endtests” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad tRPC API's met typeveiligheid van begin tot eind, waaronder “Strategieën voor end-to-endtests”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus tRPC API's met typeveiligheid van begin tot eind bevat in totaal 4 lessen.

Wat leer ik in “Strategieën voor end-to-endtests”?

Implementeer end-to-endtests om gebruikersflows te simuleren en te controleren of de volledige tRPC-applicatie werkt zoals verwacht. Je oefent met tRPC API's met typeveiligheid van begin tot eind door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met tRPC API's met typeveiligheid van begin tot eind te beginnen?

Ervaring vooraf is niet nodig. tRPC API's met typeveiligheid van begin tot eind op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Strategieën voor end-to-endtests”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over tRPC API's met typeveiligheid van begin tot eind?

Ja. Elke les over tRPC API's met typeveiligheid van begin tot eind bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. tRPC-procedures unittesten
  2. tRPC-routers integratietesten
  3. Strategieën voor end-to-endtests
  4. Context en dependencies mocken in tRPC-tests
← Terug naar tRPC API's met typeveiligheid van begin tot eind