$ cnpm install @percy/client
Communicate with Percy's API to create builds and snapshots, upload resources, and finalize builds
and snapshots. Uses @percy/env to send environment information with new
builds. Can also be used to query for a project's builds using a read access token.
import PercyClient from '@percy/client'
const client = new PercyClient(options)
token — Your project's PERCY_TOKEN (default process.env.PERCY_TOKEN)clientInfo — Client info sent to Percy via a user-agent stringenvironmentInfo — Environment info also sent with the user-agent stringCreates a percy build. Only one build can be created at a time per instance. During this step,
various environment information is collected via @percy/env and
associated with the new build. If PERCY_PARALLEL_TOTAL and PERCY_PARALLEL_NONCE are present, a
build shard is created as part of a parallelized Percy build.
await client.createBuild()
This method combines the work of creating a snapshot, uploading any missing resources, and finally finalizng the snapshot.
await client.sendSnapshot(buildId, snapshotOptions)
name — Snapshot namewidths — Widths to take screenshots atminHeight — Minimum screenshot heightenableJavaScript — Enable JavaScript for screenshotsclientInfo — Additional client infoenvironmentInfo — Additional environment inforesources — Array of snapshot resources
url — Resource URL (required)mimetype — Resource mimetype (required)content — Resource content (required)sha — Resource content sharoot — Boolean indicating a root resource## Create, upload, and finalize snapshotsThis method combines the work of creating a snapshot, creating an associated comparison, uploading associated comparison tiles, and finally finalizing the comparison.
await client.sendComparison(buildId, comparisonOptions)
name — Snapshot name (required)clientInfo — Additional client infoenvironmentInfo — Additional environment infoexternalDebugUrl — External debug URLtag — Tagged information about this comparison
name — The tag name for this comparison, e.g. "iPhone 14 Pro" (required)osName - OS name for the comparison tag; e.g. "iOS"osVersion - OS version for the comparison tag; e.g. "16"width - The width for this type of comparisonheight - The height for this type of comparisonorientation - Either "portrait" or "landscape"tiles — Array of comparison tiles
sha — Tile file contents SHA-256 hashfilepath — Tile filepath in the filesystem (required when missing content)content — Tile contents as a string or buffer (required when missing filepath)statusBarHeight — Height of any status bar in this tilenavBarHeight — Height of any nav bar in this tileheaderHeight — Height of any header area in this tilefooterHeight — Height of any footer area in this tilefullscreen — Boolean indicating this is a fullscreen tileFinalizes a build. When all is true, all-shards=true is added as a query param so the
API finalizes all other parallel build shards associated with the build.
// finalize a build
await client.finalizeBuild(buildId)
// finalize all parallel build shards
await client.finalizeBuild(buildId, { all: true })
Retrieves build data by id.
Requires a read access token
await client.getBuild(buildId)
Retrieves project builds, optionally filtered. The project slug can be found as part of the
project's URL. For example, the project slug for https://percy.io/percy/example is
"percy/example".
Requires a read access token
// get all builds for a project
await client.getBuilds(projectSlug)
// get all builds for a project's "master" branch
await client.getBuilds(projectSlug, { branch: 'master' })
sha — A single commit shashas — An array of commit shasbranch — The name of a branchstate — The build state ("pending", "finished", etc.)This method resolves when the build has finished and is no longer pending or processing. By default, it will time out if there is no update after 10 minutes.
Requires a read access token
// wait for a specific project build by commit sha
await client.waitForBuild({
project: 'percy/example',
commit: '40-char-sha'
}, data => {
// called whenever data changes
console.log(JSON.stringify(data));
})
build — Build ID (required when missing commit)commit — Commit SHA (required when missing build)project — Project slug (required when using commit)timeout — Timeout in milliseconds to wait with no updates (default 10 * 60 * 1000)interval — Interval in milliseconds to check for updates (default 10000)Copyright 2013 - present © cnpmjs.org | Home |