Commit Graph

53 Commits

Author SHA1 Message Date
gnezim 3de1ee3f62 fix: add missing PrimeReact and PrimeIcons CSS imports
Import PrimeReact and PrimeIcons CSS libraries at the app entry point
to ensure styling is loaded. This matches the Angular app which imports
these libraries in angular.json.

- primereact/resources/primereact.min.css: Base component styles
- primeicons/primeicons.css: Icon library styles

This fixes missing component styling that was relying only on custom
overrides without the base theme.
2026-04-06 08:14:19 +03:00
gnezim 2d0c5c2c15 fix: add missing i18n translation keys across all languages
Added 49 missing translation keys that were being used in the React components but were not defined in the i18n JSON files:

SHARED keys (23):
- AIRCRAFT, AIRPORT, ARRIVAL, BACK, CANCEL, CLEAR, DATE, DEPARTURE, END_DATE
- FLIGHT, FROM, ONE_WAY, OPERATOR, REMARKS, RETURN_DATE, ROUND_TRIP, ROUTE
- SEARCH_HISTORY, SELECT_CITY, START_DATE, STATUS, TO, TRIP_TYPE

BOARD keys (12):
- AMENITIES, AVAILABLE_SEATS, BOARDING, CAPTAIN, CODESHARING, CREW_INFORMATION
- DEBOARDING, FIRST_OFFICER, FLIGHT_ATTENDANTS, SEATS, TOTAL_SEATS, VIEW_DETAILS

SCHEDULE keys (14):
- BROWSE_SCHEDULE, BROWSE_SCHEDULE_DESC, CODESHARE, DAYS_OF_WEEK
- DOWNLOAD_SCHEDULE, DOWNLOAD_SCHEDULE_DESC, DURATION, OPERATING_DAYS
- POPULAR_ROUTES, ROUTE_SCHEDULE, ROUTE_SCHEDULE_DESC, STOPS
- WEEKLY_VIEW, WEEKLY_VIEW_DESC

All 9 language files (en, ru, de, es, fr, it, ja, ko, zh) have been updated consistently.
2026-04-06 07:38:51 +03:00
gnezim 4c1a1e0b66 feat: add auto-search on city selection and display elements
- Auto-trigger search when departure or arrival city is selected
- Add display elements for selected cities (departure-display, arrival-display)
- Add display elements for selected dates (selected-departure-date, selected-return-date)
- Pass search params to filter component on search results page
- Support round-trip date selection with return date field
- Pass return date and trip type through navigation params

