Skip to main content
SuperCmd currently relies on manual testing and real-world extension compatibility testing. This guide covers the testing workflow and best practices.

Testing Strategy

SuperCmd uses a multi-layered testing approach:
  1. Unit Tests — Test individual API implementations (planned)
  2. Integration Tests — Test extension loading and execution (planned)
  3. Compatibility Tests — Test with real Raycast extensions (active)
  4. System Tests — Test macOS integration features (manual)
Currently, SuperCmd does not have automated unit or integration tests. All testing is done manually through development mode and real extension testing.

Manual Testing Workflow

Local Development Testing

1

Build Native Modules

Before testing, ensure native modules are compiled:
npm run build:native
2

Start Development Mode

Launch the app in development mode:
npm run dev
This starts TypeScript watch, Vite dev server, and Electron in development mode.
3

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
4

Test Changes

Make your changes and test:
  • Verify UI updates correctly
  • Check that hotkeys work
  • Test extension compatibility
  • Validate IPC communication

Testing a Full Build

Before submitting a PR, test a production build:
# Build all components
npm run build

# Verify no build errors
# Check dist/ output

# Package the app (optional)
npm run package

Extension Compatibility Testing

The most critical testing for SuperCmd is ensuring Raycast extensions work correctly.
1

Install Extension

Use SuperCmd’s extension store to install a popular Raycast extension:
  • Calculator
  • Clipboard History
  • System Monitor
  • File Search
2

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)?
3

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
4

Test Edge Cases

Try unusual scenarios:
  • Empty states
  • Error handling
  • Loading states
  • Large datasets

Testing New API Implementations

When implementing a new Raycast API:

Testing Scenarios by Feature

Testing Raycast API Components

List Component

// Test checklist:
- [ ] Items render correctly
- [ ] Filtering works
- [ ] Accessories display
- [ ] Detail view shows
- [ ] Actions are available
- [ ] Keyboard navigation works
- [ ] Empty state displays

Form Component

// Test checklist:
- [ ] All field types render
- [ ] Validation works
- [ ] Submit action fires
- [ ] Draft saving works (if enabled)
- [ ] Error messages display
- [ ] Field focus works

Grid Component

// Test checklist:
- [ ] Items display in grid
- [ ] Sections group correctly
- [ ] Fit/Inset modes work
- [ ] Selection works
- [ ] Actions are available
- [ ] Keyboard navigation works

ActionPanel

// Test checklist:
- [ ] Actions display correctly
- [ ] Keyboard shortcuts work
- [ ] Submenus open
- [ ] Action callbacks fire
- [ ] Icons render
- [ ] Cmd+K opens panel

Testing Native Features

Native macOS features require system permissions and manual testing:

Testing AI Features

1

Configure AI Provider

Set up API keys in Settings → AI:
  • OpenAI API key
  • Anthropic API key
  • Ollama base URL
2

Test AI Chat

  • Launch AI chat mode
  • Send a prompt
  • Verify streaming works
  • Test different models
3

Test AI in Extensions

  • Install extension that uses AI.ask()
  • Test AI-powered features
  • Check streaming responses
  • Verify error handling
4

Test Memory Integration

If Supermemory is configured:
  • Test memory retrieval
  • Test context injection
  • Verify API calls work

Testing Extension Installation

1

Test Install Flow

  • Open extension store
  • Search for an extension
  • Click Install
  • Verify extension appears in list
2

Test Extension Loading

  • Launch the installed extension
  • Verify it loads without errors
  • Check that preferences work
3

Test Update Flow

  • Check for extension updates
  • Update an extension
  • Verify new version loads
4

Test Uninstall

  • Uninstall an extension
  • Verify it’s removed from list
  • Check that files are deleted

Debugging Common Issues

Extension Won’t Load

  1. Open DevTools (Cmd+Option+I)
  2. Check console for errors
  3. Look for missing dependencies
  4. Verify esbuild bundling succeeded
  5. Check extension manifest is valid

IPC Calls Failing

  1. Check that handler exists in main.ts
  2. Verify channel name matches
  3. Check that preload.ts exposes the API
  4. Look for async/await issues

Native Features Not Working

  1. Check macOS permissions in System Settings → Privacy & Security
  2. Verify Swift binaries are compiled (dist/native/)
  3. Check that native binary is executable
  4. Look for permission prompts that were dismissed

API Compatibility Issues

  1. Check CLAUDE.md for API implementation status
  2. Look for console warnings about missing APIs
  3. Verify API matches Raycast specification
  4. 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

# Time the full build
time npm run build

# Check build output size
du -sh dist/

# Analyze bundle size (renderer)
npm run build:renderer -- --mode analyze

Test Coverage Goals

SuperCmd currently does not have automated test coverage. This is a goal for future development.
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:
  1. Check GitHub Issues for testing-related tasks
  2. Propose testing framework in Discussions
  3. Submit PRs with test coverage
  4. Document testing patterns

Next Steps

Build docs developers (and LLMs) love