Percy Developer Hub

Welcome to the Percy Developer Hub. You'll find comprehensive guides and documentation to help you start working with Percy as quickly as possible, as well as support if you get stuck. Let's jump right in!


Covered in this doc

Installing Percy's Ember addon
Add Percy snapshots to your Ember app for visual testing
Configure your snapshots and test set up to meet your needs

Package StatusPackage Status Package StatusPackage Status


If you're not ready to integrate Percy, check out our 2-minute Ember tutorial and example app with Percy already added.


These docs apply to version 3.0.0 or later. Previous versions of @percy/ember are incompatible with what is described in this document. v2 docs can be found here

Install @percy/cli and @percy/ember

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


This is an example using the percySnapshot function.

import percySnapshot from '@percy/ember';

describe('My ppp', () => {
  // setup

  it('about page should look good', () => {
    await visit('/about');
    await percySnapshot('My Snapshot');

Running the test above directly will result in the following logs:

$ ember test
[percy] Percy is not running, disabling snapshots

When running with percy exec, and your project's PERCY_TOKEN, a new Percy build will be created and snapshots will be uploaded to your project.

$ export PERCY_TOKEN=[your-project-token]
$ percy exec -- ember test
[percy] Percy has started!
[percy] Created build #1:[your-project]
[percy] Running "ember test"
[percy] Snapshot taken "My Snapshot"
[percy] Stopping percy...
[percy] Finalized build #1:[your-project]
[percy] Done!


percySnapshot(name[, options])

  • name (required) - The snapshot name; must be unique to each snapshot
  • options - Additional snapshot options (overrides any project options)
    • options.widths - An array of widths to take screenshots at
    • options.minHeight - The minimum viewport height to take screenshots at
    • options.percyCSS - Percy specific CSS only applied in Percy's rendering environment
    • options.requestHeaders - Headers that should be used during asset discovery
    • options.enableJavaScript - Enable JavaScript in Percy's rendering environment

Automatic snapshot names

The name argument can optionally be provided as QUnit.assert or an instance of Mocha.Test which will automatically generate a snapshot name based on the full test name.


Important: Snapshot names must be unique. If you have multiple tests with the same title, or call percySnapshot multiple times inside a single test, you must provide a unique name.


describe('Acceptance: My app', () => {
  // setup

  describe('About page', () => {
    test('should look good', () => {
      await visit('/about');
      await percySnapshot(assert);
      // => Snapshot taken: "Acceptance: My app | About page | should look good"


describe('Acceptance: My app', () => {
  // setup

  describe('about page', () => {
    it('should look good', () => {
      await visit('/about');
      await percySnapshot(assert);
      // => Snapshot taken: "Acceptance: My app about page should look good"


Automatically with @percy/migrate

We built a tool to help automate migrating to the new CLI toolchain! Migrating can be done by running the following commands and following the prompts:

$ npx @percy/migrate
? Are you currently using @percy/ember? Yes
? Install @percy/cli (required to run percy)? Yes
? Migrate Percy config file? Yes
? Upgrade SDK to @percy/[email protected]? Yes

This will automatically run the changes described below for you.


Installing @percy/cli

If you're coming from a pre-3.0 version of this package, make sure to install @percy/cli after upgrading to retain any existing scripts that reference the Percy CLI command.

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

Migrating Config

If you have a previous Percy configuration file, migrate it to the newest version with the config:migrate command:

$ percy config:migrate


  • Missing fonts in Percy? Make sure that your tests/index.html mirrors your main index.html file. You should include any fonts or external stylesheets in both places.

Updated 6 days ago


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.