lightweight-browser-load-tester
Version:
A lightweight load testing tool using real browsers for streaming applications with DRM support
163 lines (131 loc) • 8.08 kB
Markdown
# Changelog
All notable changes to the Lightweight Browser Load Tester will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Initial release of Lightweight Browser Load Tester
- Real browser testing using Playwright with Chromium
- DRM support for Widevine, PlayReady, and FairPlay
- Parameter injection for dynamic API request modification
- Comprehensive monitoring and metrics collection
- Prometheus and OpenTelemetry metrics export
- Kubernetes deployment support for local and cloud environments
- Multi-cloud support (AWS EKS, Google GKE, Azure AKS)
- Docker containerization with security hardening
- Horizontal Pod Autoscaler (HPA) for Kubernetes deployments
- Comprehensive documentation and examples
- CLI interface with configuration validation
- Programmatic API for Node.js applications
- **Request body injection support** for JSON and form data requests
- **Advanced request filtering** with streaming-only mode, allowed/blocked URL patterns
- **Comprehensive request ingestion guide** with detailed examples and troubleshooting
- **Enhanced parameter randomization** with built-in functions, array selection, and file-based data
- **Intelligent request body modification** with automatic JSON/form data detection
- **File-based data caching** for improved performance with external data sources
- **Request body injection examples** demonstrating complex JSON structure injection
- **Browser localStorage pre-population** for authenticated session simulation with multi-domain support
- **localStorage randomization support** with same functions as request parameters for unique user data per browser instance
- **Selective request targeting** with URL pattern and HTTP method filtering for parameter injection
- **Precise parameter control** allowing different parameters for different endpoints and request types
### Features
#### Core Functionality
- **Browser-based load testing**: Authentic user behavior simulation using real Chromium browsers
- **DRM license testing**: Built-in support for major DRM systems with metrics collection
- **Resource optimization**: Efficient memory and CPU usage with configurable limits
- **Real-time monitoring**: Live progress tracking with detailed metrics display
- **Flexible configuration**: YAML/JSON configuration files with environment variable overrides
#### Request Ingestion and Parameter Injection
- **URL-based selective targeting**: Primary feature for applying parameters to specific requests using URL patterns
- **HTTP method filtering**: Target specific HTTP methods (GET, POST, PUT, DELETE) for precise control
- **Multi-target parameter injection**: Support for headers, query parameters, and request bodies
- **JSON request body modification**: Automatic parsing and modification of JSON request bodies
- **Form data support**: URL-encoded form data parameter injection
- **Advanced randomization**: Built-in random functions (UUID, numbers, strings, timestamps)
- **Array-based selection**: Random selection from predefined arrays in variable context
- **File-based data sources**: Random selection from external text files with caching
- **Variable substitution**: Dynamic template variables with session and global scopes
- **Intelligent error handling**: Graceful fallback for unsupported body formats
- **Performance optimization**: File caching and efficient template processing
- **Wildcard and regex patterns**: Flexible URL pattern matching for precise request targeting
#### Kubernetes Integration
- **Multi-environment support**: Local (Minikube, Kind, Docker Desktop) and cloud deployments
- **Cloud provider optimization**: Specific configurations for AWS EKS, Google GKE, and Azure AKS
- **Scalability**: Horizontal Pod Autoscaler with CPU and memory-based scaling
- **Security**: Non-root containers, RBAC, and security contexts
- **Observability**: Prometheus metrics endpoints and service monitors
#### Metrics and Monitoring
- **Prometheus integration**: RemoteWrite support with configurable batching
- **OpenTelemetry support**: OTLP export with multiple protocols
- **Comprehensive metrics**: Request rates, response times, DRM performance, resource usage
- **Error tracking**: Detailed error logging and categorization
- **Real-time dashboards**: Live progress display with key performance indicators
#### Developer Experience
- **CLI interface**: Intuitive command-line tool with comprehensive options
- **Configuration validation**: Built-in validation with helpful error messages
- **Example configurations**: Pre-built configurations for common scenarios
- **Comprehensive documentation**: Detailed guides for all features and deployment scenarios
- **Troubleshooting support**: Extensive troubleshooting guide with common solutions
### Documentation
- Complete API documentation with TypeScript definitions
- Kubernetes deployment guide for all major cloud providers
- Configuration guide with best practices and examples
- **Request Ingestion Guide**: Comprehensive guide for parameter injection and request modification
- **Request Filtering Guide**: Advanced guide for streaming-only mode and URL pattern filtering
- **Parameter Randomization Guide**: Detailed guide for dynamic parameter generation
- Troubleshooting guide with common issues and solutions
- Contributing guidelines for open source development
### Examples
- **Organized examples directory**: All configuration examples moved to dedicated `examples/` folder
- **[basic-load-test.json](examples/basic-load-test.json)**: Basic load testing configuration
- **[drm-testing.yaml](examples/drm-testing.yaml)**: DRM testing with Widevine configuration
- **[selective-parameters.yaml](examples/selective-parameters.yaml)**: URL-based selective parameter targeting (RECOMMENDED)
- **[request-body-injection.yaml](examples/request-body-injection.yaml)**: Comprehensive request body modification examples
- **[randomization-features.yaml](examples/randomization-features.yaml)**: Advanced randomization with built-in functions, arrays, and files
- **Sample data files**: Organized data files in `examples/data/` for immediate use
- **Examples documentation**: Comprehensive README with usage instructions and best practices
### Infrastructure
- Docker multi-stage build with Alpine Linux base
- Kubernetes manifests with Kustomize overlays
- CI/CD pipeline configuration (GitHub Actions ready)
- Security scanning and vulnerability assessment
- Automated testing and quality assurance
## [1.0.0] - 2024-01-XX
### Added
- Initial public release
- All core features and functionality
- Complete documentation suite
- Kubernetes deployment capabilities
- Multi-cloud provider support
---
## Release Notes Template
### [Version] - YYYY-MM-DD
#### Added
- New features and capabilities
#### Changed
- Changes to existing functionality
#### Deprecated
- Features that will be removed in future versions
#### Removed
- Features that have been removed
#### Fixed
- Bug fixes and corrections
#### Security
- Security improvements and vulnerability fixes
---
## Contributing
When contributing to this project, please:
1. Follow the [Contributing Guidelines](CONTRIBUTING.md)
2. Update this changelog with your changes
3. Use the format specified above
4. Include relevant details about breaking changes
5. Reference related issues and pull requests
## Versioning Strategy
- **Major versions (X.0.0)**: Breaking changes, major new features
- **Minor versions (X.Y.0)**: New features, backward compatible
- **Patch versions (X.Y.Z)**: Bug fixes, security updates
## Links
- [GitHub Repository](https://github.com/YOUR_USERNAME/lightweight-browser-load-tester)
- [Issues](https://github.com/YOUR_USERNAME/lightweight-browser-load-tester/issues)
- [Pull Requests](https://github.com/YOUR_USERNAME/lightweight-browser-load-tester/pulls)
- [Releases](https://github.com/YOUR_USERNAME/lightweight-browser-load-tester/releases)