Skip to content

Run Scenarios

Run Scenarios #1

GitHub Actions / Scenario Tests (goerli-weth) succeeded Aug 24, 2023 in 2s

Scenario Tests (goerli-weth) ✅

Tests passed successfully

✅ scenario-results.json

235 tests were completed in 256s with 194 passed, 0 failed and 41 skipped.

Test suite Passed Failed Skipped Time
plugins/scenario/Loader.ts 41⚪ 0ms
scenario/AddMaticxCollateralScenario.ts 1✅ 2ms
scenario/AllowBySigScenario.ts 11✅ 4s
scenario/AllowScenario.ts 2✅ 697ms
scenario/ApproveThisScenario.ts 3✅ 1s
scenario/BulkerScenario.ts 4✅ 16s
scenario/CometScenario.ts 3✅ 866ms
scenario/ConfiguratorScenario.ts 3✅ 4s
scenario/CrossChainGovernanceScenario.ts 4✅ 3ms
scenario/GovernanceScenario.ts 4✅ 18s
scenario/InterestRateScenario.ts 4✅ 28s
scenario/LiquidationBotScenario.ts 3✅ 5ms
scenario/LiquidationScenario.ts 4✅ 18s
scenario/MainnetBulkerScenario.ts 4✅ 14ms
scenario/PauseGuardianScenario.ts 3✅ 1s
scenario/RewardsScenario.ts 8✅ 11s
scenario/SupplyScenario.ts 44✅ 14s
scenario/TransferScenario.ts 46✅ 38s
scenario/WithdrawReservesScenario.ts 3✅ 1s
scenario/WithdrawScenario.ts 40✅ 20s

✅ plugins/scenario/Loader.ts

goerli-weth
  ⚪ Comet#interestRate > when utilization is 50%
  ⚪ Comet#liquidation > governor can withdraw collateral after successful liquidation
  ⚪ Comet#withdraw reverts if asset is not supported
  ⚪ Comet#withdraw reverts if not enough asset in protocol
  ⚪ Compound v2 > allows a user to mint & redeem cDAI
  ⚪ Compound v2 > allows a user to mint & redeem cUSDC
  ⚪ Compound v2 > allows a user to repay, borrow, repay cETH
  ⚪ Compound v2 > allows a user to repay, borrow, repay cWBTC2
  ⚪ fallbacks to implementation if called by non-admin
  ⚪ LiquidationBot > liquidates an underwater position of $asset0 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset1 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset10 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset11 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset12 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset13 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset14 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset2 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset3 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset4 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset5 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset6 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset7 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset8 with no maxAmountToPurchase
  ⚪ LiquidationBot > liquidates an underwater position of $asset9 with no maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset0, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset1, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset10, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset11, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset12, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset13, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset14, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset2, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset3, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset4, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset5, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset6, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset7, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset8, by setting maxAmountToPurchase
  ⚪ LiquidationBot > partially liquidates large position of $asset9, by setting maxAmountToPurchase
  ⚪ reverts if proxy is not upgraded by ProxyAdmin
  ⚪ transfer admin of configurator

✅ scenario/AddMaticxCollateralScenario.ts

goerli-weth
  ✅ add new asset maticx

✅ scenario/AllowBySigScenario.ts

goerli-weth
  ✅ Comet#allowBySig > allows a user to authorize a manager by signature
  ✅ Comet#allowBySig > fails if expiry argument is altered
  ✅ Comet#allowBySig > fails if isAllowed argument is altered
  ✅ Comet#allowBySig > fails if manager argument is altered
  ✅ Comet#allowBySig > fails if nonce argument is altered
  ✅ Comet#allowBySig > fails if owner argument is altered
  ✅ Comet#allowBySig fails for invalid expiry
  ✅ Comet#allowBySig fails if s is too high
  ✅ Comet#allowBySig fails if signature contains invalid nonce
  ✅ Comet#allowBySig fails if v not in {27,28}
  ✅ Comet#allowBySig rejects a repeated message

✅ scenario/AllowScenario.ts

goerli-weth
  ✅ Comet#allow > allows a user to authorize a manager
  ✅ Comet#allow > allows a user to rescind authorization

✅ scenario/ApproveThisScenario.ts

