Percy is designed to integrate with your tests and CI environment. To enable Percy, the token environment variable must be configured in your CI service:
`
PERCY_TOKEN
`: The Percy repo write-only API token. This is unique for each Percy repository.
# Buildkite pipeline setup
Buildkite provides an easy way to set environment variables in your build pipeline config or agent hooks:
<https://buildkite.com/docs/guides/environment-variables>
In your Buildkite pipeline, go to Settings > Steps > Environment Variables.
Then set `PERCY_TOKEN
` to the write-only token from your Percy repo. This token can be found in each Percy repo's settings.

**IMPORTANT: Keep your Percy token secret.** Anyone with access to your token can consume your account quota, though they cannot read data.
## Setup for docker-compose
If you use Docker containers in your Buildkite builds, you need to pass some environment variables in to your containers for Percy's client library to detect the environment correctly.
Add this to your `docker-compose.yml
`:
By leaving the value blank, Docker will pass through the value from the host Buildkite environment.
# Next step: integrate with tests
You're done with setup---the last step is to integrate Percy into your tests and run them. Just choose your client library:
JavaScript
[Ember](🔗)
[React](🔗)
[Storybook for React](🔗)
[Storybook for Angular](🔗)
[Storybook for Vue.js](🔗)
[Storybook for Ember](🔗)
[Cypress](🔗)
[WebdriverIO](🔗)<sup>beta</sup>
[Puppeteer](🔗)<sup>beta</sup>
[Nightmare.js](🔗)<sup>beta</sup>
[Protractor](🔗)<sup>beta</sup>
Ruby
[Rails](🔗)
[Other](🔗)
[Capybara, no tests](🔗)
[Best practices](🔗)
Python
[Selenium](🔗)
Static sites
[Command-line client](🔗)
Everything else
[Percy Anywhere](🔗)