fluxloop bundles
Create and manage test bundles.
Synopsis
fluxloop bundles [command] [options]
Description
The bundles command creates and manages test bundles. Bundles group related personas, inputs, and scenarios together for organized testing.
Commands
fluxloop bundles create
Create a new test bundle.
Usage:
fluxloop bundles create [options]
Options:
--name \<name\>: Bundle name (required)--description <desc>: Bundle description--personas <file>: Personas file to include--inputs <file>: Inputs file to include--scenarios <pattern>: Scenario files to include (supports glob patterns)--output <path>: Output file path (default: .fluxloop/bundles/<name>.yaml)
Examples:
# Create bundle with personas and inputs
fluxloop bundles create \
--name "password-reset-suite" \
--description "Complete password reset test suite" \
--personas personas/auth-personas.yaml \
--inputs inputs/password-reset.yaml
# Create bundle with scenarios
fluxloop bundles create \
--name "onboarding-suite" \
--scenarios "scenarios/onboarding-*.yaml"
# Create comprehensive bundle
fluxloop bundles create \
--name "full-auth-suite" \
--personas personas/auth-personas.yaml \
--inputs inputs/auth-inputs.yaml \
--scenarios "scenarios/auth-*.yaml"
Interactive Flow:
$ fluxloop bundles create
Create New Bundle
Bundle name: customer-support-suite
Description: Complete customer support test scenarios
Select components to include:
Personas:
☑ frustrated-customer
☑ tech-savvy-user
☑ elderly-customer
☐ VIP-customer
Inputs:
☑ .fluxloop/inputs/password-reset.yaml (10 inputs)
☑ .fluxloop/inputs/account-issues.yaml (15 inputs)
☑ .fluxloop/inputs/billing.yaml (8 inputs)
Scenarios:
☑ password-reset
☑ account-creation
☑ order-tracking
☐ refund-request
✅ Bundle created: customer-support-suite
Bundle saved to: .fluxloop/bundles/customer-support-suite.yaml
Contents:
• 3 personas
• 33 inputs
• 3 scenarios
Next steps:
• Run the bundle: fluxloop test --bundle customer-support-suite
• Share with team: fluxloop sync upload
fluxloop bundles list
List all available bundles.
Usage:
fluxloop bundles list [options]
Options:
--json: Output in JSON format
Examples:
# List all bundles
fluxloop bundles list
# List in JSON format
fluxloop bundles list --json
Output:
Test Bundles
┌──────────────────────────────────────────────────────────────────┐
│ customer-support-suite │
│ Complete customer support test scenarios │
│ Created: Jan 15, 2024 │
│ Components: 3 personas, 33 inputs, 3 scenarios │
│ Last run: 2 hours ago | Success: 87% │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ authentication-suite │
│ All authentication-related tests │
│ Created: Jan 10, 2024 │
│ Components: 5 personas, 50 inputs, 8 scenarios │
│ Last run: 1 day ago | Success: 92% │
└──────────────────────────────────────────────────────────────────┘
Total: 2 bundles
fluxloop bundles show
Display bundle details.
Usage:
fluxloop bundles show \<name\> [options]
Options:
--json: Output in JSON format
Examples:
# Show bundle details
fluxloop bundles show customer-support-suite
# Get details in JSON format
fluxloop bundles show customer-support-suite --json
Output:
Bundle: customer-support-suite
Description: Complete customer support test scenarios
Created: Jan 15, 2024
Updated: Jan 15, 2024
Personas (3):
• frustrated-customer
• tech-savvy-user
• elderly-customer
Inputs (33):
From password-reset.yaml:
• "I can't login! This is ridiculous!" (frustrated-customer)
• "I've been trying for 30 minutes" (frustrated-customer)
• "Getting error 500 when resetting" (tech-savvy-user)
... 7 more
From account-issues.yaml:
• "My account is locked" (frustrated-customer)
• "Can't update my email" (tech-savvy-user)
... 13 more
From billing.yaml:
• "Wrong charge on my card" (frustrated-customer)
... 7 more
Scenarios (3):
1. password-reset
• 10 inputs across 3 personas
• 4 evaluation criteria
2. account-creation
• 15 inputs across 3 personas
• 6 evaluation criteria
3. order-tracking
• 8 inputs across 3 personas
• 5 evaluation criteria
Test Runs: 15 total
• Last 30 days: 15 runs
• Success rate: 87%
• Avg duration: 12.5s
File: .fluxloop/bundles/customer-support-suite.yaml
fluxloop bundles update
Update an existing bundle.
Usage:
fluxloop bundles update \<name\> [options]
Options:
--add-persona <file>: Add persona file--add-input <file>: Add input file--add-scenario <pattern>: Add scenario file(s)--remove-persona \<name\>: Remove persona--remove-input <file>: Remove input file--remove-scenario \<name\>: Remove scenario
Examples:
# Add scenario to bundle
fluxloop bundles update customer-support-suite \
--add-scenario "scenarios/refund-request.yaml"
# Remove persona from bundle
fluxloop bundles update customer-support-suite \
--remove-persona "VIP-customer"
# Add multiple inputs
fluxloop bundles update customer-support-suite \
--add-input "inputs/new-issues.yaml"
fluxloop bundles delete
Delete a bundle.
Usage:
fluxloop bundles delete \<name\> [options]
Options:
--force: Skip confirmation prompt
Examples:
# Delete bundle (with confirmation)
fluxloop bundles delete old-suite
# Delete without confirmation
fluxloop bundles delete old-suite --force
fluxloop bundles export
Export a bundle for sharing.
Usage:
fluxloop bundles export \<name\> [options]
Options:
--output <path>: Output file path (default: <name>.bundle.tar.gz)--format <format>: Export format (tar.gz, zip, directory)
Examples:
# Export as tar.gz
fluxloop bundles export customer-support-suite
# Export as zip
fluxloop bundles export customer-support-suite \
--format zip \
--output support-tests.zip
# Export as directory
fluxloop bundles export customer-support-suite \
--format directory \
--output ./exported-bundle
fluxloop bundles import
Import a bundle.
Usage:
fluxloop bundles import <file> [options]
Options:
--name \<name\>: New bundle name (default: original name)
Examples:
# Import bundle
fluxloop bundles import customer-support-suite.bundle.tar.gz
# Import with new name
fluxloop bundles import support-tests.zip \
--name "imported-support-suite"
Bundle File Format
Bundles are defined in YAML format:
# .fluxloop/bundles/customer-support-suite.yaml
name: customer-support-suite
description: Complete customer support test scenarios
version: 1.0.0
created: "2024-01-15T10:00:00Z"
updated: "2024-01-15T14:30:00Z"
personas:
sources:
- file: personas/auth-personas.yaml
personas:
- frustrated-customer
- tech-savvy-user
- elderly-customer
inputs:
sources:
- file: inputs/password-reset.yaml
count: 10
- file: inputs/account-issues.yaml
count: 15
- file: inputs/billing.yaml
count: 8
scenarios:
sources:
- file: scenarios/password-reset.yaml
- file: scenarios/account-creation.yaml
- file: scenarios/order-tracking.yaml
configuration:
parallel: true
max_concurrency: 5
timeout: 30000
retry_failed: true
retry_count: 2
metadata:
tags:
- customer-support
- authentication
- e-commerce
owner: support-team
last_run: "2024-01-15T14:30:00Z"
success_rate: 0.87
Best Practices
1. Organize by Feature
Create bundles for specific features:
# Authentication bundle
fluxloop bundles create \
--name "auth-suite" \
--scenarios "scenarios/auth-*.yaml"
# Billing bundle
fluxloop bundles create \
--name "billing-suite" \
--scenarios "scenarios/billing-*.yaml"
# E2E bundle
fluxloop bundles create \
--name "e2e-suite" \
--scenarios "scenarios/*.yaml"
2. Version Control
Keep bundles in version control:
# .gitignore
# Keep bundles
!.fluxloop/bundles/
# Ignore exported bundles
*.bundle.tar.gz
*.bundle.zip
3. Use Meaningful Names
✅ Good:
• password-reset-complete-suite
• onboarding-flow-tests
• critical-path-scenarios
❌ Bad:
• bundle1
• test_suite
• temp
4. Document Bundle Purpose
name: critical-path-suite
description: |
Critical path test scenarios that must pass before deployment.
Includes:
- User authentication
- Order placement
- Payment processing
- Order tracking
Run this suite:
- Before every deployment
- After major changes to auth or checkout
- Daily in CI/CD
Success criteria: 100% pass rate required
5. Optimize for CI/CD
configuration:
# Run tests in parallel for speed
parallel: true
max_concurrency: 10
# Short timeout for CI
timeout: 20000
# Don't retry in CI (fail fast)
retry_failed: false
# Generate JUnit XML for CI
output_format: junit
output_file: test-results.xml
Bundle Templates
Smoke Test Bundle
Quick validation of core functionality:
name: smoke-test-suite
description: Fast smoke tests for core functionality
personas:
- typical-user
inputs:
- file: inputs/happy-path.yaml
scenarios:
- login
- basic-operation
- logout
configuration:
parallel: true
timeout: 10000
Regression Test Bundle
Comprehensive test coverage:
name: regression-suite
description: Full regression test suite
personas:
sources:
- file: personas/all-personas.yaml
inputs:
sources:
- file: inputs/**/*.yaml
scenarios:
sources:
- file: scenarios/**/*.yaml
configuration:
parallel: true
max_concurrency: 20
timeout: 60000
retry_failed: true
Performance Test Bundle
Focus on performance metrics:
name: performance-suite
description: Performance and load testing
scenarios:
- file: scenarios/high-load.yaml
configuration:
parallel: true
max_concurrency: 100
timeout: 5000
metrics:
- response_time
- token_usage
- cost_per_interaction
thresholds:
max_response_time: 3000
max_cost: 0.05
Troubleshooting
Bundle Not Found
❌ Error: Bundle 'my-suite' not found
Available bundles:
• customer-support-suite
• authentication-suite
Run 'fluxloop bundles list' to see all bundles.
Missing Components
❌ Error: Missing components in bundle
Bundle: customer-support-suite
Missing:
• personas/auth-personas.yaml
• scenarios/refund-request.yaml
Solution:
• Ensure all referenced files exist
• Update bundle to remove missing components
• Or restore missing files
Invalid Bundle Format
❌ Error: Invalid bundle file format
File: .fluxloop/bundles/my-suite.yaml
Line 10: 'scenarios' must be an array
Solution:
• Check YAML syntax
• Refer to bundle format documentation
Related Commands
fluxloop test: Run tests with bundlesfluxloop personas: Manage personasfluxloop inputs: Manage inputsfluxloop scenarios: Manage scenarios
See Also
- Testing Workflows: End-to-end testing guide
- CI/CD Integration: Using bundles in CI/CD