What problem does it solve? Hardhat 3 introduces a dual test-layer model (Solidity tests and TypeScript tests), a new network connection API, and ESM-only constraints that differ sharply from Hardhat 2. This Skill helps developers choose the right test layer, use forge-std cheatcodes and networkHelpers correctly, and avoid common mistakes like typechecking before compiling. ## Core Features & Use Cases - Test Layer Selection: Decide between Solidity tests (.t.sol, in-EVM, fuzz support) and TypeScript tests (off-chain orchestration, multi-contract flows) based on what the test actually needs. - Cheatcodes & State Manipulation: Use forge-std vm cheatcodes (prank, deal, warp, expectRevert) in Solidity tests and networkHelpers (time, mine, impersonateAccount, loadFixture, snapshots) in TypeScript tests. - Compile-Then-Typecheck Workflow: Run hardhat build before tsc --noEmit so generated contract types catch argument and payable errors early. - Use Case: When adding a test for a PayChain salary disbursement contract, use this Skill to write a Solidity fuzz test for the core logic and a TypeScript test with loadFixture for the end-to-end employer-to-worker payment flow. ## Quick Start Ask the AI to write a Hardhat 3 test for your smart contract, choosing between a Solidity test with forge-std cheatcodes or a TypeScript test using network.create() and networkHelpers.