A realistic testable web application designed for QA students to practice both manual and automated testing. This React-based application simulates a waste management system for African cities with intentional flaws for testing practice.
This application is specifically designed to provide QA learners with a realistic testing environment that includes:
- Multiple user flows and pages
- Form validation and error handling
- UI accessibility issues
- Boundary testing scenarios
- Filtering and sorting functionality
- Simulated admin workflows
- Responsive design testing
- Intentional bugs and inconsistencies
-
Home Page (
/)- Waste pickup request form
- Form validation (with intentional flaws)
- Success message display
-
Dashboard (
/dashboard)- Table of all pickup requests
- Filtering by status and location
- Status badges and responsive design
-
Feedback Page (
/feedback)- Report missed pickups
- Feedback submission form
- Request ID validation
-
Awareness Page (
/awareness)- Educational content about waste management
- Images with missing alt-text (accessibility testing)
- Responsive grid layout
-
Admin Panel (
/admin)- Request management interface
- Status update functionality
- Data persistence testing
- Frontend: React 18.2.0
- Routing: React Router DOM 6.3.0
- Styling: CSS3 with responsive design
- Data Storage: localStorage (no backend required)
- Testing: React Testing Library (included)
- Node.js (version 14 or higher)
- npm or yarn package manager
-
Clone or download the project
# If using git git clone <repository-url> cd cleancity-waste-scheduler # Or extract the downloaded files cd cleancity-waste-scheduler
-
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser
- Navigate to
http://localhost:3000 - The application should load with the home page
- Navigate to
npm run buildThis creates a build folder with optimized production files ready for deployment.
- Run
npm run buildto create the production build - Go to Netlify and sign up/login
- Drag the
buildfolder to the Netlify dashboard - Your site will be deployed automatically
- Push your code to GitHub/GitLab
- Connect your repository to Netlify
- Set build command:
npm run build - Set publish directory:
build - Deploy automatically on every push
- Test Case: Submit form without required fields
- Expected: Error messages should appear
- Bug: Date field doesn't show validation error
- Test Case: Filter by "Eldoret" location
- Expected: Show only Eldoret requests
- Bug: Shows Nairobi requests instead
- Test Case: Use screen reader on Awareness page
- Expected: Images should have descriptions
- Bug: Missing alt-text on all images
- Test Case: Use "Mark as Scheduled" button in Admin panel
- Expected: UI should update immediately
- Bug: UI doesn't refresh (check localStorage)
- Test Case: Enter very long text in form fields
- Expected: Should handle gracefully
- Bug: May cause layout issues
The project includes React Testing Library for automated testing:
npm testThe application comes with pre-filled mock data:
- Sample Requests: REQ001-REQ005 with various statuses
- Sample Feedback: FB001 for REQ004
- Locations: Nairobi, Kisumu, Mombasa, Eldoret
- Waste Types: General, Recyclable, Hazardous
The application is designed to be mobile-friendly with:
- Responsive navigation
- Mobile-optimised tables
- Flexible grid layouts
- Touch-friendly buttons
- Functional & Non Functional Testing: Form validation, CRUD operations
- UI Testing: Responsive design, accessibility
- Integration Testing: Data flow between components
- Regression Testing: Status updates and data persistence
- Boundary Testing: Input validation and edge cases
- Risk Based Testing: Security validation or prevention
- Browser DevTools: For debugging and responsive testing
- Screen Readers: For accessibility testing
- Postman/Insomnia: For API testing (if backend added)
- Selenium/Cypress: For automated testing
- Lighthouse: For performance and accessibility audits
This project is created for educational purposes and remains the property of the academy at PLP.
For questions about the application or testing scenarios:
- Check the testing notes in each component
- Review the intentional flaws documentation
- Use browser DevTools for debugging
- Test with different browsers and devices
Happy Testing! 🧪✨