281 lines
7.4 KiB
Markdown
281 lines
7.4 KiB
Markdown
# AutoBackups - Playwright E2E Testing Integration
|
|
|
|
## Overview
|
|
|
|
This project now includes comprehensive end-to-end (E2E) testing using **Playwright**, integrated with the Model Context Protocol (MCP) for automated testing of the AutoBackups Flask application.
|
|
|
|
## Features
|
|
|
|
- 🎭 **Cross-browser testing** (Chromium, Firefox, WebKit)
|
|
- 🔧 **Automated setup** with the Flask development server
|
|
- 📊 **Comprehensive reporting** with HTML reports and screenshots
|
|
- 🐛 **Debug mode** for test development
|
|
- 🚀 **CI/CD ready** with GitHub Actions integration
|
|
- 📱 **Responsive testing** across different viewport sizes
|
|
- 🔌 **API testing** for backend endpoints
|
|
|
|
## Test Suites
|
|
|
|
### 1. Dashboard Tests (`dashboard.spec.js`)
|
|
- Main dashboard loading and rendering
|
|
- Navigation elements verification
|
|
- Responsive design testing across different viewports
|
|
- Visual regression testing with screenshots
|
|
|
|
### 2. Configuration Tests (`configuration.spec.js`)
|
|
- Configuration page accessibility
|
|
- Form elements detection and interaction
|
|
- Data submission workflow
|
|
- Input validation testing
|
|
|
|
### 3. API Tests (`api.spec.js`)
|
|
- Health check endpoints
|
|
- Backup API endpoints testing
|
|
- CORS headers validation
|
|
- POST request handling
|
|
|
|
### 4. Backup Workflow Tests (`backup-workflow.spec.js`)
|
|
- Backup status display
|
|
- Manual backup trigger functionality
|
|
- Project list visualization
|
|
- Backup scheduling interface
|
|
- Progress and logging display
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
1. **Conda environment** with AutoBackups dependencies:
|
|
```bash
|
|
conda env create -f environment.yml
|
|
conda activate autobackups
|
|
```
|
|
|
|
2. **Node.js dependencies**:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. **Playwright browsers**:
|
|
```bash
|
|
npx playwright install
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
#### Windows (PowerShell)
|
|
```powershell
|
|
# Run all tests
|
|
.\run-tests.bat
|
|
|
|
# Run tests in headed mode (visible browser)
|
|
.\run-tests.bat headed
|
|
|
|
# Run specific test file
|
|
.\run-tests.bat specific tests/e2e/dashboard.spec.js
|
|
|
|
# Debug mode
|
|
.\run-tests.bat debug
|
|
|
|
# Show test report
|
|
.\run-tests.bat report
|
|
```
|
|
|
|
#### Linux/Mac (Bash)
|
|
```bash
|
|
# Make script executable
|
|
chmod +x run-tests.sh
|
|
|
|
# Run all tests
|
|
./run-tests.sh
|
|
|
|
# Run tests in headed mode
|
|
./run-tests.sh headed
|
|
|
|
# Run specific test file
|
|
./run-tests.sh specific tests/e2e/dashboard.spec.js
|
|
|
|
# Debug mode
|
|
./run-tests.sh debug
|
|
|
|
# Show test report
|
|
./run-tests.sh report
|
|
```
|
|
|
|
#### Direct NPX Commands
|
|
```bash
|
|
# Run all tests
|
|
npx playwright test
|
|
|
|
# Run tests with visible browser
|
|
npx playwright test --headed
|
|
|
|
# Run specific test file
|
|
npx playwright test tests/e2e/dashboard.spec.js
|
|
|
|
# Run in debug mode
|
|
npx playwright test --debug
|
|
|
|
# Generate and show HTML report
|
|
npx playwright show-report
|
|
```
|
|
|
|
## Test Configuration
|
|
|
|
### Playwright Config (`playwright.config.js`)
|
|
|
|
Key configurations:
|
|
- **Base URL**: `http://localhost:5000` (Flask dev server)
|
|
- **Timeout**: 30 seconds per test
|
|
- **Retries**: 2 retries on CI, 0 locally
|
|
- **Browsers**: Chromium, Firefox, WebKit
|
|
- **Web Server**: Automatically starts Flask app before tests
|
|
|
|
### Test Data and Helpers
|
|
|
|
The `tests/e2e/helpers/test-helpers.js` file provides:
|
|
- Common test utilities
|
|
- Form filling helpers
|
|
- Screenshot utilities
|
|
- Console logging setup
|
|
- Test data generators
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
├── tests/
|
|
│ └── e2e/
|
|
│ ├── dashboard.spec.js # Dashboard functionality tests
|
|
│ ├── configuration.spec.js # Configuration page tests
|
|
│ ├── api.spec.js # API endpoint tests
|
|
│ ├── backup-workflow.spec.js # Backup workflow tests
|
|
│ ├── setup.js # Global test setup
|
|
│ └── helpers/
|
|
│ └── test-helpers.js # Test utilities
|
|
├── playwright.config.js # Playwright configuration
|
|
├── package.json # Node.js dependencies
|
|
├── run-tests.sh # Linux/Mac test runner
|
|
├── run-tests.bat # Windows test runner
|
|
├── playwright-report/ # HTML test reports
|
|
└── test-results/ # Test artifacts and screenshots
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
You can customize test behavior with environment variables:
|
|
|
|
```bash
|
|
# Custom base URL
|
|
export PLAYWRIGHT_BASE_URL=http://localhost:8080
|
|
|
|
# CI mode
|
|
export CI=true
|
|
|
|
# Debug mode
|
|
export DEBUG=pw:api
|
|
```
|
|
|
|
## Continuous Integration
|
|
|
|
### GitHub Actions
|
|
|
|
The project includes a GitHub Actions workflow (`.github/workflows/e2e-tests.yml`) that:
|
|
|
|
1. Sets up Python 3.12 with Conda
|
|
2. Installs dependencies
|
|
3. Runs Playwright tests
|
|
4. Uploads test artifacts
|
|
5. Generates test reports
|
|
|
|
### Running in CI
|
|
|
|
Tests automatically run on:
|
|
- Push to `main` or `develop` branches
|
|
- Pull requests to `main` or `develop` branches
|
|
|
|
## Test Reports
|
|
|
|
### HTML Report
|
|
- Interactive report with test results
|
|
- Screenshots and videos of failures
|
|
- Trace viewer for debugging
|
|
- Access via: `npx playwright show-report`
|
|
|
|
### JSON Report
|
|
- Machine-readable test results
|
|
- Located at: `test-results/playwright-results.json`
|
|
- Useful for CI/CD integrations
|
|
|
|
## Best Practices
|
|
|
|
### Writing Tests
|
|
|
|
1. **Use Page Object Model** for complex interactions
|
|
2. **Wait for elements** properly with `page.waitForSelector()`
|
|
3. **Take screenshots** for visual verification
|
|
4. **Use data-testid** attributes for reliable element selection
|
|
5. **Test across browsers** by running full suite
|
|
|
|
### Debugging Tests
|
|
|
|
1. **Headed mode**: See browser interactions in real-time
|
|
2. **Debug mode**: Step through tests with Playwright Inspector
|
|
3. **Console logs**: Browser console messages are captured
|
|
4. **Screenshots**: Automatic screenshots on failures
|
|
5. **Video recording**: Videos of failed test runs
|
|
|
|
### Performance
|
|
|
|
1. **Parallel execution**: Tests run in parallel by default
|
|
2. **Selective testing**: Run specific test files during development
|
|
3. **CI optimization**: Different configurations for CI vs local development
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **Port conflicts**: Ensure Flask app port (5000) is available
|
|
2. **Conda environment**: Make sure `autobackups` environment is activated
|
|
3. **Browser installation**: Run `npx playwright install` if browsers are missing
|
|
4. **Timeouts**: Increase timeout in `playwright.config.js` if needed
|
|
|
|
### Debug Commands
|
|
|
|
```bash
|
|
# Check Playwright installation
|
|
npx playwright --version
|
|
|
|
# Verify browser installation
|
|
npx playwright install --dry-run
|
|
|
|
# Test configuration
|
|
npx playwright test --list
|
|
|
|
# Debug specific test
|
|
npx playwright test tests/e2e/dashboard.spec.js --debug
|
|
```
|
|
|
|
## Integration with MCP
|
|
|
|
This Playwright setup is designed to work seamlessly with Model Context Protocol (MCP):
|
|
|
|
1. **Automated test generation** based on application features
|
|
2. **Dynamic test adaptation** as the application evolves
|
|
3. **Intelligent test selection** based on code changes
|
|
4. **Report analysis** and recommendation generation
|
|
|
|
## Next Steps
|
|
|
|
1. **Expand test coverage** for specific AutoBackups features
|
|
2. **Add visual regression testing** with baseline screenshots
|
|
3. **Integrate performance testing** with Playwright's performance APIs
|
|
4. **Set up test data management** for more complex scenarios
|
|
5. **Add accessibility testing** with axe-playwright integration
|
|
|
|
## Resources
|
|
|
|
- [Playwright Documentation](https://playwright.dev/docs/intro)
|
|
- [Playwright Best Practices](https://playwright.dev/docs/best-practices)
|
|
- [Playwright CI/CD](https://playwright.dev/docs/ci)
|
|
- [VS Code Playwright Extension](https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright)
|