Skip to content

Break something, then report it

This page is a fake invoicing app carrying the real widget, the way it would sit on a client's site, your product or the admin app your team uses every day. Every button below breaks something the way a live app breaks, and when a request to the app's own API fails, the widget puts up a prompt to report it. Or press the report button, the way a client, a colleague or a customer would, and see what is already in the form.

Invoice #4821

Due 12 Sep 2026
Client
Northwind Traders
Amount
€1,290.00
Card on file
4242 4242 4242 1881
Vault password

The card number is a masked element and the password is a password field. The widget blurs both in the screenshot before it leaves your browser.

  • POST /api/demo/pay answers 500. The widget records it, prompts you to report it, and keeps the request and response bodies with password and session values redacted.

  • GET /api/demo/invoices/inv_4821.pdf is a 404. That is worth interrupting someone over too, so the prompt shows for it.

  • Throws a real uncaught TypeError from this page's own code. Its message, file, line and column end up in the report.

  • Loads jQuery from code.jquery.com and trips a deprecation warning inside it. It is someone else's script, so the widget counts the warning without keeping it, and the report says how many it left out.

  • GET https://api.stripe.com/v1/charges without a key answers 401. The widget keeps a third party's failed request as evidence, but a refused request is not worth a prompt.