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 significantly 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, EVM-native, fuzz support) and TypeScript tests (test/*.ts, off-chain orchestration) based on what the test actually needs. - EVM State Manipulation: Use forge-std cheatcodes (vm.prank, vm.deal, vm.warp, vm.expectRevert) in Solidity tests and networkHelpers (time, mining, impersonation, fixtures, snapshots) in TypeScript tests. - Compile-then-Typecheck Workflow: Run hardhat build before tsc --noEmit so generated contract types catch wrong arguments and invalid options early. - Use Case: You are writing tests for a Solidity contract and need to simulate different callers and time passage. The Skill directs you to a Solidity test with vm.startPrank and vm.warp, or to networkHelpers.time.increase in a TypeScript integration test. ## Quick Start Ask the assistant to write a Hardhat 3 test for your contract, specifying whether you want a Solidity unit test or a TypeScript integration test.