goerli-weth
  ✅ Comet#approveThis > allows governor to authorize and rescind authorization for Comet ERC20
  ✅ Comet#approveThis > allows governor to authorize and rescind authorization for non-Comet ERC20
  ✅ Comet#approveThis > reverts if not called by governor

✅ scenario/BulkerScenario.ts

goerli-weth
  ✅ Comet#bulker > (non-WETH base) all actions in one txn
  ✅ Comet#bulker > (non-WETH base) all non-reward actions in one txn
  ✅ Comet#bulker > (WETH base) all actions in one txn
  ✅ Comet#bulker > (WETH base) all non-reward actions in one txn

✅ scenario/CometScenario.ts

goerli-weth
  ✅ has assets
  ✅ initializes governor correctly
  ✅ requires upgrade

✅ scenario/ConfiguratorScenario.ts

goerli-weth
  ✅ add assets
  ✅ reverts if configurator is not called by admin
  ✅ upgrade governor

✅ scenario/CrossChainGovernanceScenario.ts

goerli-weth
  ✅ execute cross-chain governance proposal
  ✅ upgrade Arbitrum governance contracts and ensure they work properly
  ✅ upgrade Linea governance contracts and ensure they work properly
  ✅ upgrade Polygon governance contracts and ensure they work properly

✅ scenario/GovernanceScenario.ts

goerli-weth
  ✅ add new asset
  ✅ upgrade Comet implementation and call new function
  ✅ upgrade Comet implementation and initialize
  ✅ upgrade Comet implementation and initialize using deployUpgradeToAndCall

✅ scenario/InterestRateScenario.ts

goerli-weth
  ✅ Comet#interestRate > above kink rates using hypothetical configuration constants
  ✅ Comet#interestRate > below kink rates using hypothetical configuration constants
  ✅ Comet#interestRate > rates using fuzzed configuration constants
  ✅ Comet#interestRate > rates using on-chain configuration constants

✅ scenario/LiquidationBotScenario.ts

goerli-weth
  ✅ LiquidationBot > absorbs, but does not attempt to purchase collateral when maxAmountToPurchase=0
  ✅ LiquidationBot > absorbs, but does not attempt to purchase collateral when value is beneath liquidationThreshold
  ✅ LiquidationBot > reverts when price slippage is too high

✅ scenario/LiquidationScenario.ts

goerli-weth
  ✅ Comet#liquidation > allows liquidation of underwater positions
  ✅ Comet#liquidation > isLiquidatable=true for underwater position
  ✅ Comet#liquidation > prevents liquidation when absorb is paused
  ✅ Comet#liquidation > user can end up with a minted supply

✅ scenario/MainnetBulkerScenario.ts

goerli-weth
  ✅ MainnetBulker > it reverts when passed an action that does not exist
  ✅ MainnetBulker > unwraps wstETH before withdrawing
  ✅ MainnetBulker > withdraw max stETH leaves no dust
  ✅ MainnetBulker > wraps stETH before supplying

✅ scenario/PauseGuardianScenario.ts

goerli-weth
  ✅ Comet#pause > governor pauses market actions
  ✅ Comet#pause > pause guardian pauses market actions
  ✅ CometRevertCustom#pause > reverts if not called by governor or pause guardian

✅ scenario/RewardsScenario.ts

goerli-weth
  ✅ Comet#rewards > can claim borrow rewards for self
  ✅ Comet#rewards > can claim supply rewards for self
  ✅ Comet#rewards > can claim supply rewards on scaling rewards contract with multiplier of 10000000000000000
  ✅ Comet#rewards > can claim supply rewards on scaling rewards contract with multiplier of 1000000000000000000
  ✅ Comet#rewards > can claim supply rewards on scaling rewards contract with multiplier of 10000000000000000000
  ✅ Comet#rewards > can claim supply rewards on scaling rewards contract with multiplier of 3550000000000000
  ✅ Comet#rewards > can claim supply rewards on scaling rewards contract with multiplier of 55000000000000000000
  ✅ Comet#rewards > manager can claimTo supply rewards from a managed account

✅ scenario/SupplyScenario.ts