This fixes the first two search-filter tests (departure and arrival city searches).
Fixes #1 and #2 of the search-filter test suite.
2026-04-06 03:13:17 +03:00
gnezim 1a3256147a feat: align React online-board start page styling with Angular version
- Updated feature card grid from CSS Grid to Flexbox (2x2 layout with 50% width)
- Added background image and title icon SVGs for visual parity
- Changed card title colors from dark gray to blue (#0066cc) matching Angular links
- Fixed padding and spacing to match Angular (50px sections, 65px icon offset)
- Added data-testid attributes for E2E testing
- Created comprehensive visual design alignment report documenting changes
2026-04-06 02:26:51 +03:00
gnezim 403dc01708 fix: i18n language detection from URL path and add missing translation keys
- Update i18n language detection to extract language code from URL (/ru-ru/ → 'ru')
- Move public assets to src/public/ to match Vite root directory
- Add missing translation keys: SHARED.DATE, SHARED.FROM, SHARED.TO, SHARED.DEPARTURE, SHARED.ROUTE
- Fix router configuration to use relative paths for language-prefixed routes
- App now loads at /ru-ru/onlineboard with full Russian translations
2026-04-06 02:07:28 +03:00
gnezim c9a5bcd22d fix: replace dynamic imports with static imports to fix React app loading 2026-04-06 01:53:35 +03:00
gnezim e8e8796b6f fix: add missing i18n translation keys to ru.json 2026-04-06 01:40:45 +03:00
gnezim 739d1f7e4a fix: correct i18n keys in PageTabs and OnlineBoardStartPage components 2026-04-06 01:38:05 +03:00
gnezim 2b4eeb93eb fix: show route filter by default in online board
- Changed default activeTab from 0 to 1 to show Route Filter accordion tab by default
- This makes departure/arrival inputs visible for e2e tests
- Matches test expectations where inputs are directly accessible on start page
2026-04-06 00:55:59 +03:00
gnezim 3eb2697881 feat: improve online board tabs and flight data mocking
- Replaced PrimeReact TabView with custom tab buttons for better test compatibility
- Added proper 'active' class styling to tab buttons based on activeTab state
- Enhanced API mock data with complete flight information (all fields)
- Added 3 sample flights with different statuses (ON_TIME, DELAYED, BOARDING)
- Included departure/arrival details, boarding times, gates, and aircraft info
2026-04-06 00:53:41 +03:00
gnezim 273c3cf2fb feat: implement online board tabs and update component test IDs
- Added TabView to OnlineBoardSearchPage with Departures/Arrivals tabs
- Updated RouteFilter test IDs to match test expectations (departure-input, arrival-input, search-button)
- Integrated BoardSearchResult component for flight list display
- Added proper tab state management and data-testid attributes
2026-04-06 00:41:17 +03:00
gnezim 483e034e63 fix: update routing to show online board at /, fix component tests
- Changed root route (/) to show OnlineBoardStartPage directly instead of redirecting
- Updated component tests to visit /components route
- Fixed button component test assertions (CSS checks and disabled state verification)
2026-04-06 00:31:58 +03:00
gnezim f08a86c453 feat: implement NotFoundPage (404) and fix Cypress config
- Implement NotFoundPage with required test IDs for 404 error page
- Add data-testids: error-404-title, error-message, back-button, home-link, error-heading
- Fix Cypress baseUrl config from 3003/components to localhost:3001
- Clean up .js files in pages directory (keep only .tsx)
- App passes Task 1.1 requirements (404 page structure complete)
2026-04-06 00:18:31 +03:00
gnezim 14bcc960b4 feat: create shared component stubs and fix SCSS circular imports
- Created 8 core shared components: Card, PageLayout, PageTabs, DayTabs, CalendarInput, TimeSelector, CityAutocomplete, SearchHistory, PageLoader, PageEmptyList
- Fixed SCSS circular dependency: removed self-imports in components/modules-components/index.scss and modules-pages/index.scss
- Updated page exports to use feature-based implementations
- Added City interface to CityAutocomplete with mock city data
- App now loads at localhost:3001 without SCSS errors
2026-04-06 00:07:38 +03:00
gnezim 64c919afa0 fix: correct SCSS relative import depths for nested components
- Fixed all component SCSS files using single '../' to use '../../' to properly reach root styles directory
- Replaced incorrect './src/styles/' absolute-style paths with proper relative paths
- Fixed page directory imports with incorrect depth (../../../pages to ../../)
- All files in src/styles/components/* now use '../../' to reach framework, colors, variables, etc
- All files in src/styles/pages/* now use correct relative depth to reach sibling directories
- 86 SCSS files corrected
2026-04-05 23:00:38 +03:00
gnezim c4b02ccb6b fix: convert all SCSS absolute imports to relative paths for Vite compatibility 2026-04-05 22:56:21 +03:00
gnezim c4e7519d6f fix: convert SCSS absolute imports to relative paths for Vite compatibility 2026-04-05 22:55:14 +03:00
gnezim 399a35faa6 chore: add missing background image asset to React app 2026-04-05 22:49:12 +03:00
gnezim 7c59864680 feat: create ComponentShowcase page for e2e component testing 2026-04-05 22:06:35 +03:00
gnezim 4b2a03fb18 feat: create ScheduleFlightDetailsPage with schedule flight details 2026-04-05 21:22:01 +03:00
gnezim 0dc6732947 feat: create ScheduleSearchPage with week day tabs and flight schedule display 2026-04-05 21:20:17 +03:00
gnezim 8c68d31e12 feat: create ScheduleFilter with date range and day selection 2026-04-05 21:18:26 +03:00
gnezim dfd267f852 feat: create ScheduleStartPage and schedule feature structure 2026-04-05 21:16:40 +03:00
gnezim 50a5442d79 feat: create FlightDetailsPage with full flight information 2026-04-05 21:14:54 +03:00
gnezim 49c696610c feat: implement BoardFlightBody with detailed flight information 2026-04-05 21:13:12 +03:00
gnezim 0366db1a2f feat: implement BoardFlightHeader with full flight details display 2026-04-05 21:11:56 +03:00
gnezim 3e2d37887e feat: create BoardSearchResult with flight list and header/body components 2026-04-05 21:10:03 +03:00
gnezim 573b99ea1c feat: create OnlineBoardSearchPage for search results 2026-04-05 21:08:44 +03:00
gnezim 92ffc2a103 feat: create OnlineBoardFilter with FlightNumber and Route filters 2026-04-05 21:07:08 +03:00
gnezim e53ac746a4 feat: create OnlineBoardStartPage component 2026-04-05 21:04:45 +03:00
gnezim fa43a9e026 feat: create SearchHistory accordion component 2026-04-05 21:03:05 +03:00
gnezim 0d7f6c0954 feat: create CityAutocomplete airport search component 2026-04-05 21:02:00 +03:00
gnezim fd054bc688 feat: create TimeSelector time range component 2026-04-05 20:59:02 +03:00
gnezim 9bc930fe91 feat: create CalendarInput date picker component 2026-04-05 20:57:57 +03:00
gnezim 3225ecd1fa feat: create DayTabs date carousel component 2026-04-05 20:56:42 +03:00
gnezim b5bdd1e18d feat: create PageEmptyList empty state component 2026-04-05 20:55:06 +03:00
gnezim 9ba5c9cbf0 feat: create PageLoader spinner component 2026-04-05 20:54:12 +03:00
gnezim 509e1afb20 feat: create PageTabs navigation component 2026-04-05 20:52:24 +03:00
gnezim 12c2b36051 feat: create PageLayout two-column component 2026-04-05 20:51:09 +03:00
gnezim d8d2de43eb feat: create Card component wrapper 2026-04-05 20:50:09 +03:00
gnezim 9e0f661708 chore: update React router to match Angular app routes 2026-04-05 20:48:32 +03:00
gnezim 1ce307d61f chore: setup i18next configuration with 9 language support 2026-04-05 20:45:19 +03:00
gnezim 8ba79f64e8 chore: copy i18n translation files and SVG sprite from Angular 2026-04-05 20:44:16 +03:00
gnezim 344e310b58 chore: add API proxy configuration for flights API 2026-04-05 20:43:29 +03:00
gnezim d30071b756 Tasks 11-15: Implement CityAutocomplete, OnlineBoard, and BackstopJS setup
Tasks completed:
- Task 11: Create CityAutocomplete React component with debounced search
- Task 12: Implement OnlineBoard page with search and details components
- Task 13: Create BackstopJS baseline configuration for Angular
- Task 14: Create BackstopJS test configuration for React
- Task 15: Create full-validation.sh script for e2e and visual regression testing

All components built and tested successfully.
2026-04-05 19:23:52 +03:00
gnezim 95f49d7deb Task 9: Create React Router configuration with lazy loading and route structure 2026-04-05 19:20:23 +03:00
gnezim 4b34a78890 Task 8: Create Modal, Tabs, and DatePicker components
- Modal component with size variants (small, medium, large)
- Tabs component with active state management and onChange callback
- DatePicker component with calendar interface and date selection
- All components implement BEM naming convention
- All components include data-testid attributes for testing
- SCSS files provide complete styling for each component
- Index files export components and types for easy importing
2026-04-05 19:20:06 +03:00
gnezim 9356945d93 Task 10: Create test helper files and base test templates
- Create helpers directory structure
- Add api-helpers.ts with authentication and API mocking functions
- Add ui-helpers.ts with common UI interaction utilities
- Add data-helpers.ts with test data generators
- Create base.spec.ts as reusable test template
- Update support/index.ts to import and expose helper modules globally
2026-04-05 19:19:49 +03:00
gnezim 8d562dd55c feat: create Input component with label, error, and helper text support 2026-04-05 19:19:43 +03:00
gnezim f8120c154f styles: copy global and component SCSS files from Angular to React
- Copy 30+ global SCSS files to apps/react/src/styles/
- Copy 75+ component SCSS files to apps/react/src/styles/components/
- Organize by feature: online-board, schedule, flights-map, popular-requests, shared, toolkit
- Organize pages styles: board, schedule, adaptive
- Update main.tsx to import styles entry point
2026-04-05 19:17:57 +03:00