mrapids 0.1.31

Your OpenAPI, but executable
Documentation
# Phase 4: Advanced Testing Features

## Overview
Phase 4 extends the collections testing capabilities with advanced assertion types, validation, and flow control features.

## Features to Implement

### 1. Variable Validation
- Validate required variables before execution
- Type checking for variables
- Default values for missing variables
- Error on undefined variable usage

### 2. Advanced Assertions
- **Regex Matching**: Pattern matching for strings
- **JSONPath Queries**: Query nested JSON with JSONPath expressions
- **Schema Validation**: Validate against JSON Schema
- **Contains/Not Contains**: Check for presence of values
- **Length Assertions**: For arrays and strings
- **Type Assertions**: Verify data types

### 3. Performance Assertions
- Response time thresholds
- Size limits for responses
- Throughput measurements
- Performance trends tracking

### 4. Conditional Execution
- Skip requests based on previous results
- Run requests only if conditions are met
- Early exit on critical failures
- Dynamic request ordering

### 5. Request Hooks
- Pre-request scripts for setup
- Post-request scripts for cleanup
- Transform request data
- Custom validation logic

## Implementation Plan

### Step 1: Variable Validation
```yaml
# Example collection with validation
name: validated-collection
variables:
  required:
    - api_key
    - environment
  defaults:
    timeout: 30
    retries: 3
  types:
    api_key: string
    timeout: number
    retries: number
```

### Step 2: Regex and JSONPath Assertions
```yaml
expect:
  body:
    # JSONPath assertion
    "$.data[0].email": { jsonpath: ".*@example.com" }
    
    # Regex matching
    id: { regex: "^[0-9a-f]{8}-[0-9a-f]{4}-" }
    
    # Contains assertion
    tags: { contains: "production" }
    
    # Length assertion
    items: { length: 10 }
    
    # Type assertion
    count: { type: "number" }
```

### Step 3: Performance Assertions
```yaml
expect:
  performance:
    responseTime: { max: 500 }  # ms
    size: { max: 1048576 }      # 1MB
    throughput: { min: 100 }    # requests/sec
```

### Step 4: Conditional Execution
```yaml
requests:
  - name: check_feature
    operation: features/check
    save_as: feature_status
    
  - name: use_new_api
    operation: v2/endpoint
    condition: "{{feature_status.enabled}} == true"
    
  - name: cleanup
    operation: cleanup
    runAlways: true  # Run even on failure
```

### Step 5: Request Hooks
```yaml
requests:
  - name: authenticated_request
    operation: secure/data
    pre:
      - type: script
        code: |
          // Generate dynamic timestamp
          context.set('timestamp', Date.now());
    post:
      - type: validate
        code: |
          // Custom validation
          assert(response.data.length > 0);
```

## Benefits
- More robust testing capabilities
- Better error handling and validation
- Performance monitoring
- Complex test scenarios
- Dynamic test flows

## Priority Order
1. Variable validation (High)
2. Regex and JSONPath assertions (High)
3. Conditional execution (Medium)
4. Performance assertions (Medium)
5. Request hooks (Low)