A comprehensive test automation solution featuring a React TypeScript frontend and Node.js backend with full test coverage and modern CI/CD practices.
- Node.js 18+ and npm (or yarn)
# Clone and setup everything in one go
git clone <repository-url>
cd remtest
npm run setup
# 1. Install dependencies
npm run install:all
# 2. Setup Playwright browsers
cd client && npx playwright install --with-deps
# 3. Start both servers
npm run dev
- Frontend: React app running on http://localhost:3000
- Backend: API server running on http://localhost:3001
- Tests: Ready to run with full coverage
- Login: Use
admin
/password
- API Tests: 85.36% coverage, 23/23 tests passing β
- UI Tests: 18/18 E2E tests passing β
- Total: 41 tests with comprehensive coverage
# Run all tests
npm run test:all
# Individual test suites
npm run test:api # API tests only
npm run test:client # UI tests only
# Code quality
npm run lint
βββ api/ # Node.js Express backend
β βββ src/ # Source code
β βββ tests/ # API tests (Jest + Supertest)
β βββ coverage/ # Test coverage reports
βββ client/ # React TypeScript frontend
β βββ src/ # Source code
β βββ tests/ # UI tests (Playwright)
βββ .github/ # CI/CD workflows
- Triggers: Pull requests and pushes to main/master
- Purpose: Full CI pipeline with linting, testing, and building
- Steps:
- Lint code with ESLint
- Run API tests with Jest
- Build React client
- Run E2E tests with Playwright
- Parallel Execution: API and UI tests run simultaneously
- Coverage Reporting: Integrated with Codecov
- Test Artifacts: Screenshots and reports on failures
- Health Checks: Reliable server startup validation
- Dependency Caching: Optimized for fast builds
- Lint Workflow: ESLint checks on both API and client
- Auto-Fix Workflow: Automated code formatting and commits
- JWT-based authentication with bcrypt password hashing
- Session persistence using localStorage
- Default credentials:
admin
/password
- Comprehensive error handling and validation
- CRUD Operations: Create, Read, Update, Delete todos
- Fields: Title (required), description (optional), completion status
- Features: Edit in-place, bulk operations, creation timestamps
- User Isolation: Todos are user-specific and secure
- Frontend: React 18, TypeScript, CSS
- Backend: Node.js, Express, JWT, bcrypt, UUID
- Testing: Playwright, Jest, Supertest
- Quality: ESLint, TypeScript compiler
- CI/CD: GitHub Actions, npm scripts
- Authentication: Login, logout, token validation
- Todo CRUD: All endpoints with error scenarios
- Security: JWT middleware, user isolation
- Error Handling: Invalid requests, unauthorized access
- Authentication: Login/logout workflows
- Todo Management: Full CRUD operations
- User Experience: Form validation, state management
- Edge Cases: Empty states, error handling
- Data Persistence: In-memory storage (resets on server restart)
- Single User: Designed for single-user scenarios
- No Real Database: Uses in-memory arrays
- No Concurrent Support: Single-user application design
- No real database integration
- No concurrent user support
- No offline functionality
- No file upload capabilities
# Development
npm run dev # Start both servers
npm run start:api # Start backend only
npm run start:client # Start frontend only
# Testing
npm run test:api # API tests only
npm run test:client # UI tests only
npm run test:all # All tests
npm run test:ci # CI-optimized tests
# Code Quality
npm run lint # Check code quality
npm run lint:fix # Auto-fix issues
npm run build # Build production client
# Setup
npm run setup # Full project setup
npm run install:all # Install all dependencies
- Test Execution: ~10 seconds for full suite
- API Response Time: <100ms average
- UI Load Time: <2 seconds
- Coverage: >85% API, comprehensive UI testing
- Parallel Workers: 6 for UI tests
- Add real database integration
- Implement concurrent user support
- Add performance testing
- Add accessibility testing
- Implement real-time features
- Add API documentation generation
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
npm run test:all
- Ensure linting passes:
npm run lint
- Submit a pull request
MIT License - see LICENSE file for details