Skip to content

Testing Guide

This guide is the single source of truth for end-to-end testing the Weaviate Studio extension before publishing.

Source of truth

The root TESTING_GUIDE.md is a short stub that links here. See Documentation Structure for the reasoning.

Pre-Testing Setup

1. Create Test Package

bash
# Clean install
npm ci

# Package the extension (runs vscode:prepublish scripts)
vsce package

# Verify the VSIX exists
ls -la weaviate-studio-*.vsix

Install the latest packaged file quickly on macOS/Linux:

bash
code --install-extension "$(ls -t weaviate-studio-*.vsix | head -n1)" --force

2. Prepare Test Environment

  • VS Code: Latest stable (or at least the minimum supported version)
  • Weaviate instance: Local or cloud
  • Seed data: Sample collections with varied data types (see Quick Start Sandbox)

Compatibility

  • Minimum VS Code version: ^1.80.0 (see package.jsonengines.vscode)
  • Weaviate server must support the Collections API
  • Verify CSP/nonce handling: no blocked scripts in webview DevTools

Testing Checklist

Installation

  • [ ] Install from VSIX: code --install-extension weaviate-studio-<version>.vsix
  • [ ] Extension appears in Extensions panel
  • [ ] Weaviate icon appears in Activity Bar
  • [ ] No console errors in Developer Tools (Help > Toggle Developer Tools)

UI/UX

  • [ ] Activity Bar icon displays correctly
  • [ ] Tree View (Connections panel) loads without errors
  • [ ] Welcome message ("No connections found") appears when empty
  • [ ] All icons display properly (database, add, refresh, etc.)

Connection Management

  • [ ] Add connection with valid credentials
  • [ ] Form validation rejects invalid URLs / credentials
  • [ ] Connection status shows connected / disconnected
  • [ ] Edit existing connection details
  • [ ] Delete connection with confirmation

Tree View

  • [ ] Expand/collapse works on all tree items
  • [ ] Expanding a disconnected connection prompts to connect
  • [ ] Connection info, cluster health, server info display correctly
  • [ ] Collections list loads and displays properly
  • [ ] Collection properties expand and show details
  • [ ] Statistics (live object counts) display

Query Editor

  • [ ] Right-click collection → "Query Collection" opens the editor
  • [ ] Monaco Editor loads with GraphQL syntax highlighting
  • [ ] Schema-aware autocompletion works
  • [ ] All query templates load and execute
  • [ ] Table view and JSON view render results
  • [ ] Invalid queries show proper errors

Schema Management

  • [ ] Right-click collection → "View Detailed Schema"
  • [ ] Overview tab: collection stats and configuration
  • [ ] Properties tab: lists all properties with types
  • [ ] Raw JSON tab: complete schema definition
  • [ ] API Equivalent tab: code examples in Python / JS / cURL
  • [ ] Creation Scripts tab: Python scripts for recreation

Data Explorer

  • [ ] Interactive table with sorting and pagination
  • [ ] Filter builder with 10+ operators and AND/OR logic
  • [ ] Vector search modes (Text, Object, Vector, Hybrid)
  • [ ] Export to JSON and CSV
  • [ ] Virtual scrolling for large datasets
  • [ ] Filter presets (save, load, delete)
  • [ ] Keyboard shortcuts and preference persistence

Multi-Vector Search (Muvera)

Requires Weaviate v1.26+ with a multi-vector collection (e.g. MultiVectorCollection seeded by sandbox/populate_cloud_muvera.py).

  • [ ] Target Vectors drawer shows all named vectors with vectorizer badges
  • [ ] Auto-selection: all vectors pre-checked on first open; can be deselected individually
  • [ ] Single-target search: check exactly one vector → Text Semantic returns results
  • [ ] Multi-target search: check 2+ vectors → "Join Strategy" enabled → search returns results
  • [ ] Join Strategy: Minimum (default) — search completes without error
  • [ ] Join Strategy: Sum / Average — change strategy, re-run; different ordering may appear
  • [ ] Join Strategy: Manual Weights — Weight Editor appears; adjust sliders, click Normalize, re-run
  • [ ] Join Strategy: Relative Score — weights by relative score
  • [ ] Run button disabled when all vectors deselected
  • [ ] Version gate: on a server < v1.26, the Join Strategy section shows the version warning
  • [ ] Max Distance default slider starts at 1.00 (no filter)
  • [ ] Max Distance tightened: move slider below 1.0 → fewer/no distant results returned
  • [ ] Copy as Code: TypeScript/Python snippet includes correct multiTargetVector combination call
  • [ ] Text (Semantic) works when collection has a vectorizer; error shown if none configured
  • [ ] Similar Object / Raw Vector work for none-vectorizer collections
  • [ ] Multi-collection selection with pill badges
  • [ ] Top-K and timeout controls work
  • [ ] Retrieved context with source attribution displays
  • [ ] Context objects link to Data Explorer
  • [ ] Markdown toggle and copy buttons function

