Configuration

Complete configuration reference for Flakiness Detective

Configuration Object

import type { FlakinessDetectiveConfig } from '@flakiness-detective/core';

const config: FlakinessDetectiveConfig = {
  timeWindow: {
    days: 7
  },
  clustering: {
    epsilon: 0.15,
    minPoints: 2,
    minClusterSize: 2,
    distance: 'cosine',
    maxClusters: 5
  }
};

Time Window

timeWindow.days

Number of days to look back for test failures.

  • Type: number
  • Default: 7
  • Range: 1-365
timeWindow: {
  days: 14  // Analyze last 2 weeks
}

Clustering Options

clustering.epsilon

Maximum distance between two points to be considered neighbors in DBSCAN.

  • Type: number
  • Default: 0.15 (for cosine distance)
  • Range: 0.0-1.0
  • Tip: Lower values = tighter, more specific clusters
clustering.minPoints

Minimum number of neighbors required for a point to be a core point in DBSCAN.

  • Type: number
  • Default: 2
  • Range: 2-10
  • Tip: Higher values = require more similar failures
clustering.minClusterSize

Minimum number of failures required to form a cluster.

  • Type: number
  • Default: 2
  • Range: 2-100
clustering.distance

Distance metric for comparing embeddings.

  • Type: 'cosine' | 'euclidean'
  • Default: 'cosine'
  • Recommended: Use 'cosine' for semantic embeddings
clustering.maxClusters

Maximum number of clusters to return (top N by size).

  • Type: number
  • Default: 5
  • Range: 1-100

Example Configurations

Strict Clustering

For finding only very similar failures:

{
  timeWindow: { days: 7 },
  clustering: {
    epsilon: 0.1,      // Tighter threshold
    minPoints: 3,      // Require more neighbors
    minClusterSize: 3, // Larger clusters only
    distance: 'cosine',
    maxClusters: 5
  }
}

Loose Clustering

For finding broader patterns:

{
  timeWindow: { days: 14 },
  clustering: {
    epsilon: 0.25,     // Looser threshold
    minPoints: 2,      // Default
    minClusterSize: 2, // Include smaller clusters
    distance: 'cosine',
    maxClusters: 10    // Show more clusters
  }
}

Production Recommended

Balanced configuration for production use:

{
  timeWindow: { days: 7 },
  clustering: {
    epsilon: 0.15,
    minPoints: 2,
    minClusterSize: 2,
    distance: 'cosine',
    maxClusters: 5
  }
}

Tuning Guide

Too many clusters?

  • Decrease epsilon (0.15 → 0.1)
  • Increase minPoints (2 → 3)
  • Increase minClusterSize (2 → 3)

Not finding patterns?

  • Increase epsilon (0.15 → 0.2)
  • Increase timeWindow.days (7 → 14)
  • Try distance: 'euclidean'

Clusters too broad?

  • Decrease epsilon (0.15 → 0.12)
  • Use distance: 'cosine' for semantic similarity