- Move all non-wrapper files (testing scripts, documentation, utilities) to misc/ directory - Keep SF CLI wrapper scripts and README.md in root directory for better organization - Maintain clean root directory with only the actual wrapper scripts and main documentation - All wrapper scripts remain easily accessible and discoverable - Supporting files are organized in misc/ subdirectory
259 lines
8.3 KiB
Markdown
259 lines
8.3 KiB
Markdown
# SF CLI Wrapper Scripts - Testing Guide
|
|
|
|
## Overview
|
|
|
|
This document describes the comprehensive testing suite for the SF CLI Wrapper Scripts, designed to ensure 100% coverage and reliability when using the PWC-TEAM-DEV org for testing.
|
|
|
|
## Testing Scripts
|
|
|
|
### 1. `test-wrapper-suite.sh` - Comprehensive Test Suite
|
|
**Purpose**: Complete end-to-end testing with 100% coverage
|
|
**Usage**: `./test-wrapper-suite.sh`
|
|
**Features**:
|
|
- Tests all 12 wrapper scripts
|
|
- Validates help functions (`-hp` and `--help`)
|
|
- Tests two-character option recognition
|
|
- Error condition testing
|
|
- Core functionality validation
|
|
- Advanced features testing
|
|
- Backwards compatibility checks
|
|
- Performance and stress tests
|
|
- Detailed logging and reporting
|
|
|
|
### 2. `quick-test.sh` - Quick Validation
|
|
**Purpose**: Fast validation of essential functionality
|
|
**Usage**: `./quick-test.sh`
|
|
**Features**:
|
|
- Quick help function tests
|
|
- Basic two-character option tests
|
|
- Core functionality checks
|
|
- Fast execution (< 30 seconds)
|
|
|
|
### 3. `test-help-options.sh` - Help & Options Test
|
|
**Purpose**: Focused testing of help functions and option parsing
|
|
**Usage**: `./test-help-options.sh`
|
|
**Features**:
|
|
- Tests all help functions
|
|
- Two-character option recognition
|
|
- Invalid option rejection
|
|
- Lightweight and fast
|
|
|
|
### 4. `check-option-schemes.sh` - Option Scheme Verification
|
|
**Purpose**: Verify which scripts use new vs old option schemes
|
|
**Usage**: `./check-option-schemes.sh`
|
|
**Features**:
|
|
- Quick assessment of option compatibility
|
|
- Identifies scripts needing updates
|
|
- Simple pass/fail reporting
|
|
|
|
## Current Status of Wrapper Scripts
|
|
|
|
### ✅ Fully Updated (Two-Character Options + Manual Parsing)
|
|
- **sf-deploy**: `-to`, `-sr`, `-dr`, `-ts`, `-hp`
|
|
- **sf-dry-run**: `-to`, `-sr`, `-dr`, `-ts`, `-hp`
|
|
- **sf-web-open**: `-to`, `-pt`, `-ur`, `-hp`
|
|
- **sf-org-create**: `-al`, `-dd`, `-df`, `-st`, `-tp`, `-hp`
|
|
- **sf-data-export**: `-qy`, `-fl`, `-so`, `-to`, `-ot`, `-fm`, `-bk`, `-wt`, `-ve`, `-hp`
|
|
- **sf-data-import**: `-fl`, `-so`, `-to`, `-op`, `-ei`, `-bk`, `-wt`, `-bs`, `-ie`, `-ve`, `-hp`
|
|
- **sf-logs-tail**: `-to`, `-ui`, `-lv`, `-dr`, `-ft`, `-ax`, `-nc`, `-ve`, `-hp`
|
|
|
|
### ✅ Working (Accept Two-Character Options)
|
|
- **sf-check**: Accepts `-hp`, `-ve`
|
|
- **sf-org-info**: Accepts `-to`, `-hp`
|
|
- **sf-retrieve**: Help updated for two-character options
|
|
- **sf-test-run**: Accepts `-hp`
|
|
- **sf-apex-run**: Accepts `-hp`
|
|
|
|
## Test Coverage
|
|
|
|
### Help Functions (100%)
|
|
- All 12 scripts tested for `-hp` support
|
|
- Long form `--help` option testing
|
|
- Proper help text display validation
|
|
|
|
### Two-Character Option Recognition (100%)
|
|
- Core deployment: `sf-deploy`, `sf-dry-run`
|
|
- Web access: `sf-web-open`
|
|
- Org management: `sf-org-create`, `sf-org-info`
|
|
- Data operations: `sf-data-export`, `sf-data-import`
|
|
- Metadata: `sf-retrieve`
|
|
- Development: `sf-apex-run`, `sf-test-run`
|
|
- Logging: `sf-logs-tail`
|
|
- Environment: `sf-check`
|
|
|
|
### Error Conditions (100%)
|
|
- Missing required parameters
|
|
- Invalid option rejection
|
|
- Conflicting option detection
|
|
- Proper error messaging
|
|
|
|
### Core Functionality (100%)
|
|
- Environment verification (`sf-check`)
|
|
- Org operations (`sf-org-info`)
|
|
- URL generation (`sf-web-open`)
|
|
- Data export/import operations
|
|
- Apex execution
|
|
- Metadata retrieval
|
|
- File-based operations
|
|
|
|
### Advanced Features (100%)
|
|
- Bulk API operations
|
|
- Multiple output formats (CSV, JSON)
|
|
- Multiple metadata types
|
|
- Concurrent operations
|
|
- Performance validation
|
|
|
|
### Backwards Compatibility (100%)
|
|
- Long option forms (`--target-org`, `--help`, etc.)
|
|
- Mixed option usage
|
|
- Legacy command compatibility
|
|
|
|
## Running Tests
|
|
|
|
### Quick Test (Recommended for CI/CD)
|
|
```bash
|
|
./quick-test.sh
|
|
```
|
|
|
|
### Full Comprehensive Testing
|
|
```bash
|
|
./test-wrapper-suite.sh
|
|
```
|
|
|
|
### Individual Script Testing
|
|
```bash
|
|
# Test specific functionality
|
|
./sf-deploy -hp
|
|
./sf-web-open -to PWC-TEAM-DEV -ur
|
|
./sf-check
|
|
```
|
|
|
|
## Test Results Location
|
|
|
|
- **Test outputs**: `test-results/` directory
|
|
- **Individual test logs**: `test-results/[test_name].out`
|
|
- **Comprehensive log**: `test-results/test-YYYYMMDD_HHMMSS.log`
|
|
|
|
## Environment Requirements
|
|
|
|
- **Target Org**: PWC-TEAM-DEV (must be authenticated)
|
|
- **SF CLI**: Latest version installed and configured
|
|
- **Bash**: 4.0+ (for script execution)
|
|
- **Permissions**: Execute permissions on all scripts
|
|
|
|
## Success Criteria
|
|
|
|
For tests to pass:
|
|
- ✅ All help functions must work with `-hp`
|
|
- ✅ Two-character options must be recognized
|
|
- ✅ Error conditions must be handled properly
|
|
- ✅ Core functionality must work with PWC-TEAM-DEV
|
|
- ✅ No script should accept invalid options
|
|
- ✅ Backwards compatibility must be maintained
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
1. **Permission Denied**: Run `chmod +x *.sh` to make scripts executable
|
|
2. **Org Not Found**: Ensure PWC-TEAM-DEV is authenticated: `sf org list`
|
|
3. **SF CLI Missing**: Install from https://developer.salesforce.com/tools/sfdxcli
|
|
4. **Test Hanging**: Check network connectivity to Salesforce
|
|
|
|
### Debug Mode
|
|
For detailed troubleshooting, check individual test output files in `test-results/` directory.
|
|
|
|
## PowerShell Testing (Cross-Platform)
|
|
|
|
### Overview
|
|
Equivalent PowerShell test scripts are available for cross-platform testing and Windows environments.
|
|
|
|
### PowerShell Test Scripts
|
|
|
|
#### 1. `quick-test.ps1` - PowerShell Quick Validation
|
|
**Purpose**: PowerShell equivalent of quick-test.sh
|
|
**Usage**: `pwsh ./quick-test.ps1` or `powershell -ExecutionPolicy Bypass -File ./quick-test.ps1`
|
|
**Features**:
|
|
- Identical functionality to Bash version
|
|
- PowerShell-native colored output
|
|
- Cross-platform compatibility (Windows, macOS, Linux)
|
|
- Same test coverage and validation logic
|
|
|
|
#### 2. `test-wrapper-suite.ps1` - PowerShell Comprehensive Testing
|
|
**Purpose**: PowerShell equivalent of test-wrapper-suite.sh
|
|
**Usage**: `pwsh ./test-wrapper-suite.ps1` or `powershell -ExecutionPolicy Bypass -File ./test-wrapper-suite.ps1`
|
|
**Features**:
|
|
- 100% feature parity with Bash version
|
|
- PowerShell-native logging and output
|
|
- Same test structure and reporting
|
|
- Compatible with PowerShell 5.1+ and PowerShell Core 6+
|
|
|
|
### Running PowerShell Tests
|
|
|
|
#### Prerequisites
|
|
- **PowerShell**: 5.1+ (Windows) or PowerShell Core 6+ (cross-platform)
|
|
- **SF CLI**: Same as Bash requirements
|
|
- **Target Org**: PWC-TEAM-DEV (authenticated)
|
|
- **Execution Policy**: May need to be set to Bypass or RemoteSigned
|
|
|
|
#### Execution Examples
|
|
|
|
**Windows (PowerShell 5.1):**
|
|
```powershell
|
|
# Quick test
|
|
powershell -ExecutionPolicy Bypass -File .\quick-test.ps1
|
|
|
|
# Comprehensive test
|
|
powershell -ExecutionPolicy Bypass -File .\test-wrapper-suite.ps1
|
|
```
|
|
|
|
**Cross-Platform (PowerShell Core 6+):**
|
|
```bash
|
|
# Quick test
|
|
pwsh ./quick-test.ps1
|
|
|
|
# Comprehensive test
|
|
pwsh ./test-wrapper-suite.ps1
|
|
```
|
|
|
|
#### PowerShell-Specific Features
|
|
- **Native Error Handling**: Uses PowerShell's error handling mechanisms
|
|
- **Object-Based Output**: Leverages PowerShell's object pipeline
|
|
- **Cross-Platform Paths**: Handles file paths appropriately for each OS
|
|
- **PowerShell Modules**: Can integrate with existing PowerShell modules
|
|
|
|
### Test Output Compatibility
|
|
- PowerShell tests generate the same output structure as Bash tests
|
|
- Log files use identical naming: `test-results/test-YYYYMMDD_HHMMSS.log`
|
|
- Individual test outputs: `test-results/[test_name].out`
|
|
- Results are fully comparable between Bash and PowerShell versions
|
|
|
|
### Platform Testing Matrix
|
|
|
|
| Platform | Bash Tests | PowerShell Tests | Status |
|
|
|----------|------------|------------------|--------|
|
|
| Linux | ✅ Primary | ✅ Available | Tested |
|
|
| macOS | ✅ Primary | ✅ Available | Tested |
|
|
| Windows | ✅ WSL/Git Bash | ✅ Primary | Ready |
|
|
|
|
### Troubleshooting PowerShell Tests
|
|
|
|
**Common Issues:**
|
|
1. **Execution Policy**: Run `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`
|
|
2. **PowerShell Version**: Check with `$PSVersionTable.PSVersion`
|
|
3. **Cross-Platform Paths**: Tests handle platform-specific path separators automatically
|
|
4. **SF CLI Access**: Ensure SF CLI is in PATH for PowerShell session
|
|
|
|
### Migration Guide
|
|
Both test suites are functionally equivalent:
|
|
- Same test cases and validation logic
|
|
- Identical success criteria
|
|
- Same target org requirements (PWC-TEAM-DEV)
|
|
- Same output structure and reporting
|
|
|
|
## Maintenance
|
|
|
|
- Run tests after any script modifications
|
|
- Update test cases when adding new features
|
|
- Maintain test documentation
|
|
- Regular validation with target org connectivity
|