BerryCrush
Getting Started
Quick Start
Prerequisites
Installation
Gradle (Kotlin DSL)
Maven
Creating Your First Test
1. Create an OpenAPI specification
2. Create a scenario file
3. Create bindings
4. Create a test class
5. Run the test
Using Conditional Assertions
Next Steps
Tutorial
Overview
Project Setup
Writing Scenarios
Basic Scenario
Scenario Outline with Examples
Advanced Scenarios
Conditional Assertions
Auto-Generated Tests
Basic Usage
Test Types
Context Variables
Path Parameter Tests
Running Tests
Generating Reports
Spring Boot Integration
Conclusion
Features
Scenario File Syntax
File Types
Basic Scenario
Step Keywords
API Calls
Call Parameters
Request Body Syntax
External Body Files
Assertions
Status Code Assertions
Body-Level Assertions
JSONPath Assertions
Negating Assertions with
not
Variable Extraction
Escaping Variable Syntax
Conditional Assertions
Basic Syntax
Condition Types
Nested Conditionals
The
fail
Action
Tags
Built-in Tags
Tag Filtering
Features and Background
Basic Feature
Feature with Background
Tagged Features
Parameterized Scenarios (Outline)
Fragment Files
Parameters Block
File-Level Parameters
Feature-Level Parameters
Supported Parameters
Auto-Generated Tests
Basic Syntax
Example
Context Variables
Comments
Custom Steps
Defining Custom Steps
Step Patterns
Using Custom Steps
Configuration
Custom Assertions
Defining Custom Assertions
Using Custom Assertions
Configuration
Best Practices
See Also
Auto-Generated Tests
Overview
Basic Syntax
Example
Invalid Tests
Security Tests
SQL Injection
Cross-Site Scripting (XSS)
Path Traversal
Command Injection
LDAP Injection
Parameter Locations
Path Parameter Example
Context Variables
Using Context Variables in Assertions
Test Display Names
Excluding Test Types
Available Test Types to Exclude
Custom Providers
Creating a Custom Invalid Test Provider
Creating a Custom Security Test Provider
Registering Custom Providers
Provider Properties
Dependencies
Best Practices
Integration with JUnit
Limitations
See Also
Kotlin DSL
Overview
Quick Start
Creating a Test Suite
Single Spec
Multi-Spec
Defining Scenarios
Basic Structure
Scenario with Tags
API Calls
Basic Call
With Query Parameters
With Headers
With Request Body
Authentication Shortcuts
Multi-Spec Calls
Variable Extraction
Cross-Scenario Variable Sharing
Assertions
Status Code
Body Assertions
Header Assertions
Schema Validation
Scenario Outlines
Fragments (Reusable Steps)
JUnit Integration
Complete Example
API Reference
BerryCrushSuite
ScenarioScope
StepScope
CallScope
JUnit 5 Integration with BerryCrushExtension
Basic Usage
Spring Boot with Dynamic Port
Nested Test Classes
Supported Parameter Types
See Also
Standalone Runner
Overview
Basic Usage
Running Multiple Scenarios
Running a Single Scenario
Progress Callbacks
Manual Lifecycle Control
Cross-Scenario Variable Sharing
Plugin Integration
Fragment Support
Loading Scenarios from Files
Complete Example
CI/CD Integration
API Reference
ScenarioRunner
RunResult
ScenarioResult
See Also
File-Level Parameters
Syntax
Supported Parameters
Configuration Overrides
Header Overrides
Auto-Assertion Overrides
Use Cases
Environment-Specific Settings
Cross-Scenario Variable Sharing
Testing with Debug Logging
Programmatic Usage
JUnit Engine Integration
Configuration Priority
Notes
See Also
Plugins
Plugin Architecture
Lifecycle Events
Context Objects
Result Objects
Priority
Creating a Custom Plugin
Basic Plugin
Stateful Plugin
Registering Plugins
Via Annotation
By Name
Programmatic Registration
Built-in Plugins
Report Plugins
Best Practices
Example: Retry Plugin
Custom Steps
Step Binding Mechanisms
Annotation-Based Steps
Pattern Placeholders
Registering Annotation-Based Steps
Registration API
Kotlin DSL
Type-Safe Parameters
Package Scanning
Spring Integration
Step Context
StepContext API
Variable Scopes
Best Practices
Example: Complete Step Library
Custom Assertions
Defining Custom Assertions
AssertionResult
AssertionContext
Registering Custom Assertions
Assertion vs Step
Using Custom Assertions in Scenario Files
Sample Code Reference
Reporting
Report Formats
Text Report
Console Report (Colored)
JSON Report
JUnit XML Report
XML Report
Configuring Reports
Via Annotation
Via Bindings
Report Output Locations
CI/CD Integration
GitHub Actions
Jenkins
GitLab CI
Custom Report Plugins
Best Practices
Multi-Spec OpenAPI Support
Configuring Multiple Specs
Default Spec
Additional Named Specs
Using Named Specs in Scenarios
Default Operations
Named Spec Operations
Example: Separating Auth from Main API
Auto-Resolution
Multi-Host API Testing
Configuring Per-Spec Base URLs
Cross-Service Scenarios
File-Level Base URL Overrides
Best Practices
Fragments
Creating Fragments
Fragment Structure
Using Fragments
Fragment Discovery
Default Discovery
Custom Fragment Locations
Directory Structure
Variables in Fragments
Multi-Spec in Fragments
Example: Complete Test Suite
Best Practices
Spring Boot Integration
Setup
Configuration
Test Class
Bindings Class
Multi-Spec Support
Custom Steps with Spring Injection
How It Works
Architecture
Best Practices
Troubleshooting
HTTP Logging
Enabling Logging
File-Level Parameters
Programmatic Configuration
Log Output Format
Default Format
Compact Format
Custom Logging
Custom Logger Implementation
Custom Formatter
Global Logger Factory
DefaultHttpLogFormatter Options
Masked Header Names
Logger Types
Guides
Migration Guide
From Cucumber
Feature Files
Step Definitions
From REST Assured
From Karate
Migration Checklist
Before Migration
During Migration
After Migration
Getting Help
Troubleshooting
Test Discovery Issues
Tests Not Found
Scenario Files Not Loaded
Configuration Issues
Bindings Not Found
OpenAPI Spec Not Found
HTTP Request Issues
Connection Refused
Timeout Errors
SSL/TLS Errors
Assertion Failures
JSONPath Not Matching
Schema Validation Fails
Spring Integration Issues
Bindings Not Injected
Context Not Available
Plugin Issues
Plugin Not Executing
Report Not Generated
Getting Help
Reference
API Documentation
BerryCrush
Index
Index