Skip to the content.

Configuration Guide

This page shows how to configure Adaptive Tests for common setups. Keep it simple: start with the defaults, add only what you need.

JavaScript / TypeScript

Create adaptive-tests.config.js in your project root:

/** @type {import('@adaptive-tests/javascript').DiscoveryOptions} */
module.exports = {
  discovery: {
    // File types to scan. Add `.ts` / `.tsx` for TS projects
    extensions: ['.js', '.ts', '.tsx'],

    // Depth of directory traversal (default ~10)
    maxDepth: 10,

    // Folders to skip during scanning
    skipDirectories: [
      'node_modules', '.git', 'dist', 'build', 'coverage',
      '__tests__', '__mocks__'
    ],

    // Cache results to speed up repeated runs
    cache: {
      enabled: true,
      file: '.adaptive-tests-cache.json',
      // ttl: 24 * 60 * 60, // seconds (optional)
      logWarnings: false
    },

    // Tuning signals. Defaults are sane; tweak only if needed.
    scoring: {
      // allowLooseNameMatch: true,
      // looseNamePenalty: -25,
      paths: {
        positive: { '/src/': 12, '/app/': 6, '/lib/': 4 },
        negative: { '/__tests__/': -40, '/fixtures/': -15 }
      }
    }
  }
};

Use it in tests (Jest example):

const { getDiscoveryEngine } = require('@adaptive-tests/javascript');

test('Calculator', async () => {
  const engine = getDiscoveryEngine(process.cwd(), require('./adaptive-tests.config.js'));
  const Calculator = await engine.discoverTarget({ name: 'Calculator', type: 'class' });
  expect(new Calculator().add(2, 3)).toBe(5);
});

TypeScript path aliases

If you use path aliases, Adaptive Tests will attempt to resolve them automatically from tsconfig.json. Keep your aliases in compilerOptions.paths and ensure the config lives at the repo root (or pass a custom rootPath to getDiscoveryEngine).

Python

Most projects don’t need a config file. To customize runtime behavior, pass options to DiscoveryEngine or create a small module to centralize defaults.

from adaptive_tests_py.discovery import DiscoveryEngine

def make_engine(root=None):
    return DiscoveryEngine(root, config={
        "discovery": {
            "extensions": [".py"],
            "max_depth": 12,
            "skip_directories": [".git", "__pycache__", ".venv", "build"],
            "cache": {"enabled": True, "file": ".adaptive-tests-cache.json"}
        }
    })

Java

Java uses its own package under languages/java. Maven/Gradle layouts are detected automatically. Consult the Java README for details on configuration and scaffolding.

Tips