Core Package
Detection engine with DBSCAN clustering and pattern extraction
Overview
The core package (@flakiness-detective/core) contains the main detection algorithms:
- DBSCAN clustering with cosine/euclidean distance
- Rich Playwright error parsing
- Pattern extraction and frequency analysis
- Deterministic cluster IDs
- Input validation and type safety
Installation
pnpm add @flakiness-detective/coreBasic Usage
import { FlakinessDetective } from '@flakiness-detective/core';
const detective = new FlakinessDetective(
dataAdapter,
embeddingProvider,
{
timeWindow: { days: 7 },
clustering: {
epsilon: 0.15,
minPoints: 2,
minClusterSize: 2,
distance: 'cosine',
maxClusters: 5
}
},
'info' // log level
);
const clusters = await detective.detect();Configuration
Time Window
timeWindow: {
days: 7 // Analyze failures from last 7 days
}Clustering Options
epsilon (default: 0.15)
Distance threshold for clustering. Lower values create tighter, more specific clusters.
minPoints (default: 2)
Minimum neighbors required for a core point in DBSCAN.
minClusterSize (default: 2)
Minimum failures required to form a cluster.
distance (default: 'cosine')
Distance metric: cosine or euclidean. Cosine is better for semantic embeddings.
maxClusters (default: 5)
Maximum number of clusters to return (top N by size).
Pattern Extraction
The core package automatically extracts patterns from Playwright errors:
- Locators: CSS selectors, role-based locators
- Matchers: toBeVisible, toContainText, etc.
- Values: Actual vs expected values
- Timeouts: Timeout durations
- Line numbers: Source code locations
- Run IDs: GitHub Actions run identifiers
TypeScript Types
import type {
FlakinessDetectiveConfig,
TestFailure,
FailureCluster
} from '@flakiness-detective/core';