2.4 KiB
2.4 KiB
Test Analyzer Scripts
Executable shell scripts for running and analyzing RSpec tests.
Scripts
run_tests.sh
Run RSpec tests with intelligent filtering.
# Run all tests
./run_tests.sh all
# Run only fast tests (exclude slow)
./run_tests.sh fast
# Run only previously failed tests
./run_tests.sh failures
# Run tests for changed files
./run_tests.sh changed
# Profile slowest tests
./run_tests.sh profile
# Run specific file
./run_tests.sh spec/models/user_spec.rb
Modes:
all- All tests with documentation formatfast- Exclude tests tagged with :slowfailures- Only re-run failed tests (uses .rspec_status)changed- Auto-detect changed files via git diffprofile- Show 10 slowest examples<file_path>- Run specific test file
Features:
- Auto-detects RSpec availability
- Helpful error messages
- Smart test file detection from lib/ files
- Documentation format for readability
analyze_failures.sh
Analyze test failures and provide debugging hints.
./analyze_failures.sh
Output:
Results: 3 failures out of 47 tests
Failed examples:
User#full_name returns first and last name
File: spec/user_spec.rb:23
Error: RSpec::Expectations::ExpectationNotMetError
Message: Expected "John Doe" but got "John"
...
Common fixes:
- Check for typos in method names
- Verify test data setup (factories, fixtures)
- Check for nil objects
- Review recent code changes
Features:
- Parses JSON test results
- Groups failures by type
- Provides file:line references
- Suggests common fixes
- Shows debugging commands
Requires:
- jq (JSON processor)
- RSpec with JSON formatter
Usage Examples
Quick Test Run
# Run changed tests
./run_tests.sh changed
# If failures, analyze
./analyze_failures.sh
TDD Workflow
# Run all tests
./run_tests.sh all
# Profile to find slow tests
./run_tests.sh profile
# Tag slow tests, then run fast
./run_tests.sh fast
CI/CD
# In CI pipeline
./run_tests.sh all || ./analyze_failures.sh
RSpec Configuration
For best results, add to .rspec:
--format progress
--require spec_helper
--example-status-persistence-file-path .rspec_status
And in spec/spec_helper.rb:
RSpec.configure do |config|
config.example_status_persistence_file_path = ".rspec_status"
end
Requirements
- RSpec gem
- jq (for analyze_failures.sh)
- git (for changed mode)