From cb862e64ce6a1e3756e12e41a3d3cc3ed0f6a511 Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Tue, 10 Mar 2026 13:32:59 +0400 Subject: [PATCH] Add prod deployment tests for MetaBoard on all supported networks Fork each supported network and verify MetaBoard exists at the expected address with the correct code hash. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/rainix.yaml | 5 ++++ test/lib/deploy/LibMetaBoardDeploy.t.sol | 31 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index 188d09d9..8515a032 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -51,6 +51,11 @@ jobs: env: ETH_RPC_URL: ${{ secrets.CI_DEPLOY_SEPOLIA_RPC_URL || vars.CI_DEPLOY_SEPOLIA_RPC_URL }} CI_FORK_ETH_RPC_URL: ${{ secrets.RPC_URL_ETHEREUM_FORK || vars.RPC_URL_ETHEREUM_FORK || '' }} + CI_FORK_ARB_RPC_URL: ${{ secrets.CI_FORK_ARB_RPC_URL || vars.CI_FORK_ARB_RPC_URL || '' }} + CI_FORK_BASE_RPC_URL: ${{ secrets.CI_FORK_BASE_RPC_URL || vars.CI_FORK_BASE_RPC_URL || '' }} + CI_FORK_BASE_SEPOLIA_RPC_URL: ${{ secrets.CI_FORK_BASE_SEPOLIA_RPC_URL || vars.CI_FORK_BASE_SEPOLIA_RPC_URL || '' }} + CI_FORK_FLARE_RPC_URL: ${{ secrets.CI_FORK_FLARE_RPC_URL || vars.CI_FORK_FLARE_RPC_URL || '' }} + CI_FORK_POLYGON_RPC_URL: ${{ secrets.CI_FORK_POLYGON_RPC_URL || vars.CI_FORK_POLYGON_RPC_URL || '' }} ETHERSCAN_API_KEY: ${{ secrets.EXPLORER_VERIFICATION_KEY }} run: nix develop -c ${{ matrix.task }} diff --git a/test/lib/deploy/LibMetaBoardDeploy.t.sol b/test/lib/deploy/LibMetaBoardDeploy.t.sol index 28b73040..e64ba24f 100644 --- a/test/lib/deploy/LibMetaBoardDeploy.t.sol +++ b/test/lib/deploy/LibMetaBoardDeploy.t.sol @@ -24,4 +24,35 @@ contract LibMetaBoardDeployTest is Test { assertEq(address(metaBoard).codehash, LibMetaBoardDeploy.METABOARD_DEPLOYED_CODEHASH); } + + function checkProdDeployment(string memory envVar) internal { + vm.createSelectFork(vm.envString(envVar)); + address deployed = LibMetaBoardDeploy.METABOARD_DEPLOYED_ADDRESS; + assertTrue(deployed.code.length > 0, string.concat("MetaBoard not deployed: ", envVar)); + assertEq( + deployed.codehash, + LibMetaBoardDeploy.METABOARD_DEPLOYED_CODEHASH, + string.concat("MetaBoard codehash mismatch: ", envVar) + ); + } + + function testProdDeployArbitrum() external { + checkProdDeployment("CI_FORK_ARB_RPC_URL"); + } + + function testProdDeployBase() external { + checkProdDeployment("CI_FORK_BASE_RPC_URL"); + } + + function testProdDeployBaseSepolia() external { + checkProdDeployment("CI_FORK_BASE_SEPOLIA_RPC_URL"); + } + + function testProdDeployFlare() external { + checkProdDeployment("CI_FORK_FLARE_RPC_URL"); + } + + function testProdDeployPolygon() external { + checkProdDeployment("CI_FORK_POLYGON_RPC_URL"); + } }