mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-02-23 18:56:05 -05:00
96 lines
2.9 KiB
Markdown
96 lines
2.9 KiB
Markdown
# UI Testing Setup
|
|
|
|
## Selenium Tests
|
|
|
|
The UI test suite uses Selenium with Chrome/Chromium for browser automation and comprehensive testing.
|
|
|
|
### First Time Setup (Devcontainer)
|
|
|
|
The devcontainer includes Chromium and chromedriver. If you need to reinstall:
|
|
|
|
```bash
|
|
# Install Chromium and chromedriver
|
|
apk add --no-cache chromium chromium-chromedriver nss freetype harfbuzz ca-certificates ttf-freefont font-noto
|
|
|
|
# Install Selenium
|
|
pip install selenium
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Run all UI tests
|
|
pytest test/ui/
|
|
|
|
# Run specific test file
|
|
pytest test/ui/test_ui_dashboard.py
|
|
|
|
# Run specific test
|
|
pytest test/ui/test_ui_dashboard.py::test_dashboard_loads
|
|
|
|
# Run with verbose output
|
|
pytest test/ui/ -v
|
|
|
|
# Run and stop on first failure
|
|
pytest test/ui/ -x
|
|
```
|
|
|
|
### What Gets Tested
|
|
|
|
- ✅ **API Backend endpoints** - All Flask API endpoints work correctly
|
|
- ✅ **Page loads** - All pages load without fatal errors (Dashboard, Devices, Network, Settings, etc.)
|
|
- ✅ **Dashboard metrics** - Charts and device counts display
|
|
- ✅ **Device operations** - Add, edit, delete devices via UI
|
|
- ✅ **Network topology** - Device relationship visualization
|
|
- ✅ **Multi-edit bulk operations** - Bulk device editing
|
|
- ✅ **Maintenance tools** - CSV export/import, database cleanup
|
|
- ✅ **Settings configuration** - Settings page loads and saves
|
|
- ✅ **Notification system** - User notifications display
|
|
- ✅ **JavaScript error detection** - No console errors on page loads
|
|
|
|
### Test Organization
|
|
|
|
Tests are organized by page/feature:
|
|
|
|
- `test_ui_dashboard.py` - Dashboard metrics and charts
|
|
- `test_ui_devices.py` - Device listing and CRUD operations
|
|
- `test_ui_network.py` - Network topology visualization
|
|
- `test_ui_maintenance.py` - Database tools and CSV operations
|
|
- `test_ui_multi_edit.py` - Bulk device editing
|
|
- `test_ui_settings.py` - Settings configuration
|
|
- `test_ui_notifications.py` - Notification system
|
|
- `test_ui_plugins.py` - Plugin management
|
|
|
|
### Troubleshooting
|
|
|
|
**"Could not start Chromium"**
|
|
- Ensure Chromium is installed: `which chromium`
|
|
- Check chromedriver: `which chromedriver`
|
|
- Verify versions match: `chromium --version` and `chromedriver --version`
|
|
|
|
**"API token not available"**
|
|
- Check `/data/config/app.conf` exists and contains `API_TOKEN=`
|
|
- Restart backend services if needed
|
|
|
|
**Tests skip with "Chromium browser not available"**
|
|
- Chromium not installed or not in PATH
|
|
- Run: `apk add chromium chromium-chromedriver`
|
|
|
|
### Writing New Tests
|
|
|
|
See [TESTING_GUIDE.md](TESTING_GUIDE.md) for comprehensive examples of:
|
|
- Button click testing
|
|
- Form submission
|
|
- AJAX request verification
|
|
- File download testing
|
|
- Multi-step workflows
|
|
|
|
**Browser launch fails**
|
|
- Alpine Linux uses system Chromium
|
|
- Make sure chromium package is installed: `apk info chromium`
|
|
|
|
**Tests timeout**
|
|
- Increase timeout in test functions
|
|
- Check if backend is running: `ps aux | grep python3`
|
|
- Verify frontend is accessible: `curl http://localhost:20211`
|