Create and manage K6 load tests for REST and GraphQL APIs. Use when creating load tests, writing K6 scripts, testing API performance, debugging load test failures, or setting up performance monitoring. Covers REST endpoints, GraphQL operations, data generation, IRI handling, configuration patterns, and performance troubleshooting.
This skill provides guidance for creating and managing K6 load tests for both REST and GraphQL APIs following VilnaCRM ecosystem patterns.
createResource.js, getResource.js, updateResource.js, deleteResource.jsgraphQLCreateResource.js, graphQLGetResource.js, etc.__ITER % N)setup() function to create test dependenciesteardown() function to clean up test datatests/Load/scripts/# All load tests (REST + GraphQL)
make load-tests
# Specific load levels
make smoke-load-tests # Minimal load (2-5 VUs, 10s)
make average-load-tests # Normal load (10-20 VUs, 2-3 min)
make stress-load-tests # High load (30-80 VUs, 5-15 min)
make spike-load-tests # Extreme load (100-200 VUs, 1-3 min)
# Individual script
make execute-load-tests-script scenario=createCustomer
make execute-load-tests-script scenario=graphQLCreateCustomer
# List all available scenarios
./tests/Load/get-load-test-scenarios.sh
# Create in tests/Load/scripts/
touch tests/Load/scripts/yourOperation.js # REST
touch tests/Load/scripts/graphQLYourOperation.js # GraphQL
See Supporting Files below for detailed templates and examples.
Update tests/Load/config.json.dist with script parameters.
# Test with smoke load first
make smoke-load-tests
# Verify cleanup
# Check no test data remains in database
| Level | VUs | Duration | Success Rate | Purpose | | ----------- | ------- | ------------ | ------------ | --------------------------------- | | Smoke | 2-5 | 10 seconds | 100% | Basic functionality verification | | Average | 10-20 | 2-3 minutes | >99% | Normal traffic simulation | | Stress | 30-80 | 5-15 minutes | >95% | Find breaking points | | Spike | 100-200 | 1-3 minutes | >90% | Test resilience under sudden load |
// Random operations - unpredictable results
const operation = Math.random();
// Hardcoded test data
const email = 'test@example.com'; // Will cause conflicts
// Missing cleanup in teardown()
// Deterministic operations
const operationIndex = __ITER % 3;
// Dynamic test data
const email = `test_${Date.now()}_${randomString(6)}@example.com`;
// Proper cleanup
export function teardown(data) {
// Clean up all created resources
}
config.json.distgraphQL prefix for GraphQL tests./tests/Load/get-load-test-scenarios.shFor detailed patterns, examples, and reference documentation:
This skill ensures consistent, professional, and effective load testing for both REST and GraphQL APIs across all VilnaCRM projects.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer