
Security News
High Salaries No Longer Enough to Attract Top Cybersecurity Talent
A survey of 500 cybersecurity pros reveals high pay isn't enough—lack of growth and flexibility is driving attrition and risking organizational security.
cypress-hardhat
Advanced tools
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.
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 to set the initial state of the hardhat network within jest.
NOTE: You should set the accounts
field 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 documentation for details):
import { setupHardhatEvents } from 'cypress-hardhat'
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
// Install the plugin here
setupHardhatEvents(on)
},
},
})
In addition, cypress-hardhat
includes some utilities for seeding your environment. These should be imported into your browser testing environment, not in your configuration:
import { CurrencyAmount, Ether, Token } from '@uniswap/sdk-core'
import { HardhatUtils, Network } from 'cypress-hardhat/lib/browser'
declare global {
namespace Cypress {
interface Chainable<Subject> {
task(event: 'hardhat'): Chainable<Network>
}
}
}
const ETH = Ether.onChain(CHAIN_ID)
const amount = CurrencyAmount.fromRawAmount(ETH, 6000000).multiply(10 ** ETH.decimals)
it('communicates with hardhat', () => {
cy.task('hardhat').then((network) => {
const hardhat = new HardhatUtils(network)
hardhat.fund(hardhat.account, amount)
})
})
For example, this can be used to inject a mock window.ethereum object that will communicate with hardhat.
Made with 🦄 by Uniswap Labs
FAQs
A cypress plugin for testing against hardhat
The npm package cypress-hardhat receives a total of 1,543 weekly downloads. As such, cypress-hardhat popularity was classified as popular.
We found that cypress-hardhat demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A survey of 500 cybersecurity pros reveals high pay isn't enough—lack of growth and flexibility is driving attrition and risking organizational security.
Product
Socket, the leader in open source security, is now available on Google Cloud Marketplace for simplified procurement and enhanced protection against supply chain attacks.
Security News
Corepack will be phased out from future Node.js releases following a TSC vote.