Burning Out? Write Ten Smoke Tests Before the Refactor
When a senior developer is burning out, the two plans that show up on the whiteboard are full test coverage and a rewrite. Both promise relief, both take months, both leave you more tired than when you started. There is a smaller intervention that works in two weeks: ten critical path E2E smoke tests, in priority order, on the flows that actually page you. This guide is the playbook.
“Ten smoke tests on the paths that page you at 2am remove the specific cause of the 2am page. That is the win, not coverage percentage.”
Field notes, senior backend engineer, fintech
1. The Burnout Math
Full test coverage is a reasonable goal for a rested team. For a burned out one, it is a trap. You spend three months writing unit tests for code you do not trust, and the code you do not trust is still in production the whole time. The weekend pages keep coming because unit tests do not catch the integration and UI level regressions that wake you up.
A rewrite looks tempting for the same reason a vacation does: it would be nice to start somewhere else. But the production system the rewrite is replacing still needs to run, and you are the one running it. You end up with two full time jobs and no sleep. The smoke test plan, by contrast, attacks the exact source of the 2am page with the smallest surface possible.
2. The Ten Paths, In Priority Order
In order. Do not reorder. If your product lacks one, replace it with your own ninth most painful path.
- Login, including password reset. If this breaks, everything is down.
- The one CRUD flow that makes you money. Create, read, update, delete the primary object.
- Checkout or payment, including the failure branch where the card is declined.
- Signup, because churn at signup is invisible until you measure it.
- Role switching or permissions, if your product has tiers or teams.
- The one admin action you always triple check before running in production.
- A report or export, because it touches real data at scale and fails silently.
- The primary inbound webhook, because a silent failure here means lost money.
- A search or filter page, because these degrade quietly as data grows.
- Logout that actually clears session state, because auth bugs hide here.
Ten is enough. The instinct to add an eleventh is the same instinct that got you to ninety. Resist it for two weeks.
Generate smoke tests from natural language
Describe the flow. Assrt writes the Playwright spec, runs it against your staging URL, and self-heals selectors.
Get Started →4. Where To Run Them, And When To Page
Two runs, two different rules. PR runs block merges. Synthetic runs page.
PR run: every PR -> preview deploy -> 10 smoke tests
fail -> block merge
succeed -> allow merge
Synthetic run: every 30 min -> production URL -> 10 smoke tests
fail -> page on-call
succeed -> quietThe PR rule catches regressions before they reach production. The synthetic rule catches the ones that slip through anyway. Between them, the class of 2am page that is caused by a broken core path goes to zero. You will still get paged for infrastructure issues, but those are different and fewer.
5. The Two-Week Plan
Day by day, roughly.
- Day 1. Pick the ten paths. Write them on paper. Do not touch code yet.
- Day 2-3. Stand up a preview deploy if you do not have one. Vercel, Fly, or Render; whichever is closest.
- Day 4-7. Author the first five tests. Get them green on preview. Merge them behind a feature flag if your CI is strict.
- Day 8-10. Author the second five tests. Same process.
- Day 11-12. Wire the synthetic schedule. Thirty minute interval on production, paging to whatever tool your team uses.
- Day 13-14. Run a deliberate breakage in staging. Confirm the synthetic pages. Tune thresholds.
At the end of two weeks, you have a safety net under the ten flows that used to page you, and you still have not started any refactor. This is the point.
6. What Happens After The Ten Are Green
You sleep. The first weekend without a page is jarring because you keep checking the phone. After the second weekend, the fear of breaking something invisible starts to fade, because the ten most dangerous flows are watched. You get enough headspace back to notice what was actually draining you.
Sometimes that reveals the refactor was the real issue and you still want to do it. Sometimes it reveals the refactor was a symptom of exhaustion and there is a simpler cut that unlocks the same confidence. Either way, you are making the call rested, which was never going to happen under the old rules.
Frequently Asked Questions
Why smoke tests instead of full coverage when I am already burned out?
Full coverage is a multi-month project that produces benefit at the end. Burnout recovery needs compounding wins inside two weeks. Ten smoke tests on the paths that page you at 2am remove the specific cause of the 2am page, and they do it on week one. Full coverage is a goal for a rested team, not a tired one.
Which ten paths should I pick first?
The ordering we recommend: login and password reset, your one most used core CRUD flow, checkout or payment, signup (because churn at signup is invisible without it), role switching if you have it, the one admin flow you fear breaking, a report or export that touches real data, the primary integration webhook, a search or filter page, and a logout that actually clears state. Ten is enough to cover 90 percent of the surface that generates alerts.
Is a smoke test the same as an E2E test?
Close enough for this purpose. A smoke test is an E2E test focused on the yes or no question: can a real user complete this path right now. It does not assert every detail; it asserts the handful of things that, if broken, mean the product is effectively down. Run it in a real browser against a real staging URL, not a mocked harness.
How long does it take to write ten?
If you write them by hand, one to three days each depending on UI complexity. If you generate them from natural language scenarios with a tool like Assrt or a similar agent, the total drops to a day or two for all ten. The win is not the authoring speed; it is that you do not have to maintain selectors every time the UI shifts, which is what usually kills a smoke suite after six months.
What if my product is too complex for just ten?
Then pick the ten paths whose failure would force you to reply to Slack on Saturday. That is the real metric. You can grow the suite later, but the first ten buy your weekends back, which is the thing you actually need when you are burned out. Everything else can wait.
Where do I run them?
Two places. First, on every merged PR against a preview deploy. This catches regressions before they reach production. Second, every thirty minutes against production itself as a synthetic. If the production run fails, page. If the PR run fails, block the merge. That is the full safety net in two rules.
Should I do the big refactor after?
Maybe, maybe not. A lot of the refactors senior developers plan are driven by the fear that the next change will break something invisible. Once the ten smoke tests are running, that fear is usually smaller than it felt. If you still want the refactor afterwards, you will be doing it from a rested baseline with a safety net, which is a very different project than the one you were dreading.
Ten Smoke Tests, Two Weeks, Weekends Back
Assrt generates Playwright E2E smoke tests from natural language and self-heals selectors when your UI shifts.
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.