1.0.0 ⢠Published 4 months ago
k6-typescript-template v1.0.0
K6 Performance Testing Boilerplate
A modern, TypeScript-based boilerplate for creating and running performance tests with k6. This boilerplate provides a structured way to write, organize, and execute load tests with environment-specific configurations.
Features
- šÆ TypeScript support
- š Environment-specific configurations (local, staging, production)
- š ļø CLI tool for generating new test files
- š Default performance thresholds
- š Hot reloading during development
- š Type definitions for better developer experience
- šØ Customizable test scenarios
Prerequisites
- Node.js (v14 or higher)
- k6 (latest version)
- npm or yarn
Installation
Clone the repository:
git clone https://github.com/yourusername/k6-boilerplate.git
Install dependencies:
npm install
Build the project:
npm run build
Project Structure
āāā src/
ā āāā config.ts # Environment configurations
ā āāā endpoints/ # Test files
ā ā āāā example.test.ts
ā ā āāā new-endpoint.test.ts
ā āāā lib/ # Shared utilities
ā ā āāā baseRequest.ts
ā ā āāā testBuilder.ts
ā āāā types/ # TypeScript type definitions
ā āāā index.ts
āāā scripts/
ā āāā create-test.js # Test file generator
āāā dist/ # Compiled JavaScript files
Usage
Creating a New Test
Use the CLI tool to generate a new test file:
npm run create-test -- "user-login" -m POST -e "/api/auth/login"
Options:
-m, --method
: HTTP method (GET, POST, PUT, DELETE, PATCH)-e, --endpoint
: API endpoint path
Running Tests
Run in the local environment:
npm run test:local dist/endpoints/example.test.js
Run in the staging environment:
npm run test:staging dist/endpoints/example.test.js
Run in the production environment:
npm run test:prod dist/endpoints/example.test.js
Development Mode
Watch for changes and rebuild:
npm run build:watch
Configuration
Environment Configuration
Edit src/config.ts
to modify environment-specific settings:
const environments = {
local: {
baseUrl: 'http://localhost:3000',
defaultHeaders: {
'Accept': 'application/json',
// ... other headers
},
defaultThresholds: {
'http_req_duration': ['p(95)<500', 'p(99)<1000'],
// ... other thresholds
}
},
// ... staging and production configs
};
Test Configuration
Each test can be customized with the following options:
export let options = createTestConfig({
name: 'Test Name',
request: {
method: 'GET',
endpoint: `${config.baseUrl}/path`,
headers: config.defaultHeaders,
},
thresholds: config.defaultThresholds,
stages: [
{ duration: '10s', target: 10 },
{ duration: '30s', target: 100 },
{ duration: '10s', target: 0 },
],
tags: {
testType: 'api'
}
});
Available Scripts
npm test
- Run k6 testsnpm run test:local
- Run tests in local environmentnpm run test:staging
- Run tests in staging environmentnpm run test:prod
- Run tests in production environmentnpm run build
- Build the projectnpm run build:watch
- Build and watch for changesnpm run create-test
- Create a new test file
Type Definitions
The boilerplate includes TypeScript definitions for:
- Request configurations
- Test configurations
- Load profiles
- Threshold configurations
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- k6 - Modern load testing tool
- TypeScript - TypeScript language
- webpack - Module bundler
1.0.0
4 months ago