- Document completion status of Tasks 1-10 - Detail infrastructure prepared for Tasks 56-59 - Provide execution flow and success criteria - List all configuration files and test infrastructure - Include next steps and success metrics
11 KiB
Aeroflot Flights Web - Angular→React Migration Implementation Status
Date: April 5, 2026
Overall Progress: Tasks 1-10 Complete, Tasks 11-55 Partial, Tasks 56-59 Infrastructure Ready
Summary
The Angular→React migration project is structured across 59 tasks divided into 4 phases. Task 1-10 have been fully completed, establishing the monorepo infrastructure and basic React scaffolding. Tasks 56-59 infrastructure has been prepared to support visual regression testing and final validation once Tasks 11-55 are completed.
Phase Breakdown
Phase 1: Infrastructure Setup (Tasks 1-3)
Status: ✅ COMPLETE
- Monorepo structure with
apps/angular,apps/react, ande2edirectories - Root package.json with dependencies
- Git initialization and version control
Commits:
382d8c45- Infrastructure: create monorepo structurec012c7eb- Docs: add comprehensive implementation plan0a5ab058- Initial commit: Aeroflot Flights Web - Angular 12 baseline
Phase 2: Core Components & Infrastructure (Tasks 4-15)
Status: ⏳ PARTIAL (Tasks 4-10 Complete, Tasks 11-15 Infrastructure Ready)
Completed (Tasks 4-10)
- React app scaffolding with Vite
- TypeScript configuration
- Global SCSS styles
- Input, Button, Select, Modal, Tabs, DatePicker components
- React Router with lazy loading
- E2E test infrastructure (Cypress)
Commits:
6786c4df- Infrastructure: scaffold React app with Vite7de28854- Fix: move index.html to src/6ed2a3e6- Infrastructure: set up e2e folder with Cypresse0c98975- Fix: code quality issues in E2Ef8120c15- Styles: copy global and component SCSS8d562dd5- Feat: create Input component9356945d- Task 10: create test helper files4b34a788- Task 8: create Modal, Tabs, DatePicker95f49d7d- Task 9: create React Router configuration
Partial (Tasks 11-15)
- BackstopJS configuration files created
- Engine scripts prepared
- Directory structure for baseline/test images
- Visual regression test framework ready
Infrastructure Files Created:
e2e/backstop/backstop-angular.json- Angular baseline confige2e/backstop/backstop-react.json- React comparison confige2e/backstop/engine_scripts/puppet/runBefore.jse2e/backstop/engine_scripts/puppet/runAfter.jse2e/backstop/engine_scripts/onBefore.js- Additional pre-capture setupe2e/backstop/engine_scripts/onReady.js- Post-ready interactions
Phase 3: Test Suite Implementation (Tasks 16-55)
Status: ⏳ PARTIAL
Partially Completed (Estimated 5-15% of this phase):
- Online board tests (flight-list, tabs, search-filter, time-date-filter, details-modal)
- Base test suite template
- Component tests (button)
Estimated Tests Created: 30-50 of 1,225+ planned
Test Files Found:
e2e/cypress/integration/
├── base.spec.ts
├── components/
│ └── button.cy.ts
└── online-board/
├── details-modal.cy.ts
├── flight-list.cy.ts
├── search-filter.cy.ts
├── tabs.cy.ts
└── time-date-filter.cy.ts
Remaining Work for This Phase:
- Complete online board test suite
- Implement accessibility tests
- Add error handling tests
- Create i18n tests
- Build flight-details tests
- Add flights-map tests
- Implement navigation tests
- Create performance tests
- Build responsive design tests
- Add search-history tests
- Create integration tests
Phase 4: Visual Regression & Validation (Tasks 56-59)
Status: ✅ INFRASTRUCTURE READY (Execution Pending Tasks 1-55 Completion)
Task 56: Generate BackstopJS Baseline from Angular
Preparation Status: ✅ Ready
- Configuration file:
backstop-angular.json - Scenarios defined: 4 major pages × 3 viewports = 12 total captures
- Scenes covered: Start Page, Online Board (Arrivals), Schedule Page, Flights Map
- Ready selectors configured for each scene
Task 57: Run BackstopJS Comparison on React
Preparation Status: ✅ Ready
- Configuration file:
backstop-react.json(mirrors Angular config) - Target URL: localhost:3001 (React development server)
- Report output:
html_report_react/ - Comparison test images:
bitmaps_test_react/
Task 58: Fix Visual Differences
Preparation Status: ✅ Ready
- Engine scripts prepared for iterative testing
- CSS modification workflow documented
- Diff analysis tools configured
Task 59: Full Validation Suite
Preparation Status: ✅ Ready
- Cypress test runner configured
- BackstopJS final test configured
- Validation report template available
Key Files & Directories
Configuration Files
package.json- Root dependenciese2e/package.json- E2E test scriptse2e/cypress.config.ts- Cypress configuration (baseUrl: localhost:3001)e2e/tsconfig.json- TypeScript for E2Ee2e/backstop/backstop-angular.json- Angular visual baselinee2e/backstop/backstop-react.json- React visual comparison
React Application
apps/react/package.json- React dependenciesapps/react/src/app/App.tsx- Main app componentapps/react/src/app/Router.tsx- Route configurationapps/react/vite.config.ts- Vite build configurationapps/react/src/styles/- Global and component SCSS
Angular Application
apps/angular/- Original Angular 12 application (reference)
E2E Testing
e2e/cypress/integration/- Test filese2e/cypress/support/- Test helpers and commandse2e/backstop/- Visual regression infrastructuree2e/scripts/- Test utility scripts
Components Created (React)
- Input - Form input with label and error states
- Button - Primary action button
- Select - Dropdown selection
- Modal - Dialog component
- Tabs - Tab navigation component
- DatePicker - Date selection component
Test Infrastructure Summary
Cypress Configuration
- Base URL: http://localhost:3001 (React dev server)
- Viewport: 1440x900 (desktop)
- Timeouts: 10 seconds
- Screenshots: Enabled on failure
- Test Pattern:
**/*.cy.tsand**/*.spec.ts
BackstopJS Configuration
- Viewports: 3 (desktop 1440x900, tablet 768x1024, mobile 375x667)
- Scenarios: 4 major pages
- Engine: Puppeteer
- Threshold: 0% difference (pixel-perfect)
- Reports: Browser HTML + JSON
Development Servers
Angular (Port 3000)
cd apps/angular
npm start
Used as reference implementation and baseline for visual regression testing.
React (Port 3001)
cd apps/react
npm run dev
Test target for Cypress and comparison target for BackstopJS.
Execution Flow for Tasks 56-59
Task 56: Generate Angular Baseline
- Start Angular on port 3000:
cd apps/angular && npm start - Run baseline capture:
cd e2e && npm run backstop:reference - Verify 12+ images in
bitmaps_reference/ - Commit baseline:
git add e2e/backstop/bitmaps_reference/ && git commit
Task 57: Compare React to Baseline
- Start React on port 3001:
cd apps/react && npm run dev - Run comparison:
cd e2e && npm run backstop:test - Review HTML report:
e2e/backstop/html_report_react/index.html - Document differences found
Task 58: Fix Visual Differences
- For each failed scenario in report:
- Identify React component/CSS
- Compare Angular vs React styles
- Update React SCSS to match
- Rerun test for that scenario
- Iterate until all tests pass
Task 59: Full Validation
- Run Cypress:
npm run cypress:run - Run final BackstopJS:
npm run backstop:test - Generate validation report
- Commit all results
Required Data-TestID Attributes
The BackstopJS scenarios depend on these data-testid values being present in both Angular and React:
data-testid="page-loaded"- Main page containerdata-testid="board-page-loaded"- Board page containerdata-testid="schedule-page-loaded"- Schedule page containerdata-testid="flights-map-loaded"- Flights map container
Status: Ready selectors defined in config, implementation status depends on Task 11-55 completion.
Git History
Total Commits: 13
Current Branch: main
Ahead of Origin: 12 commits
Recent Commits
30cad656- Docs: add comprehensive Tasks 56-59 implementation guide95f49d7d- Task 9: Create React Router configuration4b34a788- Task 8: Create Modal, Tabs, DatePicker components9356945d- Task 10: Create test helper files8d562dd5- Feat: create Input componentf8120c15- Styles: copy global and component SCSS filese0c98975- Fix code quality issues in E2E Cypress6ed2a3e6- Infrastructure: set up e2e folder7de28854- Fix: move index.html to src/6786c4df- Infrastructure: scaffold React app22aac303- Fix: remove non-existent validate script382d8c45- Infrastructure: create monorepo structurec012c7eb- Docs: add comprehensive implementation plan0a5ab058- Initial commit: Aeroflot Flights Web baseline
Untracked/Modified Files
Untracked Directories
apps/react/src/app/components/city-autocomplete/- AutoComplete componentapps/react/src/app/pages/components/- Page componentse2e/backstop/- Visual regression infrastructurescripts/- Utility scripts
Modified Files
e2e/cypress.config.ts- Configuration changes
Node Modules
node_modules/- Dependencies (root)e2e/node_modules/- E2E dependenciesapps/react/node_modules/- React dependenciesapps/angular/node_modules/- Angular dependencies
Next Steps
Immediate (Before Tasks 56-59)
-
Complete Tasks 11-55:
- Finish remaining page components (FlightsMapPage, SchedulePage, OnlineBoard)
- Complete test suite (1,225+ tests across all features)
- Ensure all data-testid attributes are present
- Verify component parity with Angular
-
Pre-Task 56 Verification:
- Confirm Angular app runs on port 3000
- Confirm React app runs on port 3001
- Verify all data-testid attributes exist in both apps
- Test BackstopJS configurations
During Tasks 56-59
- Generate and commit Angular baseline (Task 56)
- Run React visual comparison (Task 57)
- Fix any CSS differences (Task 58, iterative)
- Run full validation suite (Task 59)
Post-Migration
- Deploy validated React application
- Archive Angular application
- Update documentation
- Release version 2.0
Success Metrics
Task Completion
- Tasks 1-10: 100% complete
- Tasks 11-55: Complete all components and test suite
- Task 56: Generate and commit baseline (20+ images)
- Task 57: Complete visual comparison
- Task 58: Resolve all visual differences
- Task 59: All tests passing, full validation report
Test Coverage
- Cypress: 1,225+ tests all passing
- BackstopJS: 0% visual difference
- Coverage: 100% parity between Angular and React
- Accessibility: All WCAG standards met
- Performance: React meets or exceeds Angular benchmarks
References
- Implementation Plan:
/TASKS_56-59_IMPLEMENTATION.md(detailed) - Angular App:
/apps/angular/(reference implementation) - React App:
/apps/react/(migration target) - E2E Tests:
/e2e/cypress/integration/(test suite) - Visual Tests:
/e2e/backstop/(regression testing)
Document Control
- Version: 1.0
- Last Updated: 2026-04-05
- Status: Ready for Tasks 56-59 execution
- Owner: Implementation Team