Plugins

Plugins provide a way to support and extend the behavior of Cypress. Follow these instructions to submit your own plugin.

Plugin Types

Preprocessors

  • Cucumber

    community

    Run cucumber/gherkin-syntaxed specs with cypress.io

    #file-watcher#cucumber
  • Cytorus

    community

    Run cucumber/gherkin-syntaxed specs with cypress.io

    #gherkin#cucumber
  • Reruns Cypress tests when the back end server restarts

    #file-watcher
  • Runs linting via ESLint on your spec files as they are loaded and display errors in the console

    #eslint
  • Watch

    official

    Watches your spec files and serves them as-is. Useful as an example reference or if you don't need transpiling/bundling.

    #file-watcher
  • Webpack

    official

    Watches and bundles your spec files via webpack.

    #webpack
  • Rollup

    community

    Watches and bundles your spec files via Rollup

    #rollup
  • Cypress preprocessor for extracting tests from Markdown files

    #markdown
  • Cypress preprocessor for bundling JavaScript via rollup

    #rollup
  • Bundle Cypress specs using esbuild

    #esbuild
  • Uses evanw/esbuild to bundle your specs.

    #esbuild
  • cypress-vite

    community

    Cypress preproccessor for running specs using vite

    #vite

Development Tools

  • Official Cypress Orb for CircleCI configuration.

    #continuous-integration
  • cypress-dark

    verified

    Several color themes for Cypress test runner

    #theme
  • cypress-protobuf

    community

    Encode a fixture with Protocol Buffers.

    #encoding#protobuf
  • Docker

    official

    Docker images providing all the dependencies to run Cypress in CI including browsers.

    #docker#continuous-integration
  • ESLint plugin that sets globals for writing tests in Cypress.

    #eslint
  • Dynamic tests split across parallel CI nodes with Knapsack Pro Queue Mode to get faster CI builds. Note - this is 3rd party implementation, different from the Cypress Dashboard parallelization.

    #CI parallelisation#continuous-integration
  • TypeScript

    official

    Official TypeScript definitions for the Cypress API.

    #typescript
  • cly

    community

    A prototype of generating quicker project scaffolding for Cypress.

    #cypress cli#prototype#CLI#scaffolding
  • Reloads Cypress when one of the watched files changes

    #file-watcher
  • cypress-autostub

    community

    Alleviates the need to mantain brittle manual mocks by automating the recording and stubbing of requests.

    #mocking#stubbing#recording#fetch#xhr
  • Reloads Cypress using livereload

    #livereload
  • User space solution for grepping Cypress tests to run

    #browserify
  • cypress-grep

    community

    Filter tests using its title or tags

    #grep
  • Simplify API mocking by auto-recording/stubbing HTTP interactions and automating the process of updating/deleting mocks.

    #mock#recording#http#integration test
  • Plugin to save code coverage collected during Cypress tests

    #coverage
  • NPM module for create-react-app applications to instrument source code without ejecting react-scripts

    #coverage
  • @cypress/fiddle

    community

    Quickly generates Cypress E2E tests from HTML and JS code

    #prototype
  • npm-cy

    community

    This GitHub Action for npm enables arbitrary actions with the npm command-line client, including testing with cypress.io and publishing to a registry.

    #github#actions#npm
  • vscode-cy-helper

    community

    Visual Studio Code extension for cypress and cucumber preprocessor

    #vscode#extension#intellisense
  • cypress-dotenv

    community

    Cypress plugin that enables compatability with dotenv.

    #dotenv#env#environment#env var
  • Generate HTTP Archive (HAR) while running tests.

    #har#http-archive#http#websocket#recording#chrome
  • Cypress helper that checks number of expected and actual assertions in the test

    #test#assertion
  • cypress-audit

    community

    Run Lighthouse audit directly in your E2E test suites

    #lighthouse
  • Restarts tests when receiving webpack-dev-server HMR updates

    #webpack#webpack-dev-server#hmr
  • Cypress plugin that adds "extends" support to the configuration file

    #config
  • Controls permissions for desktop notifications, geolocation, and other browser APIs

    #permissions#notifications#geolocation#camera#microphone
  • cypress-repeat

    community

    Run Cypress multiple times in a row, great at finding test flake

  • cypress-expect

    community

    Cypress CLI wrapper where you can specify the total number of expected tests

    #cli
  • cy-search

    community

    Search Cypress documentation from the terminal

    #cli
  • cypress-tags

    community

    Use custom tags to slice up Cypress test runs

    #test#tag#browserify
  • Easily mock your REST API in Cypress by putting responses in the fixtures directory tree.

    #mock#rest#api
  • cypress-timings

    community

    A Cypress plugin for reporting individual command timings.

    #commands#performance
  • Enables fail fast in Cypress, skipping the rest of tests on first failure.

    #fail-fast#failure#skip#config
  • Fail cypress test on console error.

    #console#error#fail
  • Official Cypress extension for Chrome DevTools that allows you to export Cypress tests directly from the Recorder panel.

    #recording#chrome#extension#devtools

