60 lines
1.9 KiB
Markdown
60 lines
1.9 KiB
Markdown
# FRE-4931: Load Testing Job Implementation
|
|
|
|
## Overview
|
|
Added load testing job to GitHub Actions CI pipeline for FrenoCorp.
|
|
|
|
## Implementation Details
|
|
|
|
### New Files Created
|
|
|
|
1. **`.github/workflows/load-testing.yml`**
|
|
- Triggers on PR pushes to main (load-test paths)
|
|
- Scheduled daily at 2 AM UTC
|
|
- Two jobs: `load-test` and `performance-baseline`
|
|
- Uses Node.js 20 with caching
|
|
|
|
2. **`scripts/load-test/package.json`**
|
|
- Load testing dependencies (k6, axios)
|
|
- Scripts for running tests and baseline comparison
|
|
|
|
3. **`scripts/load-test/run-load-test.js`**
|
|
- Main load test runner
|
|
- Configurable concurrency and duration via environment variables
|
|
- Tests multiple API endpoints concurrently
|
|
- Reports success rate and average response time
|
|
|
|
4. **`scripts/load-test/compare-baseline.js`**
|
|
- Compares current performance against baseline
|
|
- Fails PR if performance degrades beyond threshold
|
|
- Creates initial baseline if none exists
|
|
|
|
5. **`scripts/load-test/reports/baseline.json`**
|
|
- Initial performance baseline
|
|
- Avg response time: 100ms
|
|
- Success rate: 99%
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `API_BASE_URL` | https://api.frenocorp.com | Target API endpoint |
|
|
| `LOAD_TEST_CONCURRENCY` | 10 | Concurrent users |
|
|
| `LOAD_TEST_DURATION` | 60 | Test duration in seconds |
|
|
| `BASELINE_THRESHOLD` | 0.1 | Max acceptable performance degradation (10%) |
|
|
|
|
### Workflow Integration
|
|
|
|
The load testing workflow:
|
|
- Runs on PRs that modify load test files
|
|
- Executes scheduled daily at 2 AM UTC
|
|
- Uploads results as artifacts for 7 days
|
|
- Compares against baseline on PRs
|
|
- Fails if performance degrades beyond threshold
|
|
|
|
## Next Steps
|
|
|
|
- [ ] Add actual API endpoint definitions based on FrenoCorp API spec
|
|
- [ ] Configure GitHub secrets for production API URL
|
|
- [ ] Set up baseline monitoring dashboard
|
|
- [ ] Add Slack notifications for performance regressions
|