Cypress Hardhat banner
Uniswap Uniswap

Cypress Hardhat

Testing community

Description

A cypress plugin for testing against hardhat

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

cypress-hardhat

[![npm](https://img.shields.io/npm/v/cypress-hardhat)](https://www.npmjs.com/package/cypress-hardhat) [![Tests](https://github.com/Uniswap/cypress-hardhat/actions/workflows/test.yaml/badge.svg)](https://github.com/Uniswap/cypress-hardhat/actions/workflows/test.yaml)

A jest environment with hardhat built in.

`cypress-hardhat` is a hardhat plugin for running a hardhat fork for your tests. Instead of running a separate `hardhat node`, this environment runs a node and communicates the url and test accounts to cypress - with some test utilities to boot.

Installation

First, install `cypress-hardhat` and its dependencies (using `yarn` or `npm`).

The environment needs `ethers`, and `hardhat` installed as well. These are installed as peer dependencies to ensure that you retain control over versioning, so you'll need to install them explicitly:

yarn add -D ethers hardhat
yarn add -D cypress-hardhat

Then, set up your `hardhat.config.js` file. You'll need to [configure mainnet forking](https://hardhat.org/hardhat-network/guides/mainnet-forking#forking-from-mainnet) to set the initial state of the hardhat network within jest.

NOTE: You should set the [`accounts` field](https://hardhat.org/hardhat-network/reference#accounts) to include as few accounts as possible to reduce startup time for your tests' hardhat network.

`cypress-hardhat` may be configured to respond to `wallet_switchEthereumChain` requests to help test EIP-3326 interactions. To configure this behavior, add a `forks` field to your `hardhat.config.js` with the chains you are going to switch to:

const forks = {
  [1]: {
    url: `${process.env.JSON_RPC_PROVIDER}`,
    blockNumber: 17023328,
    httpHeaders: {},
  },
  [137]: {
    url: `${process.env.POLYGON_JSON_RPC_PROVIDER}`,
    blockNumber: 43600000,
    httpHeaders: {},
  },
}

module.exports = {
  forks,
  networks: {...},
  ...
}

Finally, install the plugin in your cypress configuration (see the [cypress docum