Skip to main content

Testing

A comprehensive testing guide for the CoW Protocol smart contracts project, covering test execution, debugging, gas reporting, and code coverage analysis.

Test Framework

Tests leverage:
  • Hardhat - Development environment
  • Waffle - Smart contract testing library
  • Chai - Assertion library
  • ethers.js - Ethereum interaction library

Running Tests

Standard Suite

Run the complete test battery:

Excluded Tests

Execute tests that skip coverage analysis:

Coverage Reports

Generate detailed instrumentation metrics:

Debugging

Enable verbose output to track contract deployments, transaction details, state changes, and event emissions:

Gas Reporting

Activate gas tracking to produce consumption tables showing costs per operation and deployment expenses:

Coverage Analysis

The yarn coverage command instruments contracts and generates:
  • Terminal summary with coverage percentages
  • Interactive HTML report at coverage/index.html

Coverage Color Coding

Coverage instrumentation alters bytecode, making it unsuitable for gas benchmarking. Do not use coverage reports for gas analysis.

Configuration

The MOCHA_CONF environment variable controls test scope across different execution contexts:

Troubleshooting

Last modified on March 4, 2026