Smoke Tests
| Key | Value |
|---|
| Status | Active |
| Owner | QA Automation |
| Updated | 2026-03-26 |
| Scope | Rapid health check across all 6 CNC sites |
Smoke tests exist to answer one question: is the site basically up? They run in under 30 seconds per site, before and after deploys, and on demand. They do not prove journeys work — that is E2E. They do not validate post-deploy feature correctness — that is PDT. They prove the site loads, the header is present, an article is reachable, and the menu responds.
What The Suite Does
| Check | What It Proves |
|---|
| HTTP response | site responds with status < 400 |
| consent handling | consent dialog is dismissed without blocking test |
| header visible | core layout element present in DOM |
| article click | clicking a main article navigates to a new URL |
| footer visible | page renders to its end without JS errors |
| navigation menu | hamburger menu opens (or Opinio: /publikace link clickable) |
Current Shape
| Metric | Current Snapshot |
|---|
| total tests | 12 |
| passing | 12 |
| pass rate | 100% |
| sites covered | 6 |
| spec file | 1 (tests/smoke.spec.ts) |
| duration | ~30 seconds |
Test Counts By Site
The smoke spec is a loop over all 6 sites. Each site gets 2 tests.
| Site | Tests | Notes |
|---|
| Auto | 2 | CPEX consent |
| Blesk | 2 | CPEX consent |
| E15 | 2 | Didomi consent |
| iSport | 2 | CPEX consent |
| Opinio | 2 | CPEX consent; navigation test uses /publikace not hamburger |
| Reflex | 2 | Didomi consent |
| Total | 12 | |
Full Test List
| Site | Test Name | What It Checks |
|---|
| Auto | health check | HTTP < 400, consent, header visible, article click, footer |
| Auto | navigation menu | hamburger opens, menu footer visible, menu closes |
| Blesk | health check | HTTP < 400, consent, header visible, article click, footer |
| Blesk | navigation menu | hamburger opens, menu footer visible, menu closes |
| E15 | health check | HTTP < 400, consent, header visible, article click, footer |
| E15 | navigation menu | hamburger opens, menu footer visible, menu closes |
| iSport | health check | HTTP < 400, consent, header visible, article click, footer |
| iSport | navigation menu | hamburger opens, menu footer visible, menu closes |
| Opinio | health check | HTTP < 400, consent, header visible, article click, footer |
| Opinio | navigation menu | /publikace link clickable, navigates to /publikace path |
| Reflex | health check | HTTP < 400, consent, header visible, article click, footer |
| Reflex | navigation menu | hamburger opens, menu footer visible, menu closes |
Health Check Steps
Each health check test runs these steps in order:
| Step | Name | Failure Behavior |
|---|
| 1 | Load site (domcontentloaded) | hard fail |
| 2 | Handle consent dialog | soft — test continues even if consent not found |
| 3 | Header visible | hard fail |
| 4 | Click main article | soft — logs warning, does not fail test |
| 5 | Footer visible | soft — logged but not asserted |
How To Run
| Command | What It Does |
|---|
npm run test:smoke | All 12 tests, all sites |
npm run test:smoke -- --grep "blesk" | Blesk only (2 tests) |
SITE=auto npm run test:site | Single site via env var |
npm run test:headed | Headed browser |
npm run test:debug | With debug mode |
Smoke vs PDT
| Smoke | PDT |
|---|
| purpose | is the site up? | did the deploy break anything? |
| when to run | before deploys, on demand | after deploys |
| depth | surface-level (load + header + click) | multi-phase (homepage + article + ads + menu + search) |
| duration | ~30s | ~5m 20s |
| test count | 12 (2/site) | 30 (5/site) |
| ad checks | none | yes |
| site-specific features | no | yes (car search for Auto, premium for iSport, etc.) |
Smoke tests collect Core Web Vitals via MetricsCollector and attach them as JSON to each test run. This data is not asserted in smoke — it is surfaced in Grafana for trend tracking.
Consent Types By Site
| Site | Consent Provider | Handling |
|---|
| Auto | CPEX | handleConsentWithPersistence |
| Blesk | CPEX | handleConsentWithPersistence |
| E15 | Didomi | handleConsentWithPersistence |
| iSport | CPEX | handleConsentWithPersistence |
| Opinio | CPEX | handleConsentWithPersistence |
| Reflex | Didomi | handleConsentWithPersistence |
Related Pages