Testing is in frontend-teams het vak dat iedereen belangrijk noemt en niemand in de sprint plant — tot de regressie op vrijdagmiddag komt. Het Testing Lab van NLCodeCraft Frontend Academy maakt testen tot een craft-gewoonte: wat u automatiseert, wat u met de hand blijft zien, en hoe u een test schrijft die niet breekt bij elke className. Mark van Leeuwen beoordeelt tests op intentie, niet op coverage-percentages die een dashboard groen kleuren.

Cursist bekijkt slaagde frontend-tests naast een React-component in de academy in Amsterdam
Testing Lab in Amsterdam: de test links, het component rechts, het gesprek over wat u bewust niet test.

Instroom: eigen componenten uit React of werk. Wie nog geen component heeft, test lucht. Wij gebruiken Testing Library-patronen en een end-to-end pad voor de kritieke flow. Jest, Vitest of Playwright zijn gereedschap; de les is de vraag “welk gedrag belooft dit scherm de gebruiker?”.

Piramide zonder dogma

Veel unit tests op pure logica. Minder tests op componenten, gericht op toegankelijke namen en zichtbare staten. Weinig end-to-end, op de flow die omzet of intake raakt. Snapshot-zeeën zonder intentie wijzen wij af. Een test die de implementatiedetails van CSS-modules vastlegt, is onderhoudsschuld.

Laag Voorbeeld Wanneer niet
Unit prijsformatter, schema-guard React-render van een icoon
Component fouttekst na submit, toetsenbord in dialog Elke Tailwind-class
E2E intake versturen, inloggen als dat in scope is Elke visuele pixel

Lab-modules testing

Queries die de gebruiker speelt

getByRole, getByLabelText. Test-id’s zijn ontsnapping, geen default.

Staten forceren

loading/error/success in de test setup. Alleen the happy path testen is theater.

Async zonder flaky

findBy, waitFor, geen slapende timeouts “voor de zekerheid”.

Eén kritieke reis

Van landingsintentie tot bevestiging. Die reis krijgt E2E; de rest niet.

Wij koppelen tests aan UI-patronen: een Button-variant zonder toetsenbordtest is incompleet. En aan Next.js wanneer u die module volgt: serverfouten moeten in de UI-test zichtbaar zijn, niet alleen in de netwerk-tab van de docent.

test("toont een toegankelijke fout na mislukte intake", async () => {
  render(<IntakeForm onSubmit={failingSubmit} />);
  await userEvent.click(screen.getByRole("button", { name: "Intake versturen" }));
  expect(await screen.findByRole("alert")).toHaveTextContent("Intake mislukt");
});

Huiswerk: tests bij uw bestaande component plus een korte lijst “bewust niet getest” met reden. Mark van Leeuwen is strenger op die lijst dan op het aantal its. Wie alles test, onderhoudt niets. Wie niets test, beweert craft zonder bewijs.

Veelgestelde vragen

Is 80% coverage een eis?

Nee. Wij eisen de kritieke staten en één E2E-reis. Coverage is een lamp, geen stuur.

Cypress of Playwright?

Playwright is de lesdefault. Wie Cypress op het werk heeft, mag vertalen.

Testen jullie visuele regressie?

Alleen als concept. Pixel-CI is een teamkeuze met kosten.

Wat als mijn werk-repo tests verbiedt in de les?

Dan werkt u in de academy-repo. Wij kopiëren geen interne productiecode.

Leslocatie en bereik in Amsterdam

NLCodeCraft geeft klassikale en hybride frontend-opleidingen vanaf de Wibautstraat, op de Knowledge Mile tussen Amstel en Weesperplein. Cursisten komen uit de onderstaande stadsdelen; avondgroepen starten na kantoortijd zodat u vanuit Zuid, Noord of Oud-West kunt aansluiten zonder een extra reisdag in te plannen.

  • Centrum
  • De Pijp
  • Oud-West
  • Oost
  • Watergraafsmeer
  • Amsterdam-Noord
  • Zuid
  • Westerpark

NLCodeCraft Frontend Academy

Uw aanspreekpunt: Mark van Leeuwen

Wibautstraat 131
1091 GL Amsterdam

Telefoon: +31 20 244 3188

E-mail: [email protected]

OpenStreetMap: Wibautstraat 131, 1091 GL Amsterdam

Testing Lab inplannen