@flakiness/sdk
v1.0.2
Published
Comprehensive SDK for creating and managing Flakiness JSON Reports in Node.js
Readme
Flakiness Node.js SDK
The Flakiness SDK provides a comprehensive set of tools for creating and managing Flakiness JSON Reports in Node.js.
Installation
npm i @flakiness/sdk @flakiness/flakiness-reportQuick Start
Here's a minimal example of creating a Flakiness JSON Report:
import { FlakinessReport } from '@flakiness/flakiness-report';
import {
GitWorktree,
ReportUtils,
writeReport,
uploadReport,
CIUtils
} from '@flakiness/sdk';
// Initialize git worktree and environment
const worktree = GitWorktree.create(process.cwd());
const env = ReportUtils.createEnvironment({ name: 'CI' });
// Create a simple test report
const report: FlakinessReport.Report = {
category: 'testreport',
commitId: worktree.headCommitId(),
url: CIUtils.runUrl(),
environments: [env],
suites: [{
title: 'My Test Suite',
type: 'describe',
tests: [{
title: 'My Test',
location: { file: 'test.spec.ts', line: 10, column: 1 },
attempts: [{
environmentIdx: 0,
status: 'passed',
expectedStatus: 'passed',
duration: 100 as FlakinessReport.DurationMS,
}],
}],
}],
startTimestamp: Date.now() as FlakinessReport.UnixTimestampMS,
duration: 100 as FlakinessReport.DurationMS,
};
// Write report to disk or upload to Flakiness.io
await writeReport(report, [], './flakiness-report');
// Or: await uploadReport(report, [], { flakinessAccessToken: 'your-token' });Entry Points
The SDK provides two entry points:
@flakiness/sdk
The main entry point for Node.js environments. Provides full access to all SDK functionality including:
- Git repository utilities
- File system operations
- System resource monitoring
- Report upload/download
- Local report viewing
@flakiness/sdk/browser
A browser-compatible entry point with a subset of utilities that work in browser environments. Exports:
ReportUtils- Browser-safe utilities (normalizeReport, stripAnsi, visitTests)
Use this entry point when you need to process or manipulate reports in browser-based tools or web applications.
Top-Level Exports
Building Reports
CIUtils- Utilities to extract CI/CD information (run URLs, environment detection)GitWorktree- Git repository utilities for path conversion and commit informationReportUtils- Namespace with utilities for report creation and manipulation:createEnvironment()- Create environment objects with system informationnormalizeReport()- Deduplicate environments, suites, and testscollectSources()- Extract source code snippets for locations in the reportstripAnsi()- Remove ANSI escape codes from stringsvisitTests()- Recursively visit all tests in a reportcreateFileAttachment()/createDataAttachment()- Create report attachments
CPUUtilization- Track CPU utilization over time via periodic samplingRAMUtilization- Track RAM utilization over time via periodic sampling
Working with Reports
readReport()- Read a Flakiness report and its attachments from diskshowReport()- Start a local server and open the report in your browseruploadReport()- Upload reports and attachments to Flakiness.iowriteReport()- Write reports to disk in the standard Flakiness report format
Project Configuration
FlakinessProjectConfig- Manage project configuration stored in.flakiness/config.json
