E2E Tests
| Key | Value |
|---|---|
| Status | Active |
| Owner | QA Automation |
| Updated | 2026-03-26 |
| Scope | Full user journey tests across all 6 CNC sites |
E2E tests exist because passing smoke and PDT tests do not prove that a real user can actually move through the site. Smoke confirms the page loads. E2E confirms that galleries open, videos play, navigation works, articles link forward, and share flows are reachable — in sequence, as a user would experience them.
What The Suite Does
| Capability | What It Means |
|---|---|
| multi-step journeys | tests simulate real user flows, not single isolated checks |
| per-site specificity | each site has its own spec with site-specific selectors and URL patterns |
| media coverage | gallery browsing, video playback, podcast catalog — validated per site |
| soft fallbacks | if a gallery is not on the homepage that day, the test finds it another way |
| failure isolation | one broken test does not cascade to unrelated tests on the same site |
Current Shape
| Metric | Current Snapshot |
|---|---|
| total tests | 76 |
| passing | 71 |
| pass rate | 93.4% |
| sites covered | 6 |
| spec files | 6 (one per site) |
| schedule | nightly |
Test Counts By Site
| Site | Tests | Categories |
|---|---|---|
| Auto | 15 | journey, navigation, content, gallery (3), video (3), podcast (4), social |
| Blesk | 12 | journey (2), navigation, content, gallery (3), video (2), live, social, news |
| E15 | 11 | journey (2), navigation, content, gallery (2), video (3), podcast (2), social |
| iSport | 11 | journey (2), navigation, content, gallery (2), video (2), live, podcast, social |
| Opinio | 15 | journey (2), navigation, content, gallery (2), video (2), podcast (3), social, publication |
| Reflex | 12 | journey (2), navigation, content, gallery (2), video (2), podcast, live, social |
| Total | 76 |
Test Categories Explained
| Category | What Is Tested |
|---|---|
| journey | end-to-end user flow (homepage → category → article → related → return) |
| navigation | nav element visible, menu opens, category link works, content loads |
| content | article reading: title visible, scroll, related content section present |
| gallery | article photo gallery present, navigation controls (forward/back), image count |
| video | inline player present, playback controls work, dedicated video listing page |
| podcast | podcast catalog reachable, episode page loads, playback starts, episode navigation |
| live | /live or /zpravy page loads, timeline entries visible |
| social | share button visible in article, share menu opens on click |
| news | news listing page loads, article cards present, first article opens |
Full Test List
| Site | Test Name | Category | Notes |
|---|---|---|---|
| Auto | Journey: Casual News Reader | journey | homepage → category → article → related → home |
| Auto | Journey: Media Consumer | journey | homepage → gallery → video → home |
| Auto | Navigation Journey | navigation | nav visible, category click, content loads |
| Auto | Article Reading Journey | content | article title, scroll, related |
| Auto | Gallery - Article Photo Gallery | gallery | embedded swiper/carousel |
| Auto | Gallery - Navigation Controls | gallery | URL-based foto= param navigation |
| Auto | Gallery - Image Count | gallery | at least one image |
| Auto | Video - Article Inline Playback | video | known article URL, VP player |
| Auto | Video - Dedicated Video Page | video | /video listing, player in article |
| Auto | Video - Playback Controls | video | controls start media |
| Auto | Podcast - Browse Catalog | podcast | /podcasty listing |
| Auto | Podcast - Play Episode | podcast | known episode URL, player visible |
| Auto | Podcast - Playback Controls | podcast | controls start audio |
| Auto | Podcast - Episode Navigation | podcast | episode cards clickable |
| Auto | Social - Share Article | social | share button in up to 5 articles |
| Blesk | Journey: Casual News Reader | journey | homepage → zpravy/celebrity → article → related → home |
| Blesk | Journey: Media Consumer | journey | homepage → gallery → video → home |
| Blesk | Navigation Journey | navigation | nav element, category click |
| Blesk | Article Reading Journey | content | article title, scroll, related |
| Blesk | Gallery - Article Photo Gallery | gallery | URL-based (keyboard ArrowRight) |
| Blesk | Gallery - Navigation Controls | gallery | forward/backward counter changes |
| Blesk | Gallery - Image Count | gallery | image count >= 1 |
| Blesk | Video - Article Inline Playback | video | tv.blesk.cz VP player |
| Blesk | Video - Playback Controls | video | VP overlay click, video state check |
| Blesk | Live - Dedicated Live Page | live | /live or /zpravy redirect, timeline entries |
| Blesk | Social - Share Article | social | share button present and clickable |
| Blesk | News - Zpravy Listing | news | /zpravy listing, article card count, open first |
| E15 | (11 tests — journey/navigation/content/gallery/video/podcast/social) | — | Didomi consent |
| iSport | (11 tests — journey/navigation/content/gallery/video/live/podcast/social) | — | CPEX consent |
| Opinio | (15 tests — journey/navigation/content/gallery/video/podcast/social/publication) | — | no desktop hamburger; /publikace |
| Reflex | (12 tests — journey/navigation/content/gallery/video/podcast/live/social) | — | Didomi consent |
Gallery Patterns By Site
CNC sites use two distinct gallery implementations. Tests adapt automatically.
| Pattern | Sites | Navigation Method |
|---|---|---|
| URL-based (foto= query param) | Blesk, E15 | ArrowRight key, wait for URL change |
| Embedded carousel (swiper) | Auto, iSport, Opinio, Reflex | next button click or ArrowRight |
How To Run
| Command | What It Does |
|---|---|
npm run test:e2e | All 76 tests, all sites |
npm run test:e2e -- --grep "blesk" | Blesk only |
npm run test:e2e -- --grep "auto" | Auto only |
npm run test:ui | Interactive Playwright UI mode |
npm run test:headed | Headed browser (see the browser) |
npm run test:trace | With Playwright trace |
npm run test:debug | With debug mode |
Failure Handling
Where To Look First
| Failure Type | Where To Check |
|---|---|
| gallery test failing | check if gallery URL pattern changed (foto= vs inline) |
| video test failing | check if VP player selector changed; check tv.blesk.cz layout |
| podcast test failing | check if /podcasty URL is still valid; check known episode URLs |
| live test failing | check if /live redirects to a different path |
| share test failing | check if share button selector changed |
| navigation test failing | check if hamburger menu behavior changed |
Auto-Healable Categories
| Category | Healer Action |
|---|---|
SELECTOR_NOT_IN_DOM | run npm run heal:claude, healer finds replacement |
SELECTOR_STALE | run npm run heal:apply with fresh selector |
TIMEOUT_ELEMENT | healer adjusts timeout or selector strategy |
Manual Investigation Required
| Category | Reason |
|---|---|
| gallery navigation produces no URL change | site may have switched gallery implementation |
| video player not found on known URL | player embed changed |
| podcast episode URL returns 404 | test URL needs updating to a current episode |
Soft Fallbacks
E2E tests are designed to skip rather than fail when content is genuinely absent (not a breakage). This is deliberate for live news sites where content rotates.
| Situation | Behavior |
|---|---|
| no gallery link on homepage | test tries direct /galerie/ navigation before skipping |
| no video link on homepage | test opens first article and checks for player |
| no share button in first article | test tries up to 5 articles before skipping |
| no related articles in article | test logs warning and continues |
Related Pages
| Need | Go To |
|---|---|
| authentication and paywall journeys | User-flows Tests |
| mobile-specific journey tests | Mobile Tests |
| high-level suite list | Test Types |