Skip to content

Client API Reference

Complete API reference for the KoumaClient class.

KoumaClient

Constructor

typescript
import { KoumaClient } from "kouma";

const client = new KoumaClient(config: KoumaClientConfig);

KoumaClientConfig

PropertyTypeDescription
hoststringKouma server URL (e.g., "https://kouma.example.com")
apiKeystringProject API key, sent as x-api-key header

newBuildStaged(options)

Create a build, upload screenshots to a build-specific staging area, and finalize. This is the recommended method — safe for parallel builds.

typescript
const result = await client.newBuildStaged(options: NewBuildOptions): Promise<InitializedBuild | undefined>;

Internally executes: createBuilduploadBuildScreenshot (per file) → finalizeBuild.


createBuild(options)

Create a new build record without triggering analysis. First step of the staged build flow.

typescript
const result = await client.createBuild(options: CreateBuildOptions): Promise<InitializedBuild>;

CreateBuildOptions

PropertyTypeRequiredDescription
pidstringYesProject ID
buildVersionstringYesBuild version identifier (e.g., git SHA)
metadataRecord<string, string>NoCustom metadata (keys prefixed with meta_)

uploadBuildScreenshot(bid, filePath)

Upload a single screenshot to a build-specific staging area.

typescript
const result = await client.uploadBuildScreenshot(bid: string, filePath: string): Promise<UploadResult>;

UploadResult

PropertyTypeDescription
receivedImagesstring[]Filenames of images the server received

finalizeBuild(bid)

Trigger analysis for a previously created build. Call after all screenshots have been uploaded.

typescript
const result = await client.finalizeBuild(bid: string): Promise<InitializedBuild>;

newBuild(options) deprecated

Upload screenshots sequentially and initialize a build.

typescript
const result = await client.newBuild(options: NewBuildOptions): Promise<InitializedBuild | undefined>;

newBuildSync(options) deprecated

Upload all screenshots and trigger comparison in a single request.

typescript
const result = await client.newBuildSync(options: NewBuildOptions): Promise<SyncBuildResult | undefined>;

getBuildStats(bid)

Get statistics for a specific build.

typescript
const stats = await client.getBuildStats(bid: string): Promise<BuildStats>;

getLatestBuildStats(pid)

Get the latest build statistics for a project.

typescript
const stats = await client.getLatestBuildStats(pid: string): Promise<LatestBuildStats>;

Types

NewBuildOptions

PropertyTypeRequiredDescription
pidstringYesProject ID
buildVersionstringYesBuild version identifier (e.g., git SHA)
screenshotsDirectorystringYesPath to directory containing screenshot images
metadataRecord<string, string>NoCustom metadata (keys prefixed with meta_)

InitializedBuild

PropertyTypeDescription
pidstringProject ID
bidstringCreated build ID
buildIndexnumberSequential build number

SyncBuildResult

PropertyTypeDescription
pidstringProject ID
bidstringBuild ID
buildIndexnumberSequential build number
statusstringBuild status (e.g., "completed")
resultstringBuild result (e.g., "passed", "failed")

BuildStats

PropertyTypeDescription
statusstringBuild status
resultstringBuild result

LatestBuildStats

PropertyTypeDescription
indexnumberBuild index
bidstringBuild ID
statusstringBuild status
resultstringBuild result

Cypress Plugin

createCypressPlugin

typescript
import { createCypressPlugin } from "kouma/cypress";

createCypressPlugin(
    on: Cypress.PluginEvents,
    clientOptions: KoumaClientConfig & { pid: string; buildVersion: string },
    pluginOptions?: CypressPluginOptions
);

CypressPluginOptions

PropertyTypeDefaultDescription
triggerVisualTestingbooleantrueEnable visual testing upload
triggerOnAllPassedbooleantrueOnly upload when all tests pass
removeScreenshotsAfterUploadbooleantrueRemove local screenshots after upload

See the Cypress Integration guide for usage.


Playwright Reporter

KoumaPlaywrightReporter

typescript
// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({ reporter: [['kouma/playwright', reporterOptions]] });

PlaywrightReporterOptions

PropertyTypeRequiredDefaultDescription
hoststringYesKouma server URL
apiKeystringYesProject API key
pidstringYesProject ID
buildVersionstringYesBuild version identifier
triggerVisualTestingbooleanNotrueEnable visual testing upload
triggerOnAllPassedbooleanNotrueOnly upload when all tests pass
removeScreenshotsAfterUploadbooleanNotrueRemove local screenshots after upload

See the Playwright Integration guide for usage.


Exports

All types are exported from the main package:

typescript
import type {
    KoumaClientConfig,
    NewBuildOptions,
    CreateBuildOptions,
    InitializedBuild,
    SyncBuildResult,
    BuildStats,
    LatestBuildStats,
    CypressPluginOptions,
    PlaywrightReporterOptions,
    UploadResult,
} from 'kouma';

Released under the MIT License.