claw-code/.guardrails/ide/TESTING_GUIDE.md

505 lines
9.1 KiB
Markdown

# Testing Guide - IDE Extensions
> Comprehensive testing documentation for Guardrail IDE extensions
**Branch:** `ide`
**Last Updated:** 2026-02-12
**Status:** Ready for Testing
---
## Quick Start for Testers
### Prerequisites
- VS Code 1.60+
- Node.js 16+
- Running Guardrail MCP Server (v1.12.0+)
- Git
### 5-Minute Setup
```bash
# 1. Clone repo
git clone https://github.com/TheArchitectit/agent-guardrails-template.git
cd agent-guardrails-template
# 2. Switch to ide branch
git checkout ide
# 3. Install dependencies
cd ide/vscode-extension
npm install
# 4. Compile
npm run compile
# 5. Open in VS Code
code .
```
### Launch Extension
Press `F5` in VS Code to launch Extension Development Host.
---
## Test Scenarios
### Scenario 1: Basic Connection
**Goal:** Verify extension connects to MCP server
**Steps:**
1. Open VS Code with extension loaded (F5)
2. Open any file (e.g., `test.js`)
3. Check status bar for shield icon
4. Click shield → "Configure Connection"
5. Enter server URL: `http://localhost:8095`
6. Enter API key from your server
7. Click "Test Connection"
**Expected Result:**
- Status bar shows 🛡️ "Guardrail" (green/connected)
- No error messages
**Pass Criteria:** ✅ Status bar indicates connection successful
---
### Scenario 2: Validate on Save
**Goal:** File validation triggers on save
**Steps:**
1. Create new file: `test-validation.js`
2. Add content that violates a rule (e.g., `console.log("test")`)
3. Save file (Ctrl+S)
4. Check Problems panel (Ctrl+Shift+M)
**Expected Result:**
- Diagnostics appear in Problems panel
- Error squiggles under violation
- Message shows rule ID and description
**Pass Criteria:** ✅ Violations detected and displayed
---
### Scenario 3: Validate Selection
**Goal:** Validate code selection
**Steps:**
1. Open any file
2. Select text containing potential violation
3. Right-click → "Validate Selection" (or Command Palette)
4. Check notification/message
**Expected Result:**
- Validation runs on selected text
- Notification shows result (valid or violations found)
**Pass Criteria:** ✅ Selection validation works
---
### Scenario 4: Configuration Persistence
**Goal:** Settings persist across sessions
**Steps:**
1. Configure server URL and API key
2. Close VS Code
3. Reopen VS Code
4. Check status bar
**Expected Result:**
- Settings retained
- Auto-connects to server
**Pass Criteria:** ✅ Configuration persists and auto-connects
---
### Scenario 5: Disable/Enable
**Goal:** Toggle extension on/off
**Steps:**
1. Open Settings (Ctrl+,)
2. Search "guardrail"
3. Uncheck "Enabled"
4. Check status bar
5. Re-enable
**Expected Result:**
- Disabled: Status bar shows ⭕ with tooltip "Guardrail is disabled"
- Enabled: Status bar reconnects
**Pass Criteria:** ✅ Toggle works and state reflected in UI
---
### Scenario 6: Multi-Language Support
**Goal:** Validation works for different languages
**Test Files:**
```javascript
// test.js
console.log("should warn");
```
```python
# test.py
import os
print("should warn")
```
```bash
# test.sh
rm -rf /
```
**Steps:**
1. Create each test file
2. Save each file
3. Check for language-appropriate validation
**Pass Criteria:** ✅ Each language validated correctly
---
### Scenario 7: Error Handling
**Goal:** Graceful handling of errors
**Test Cases:**
**Case A: Server offline**
1. Stop MCP server
2. Open file and save
3. Check status bar
**Expected:** Status bar shows 🔴 disconnected
**Case B: Invalid API key**
1. Set wrong API key in config
2. Test connection
**Expected:** Error message "Invalid API key"
**Case C: Network timeout**
1. Set invalid server URL
2. Test connection
**Expected:** Timeout error handled gracefully
**Pass Criteria:** ✅ All error cases handled without crashes
---
### Scenario 8: Severity Filtering
**Goal:** Respect severity threshold setting
**Steps:**
1. Open Settings
2. Set "Severity Threshold" to "error"
3. Save file with warning-level violation
4. Check if filtered
**Expected Result:**
- Warnings hidden when threshold = error
- Errors still shown
**Pass Criteria:** ✅ Threshold filtering works
---
### Scenario 9: Command Palette
**Goal:** All commands accessible
**Steps:**
1. Open Command Palette (Ctrl+Shift+P)
2. Type "guardrail"
3. Verify all commands listed:
- Guardrail: Validate File
- Guardrail: Validate Selection
- Guardrail: Configure Connection
- Guardrail: Show Output
- Guardrail: Test Connection
**Pass Criteria:** ✅ All 5 commands visible and executable
---
### Scenario 10: Output Channel
**Goal:** Debug logging works
**Steps:**
1. Run several validations
2. Command Palette → "Guardrail: Show Output"
3. Check output panel
**Expected Content:**
- Extension activation message
- Validation requests logged
- Connection test results
- Errors logged
**Pass Criteria:** ✅ Output shows activity log
---
## Test Data
### Sample Violations
Create these files to test rule detection:
**test-secrets.js:**
```javascript
const AWS_KEY = "AKIAIOSFODNN7EXAMPLE";
```
**test-force-push.sh:**
```bash
git push origin main --force
```
**test-console.js:**
```javascript
console.log("debug message");
```
**test-scope.js:**
```javascript
// Try editing a file outside authorized scope
// This should be blocked based on project rules
```
---
## Environment Setup
### MCP Server Configuration
```bash
# Start MCP server locally
cd mcp-server
docker-compose -f deploy/podman-compose.yml up -d
# Verify running
curl http://localhost:8095/health/ready
# Get API key
cat .env | grep IDE_API_KEY
```
### VS Code Extension
```bash
# Install deps
cd ide/vscode-extension
npm install
# Compile
npm run compile
# Watch mode (auto-compile on changes)
npm run watch
# Open in VS Code
code .
# Press F5 to launch Extension Development Host
```
---
## Testing Checklist
### Pre-Flight
- [ ] MCP server running
- [ ] API key obtained
- [ ] Extension compiled
- [ ] VS Code Extension Development Host launches
### Core Functionality
- [ ] Connection establishes
- [ ] Status bar shows connected
- [ ] Validate on save works
- [ ] Validate selection works
- [ ] Diagnostics appear in Problems panel
- [ ] Error squiggles visible in editor
- [ ] Configuration UI works
- [ ] Settings persist
### Edge Cases
- [ ] Server offline handled gracefully
- [ ] Invalid API key handled
- [ ] Network timeout handled
- [ ] Empty file handled
- [ ] Very large file handled
- [ ] Binary file skipped
### Commands
- [ ] Validate File command
- [ ] Validate Selection command
- [ ] Configure Connection command
- [ ] Show Output command
- [ ] Test Connection command
### Configuration
- [ ] Server URL setting
- [ ] API key setting
- [ ] Project slug setting
- [ ] Validate on save toggle
- [ ] Validate on type toggle
- [ ] Severity threshold dropdown
- [ ] Enable/disable toggle
---
## Reporting Bugs
### Bug Report Template
```markdown
## Bug Report
**Environment:**
- VS Code Version: [e.g., 1.85.0]
- Extension Version: [e.g., 1.0.0]
- MCP Server Version: [e.g., v1.12.0]
- OS: [e.g., macOS 14.0]
**Steps to Reproduce:**
1.
2.
3.
**Expected Result:**
**Actual Result:**
**Error Message (if any):**
**Screenshots:**
**Output Channel Log:**
```
[paste relevant log lines]
```
**Additional Context:**
```
### Submit
Create issue at: https://github.com/TheArchitectit/agent-guardrails-template/issues
Use label: `ide-extension` `bug`
---
## Performance Testing
### Load Test
**Goal:** Test with large files
**Steps:**
1. Create file with 10,000 lines
2. Add violations throughout
3. Save file
4. Measure time to validate
**Expected:** < 2 seconds for large files
### Stress Test
**Goal:** Rapid validation requests
**Steps:**
1. Enable "validate on type"
2. Type rapidly for 60 seconds
3. Check for:
- Memory leaks
- UI freezing
- Duplicate validations
**Expected:** No degradation, no duplicates
---
## Regression Testing
Before each release, verify:
1. [ ] Fresh install works
2. [ ] Upgrade from previous version works
3. [ ] Configuration preserved
4. [ ] All commands functional
5. [ ] No console errors
6. [ ] Status bar accurate
7. [ ] Output channel works
8. [ ] Settings UI accessible
---
## Release Checklist
For maintainers before publishing:
- [ ] All P0 tests pass
- [ ] All P1 tests pass
- [ ] No known critical bugs
- [ ] Documentation updated
- [ ] CHANGELOG updated
- [ ] Version bumped
- [ ] Package.json validated
- [ ] README reviewed
- [ ] Screenshots captured
---
## FAQ
**Q: Extension doesn't activate?**
A: Check Output panel "Guardrail" for errors
**Q: Status bar shows disconnected?**
A: Configure connection (click status bar or use command)
**Q: No diagnostics appearing?**
A: Check Problems panel (Ctrl+Shift+M), verify file type supported
**Q: Extension crashes?**
A: Check Developer Tools (Help Toggle Developer Tools)
**Q: How to reset configuration?**
A: Command Palette "Preferences: Open User Settings (JSON)", remove guardrail entries
---
## Resources
- **Issues:** https://github.com/TheArchitectit/agent-guardrails-template/issues
- **Plan:** `ide/IDE_EXTENSIONS_PLAN.md`
- **Source:** `ide/vscode-extension/src/`
---
**Last Updated:** 2026-02-12
**Next Review:** On major changes