What Is Smoke Testing?
A smoke test is a fast, shallow check that the most important parts of a build work at all, run before investing in deeper testing.
The name comes from hardware: power on a device and see if it smokes. In software, a smoke test is a small set of quick checks that confirm the build is not fundamentally broken, that it starts, the home page loads, the core flow responds, before the slower, thorough tests run. It is a cheap gate that fails fast.
What a smoke test checks
Smoke tests cover breadth, not depth. They touch the handful of critical paths, the app boots, login works, a key endpoint returns 200, without exhaustively verifying behavior. If the smoke test fails, the build is dead on arrival and there is no point running the full suite.
Smoke versus the full suite
A full regression or integration suite is thorough but slow. A smoke test is the opposite: fast and shallow. The two are complementary. Smoke first to catch catastrophic breakage early, then the deeper suites if smoke passes.
A quick example
After a deploy, a smoke test hits the health endpoint and a critical page to confirm the service is up before promoting it further.
test("app is alive", async () => {
const res = await fetch("/health");
expect(res.status).toBe(200);
});When smoke tests run
- Early in CI, before slower test stages.
- After a deploy, to confirm the environment is healthy.
- As a gate before promoting a build to the next stage.
- As a quick local sanity check before pushing.
Smoke testing in CI
Putting a smoke stage first lets the pipeline fail fast on a broken build, saving the cost of running the full suite. Because smoke tests are tiny, they finish in seconds on fast runners, giving the developer near-instant feedback that the build is at least viable.
Key takeaways
- A smoke test quickly checks that the build is not fundamentally broken.
- It is shallow and fast, run before the deeper test suites.
- A first smoke stage lets CI fail fast on a dead build.