1.9 KiB
1.9 KiB
FRE-4931: Load Testing Job Implementation
Overview
Added load testing job to GitHub Actions CI pipeline for FrenoCorp.
Implementation Details
New Files Created
-
.github/workflows/load-testing.yml- Triggers on PR pushes to main (load-test paths)
- Scheduled daily at 2 AM UTC
- Two jobs:
load-testandperformance-baseline - Uses Node.js 20 with caching
-
scripts/load-test/package.json- Load testing dependencies (k6, axios)
- Scripts for running tests and baseline comparison
-
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
-
scripts/load-test/compare-baseline.js- Compares current performance against baseline
- Fails PR if performance degrades beyond threshold
- Creates initial baseline if none exists
-
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