Selenium for Ruby

Integrating Percy with your Selenium Ruby tests

👍

Covered in this doc

  • Integrating Percy with your Selenium Ruby tests
  • Installing and importing the percy module
  • Calling and configuring Percy.snapshot

Gem VersionGem Version TestTest

Setup


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

Install @percy/cli (currently only available from NPM). This package does the heavy lifting & communication to our API:

npm install --save-dev @percy/cli
yarn add -D @percy/agent

Now install the percy-selenium Ruby package:

$ gem install percy-selenium

Step 1: In order to start creating snapshots from your Selenium tests, you'll need to import the Percy.snapshot function from the percy package into your test.

# At the top of your test file(s) OR the top of your test helper file
require 'percy'

Step 2: You can now incorporate visual tests in your existing suite:

require 'percy'

driver = Selenium::WebDriver.for :firefox
driver.navigate.to "https://example.com"

# Take a snapshot
Percy.snapshot(driver, 'homepage')

driver.quit

Step 3: Finally, wrap your test runner command in the percy exec command. This will start a local Percy server to receive snapshots from your Ruby Selenium tests. From there the snapshots are processed and uploaded to your Percy dashboard. An example might be: percy exec -- bundle exec rspec.

Before you can successfully run Percy, the PERCY_TOKEN environment variable must be set:

export PERCY_TOKEN=[your-projects-token]
set PERCY_TOKEN=[your-projects-token]

# Powershell
$Env:PERCY_TOKEN="[your-projects-token]"

Now you can run percy exec. For example:

percy exec -- bundle exec rspec

Note the double dash, --, between percy exec and your test run command.

That's it! Now, whenever you run your tests with Percy, a snapshot of the app in that state will be uploaded to Percy for visual regression testing!

Configuration

Percy.snapshot(driver, name[, options])

Global configuration

You can also configure Percy to use the same options over all snapshots. To see supported configuration read our configuration docs