Skip to main content
Glama

n8n-MCP

by 88-888
TEST_ENV_DOCUMENTATION.mdβ€’8.34 kB
# Test Environment Configuration Documentation This document describes the test environment configuration system for the n8n-mcp project. ## Overview The test environment configuration system provides: - Centralized environment variable management for tests - Type-safe access to configuration values - Automatic loading of test-specific settings - Support for local overrides via `.env.test.local` - Performance monitoring and feature flags ## Configuration Files ### `.env.test` The main test environment configuration file. Contains all test-specific environment variables with sensible defaults. This file is committed to the repository. ### `.env.test.local` (optional) Local overrides for sensitive values or developer-specific settings. This file should be added to `.gitignore` and never committed. ## Usage ### In Test Files ```typescript import { getTestConfig, getTestTimeout, isFeatureEnabled } from '@tests/setup/test-env'; describe('My Test Suite', () => { const config = getTestConfig(); it('should run with proper timeout', () => { // Test code here }, { timeout: getTestTimeout('integration') }); it.skipIf(!isFeatureEnabled('mockExternalApis'))('should mock external APIs', () => { // This test only runs if FEATURE_MOCK_EXTERNAL_APIS=true }); }); ``` ### In Setup Files ```typescript import { loadTestEnvironment } from './test-env'; // Load test environment at the start of your setup loadTestEnvironment(); ``` ## Environment Variables ### Core Configuration | Variable | Type | Default | Description | |----------|------|---------|-------------| | `NODE_ENV` | string | `test` | Must be 'test' for test execution | | `MCP_MODE` | string | `test` | MCP operation mode | | `TEST_ENVIRONMENT` | boolean | `true` | Indicates test environment | ### Database Configuration | Variable | Type | Default | Description | |----------|------|---------|-------------| | `NODE_DB_PATH` | string | `:memory:` | SQLite database path (use :memory: for in-memory) | | `REBUILD_ON_START` | boolean | `false` | Rebuild database on startup | | `TEST_SEED_DATABASE` | boolean | `true` | Seed database with test data | | `TEST_SEED_TEMPLATES` | boolean | `true` | Seed templates in database | ### API Configuration | Variable | Type | Default | Description | |----------|------|---------|-------------| | `N8N_API_URL` | string | `http://localhost:3001/mock-api` | Mock API endpoint | | `N8N_API_KEY` | string | `test-api-key` | API key for testing | | `N8N_WEBHOOK_BASE_URL` | string | `http://localhost:3001/webhook` | Webhook base URL | | `N8N_WEBHOOK_TEST_URL` | string | `http://localhost:3001/webhook-test` | Webhook test URL | ### Test Execution | Variable | Type | Default | Description | |----------|------|---------|-------------| | `TEST_TIMEOUT_UNIT` | number | `5000` | Unit test timeout (ms) | | `TEST_TIMEOUT_INTEGRATION` | number | `15000` | Integration test timeout (ms) | | `TEST_TIMEOUT_E2E` | number | `30000` | E2E test timeout (ms) | | `TEST_TIMEOUT_GLOBAL` | number | `60000` | Global test timeout (ms) | | `TEST_RETRY_ATTEMPTS` | number | `2` | Number of retry attempts | | `TEST_RETRY_DELAY` | number | `1000` | Delay between retries (ms) | | `TEST_PARALLEL` | boolean | `true` | Run tests in parallel | | `TEST_MAX_WORKERS` | number | `4` | Maximum parallel workers | ### Feature Flags | Variable | Type | Default | Description | |----------|------|---------|-------------| | `FEATURE_TEST_COVERAGE` | boolean | `true` | Enable code coverage | | `FEATURE_TEST_SCREENSHOTS` | boolean | `false` | Capture screenshots on failure | | `FEATURE_TEST_VIDEOS` | boolean | `false` | Record test videos | | `FEATURE_TEST_TRACE` | boolean | `false` | Enable trace recording | | `FEATURE_MOCK_EXTERNAL_APIS` | boolean | `true` | Mock external API calls | | `FEATURE_USE_TEST_CONTAINERS` | boolean | `false` | Use test containers for services | ### Logging | Variable | Type | Default | Description | |----------|------|---------|-------------| | `LOG_LEVEL` | string | `error` | Log level (debug, info, warn, error) | | `DEBUG` | boolean | `false` | Enable debug logging | | `TEST_LOG_VERBOSE` | boolean | `false` | Verbose test logging | | `ERROR_SHOW_STACK` | boolean | `true` | Show error stack traces | | `ERROR_SHOW_DETAILS` | boolean | `true` | Show detailed error info | ### Performance Thresholds | Variable | Type | Default | Description | |----------|------|---------|-------------| | `PERF_THRESHOLD_API_RESPONSE` | number | `100` | API response time threshold (ms) | | `PERF_THRESHOLD_DB_QUERY` | number | `50` | Database query threshold (ms) | | `PERF_THRESHOLD_NODE_PARSE` | number | `200` | Node parsing threshold (ms) | ### Mock Services | Variable | Type | Default | Description | |----------|------|---------|-------------| | `MSW_ENABLED` | boolean | `true` | Enable Mock Service Worker | | `MSW_API_DELAY` | number | `0` | API response delay (ms) | | `REDIS_MOCK_ENABLED` | boolean | `true` | Enable Redis mock | | `REDIS_MOCK_PORT` | number | `6380` | Redis mock port | | `ELASTICSEARCH_MOCK_ENABLED` | boolean | `false` | Enable Elasticsearch mock | | `ELASTICSEARCH_MOCK_PORT` | number | `9201` | Elasticsearch mock port | ### Paths | Variable | Type | Default | Description | |----------|------|---------|-------------| | `TEST_FIXTURES_PATH` | string | `./tests/fixtures` | Test fixtures directory | | `TEST_DATA_PATH` | string | `./tests/data` | Test data directory | | `TEST_SNAPSHOTS_PATH` | string | `./tests/__snapshots__` | Snapshots directory | ### Other Settings | Variable | Type | Default | Description | |----------|------|---------|-------------| | `CACHE_TTL` | number | `0` | Cache TTL (0 = disabled) | | `CACHE_ENABLED` | boolean | `false` | Enable caching | | `RATE_LIMIT_MAX` | number | `0` | Rate limit max requests (0 = disabled) | | `RATE_LIMIT_WINDOW` | number | `0` | Rate limit window (ms) | | `TEST_CLEANUP_ENABLED` | boolean | `true` | Auto cleanup after tests | | `TEST_CLEANUP_ON_FAILURE` | boolean | `false` | Cleanup on test failure | | `NETWORK_TIMEOUT` | number | `5000` | Network request timeout (ms) | | `NETWORK_RETRY_COUNT` | number | `0` | Network retry attempts | | `TEST_MEMORY_LIMIT` | number | `512` | Memory limit (MB) | ## Best Practices 1. **Never commit sensitive values**: Use `.env.test.local` for API keys, tokens, etc. 2. **Use type-safe config access**: Always use `getTestConfig()` instead of accessing `process.env` directly. 3. **Set appropriate timeouts**: Use `getTestTimeout()` with the correct test type. 4. **Check feature flags**: Use `isFeatureEnabled()` to conditionally run tests. 5. **Reset environment when needed**: Use `resetTestEnvironment()` for test isolation. ## Examples ### Running Tests with Custom Configuration ```bash # Run with verbose logging DEBUG=true npm test # Run with longer timeouts TEST_TIMEOUT_UNIT=10000 npm test # Run without mocks FEATURE_MOCK_EXTERNAL_APIS=false npm test # Run with test containers FEATURE_USE_TEST_CONTAINERS=true npm test ``` ### Creating Test-Specific Configuration ```typescript // tests/unit/my-test.spec.ts import { describe, it, expect, beforeAll } from 'vitest'; import { getTestConfig } from '@tests/setup/test-env'; describe('My Feature', () => { const config = getTestConfig(); beforeAll(() => { // Use test configuration if (config.features.mockExternalApis) { // Set up mocks } }); it('should respect performance thresholds', async () => { const start = performance.now(); // Your test code const duration = performance.now() - start; expect(duration).toBeLessThan(config.performance.thresholds.apiResponse); }); }); ``` ## Troubleshooting ### Tests failing with "Missing required test environment variables" Ensure `.env.test` exists and contains all required variables. Run: ```bash cp .env.test.example .env.test ``` ### Environment variables not loading 1. Check that `loadTestEnvironment()` is called in your setup 2. Verify file paths are correct 3. Ensure `.env.test` is in the project root ### Type errors with process.env Make sure to include the type definitions: ```typescript /// <reference types="../types/test-env" /> ``` Or add to your `tsconfig.json`: ```json { "compilerOptions": { "types": ["./types/test-env"] } } ```

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/88-888/n8n-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server