Launch in Days, Not Weeks
Professional one-page website — only a few slots left this month
A marketing website can survive a broken contact form for a few hours. An e-commerce platform cannot survive a payment bug for five minutes.
When we built CardDeckr, a custom card game marketplace connecting independent designers with print manufacturers, we knew that every transaction, every inventory update, and every Stripe webhook had to work perfectly, every time. A single bug in the checkout flow could mean lost revenue, double-billed customers, or inventory sync failures that cascade across the entire platform.
That is why CardDeckr now runs on a suite of 6,900+ automated tests that verify every critical path before a single line of code ships to production. This is not over-engineering. This is the minimum viable safety net for a platform where money changes hands.
If you are building or considering custom e-commerce software, understanding why comprehensive testing matters, and what it actually looks like in practice, will save you from expensive mistakes down the line.
A marketing website has a handful of critical paths: load the page, submit the contact form, maybe process a newsletter signup. If something breaks, the impact is limited. A visitor might bounce, or an enquiry might be lost. Annoying, yes. Catastrophic, no.
An e-commerce platform has hundreds of critical paths, all of which involve money, inventory, or customer data. Every one of them must work correctly under load, across different user states, and in the correct sequence.
Here is what breaks when e-commerce testing is insufficient:
These are not hypothetical. These are real bugs we have seen in production e-commerce platforms that did not have adequate test coverage. The cost of fixing them after launch is orders of magnitude higher than the cost of writing tests upfront.
Not all tests are created equal. A well-structured test suite follows the testing pyramid: lots of fast unit tests at the base, fewer integration tests in the middle, and a small number of end-to-end tests at the top.
Here is how that breaks down for a platform like CardDeckr:
What they test: Individual functions, utilities, and business logic in isolation.
Examples from CardDeckr:
Why they matter: Unit tests are fast (milliseconds), easy to write, and cover the majority of your codebase. When a unit test fails, you know exactly which function broke. They form the foundation of deployment confidence.
CardDeckr has thousands of unit tests covering every pricing rule, every discount scenario, and every inventory calculation. When we refactor pricing logic, we know immediately if something breaks.
What they test: How different parts of the system work together, including database queries, API endpoints, and third-party service integrations.
Examples from CardDeckr:
Why they matter: Integration tests catch bugs that only appear when components interact. A price calculation function might work perfectly in isolation, but fail when combined with a discount code and a Stripe payment intent. Integration tests catch those failures before production.
CardDeckr’s integration tests verify that when a customer completes checkout, the correct sequence fires: payment captured, order created, inventory decremented, manufacturer notified, confirmation email sent. If any step fails, the test fails.
What they test: Full user journeys through the application, from browser to backend to database.
Examples from CardDeckr:
Why they matter: End-to-end tests verify that the entire platform works as a cohesive system. But they are slow (seconds or minutes), brittle (prone to flakiness), and expensive to maintain. Use them sparingly for critical user flows only.
CardDeckr runs a lean set of end-to-end tests covering the three most critical paths: checkout, designer onboarding, and order fulfilment. Everything else is covered by faster unit and integration tests.
CardDeckr is built on a modern stack: Astro frontend, Node.js backend, PostgreSQL database with 66 tables, and Stripe for payments. All tests run on Vitest, a fast test runner designed for modern JavaScript applications.
Here is the rough breakdown of the test suite:
Total: 6,900+ tests that run on every pull request before code merges to production.
The suite runs in under 3 minutes on our CI pipeline. That speed is critical. Slow tests mean developers skip them, and skipped tests mean bugs ship to production.
One of the most complex areas of any e-commerce platform is payment lifecycle management. Stripe sends webhooks for dozens of events: successful payments, failed payments, subscription renewals, subscription cancellations, refunds, disputes.
Each webhook must trigger the correct action in your platform. A failed payment webhook should downgrade the user’s access. A successful renewal should extend their subscription. A dispute should flag the order for review.
What happens when webhook handlers are not tested:
customer.subscription.deleted webhook fails silently. The customer still has access. You are providing free service.CardDeckr’s webhook tests simulate every Stripe event type and verify the correct database changes occur. We use Stripe’s test mode and webhook fixtures to ensure our handlers are bulletproof before they see production traffic.
CardDeckr’s database has 66 tables covering users, orders, products, inventory, manufacturers, designers, payments, subscriptions, analytics, and more. Relational integrity matters. If a foreign key constraint breaks, or a cascade delete is misconfigured, data corruption follows.
Our database tests verify:
We run these tests against a real PostgreSQL instance (not SQLite mocks) to ensure behaviour matches production exactly.
Here is the real business value of 6,900+ tests: confidence to deploy.
Without comprehensive tests, every deployment is a gamble. You merge code, cross your fingers, and hope nothing breaks. If something does break, you scramble to debug production, roll back the deploy, or issue a hotfix under pressure.
With comprehensive tests, deployments are boring. Code that passes the test suite ships to production safely. If tests fail, the deploy is blocked automatically. No broken checkouts. No silent payment failures. No 2am pages because inventory sync died.
CardDeckr’s deployment pipeline:
We deploy to production multiple times per day because the test suite gives us confidence that nothing critical will break. That velocity would be impossible without automated testing.
Writing 6,900 tests is not free. It takes time. It requires discipline. It slows down initial feature development slightly (though not as much as you think).
But the ROI is undeniable:
Fewer production bugs: CardDeckr has had zero payment processing bugs since launch. Zero inventory sync failures. Zero critical outages caused by bad deploys. The cost of those bugs in lost revenue, customer trust, and emergency fixes would dwarf the cost of writing tests.
Faster feature development: Once you have comprehensive test coverage, adding new features becomes faster, not slower. You can refactor aggressively, knowing tests will catch breakage. You can ship confidently without manual QA cycles.
Easier onboarding: New developers can contribute to CardDeckr within days because the test suite acts as executable documentation. Want to understand how pricing works? Read the unit tests. Want to see how checkout flows work? Read the integration tests.
Lower support burden: Bugs that never ship to production never generate support tickets. CardDeckr’s support volume is a fraction of what it would be without testing. That saves time and money every week.
If you are building custom SaaS software or an e-commerce platform, the question is not “Can we afford to write tests?” The question is “Can we afford not to?”
Not every project needs 6,900 tests. Here is when to invest heavily in testing:
You need comprehensive tests if:
You can get away with lighter testing if:
Fernside Studio builds fast, static marketing sites for SMBs with minimal testing (form validation, build-time checks, accessibility audits). We build e-commerce platforms and SaaS tools with comprehensive test suites like CardDeckr’s. Different projects need different approaches.
If you are commissioning custom software, here is what to ask your development partner:
At Fernside Studio, testing is non-negotiable for e-commerce and SaaS projects. We write tests as we build features, not as an afterthought. We run tests on every pull request. We deploy only when tests pass.
CardDeckr’s 6,900+ test suite is not a vanity metric. It is the reason the platform can process thousands of orders without manual intervention, deploy multiple times per week without outages, and scale confidently as the business grows.
If you are building a platform where reliability matters, where bugs cost money, customers, or trust, invest in comprehensive testing from day one. The upfront cost is real. The long-term savings are greater.
Fernside Studio builds custom e-commerce platforms and SaaS tools with testing, reliability, and deployment confidence built in from day one. If you are planning a project where money changes hands and bugs are not an option, get in touch and we will scope it properly.
Or explore the full CardDeckr case study to see how we built a two-sided marketplace with 6,900+ tests, 66 database tables, and zero payment processing bugs since launch.
Say hello
Quick intro