Kliv
    Ingebouwde testing

    Je app komt met bewijs

    Kliv schrijft echte tests voor de apps die het bouwt — en draait ze in een echte browser, tegen een wegwerpbare kopie van je database, met een bon voor elk neveneffect. Dezelfde loop die je app schrijft, schrijft de tests en stuurt ze naar groen.

    Prijzen

    Ingebouwde testing

    Geen gegenereerde code en duimen draaien

    De meeste AI-builders genereren een app en dragen die over — of hij echt werkt is jouw probleem. Kliv beheert de hele stack waarop de app draait: de browser, de API, de beveiligingsregels, de database, de e-mailpijplijn. Daardoor wordt bewijs mogelijk. Tests zijn niet iets wat je later toevoegt; ze zijn onderdeel van hoe de app wordt gebouwd, gedraaid door dezelfde loop die de code schreef.

    De anatomie van een run

    De beste manier om het testsysteem te begrijpen is één run te volgen van de eerste regel tot het oordeel. Dit gebeurt er — en dit raakt je echte data nooit.

    01

    Schrijven

    De AI schrijft unit tests terwijl hij bouwt — echte Vitest en Testing Library, de industriestandaard stack, geen eigen imitatie. Vraag om een flow te dekken en hij schrijft een Scenario: navigeren, klikken, invullen, assert, in semantische termen — de knop op naam, het veld op label — geen broos CSS-pad dat bij het volgende redesign breekt.

    02

    Draaien in een echte browser

    Tests draaien in een echte browser tegen je daadwerkelijke app — echte rendering, echt inloggen, echte beveiliging op rijniveau. Niets wordt gemockt dat ertoe doet: als een permissiewijziging één gebruiker data van een ander laat lezen, faalt een test zoals je app zou falen.

    03

    De database forken

    Voordat een Scenario data raakt, krijgt het een wegwerpbare fork van je database — hetzelfde schema, dezelfde regels, geen van je rijen in gevaar. Aanmaken, bewerken en verwijderen draaien echt en landen op de fork; je bestanden en commerce-state worden op dezelfde manier gekloond. Wanneer de run eindigt, wordt de fork weggegooid.

    04

    De egress vastleggen

    E-mails, webhooks en calls naar derden worden vastgelegd, niet verstuurd. Een test kan assert dat de welkomstmail eruit zou gaan, naar wie, met wat — en er verlaat nooit een e-mail het gebouw. Je integraties blijven stil terwijl je logica echt wordt geoefend.

    05

    De bon

    Elke run legt vast wat de app echt deed: welke rijen hij schreef, welke e-mails hij zou hebben verzonden, welke externe calls hij probeerde — elk gemarkeerd als geaccepteerd, vastgelegd of geweigerd, met de reden erbij, tot aan de beveiligingsregel die een write blokkeerde. Niet alleen rood of groen: wat gebeurde er, en waarom.

    06

    Het oordeel

    Resultaten komen terug per check, per bestand — de falende assert, de stap die brak, naast de bon van neveneffecten van de run. Gestructureerd falen is het punt: daardoor kan dezelfde loop die de code schreef de fout vinden, oplossen en opnieuw draaien.

    07

    De poort

    Testresultaten blokkeren publiceren. Een falende Scenario stopt de release voordat die je gebruikers bereikt — zodat “het werkte toen we het bouwden” verandert in “het werkt nu”, geverifieerd bij elke wijziging in plaats van onthouden uit de demo.

    Wat het testsysteem kan

    Ingebouwd, voor je gedraaid en leesbaar wanneer je wilt kijken.

    De echte teststack

    Echte Vitest, Testing Library en jest-dom die in de browser draaien — dezelfde tools die professionele teams gebruiken, zodat de tests lezen als tests, niet als het dialect van een leverancier.

    Scenario-tests

    End-to-end flows geschreven in semantische termen — vind de knop op rol, het veld op label — die de echte app besturen zoals een gebruiker dat zou doen.

    Een wegwerpbare database

    Elke Scenario draait tegen een fork van je echte database. Writes worden geaccepteerd, geassert en weggegooid — je data is nooit onderdeel van het experiment.

    Niets lekt

    Testruns leggen e-mail, webhooks en connectorcalls vast in plaats van ze te versturen — je kunt bewijzen dat ze gebeurden zonder dat ze gebeuren.

    Elke run heeft een bon

    Een grootboek van elk neveneffect dat een test veroorzaakte — geaccepteerd, vastgelegd of geweigerd, met de reden. Het spoor, niet alleen het stoplicht.

    Geschiedenis en de poort

    Runs worden door de tijd gevolgd, en geslaagde tests blokkeren of openen publiceren — verificatie is een blijvende staat van je app, geen eenmalig event.

    Veelgestelde vragen

    Wie schrijft de tests?

    De AI doet dat terwijl hij bouwt — standaard unit tests, in de standaard stack. Vraag om een flow te dekken en hij schrijft er een Scenario voor. Elke test is leesbare code in je app; je kunt alles inspecteren, maar dat hoeft nooit.

    Raken tests mijn echte data?

    Nee. Scenarios draaien tegen een wegwerpbare fork van je database — writes worden daar geaccepteerd en met de fork weggegooid wanneer de run eindigt. Bestanden en commerce-state worden op dezelfde manier gekloond, dus zelfs een test die alles verwijdert verwijdert niets.

    Stuurt een test echte e-mails of raakt hij mijn integraties?

    Nee — uitgaand verkeer wordt vastgelegd, niet verstuurd. De run legt vast dat de e-mail eruit zou zijn gegaan, naar wie en met wat, en de test kan daarop assert. Je klanten en gekoppelde tools zien nooit een test.

    Wat zie ik wanneer een test faalt?

    Resultaten per check — het bestand, de check, de assert die faalde — plus de bon van neveneffecten van de run met de reden waarom elk werd toegestaan of geweigerd. Die structuur laat de AI zijn eigen fout diagnosticeren en oplossen, in plaats van te gokken op basis van een screenshot.

    Oefenen tests mijn beveiligingsregels?

    Ja — Scenarios draaien met echt inloggen tegen echte regels op rijniveau, niet tegen een gemockte sessie. Als een wijziging een gebruiker data laat zien die niet van die persoon is, faalt de test voordat een gebruiker dat ooit kan.

    Kan een falende test een release blokkeren?

    Ja. Scenario-oordelen blokkeren publiceren — een rode run stopt de release totdat hij weer groen is. De poort is het verschil tussen hopen dat de laatste wijziging veilig was en weten dat die gecontroleerd is.

    Beschrijf je app. Krijg hem bewezen.

    Ingebouwd betekent samen gebouwd: tests draaien tegen dezelfde app die je gebruikers zien — dus een falende checkouttest is een falende checkout, geen mock.

    Prijzen