Testing Strategy
SuperCmd uses a multi-layered testing approach:- Unit Tests — Test individual API implementations (planned)
- Integration Tests — Test extension loading and execution (planned)
- Compatibility Tests — Test with real Raycast extensions (active)
- System Tests — Test macOS integration features (manual)
Manual Testing Workflow
Local Development Testing
Start Development Mode
Launch the app in development mode:This starts TypeScript watch, Vite dev server, and Electron in development mode.
Open DevTools
Press
Cmd+Option+I to open Chrome DevTools for debugging:- Check console for errors and warnings
- Inspect network requests
- Debug React components
- Monitor IPC calls
Testing a Full Build
Before submitting a PR, test a production build:Extension Compatibility Testing
The most critical testing for SuperCmd is ensuring Raycast extensions work correctly.Testing Popular Extensions
Install Extension
Use SuperCmd’s extension store to install a popular Raycast extension:
- Calculator
- Clipboard History
- System Monitor
- File Search
Test Core Functionality
Verify the extension’s primary features:
- Does it load without errors?
- Do actions work correctly?
- Are keyboard shortcuts functional?
- Does navigation work (push/pop)?
Check Console Output
Open DevTools (
Cmd+Option+I) and look for:- Errors in red
- Warnings about missing APIs
- Failed IPC calls
- React errors or warnings
Testing New API Implementations
When implementing a new Raycast API:API Testing Checklist
API Testing Checklist
Testing Scenarios by Feature
Testing Raycast API Components
List Component
Form Component
Grid Component
ActionPanel
Testing Native Features
Native macOS features require system permissions and manual testing:Native Feature Tests
Native Feature Tests
Testing AI Features
Configure AI Provider
Set up API keys in Settings → AI:
- OpenAI API key
- Anthropic API key
- Ollama base URL
Test AI in Extensions
- Install extension that uses
AI.ask() - Test AI-powered features
- Check streaming responses
- Verify error handling
Testing Extension Installation
Test Install Flow
- Open extension store
- Search for an extension
- Click Install
- Verify extension appears in list
Test Extension Loading
- Launch the installed extension
- Verify it loads without errors
- Check that preferences work
Debugging Common Issues
Extension Won’t Load
- Open DevTools (
Cmd+Option+I) - Check console for errors
- Look for missing dependencies
- Verify esbuild bundling succeeded
- Check extension manifest is valid
IPC Calls Failing
- Check that handler exists in
main.ts - Verify channel name matches
- Check that
preload.tsexposes the API - Look for async/await issues
Native Features Not Working
- Check macOS permissions in System Settings → Privacy & Security
- Verify Swift binaries are compiled (
dist/native/) - Check that native binary is executable
- Look for permission prompts that were dismissed
API Compatibility Issues
- Check CLAUDE.md for API implementation status
- Look for console warnings about missing APIs
- Verify API matches Raycast specification
- Test with official Raycast app for comparison
Performance Testing
Extension Performance
- Test with extensions that have large datasets
- Monitor memory usage in Activity Monitor
- Check CPU usage during extension execution
- Verify search/filtering performance
Build Performance
Test Coverage Goals
Future testing goals:- Unit tests for Raycast API implementations
- Integration tests for extension loading
- E2E tests for critical user flows
- Performance benchmarks
- Automated extension compatibility tests
Contributing Tests
If you’d like to contribute to testing infrastructure:- Check GitHub Issues for testing-related tasks
- Propose testing framework in Discussions
- Submit PRs with test coverage
- Document testing patterns
Next Steps
- Learn about Contributing to SuperCmd
- Understand Code Organization
- Check Troubleshooting for common issues