cli icon indicating copy to clipboard operation
cli copied to clipboard

The Percy CLI is used to interact with, and upload snapshots to, percy.io via the command line.

Percy CLI

Test

The Percy CLI is used to interact with, and upload snapshots to, percy.io via the command line.

  • Installation
  • Command Topics
  • Advanced
  • Issues
  • Developing

Installation

$ npm install --save-dev @percy/cli

Command Topics

  • percy exec - capture and upload snapshots
  • percy snapshot - snapshot a static directory or a list of pages
  • percy upload - upload a static directory of images
  • percy config - manage configuration files
  • percy build - interact with Percy builds

Advanced

In addition to the CLI packages, this repo contains core libraries responsible for Percy's CI/CD integrations, Percy API communication, DOM serialization, asset discovery, etc.

  • @percy/core - performs snapshot asset discovery and uploading
  • @percy/client - handles communicating with the Percy API
  • @percy/dom - serializes DOM snapshots
  • @percy/env - captures CI build environment variables
  • @percy/config - loads Percy configuration files
  • @percy/logger - common logger used throughout the CLI
  • @percy/sdk-utils - shared helpers for JavaScript SDKs
  • @percy/cli-command - Percy CLI command framework

Issues

For problems directly related to the CLI, add an issue on GitHub.

For other issues, open a support request.

Developing

This project is built with lerna. The core libaries and CLI plugins are located in ./packages. Run yarn to install dependencies after cloning the repo and use the following scripts for various development tasks:

  • yarn build - build all packages

  • yarn build:watch - build and watch all packages in parallel

  • yarn clean - clean up build and coverage output

  • yarn lint - lint all packages

  • yarn readme - generate cli commands readme usage

  • yarn test - run all tests, one package after another

  • yarn test:coverage - run all tests with coverage, one package after another

  • yarn global:link - links all packages being developed as global.

    • requires yarn build to be run before consuming.
    • we can then consume this package using yarn link @percy/[core|cli..]
    • Note: linking is only required once, subsequent changes for development requires running build command.
  • yarn global:unlink - unlinks all packages globally

Individual package scripts can be invoked using yarn's workspace command. For example:

$ yarn workspace @percy/core test

How to update Chromium revision?

check in Core Package's readme here.