Custom Commands

  • cy-view

    community

    Run tests on multiple URLs at various viewport sizes.

    #viewports
  • cypress-unfetch

    verified

    Track, test, and block code execution based on network state.

    #commands#routing#networking
  • cypress-redux

    community

    Run assertions against Redux stores.

    #commands#redux
  • cypress-axe

    community

    Helps test your applications for accessibility issues using axe-core.

    #accessibility#a11y
  • Adds a cypress child command for drag'n'drop support.

    #dragndrop#drag#drop#commands
  • A Cypress command for fill inputs

    #commands
  • cypress-firebase

    community

    Custom commands for Firebase including Authentication and Database communication (both Real Time Database and Firestore).

    #firebase#database#commands
  • Custom commands to mock your GraphQL API at the network level. Using service-workers for complete isolation of the mock server.

    #graphql#mocking#networking#commands
  • Adds commands for executing a mocked GraphQL server using only the client

    #graphql
  • Mobile testing helper for Cypress

    #mobile#swipe#touch#commands
  • cypress-pipe

    community

    Create custom commands using plain-old functions. Similar to `cy.then` but with retriability.

    #commands
  • A custom command to download different kinds of files and store them on your local machine

    #commands#downloading
  • 🐅 Simple and complete custom Cypress commands and utilities that encourage good testing practices.

    #testing-library#dom-testing-library#react-testing-library
  • Simple commands that make it easy to target and fill in Stripe Elements input fields

    #stripe#commands#elements#inputs
  • cypress-xpath

    official

    Adds XPath command. This repo is also a good example of using custom commands to do retries, provide TypeScript definitions, etc.

    #xpath#commands
  • Allow recording API results and replaying the APIs as a mock server.

    #routing#mock
  • cypress-plugin-tab

    experimental

    A Cypress plugin to add a tab command

    #commands
  • cypress-commands

    community

    A collection of Cypress commands to extend and complement the defaults

    #commands
  • Add the Cypress waiting power to virtually everything 🎉

    #commands#wait#wait-until#recursive-promise#check-async-value#check-value#open-source-saturday
  • cypress-recurse

    community

    A way to re-run Cypress commands until a predicate function returns true

    #commands#wait#wait-until#recursive-promise#check-async-value#check-value
  • data-cy shorthand notation for cypress get and find functions

    #commands#shorthand
  • Simple commands to skip a test based on platform, browser or a url

    #commands
  • Test WebSocket connections with Cypress

    #commands#websocket
  • @bahmutov/cy-api

    community

    Cypress custom command "cy.api" for HTTP API testing with server logs

    #api
  • cy-spok

    experimental

    Adds assertions from Spok library for easy schema and value validations

    #assertions
  • Custom commands for localStorage. Allows preserving localStorage between tests

    #commands#localstorage#persistence
  • Custom commands for indexedDb. Allows populating, modifying and asserting data stored in indexedDb.

    #commands#indexedDb
  • cypress-iframe

    community

    Custom commands for interacting with iframes

    #commands#iframe
  • cypress custom commands to locate react elements by component, props and state

    #react#commands#locator
  • A simple utility to provide layout testing functionality to Cypress via custom assertions.

    #testing#ui#dom#assertions
  • cy-dom-diff allows matching chunks of DOM against HTML; including dynamic content.

    #dom#assertions
  • Fire native system events from Cypress like hover, swipe, etc

    #commands
  • Cypress custom command to get keys from Azure Key Vaults.

    #testing#azure#keyvault#secret
  • Add visual output and helper functions for performing REST and graphQL queries

    #api#rest#graphQL
  • Cypress commands to enable and disable browser forced colors mode

    #forced colors#high contrast#high contrast mode#contrast#testing
  • Cypress custom command to wait and verify that file was downloaded

    #commands#assertions#wait#verify#download

Extending other testing frameworks

  • cyphell

    community

    Converts WDIO automation tests to Cypress.

    #wdio
  • cypress-capybara

    community

    Several Capybara finders re-implemented in Cypress to locate UI elements by their text and labels.

    #testing-library#capybara
  • Add jest assertion style to Cypress expect command

    #jest
  • PickleJS

    community

    An addition to the Cucumber plugin, featuring a collection of phrases you can use for common actions (ex: "I click on an <Element>", "I should see an <Element>")

    #cucumber#collection#actions#commands
  • Simple commands to generate Pact contracts from your existing Cypress tests, maintained by the Pactflow team

    #pact#pactflow#contract testing#commands

Authentication

Also take a look at Logging in recipes.

  • Cypress commands for authenticate users with Keycloak Identity Provider

    #authentication#login#keycloak#oauth#openid
  • NTLM authentication support for Cypress

    #authentication#ntlm
  • cypress-otp

    community

    Valid OTP token generation for Cypress

    #authentication#otp#2fa#mfa
  • Cypress authentication flows using social network providers

    #authentication#login#social profiles#github#google