RBAC

  • [ ] Create, edit, delete roles
  • [ ] User management with API key rotation
  • [ ] Activate / deactivate users
  • [ ] Group management

Advanced Features

  • [ ] Multiple query tabs open simultaneously
  • [ ] Reference field queries (cross-references) work
  • [ ] Complex queries (vector search, filters, aggregations)
  • [ ] Export schema
  • [ ] Delete collection with confirmation
  • [ ] Delete all collections requires double confirmation and updates the tree

Performance

  • [ ] Extension loads within 2-3 seconds
  • [ ] Memory usage acceptable (check Activity Monitor)
  • [ ] Large datasets (1000+ objects) render smoothly
  • [ ] Multiple connections (3+) work simultaneously

Error Handling

  • [ ] Network errors show user-friendly messages
  • [ ] Invalid credentials handled gracefully
  • [ ] Server-unavailable state works
  • [ ] Malformed GraphQL queries show proper errors

Cross-Platform

  • [ ] macOS
  • [ ] Windows (if available)
  • [ ] Linux (if available)
  • [ ] Different VS Code versions (1.85+ and latest)

Webview Security (CSP / Nonce)

  • [ ] No CSP violations in DevTools Console
  • [ ] <script nonce="..."> present in webview HTML (search the Elements panel)
  • [ ] Loads correctly in strict environments (e.g., corporate policies)

Weaviate Compatibility

  • [ ] Server supports Collections API (extension lists collections, not legacy classes)
  • [ ] GraphQL queries succeed via /v1/graphql (with API key when needed)

Common Issues to Check

Installation

  • Extension won't install — check VS Code version compatibility
  • Missing dependencies — verify all files are included in the package
  • Permission errors — check file permissions

Runtime

  • Extension not activating — check activation events in package.json
  • Webview not loading — check webpack configuration
  • Monaco Editor errors — verify Monaco webpack plugin setup

Performance

  • Slow loading — check bundle size and optimization
  • Memory leaks — monitor memory usage during extended use
  • UI freezing — test with large datasets

Test Results Template

markdown
## Test Results — [Date]

### ✅ Passed Tests

- Installation: ✅
- Connection Management: ✅
- Query Editor: ✅
- Schema Management: ✅
- Performance: ✅

### ⚠️ Issues Found

- [Issue description]
- [Severity: Low/Medium/High]
- [Steps to reproduce]

### 🔧 Fixes Applied

- [Fix description]
- [Files modified]

### 📝 Notes

- [Additional observations]
- [Performance metrics]
- [User experience feedback]

Pre-Publishing Checklist

Before publishing, ensure:

  • [ ] All tests pass: npm test
  • [ ] Lint passes: npm run lint
  • [ ] Builds succeed: npm run compile && npm run build:webview && npm run build:add-collection
  • [ ] No console errors in VS Code DevTools
  • [ ] Documentation updated (README, CHANGELOG, docs site)
  • [ ] Version bumped in package.json
  • [ ] Git tag created for release

See the Release Guide for the full publishing workflow.

Troubleshooting

Extension Won't Load

  1. Check VS Code Developer Console for errors
  2. Verify all dependencies are bundled
  3. Check webpack configuration
  4. Test in clean VS Code environment

Webview Won't Load

  1. Check webpack.webview.config.js
  2. Verify Monaco Editor configuration
  3. Check browser console for errors
  4. Test with different VS Code versions

Queries Fail

  1. Verify Weaviate connection
  2. Check GraphQL schema
  3. Test with simple queries first
  4. Verify API key permissions

Remember: Thorough testing ensures a smooth user experience and reduces support requests after publishing.

Released under the MIT License.