Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a monorepo with multiple web apps, run Percy’s Cypress SDK inside each app’s test job and provide that job with the Percy project token it should use. Percy’s documented Cypress workflow is to install @percy/cli and @percy/cypress, capture stable named states with cy.percySnapshot(), set PERCY_TOKEN, and run Cypress through npx percy exec -- cypress run. Which apps should share a Percy project is a team design choice; the Percy-authored sources reviewed here do not establish a universal monorepo rule.

How Percy fits a monorepo with multiple web apps

Percy associates test runs with a project token. In a monorepo, make the relationship between each app’s CI job and its intended Percy project explicit. This helps keep visual results attributable to the app that produced them.

Percy’s documented Cypress setup is a supported starting point, not a complete monorepo recipe. Choose where each app’s tests run, how dependencies are installed, and whether apps share a project according to your repository and review process.

Decide whether apps share a Percy project

The available Percy-authored sources do not prescribe how many projects a monorepo should use. Treat the choice as a design decision to verify against the current Percy account and CLI behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Design Consider it when Questions to settle
Separate project/config boundaries per app Apps need independent baselines, owners, or review cadence. Can each CI job access only its app’s intended token? Are build failures and baseline approvals easy to attribute?
One shared project The team intentionally wants a shared visual baseline and approval lifecycle. Are snapshot names unambiguous? Do reviewers understand which app produced each result? Does the current account and CLI support the workflow you intend?

These are engineering trade-offs, not Percy-mandated topologies. Also decide whether app jobs run concurrently or whether a test suite is sharded: the sources cited here do not establish current cross-framework or general multi-app parallel-build coordination.

Map apps, tests, and CI ownership

Before changing configuration, document the route from each app to its test command and Percy project. Keep this mapping in app-level CI configuration or another place maintainers can review.

App Test framework and command Base URL or environment Percy project/token owner CI job
App A Fill in repository value Fill in environment URL Fill in project and secret owner Fill in job name
App B Fill in repository value Fill in environment URL Fill in project and secret owner Fill in job name

Replace the example rows with actual repository details. If your apps use different test frameworks, Percy setup may differ by app; the concrete commands below cover Cypress because that is the documented workflow cited here.

Install Percy for a Cypress app

Install Percy’s CLI and Cypress integration in the workspace where your repository’s package-manager conventions make them available to that app:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npm install --save-dev @percy/cli @percy/cypress

Where these packages belong depends on your monorepo’s package manager and workspace setup. The cited guide does not specify package-manager-specific hoisting or workspace configuration, so follow your repository’s established dependency policy.

Load the Cypress integration from the support setup used by the app’s tests:

import '@percy/cypress'

Then add snapshots to tests that drive the app into states worth reviewing:

cy.percySnapshot('Account settings — loaded');

Use meaningful names that distinguish the app, page, and state when project organization alone does not make that context clear. Keep the captured set focused on critical pages or components rather than every possible state.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make snapshots stable and useful

Visual comparisons are most actionable when captures represent intentional, repeatable UI states. For each app’s visual coverage:

  • Control fixture data and other inputs that affect what the page renders.
  • Wait for relevant UI activity to settle before taking the snapshot.
  • Avoid volatile timestamps, randomized content, and animations that create noisy differences.
  • Choose a small, purposeful set of pages and component states that matter to the app.
  • Review proposed baseline changes deliberately and approve only visual changes the team intends to accept.

These practices follow Percy’s Cypress guidance. Apply them independently to each app so a shared repository does not turn unrelated UI churn into indistinguishable review work.

Run Cypress through Percy in each app’s CI job

Store the relevant Percy project token in your CI secret manager and expose it to the corresponding app job as PERCY_TOKEN. Do not commit a real token to source control or place it in a checked-in example.

Percy’s documented Cypress command is:

npx percy exec -- cypress run

Run it in the app’s appropriate workspace, with that app’s test configuration and intended token. The per-app orchestration is a practical monorepo pattern; it is not a Percy-published universal monorepo recipe.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
# Example shape only: run from the app workspace with its CI secret configured as PERCY_TOKEN
npx percy exec -- cypress run

For a repository using separate CI jobs, configure each job to select the correct workspace and secret rather than relying on an implicit repository-wide token. If jobs must run simultaneously, or one suite is split across workers, check the current Percy CLI documentation for the supported build and parallelization mechanism before adding coordination flags. A 2020 Percy changelog entry describes more straightforward parallel-build support and global configuration for Ember SDK v2; that release note is specific to that SDK and does not establish current behavior for Cypress, other frameworks, or cross-app builds.

Review builds and baselines by app

Review the Percy build produced by the relevant app job. Make snapshot names recognizable wherever the project layout does not already communicate app ownership, and approve baseline changes only after confirming they reflect intended UI changes.

Keep CI ownership clear as well: a failed capture, unexpected diff, or missing result should be traceable to the app job and token that produced it. This is a configuration and review practice, not a claim about special Percy monorepo semantics.

Cross-host assets: check version-sensitive guidance

If an app loads assets from another hostname, a 2019 Percy changelog describes an agent.asset-discovery.allowed-hostnames setting and says the feature requires @percy/agent v0.10.0 or later. That is a legacy, version-qualified example, not a guarantee that the same syntax is current. Check the current CLI and SDK documentation for your installed versions before relying on it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot common monorepo problems

Results appear under the wrong Percy project

Check which CI secret is exported as PERCY_TOKEN in the app job, and confirm the job is running the intended app’s tests. Keep app-to-token mapping explicit rather than depending on a shared environment default.

The Percy integration is not available to Cypress

Confirm that @percy/cypress is installed where the app’s Cypress run can resolve it and that its support setup imports @percy/cypress. Workspace and hoisting behavior varies by package-manager configuration.

Snapshots are missing or visually noisy

Verify that the test reaches the intended page state before cy.percySnapshot(). Stabilize fixture data, wait for relevant UI activity, and remove volatile content or animation from the captured state where appropriate.

Concurrent jobs or shards do not behave as expected

Do not assume that separate app jobs or test shards automatically form one coordinated Percy build. Check current Percy documentation for the installed CLI/SDK and your account’s integration; the reviewed sources do not establish universal parallel-build behavior for this setup.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Assets from a second hostname are absent

Check the current asset-discovery guidance for the installed version. The older changelog example references agent.asset-discovery.allowed-hostnames and @percy/agent v0.10.0+, but its syntax should not be assumed current.

Or skip the browser setup:

If your goal is to capture rendered website screenshots outside Percy’s visual-review workflow, ScreenshotNeo is a website screenshot API and MCP server. It is not a replacement for Percy’s Cypress test integration or baseline-review process.

One GET request can return a screenshot or PDF. For a PNG capture, request an image format explicitly as appropriate to your setup; the basic API call is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. ScreenshotNeo removes cookie banners, popups, and chat widgets before the shot; bot checks, blank pages, and failed loads are never billed; an MCP server lets AI agents take screenshots; and 1,000 screenshots per month are free with no card, with paid plans starting at $5 for 3,000. Sign up for ScreenshotNeo’s free plan.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.