Skip to main content


The cypress utilities provide cypress plugins and command/setups that help with e.g. running cucumber/gherkin feature files, automatic login before tests or recording/replaying network requests for CI.

Upgrading the commands & plugins libraries

Please refer to the Upgrade guide.

Setting up dependencies, commands, plugins, etc

Installing/upgrading cypress

Cypress is just a peer dependency of the npm packages that we provide, so you'll have to install it yourself. A guide for installing cypress can be found on cypress' documentation here.

You should end up with a cypress config (<root>/cypress.config.js) which looks something like this:

const { defineConfig } = require('cypress')

// This function will be modified when we add plugins
async function setupNodeEvents(on, config) {}

module.exports = defineConfig({
// recommended as this
// * increases the test run time
// * should not be done on CI
// * can be done explicitly with `--config video=false` when needed
video: false,

e2e: {
baseUrl: 'http://localhost:3000',

Installing the plugins & commands

These can be installed using npm and yarn:

npm install --save-dev @dhis2/cypress-plugins @dhis2/cypress-commands
yarn add --dev @dhis2/cypress-plugins @dhis2/cypress-commands

Configuring the plugins & commands

Depending on which functionality you want, there are different precedures you can follow.

Any plugin will have to be added to the setupNodeEvents function, that's been shown in the base configuration for cypress above like this:

import { pluginName } from '@dhis2/cypress-plugins'

// ...

async function setupNodeEvents(on, config) {
// ...

pluginName(on, config)

// ...

// ...