goerli-weth
  ✅ Comet#supply > base asset
  ✅ Comet#supply > collateral asset 0
  ✅ Comet#supply > collateral asset 1
  ✅ Comet#supply > collateral asset 10
  ✅ Comet#supply > collateral asset 11
  ✅ Comet#supply > collateral asset 12
  ✅ Comet#supply > collateral asset 13
  ✅ Comet#supply > collateral asset 14
  ✅ Comet#supply > collateral asset 2
  ✅ Comet#supply > collateral asset 3
  ✅ Comet#supply > collateral asset 4
  ✅ Comet#supply > collateral asset 5
  ✅ Comet#supply > collateral asset 6
  ✅ Comet#supply > collateral asset 7
  ✅ Comet#supply > collateral asset 8
  ✅ Comet#supply > collateral asset 9
  ✅ Comet#supply > repay borrow
  ✅ Comet#supply reverts if asset is not supported
  ✅ Comet#supply reverts if not enough ERC20 approval
  ✅ Comet#supply reverts if not enough ERC20 balance
  ✅ Comet#supply reverts when supply is paused
  ✅ Comet#supplyFrom > base asset
  ✅ Comet#supplyFrom > collateral asset 0
  ✅ Comet#supplyFrom > collateral asset 1
  ✅ Comet#supplyFrom > collateral asset 10
  ✅ Comet#supplyFrom > collateral asset 11
  ✅ Comet#supplyFrom > collateral asset 12
  ✅ Comet#supplyFrom > collateral asset 13
  ✅ Comet#supplyFrom > collateral asset 14
  ✅ Comet#supplyFrom > collateral asset 2
  ✅ Comet#supplyFrom > collateral asset 3
  ✅ Comet#supplyFrom > collateral asset 4
  ✅ Comet#supplyFrom > collateral asset 5
  ✅ Comet#supplyFrom > collateral asset 6
  ✅ Comet#supplyFrom > collateral asset 7
  ✅ Comet#supplyFrom > collateral asset 8
  ✅ Comet#supplyFrom > collateral asset 9
  ✅ Comet#supplyFrom > repay borrow
  ✅ Comet#supplyFrom reverts if not enough ERC20 base approval
  ✅ Comet#supplyFrom reverts if not enough ERC20 base balance
  ✅ Comet#supplyFrom reverts if not enough ERC20 collateral approval
  ✅ Comet#supplyFrom reverts if not enough ERC20 collateral balance
  ✅ Comet#supplyFrom reverts if operator not given permission
  ✅ Comet#supplyFrom reverts when supply is paused

✅ scenario/TransferScenario.ts

goerli-weth
  ✅ Comet#transfer > base asset, enough balance
  ✅ Comet#transfer > base asset, total and user balances are summed up properly
  ✅ Comet#transfer > collateral asset 0, enough balance
  ✅ Comet#transfer > collateral asset 1, enough balance
  ✅ Comet#transfer > collateral asset 10, enough balance
  ✅ Comet#transfer > collateral asset 11, enough balance
  ✅ Comet#transfer > collateral asset 12, enough balance
  ✅ Comet#transfer > collateral asset 13, enough balance
  ✅ Comet#transfer > collateral asset 14, enough balance
  ✅ Comet#transfer > collateral asset 2, enough balance
  ✅ Comet#transfer > collateral asset 3, enough balance
  ✅ Comet#transfer > collateral asset 4, enough balance
  ✅ Comet#transfer > collateral asset 5, enough balance
  ✅ Comet#transfer > collateral asset 6, enough balance
  ✅ Comet#transfer > collateral asset 7, enough balance
  ✅ Comet#transfer > collateral asset 8, enough balance
  ✅ Comet#transfer > collateral asset 9, enough balance
  ✅ Comet#transfer > partial withdraw / borrow base to partial repay / supply
  ✅ Comet#transfer base reverts if undercollateralized
  ✅ Comet#transfer collateral reverts if undercollateralized
  ✅ Comet#transfer disallows self-transfer of base
  ✅ Comet#transfer disallows self-transfer of collateral
  ✅ Comet#transfer reverts if borrow is less than minimum borrow
  ✅ Comet#transfer reverts when transfer is paused
  ✅ Comet#transferFrom > collateral asset 0, enough balance
  ✅ Comet#transferFrom > collateral asset 1, enough balance
  ✅ Comet#transferFrom > collateral asset 10, enough balance
  ✅ Comet#transferFrom > collateral asset 11, enough balance
  ✅ Comet#transferFrom > collateral asset 12, enough balance
  ✅ Comet#transferFrom > collateral asset 13, enough balance
  ✅ Comet#transferFrom > collateral asset 14, enough balance
  ✅ Comet#transferFrom > collateral asset 2, enough balance
  ✅ Comet#transferFrom > collateral asset 3, enough balance
  ✅ Comet#transferFrom > collateral asset 4, enough balance
  ✅ Comet#transferFrom > collateral asset 5, enough balance
  ✅ Comet#transferFrom > collateral asset 6, enough balance
  ✅ Comet#transferFrom > collateral asset 7, enough balance
  ✅ Comet#transferFrom > collateral asset 8, enough balance
  ✅ Comet#transferFrom > collateral asset 9, enough balance
  ✅ Comet#transferFrom > withdraw to repay
  ✅ Comet#transferFrom base reverts if undercollateralized
  ✅ Comet#transferFrom collateral reverts if undercollateralized
  ✅ Comet#transferFrom disallows self-transfer of base
  ✅ Comet#transferFrom disallows self-transfer of collateral
  ✅ Comet#transferFrom reverts if operator not given permission
  ✅ Comet#transferFrom reverts when transfer is paused

