# K6 Load Tests Load tests for NowChess using K6 framework. ## Installation ```bash # Install K6 - https://k6.io/docs/getting-started/installation/ # macOS brew install k6 # Ubuntu/Debian sudo apt-get install k6 # Windows (Chocolatey) choco install k6 ``` ## Running Tests ### Smoke Test One user, basic journey validation. ```bash k6 run simulations/smokeTest.js ``` ### Load Test Ramp up to max users over duration. ```bash BASE_URL=http://localhost:8080 MAX_USERS=5 RAMP_DURATION=60 k6 run simulations/loadTest.js ``` ### Stress Test Incrementally increase users in steps. ```bash BASE_URL=http://localhost:8080 \ START_USERS=2 \ USERS_INCREMENT=2 \ STEPS=2 \ STEP_DURATION=30 \ RAMP_DURATION=10 \ k6 run simulations/stressTest.js ``` ### Spike Test Baseline → spike → baseline. ```bash BASE_URL=http://localhost:8080 \ BASELINE_USERS=2 \ BASELINE_DURATION=20 \ SPIKE_USERS=15 \ k6 run simulations/spikeTest.js ``` ### Endurance Test Constant load over long duration. ```bash BASE_URL=http://localhost:8080 \ CONCURRENT_USERS=3 \ DURATION=300 \ k6 run simulations/enduranceTest.js ``` ## Environment Variables - `BASE_URL` - API base URL (default: `http://localhost:8080`) - `AUTH_TOKEN` - Optional Bearer token for global auth - Test-specific variables documented in each simulation file ## Output Results summary printed to console. For detailed metrics, use K6 output options: ```bash # JSON output k6 run --out json=results.json simulations/smokeTest.js # Cloud output (requires K6 Cloud account) k6 run --out cloud simulations/smokeTest.js # InfluxDB + Grafana k6 run --out influxdb simulations/smokeTest.js ``` ## Structure - `config.js` - Shared configuration, headers, checks - `scenarios/` - Reusable scenario definitions - `simulations/` - Test simulations with load profiles