Add buildSchedulePopularRequestQueryParams to convert Route/RouteWithBack
popular requests into URL search params. ScheduleStartPage now reads
departure/arrival/return from query params to initialize form state, and
the popular request click handler navigates with appropriate params for
both Schedule and Onlineboard request types.
Clicking a popular request now builds URLSearchParams and navigates with
them, so the filter initializes with the correct tab/fields pre-filled.
Schedule-type requests redirect to the schedule feature instead.
Self-contained dark-themed HTML report with summary stats, filter
buttons (pass/warn/fail/error), side-by-side image comparison per
route and viewport, lazy-loaded images, and full-size overlay on click.
The generator script reads report.json, converts absolute paths to
relative, and injects data into the template.
Extends the single-viewport screenshot-diff.ts pattern to capture at
3 viewports (desktop 1440, tablet 768, mobile 375), supports masking
dynamic content via CSS selectors, and outputs structured JSON report
to comparison-report/visual/ for downstream report generation.
Defines a Playwright-based pipeline for visual screenshot diffing,
behavioral E2E verification, and gap analysis between the Angular
and React implementations. Documents known gaps in flight details,
popular requests logic, and flights map.
- Fix 5 pre-existing failures: default tab is 'route' not 'flight'
- Add test: route search results page hydrates filter from URL params
- Add test (skip): route search form end-to-end (needs live API)
- Add test (skip): calendar strip shows day numbers (needs live API)
- Mark feedback button test as fixme (component not wired in)
Calendar days API returns a 31-char bitmask ('1'=available, '0'=unavailable)
starting from baseDate-1. parseCalendarDays now converts this to yyyyMMdd
date strings matching Angular's search-page-base.component.ts logic.
Calendar strip buttons now show formatted day numbers instead of raw dates.
OnlineBoardFilter now accepts initial values from URL params so the
departure/arrival/date fields are populated on search results pages.
The v7_startTransition warning appeared because react-router 6.30.3
(bundled by Modern.js 2.70.8) emits future flag warnings by default.
A full Modern.js 2→3 upgrade was investigated but blocked by
@module-federation/modern-js ESM incompatibilities with Rsbuild 2.0
(uses __filename and require.resolve in ESM bundles, and the SSR
plugin calls api.modifyWebpackConfig which no longer exists).
Instead, opt into all v7 future flags via runtime.router config.
This silences the warning and prepares the codebase for an eventual
React Router v7 upgrade when the MF plugin catches up.
The [...flights]/page.tsx catch-all generated an incorrect route pattern
(schedule/:/flights) instead of a React Router splat (schedule/*).
Modern.js convention for catch-all routes is $.tsx at the directory level,
not [...param]/page.tsx. Moved to $.tsx and updated param access to use
the "*" splat key.
Fixes: /ru/schedule/SU0012-20220527 and multi-leg URLs now resolve.