Framework tooling

  • Angular CLI addition that allows you to install Cypress E2E to an Angular CLI project

    #angular#cli
  • cypress-on-rails

    community

    Rubygem for using cypress.io with Ruby on Rails applications

    #ruby-rack#ruby-on-rails
  • Nx

    community

    Smart, Fast and Extensible Build System

    #angular#react#cli#monorepo
  • Vue CLI

    verified

    Vue CLI allows you to scaffold an application with Cypress E2E fully configured

    #vue.js#vue#cli
  • Cypress Nuxt

    community

    Utilities for using Cypress with Nuxt.

    #vue.js#vue#nuxt#nuxt.js
  • Aurelia CLI

    community

    The Aurelia CLI is the official command line tool for Aurelia.

    #aurelia#cli
  • Complete WordPress Plugin Boilerplate including Cypress.io E2E tests.

    #wp#wordpress
  • Next.js boilerplate with Jest/Cypress and CI/CD pipeline built-in (monorepo, multi-tenants)

    #next.js#react#monorepo#multi-tenants
  • A project template to learn how Elm, Parcel, Cypress and Netlify work together.

    #elm#parcel#netlify
  • cypress-rails

    community

    Ruby gem to run Cypress against Rails apps, replacing Capybara in system tests

    #ruby#rails
  • cypress-laravel

    community

    Add commands and hooks to test Laravel applications

    #php#laravel
  • cypress-splitio

    community

    Stores your split.io toggles as environment variables. Helps to decide which e2e tests you need to run.

    #split.io#feature flags
  • Bison

    community

    A Full Stack Jamstack Template that uses Cypress and GitHub Actions for E2E testing.

    #next.js#react#graphql#prisma#vercel
  • Adds Cypress to your Angular project via the Angular CLI

    #angular#cli

Component Testing

⚠️ Loading and mounting components from various frameworks is highly experimental and might change in the future.

Visual Testing

Visual testing is a great complement to functional testing

  • Applitools

    verified

    Fast, easy and reliable visual UI testing with Cypress

  • Percy

    verified

    Visual regression testing for Cypress tests with Percy.

    #screenshots#visual regression
  • Happo

    community

    Cross-platform, cross-browser screenshot testing for modern user interfaces.

    #screenshots#visual regression
  • Plugin for snapshot tests in Cypress. Same API as Jest, but with graphical interface for reviewing and approving changes.

    #snapshot
  • Catch visual regressions and compare image diffs locally and in Cypress Dashboard.

    #image-diff#snapshot
  • Adds visual regression testing to Cypress

    #image-diff#snapshot
  • Module for adding visual regression testing to Cypress.

    #image-diff#snapshot
  • Integration with open source service for visual testing and managing its results.

    #screenshots#image-diff#visual regression
  • Visual regression testing plugin maintained by DIT - UK Gov.

    #screenshots#visual regression#image-diff
  • Micoo

    community

    Cypress plugin for doing visual regression testing with Micoo service

    #visual regression testing#visual testing#screenshots comparison#testing service
  • Perform visual regression test with a nice GUI as help. 💅 Supports both E2E and Component Testing

    #screenshots#visual regression#visual testing#image-diff#image comparison#image snapshot
  • Tool for exporting Cypress Tests from Google Chrome DevTools' Recordings

    #visual testing#recorder

Reporting

  • Saves the Cypress test command log as a JSON file if a test fails.

    #reporter
  • Plugin that prints all browser console logs to the terminal while running Cypress tests. Currently, only Chrome is supported.

    #logging
  • TestRail Reporter which auto-set status for specific TestRun for Cypress.

    #testrail#reporter#autoset#status
  • Custom reporter for publishing Cypress results to a TestRail test run.

    #testrail#reporter
  • Custom reporter for Teamcity which makes it possible to display test results in real-time and add them on the Tests tab of the Build Results page

    #teamcity#reporter
  • Merges multiple mochawesome JSON reports

    #reporter#mochawesome
  • A simple tool which integrates Cypress with Slack to report failing tests.

    #reporter#slack#healthcheck
  • Slack reporting tool. Uses mochawesome json reports, provides links to VCS Provider (github/bitbucket) and CircleCI logs

    #reporter#mochawesome#slack
  • Logs cypress commands, route request data and browser console errors and warnings to terminal when tests fail on CI.

    #reporter#logs#terminal#CI#CLI
  • Integrates Allure reporter with Cypress. Command logging and screenshot attachment out of the box.

    #reporter#allure
  • Zero config Mochawesome reporter for Cypress with screenshots.

    #reporter#mochawesome#screenshot
  • A reporting tool which sends a message to Microsoft Teams with information about the latest cypress test execution results.

    #reporter#ms-teams#allure-report

Email

  • Test email and SMS messages using Mailosaur

    #email#sms#commands
  • cypress-maildev

    community

    A bunch of Cypress commands in order to test your messages (SMS and Emails) by using Maildev REST API.

    #email#sms#commands
  • Use test email accounts to send and receive emails in Cypress tests with MailSlurp.

    #email#mailslurp#test#commands

Legacy

  • Browserify

    official

    Watches and bundles your spec files via browserify.

    #browserify