✅ scenario/WithdrawReservesScenario.ts

goerli-weth
  ✅ Comet#withdrawReserves > governor withdraws reserves
  ✅ Comet#withdrawReserves > reverts if not called by governor
  ✅ Comet#withdrawReserves > reverts if not enough reserves are owned by protocol

✅ scenario/WithdrawScenario.ts

goerli-weth
  ✅ Comet#withdraw > base asset
  ✅ Comet#withdraw > borrow base
  ✅ Comet#withdraw > collateral asset 0
  ✅ Comet#withdraw > collateral asset 1
  ✅ Comet#withdraw > collateral asset 10
  ✅ Comet#withdraw > collateral asset 11
  ✅ Comet#withdraw > collateral asset 12
  ✅ Comet#withdraw > collateral asset 13
  ✅ Comet#withdraw > collateral asset 14
  ✅ Comet#withdraw > collateral asset 2
  ✅ Comet#withdraw > collateral asset 3
  ✅ Comet#withdraw > collateral asset 4
  ✅ Comet#withdraw > collateral asset 5
  ✅ Comet#withdraw > collateral asset 6
  ✅ Comet#withdraw > collateral asset 7
  ✅ Comet#withdraw > collateral asset 8
  ✅ Comet#withdraw > collateral asset 9
  ✅ Comet#withdraw base reverts if position is undercollateralized
  ✅ Comet#withdraw collateral reverts if position is undercollateralized
  ✅ Comet#withdraw reverts if borrow is less than minimum borrow
  ✅ Comet#withdraw reverts when withdraw is paused
  ✅ Comet#withdrawFrom > base asset
  ✅ Comet#withdrawFrom > borrow base
  ✅ Comet#withdrawFrom > collateral asset 0
  ✅ Comet#withdrawFrom > collateral asset 1
  ✅ Comet#withdrawFrom > collateral asset 10
  ✅ Comet#withdrawFrom > collateral asset 11
  ✅ Comet#withdrawFrom > collateral asset 12
  ✅ Comet#withdrawFrom > collateral asset 13
  ✅ Comet#withdrawFrom > collateral asset 14
  ✅ Comet#withdrawFrom > collateral asset 2
  ✅ Comet#withdrawFrom > collateral asset 3
  ✅ Comet#withdrawFrom > collateral asset 4
  ✅ Comet#withdrawFrom > collateral asset 5
  ✅ Comet#withdrawFrom > collateral asset 6
  ✅ Comet#withdrawFrom > collateral asset 7
  ✅ Comet#withdrawFrom > collateral asset 8
  ✅ Comet#withdrawFrom > collateral asset 9
  ✅ Comet#withdrawFrom reverts if operator not given permission
  ✅ Comet#withdrawFrom reverts when withdraw is paused