← All posts

April Fools: bugs that look like jokes until they aren't

April Fools' Day is the one day a year when the internet is allowed to be wrong on purpose. A company announces a keyboard with one key. A map app adds a dragon. Everyone laughs, and by lunch it's over.

Software has its own version, except nobody planned it and it doesn't end at lunch.

You've seen these. Maybe you've shipped one. We have.

The product called "undefined". A template expects product.name, the API renamed it to product.title, and now the bestseller carousel proudly features "undefined" in bold. It looks like a joke. It's a contract change nobody tested.

"You have NaN items in your cart." Somewhere a quantity became a string, and a string plus a number became nonsense. The checkout button still works, which somehow makes it worse.

The order placed on January 1, 1970. A missing timestamp defaulted to zero, and zero is the Unix epoch. Your customer is now apparently a time traveler with a very old receipt.

"Günter's Bäckerei". An encoding mismatch turns every umlaut into two strange characters. In English-only test data it never shows up. In a real catalog with real names, it's on every third card.

The 110% discount. Two promotions stacked that were never meant to stack. The store now pays the customer to take the item away.

None of these crash anything. None throw an error you'd catch in the logs. That's the pattern: they're funny because they're visibly, obviously wrong to any human who looks, and they survive because no human was looking at that spot at that moment.

The original bug was a little bit funny too

In 1947, Grace Hopper's team working on the Harvard Mark II found a moth stuck in a relay and taped it into the logbook with the note "first actual case of bug being found." The word "bug" was already in use, which is part of why the note is a joke. Engineers have been laughing at their defects for a long time. Laughing hasn't made them any easier to spot.

Turning jokes into checks

What we like about this category is that it's very checkable. You don't need a model to tell you that "undefined" shouldn't appear in a product title. You need a rule:

  • No visible text contains undefined, null, NaN or [object Object].
  • No date on the page is before the store existed.
  • No text contains the usual mojibake pairs like ü or é.
  • Discounts stay between 0% and 100%, and a final price is never higher than the price before discount.

These are what we call universal and business invariants. They're boring, they're cheap, and they run on every page an agent or a test visits, not just the pages someone thought to check. An explorer agent wandering through a category it's never seen will still trip over the "undefined" carousel, because the rule goes with it.

That's the part we find quietly satisfying. The bugs that look most like pranks are often the easiest ones to never see again, once someone writes them down as code.

So today, enjoy the fake product launches. Then maybe search your own staging site for the word "undefined". You might get a laugh. You might get a ticket.

Testomatica TeamWritten Wednesday, April 1, 2026

Want Testomatica watching your deploys?

We're onboarding a small group of teams that ship with AI.

Get early access