This commit improves the testing workflow, CI/CD documentation, and user experience: ## CI/CD Improvements: - Add comprehensive testing strategy documentation to CD release workflow - Document workflow triggers and testing approach in ci-comprehensive.yml - Update CI/CD documentation with testing workflow details ## UX Enhancements: - Add localStorage persistence for PWA install prompt dismissal - Prevent repeated PWA install prompts after user dismisses - Add dismiss button (×) to PWA install toast notification ## Dashboard Features: - Add edit and delete actions to recent time entries table - Include delete confirmation dialogs for time entries - Add notes field to "Start Timer" modal - Improve table layout with actions column ## Documentation: - Create TESTING_WORKFLOW_STRATEGY.md for comprehensive testing guidelines - Add QUICK_REFERENCE_TESTING.md for quick testing reference - Document changes in CHANGES_SUMMARY_TESTING_WORKFLOW.md - Update README_CI_CD_SECTION.md with workflow details ## Other Changes: - Update setup.py configuration - Enhance task templates (create/edit/view) with improved UI These changes improve developer experience with better testing documentation and enhance user experience with smarter PWA prompts and dashboard functionality.
3.8 KiB
CI/CD Pipeline
🚀 Automated Testing & Deployment
TimeTracker includes a comprehensive CI/CD pipeline that automates testing, building, and deployment.
Features
✅ Multi-level Testing - Smoke, unit, integration, security, and database tests
✅ Parallel Execution - Fast feedback with parallel test jobs
✅ Multi-platform Builds - AMD64 and ARM64 Docker images
✅ Automated Releases - Semantic versioning and GitHub releases
✅ Security Scanning - Bandit and Safety vulnerability checks
✅ Code Quality - Black, Flake8, and isort validation
Quick Start
# Install test dependencies
pip install -r requirements.txt -r requirements-test.txt
# Run tests
pytest -m smoke # Quick smoke tests (< 1 min)
pytest -m unit # Unit tests (2-5 min)
pytest # Full test suite (15-30 min)
Docker Images
Development builds are automatically published to GitHub Container Registry:
# Pull latest development build
docker pull ghcr.io/{owner}/{repo}:develop
# Pull stable release
docker pull ghcr.io/{owner}/{repo}:latest
# Run container
docker run -p 8080:8080 ghcr.io/{owner}/{repo}:latest
Creating Releases
Releases are automatically created when you push to main or create a version tag:
# Create a release
git tag v1.2.3
git push origin v1.2.3
# Or merge to main
git checkout main
git merge develop
git push
The CI/CD pipeline will automatically:
- Run full test suite
- Perform security audit
- Build multi-platform Docker images
- Create GitHub release with deployment manifests
- Publish to container registry
Documentation
- 📚 Testing Strategy: TESTING_WORKFLOW_STRATEGY.md - Complete testing workflow guide
- ⚡ Quick Reference: QUICK_REFERENCE_TESTING.md - Quick commands and workflows
- 🏗️ Build Configuration: BUILD_CONFIGURATION_SUMMARY.md - Build and deployment setup
- 🚀 Quick Start: CI_CD_QUICK_START.md - Getting started guide
Test Organization
Tests are organized using pytest markers:
| Marker | Purpose | Duration |
|---|---|---|
smoke |
Critical fast tests | < 1 min |
unit |
Isolated component tests | 2-5 min |
integration |
Component interaction tests | 5-10 min |
security |
Security vulnerability tests | 3-5 min |
database |
Database tests | 5-10 min |
CI/CD Workflows
🔍 Pull Requests (Comprehensive Testing)
- Runs on: Every PR to main or develop
- Duration: ~30-40 minutes
- Tests:
- Smoke tests (fast, critical)
- Unit tests (parallel)
- Integration tests (with PostgreSQL)
- Security tests
- Code quality checks
- Docker build test
- Full test suite with PostgreSQL (PRs to main only)
- Output: Test summary comment on PR
- Purpose: Catch issues BEFORE merge ⚠️
🔧 Development Builds
- Runs on: Push to develop branch
- Duration: ~20-25 minutes
- Tests: Quick smoke tests only
- Output:
ghcr.io/{owner}/{repo}:develop - Creates: Development release with deployment manifest
🚀 Production Releases
- Runs on: Push to main or version tag
- Duration: ~40-60 minutes
- Tests: Security audit only (full tests already ran on PR)
- Output:
ghcr.io/{owner}/{repo}:latest,v1.2.3, etc. - Creates: GitHub release with manifests and changelog
- Purpose: Build and publish (tests already passed on PR)
📝 Note: Full test suite runs on PRs, not releases. This ensures issues are caught and fixed BEFORE code reaches main.
Monitoring
View build status and metrics:
- GitHub Actions
- Container Registry
- Coverage reports (if Codecov configured)
Note: Add this section to your main README.md file