A smoke check confirms that the release’s essential user journeys work in the deployed environment. It should be small, meaningful and safe to repeat.
IN THIS ARTICLE
What you need before you begin
Choose critical workflows and authorised test accounts. Decide which tests can run against production without creating real charges, customer messages or unwanted data.
01 Verify a deployment with application smoke checks
Check the public HTTPS endpoint, release identifier and a representative asset. Verify the intended response content, not only a 200 status code.
Exercise a controlled authenticated workflow and a harmless database read or write where appropriate. Keep test data clearly identifiable and remove it through the application’s supported process.
Check a required background job or external integration through a test mode or safe status operation. Avoid a real payment or mass email as an automatic health probe.
Review private application errors and restart behavior. Compare the release with the known baseline rather than expecting logs to be completely empty.
Define the failure decision in advance: pause activation, recover compatible code or investigate a specific dependency.
02 Example: test content as well as the HTTP status
Choose a public, read-only endpoint with a stable marker controlled by your application. This Python smoke check expects JSON from an example release endpoint. Replace the URL and expected release with values your application deliberately exposes without confidential configuration.
import json
from urllib.request import urlopen
with urlopen('https://example.com/health/release', timeout=10) as response:
assert response.status == 200
assert response.headers.get_content_type() == 'application/json'
payload = json.load(response)
assert payload.get('release') == 'example-2026-10-05.1'
assert payload.get('status') == 'ok'
A 200 response containing a maintenance page will now fail instead of falsely approving the deployment. Add a separate approved login or draft workflow when the application’s critical feature is not represented by this endpoint. Keep genuine purchases and customer emails out of routine smoke checks.
Expected result: The intended release passes, while a stale deployment or HTML fallback fails clearly and pauses activation until investigated.
Confirm the expected result
Confirm the checks detect a deliberately broken staging configuration and remain successful on a healthy release. Remove checks that merely repeat implementation details without finding a realistic deployment problem.
Troubleshoot unexpected results
If a test fails only on production, compare credentials, proxy behavior, data shape and resource limits. Do not suppress the check until its failure is understood.
A common question
Is opening the homepage enough to approve a deployment?
It may miss authentication, database writes, assets and workers. Choose a few checks representing the features customers depend on.