MuSe is a mutation testing tool for Solidity Smart Contracts. It was designed to run mutation testing on Solidity projects. It can run test using Hardhat, Brownie, Truffle and Forge, hybrid test suites, and custom test scripts.
- Docker >= v20.0.X (for docker installation)
- Node >= 20.19.0 (for local installation)
# Pull the image from DockerHub
docker pull danielecarangelo/muse-remix-plugin
# Run the container
docker run --rm -p 3001:3001 danielecarangelo/muse-remix-plugin# Clone the repository
git clone --recurse-submodules https://github.com/Carmineh/MuSe-Remix-Plugin.git
cd MuSe-Remix-Plugin
# Install dependencies for MuSe
cd MuSe
npm install
# Check the official documentation for framework installation steps.
# Frameworks are required to run tests.
# Install dependencies for the plugin
cd ../MuSe-Remix-Plugin
npm install
# Install dependencies for API Service
cd ../muse-api-service
npm install
# Start the server inside muse-api-service
node server.js- Open Remix IDE
- Go to the Plugin Manager
- Click on Connect to a Local Plugin
- Enter the following:
Plugin Name: MuSe Display Name: MuSe Url: https://carmineh.github.io/MuSe-Remix-Plugin/
- Activate the plugin
- Go into the MuSe-Remix-Plugin folder
- Run
npm run dev - Open Remix IDE
- Go to the Plugin Manager
- Click on Connect to a Local Plugin
- Enter the following:
Plugin Name: MuSe Display Name: MuSe Url: http://localhost:5173/MuSe-Remix-Plugin/
- Activate the plugin
Once the plugin is installed:
- Make sure the local server at
http://localhost:3001/is running (view Installation) - You will see the MuSe Plugin tab in the Remix sidebar
The MuSe Plugin UI includes:
-
Contract Selector
- Lists all compiled contracts in Remix under the
contracts/folder
- Lists all compiled contracts in Remix under the
-
Mutant Selectors
- Each dropdown shows available mutation operators (mutants)
-
Mutate button
- Click to run mutation using selected contract and mutants
- The mutated contract will be automatically added to Remix under the
MuSe/
-
Test Button
- Open the Test Configuration to start the Mutation testing
-
Test Configuration
- Testing Framework: Choose one of the 4 available frameworks
- Timeout: A timeout in seconds to stop looped testings
-
Console
- A console that will show operations results and errors
-
Select a Contract
Use the dropdown menu to select the smart contract you want to test. -
Choose Mutation Operators
Pick one or more mutation operators from the provided list. -
Click “Mutate”
Press the Mutate button to generate mutated versions of the selected contract. -
Prepare the Test File
Make sure the test file is renamed correctly and it's placed inside the/testsfolder on Remix. Its name must contain both:- The contract name
- The test framework you're using (e.g.,
hardhat,truffle, etc.)
⚠️ These keywords are not case-sensitive.
✅ Example:mycontract-hardhat.js -
Run the Test
Run the tests using the button and see the progress inside the plugin's console -
View the Mutation Report
Once the test run is complete, open theMuSe/results/report.htmlfile.
If you encounter any bugs, have questions, or want to request new features, please open an Issue in this repository.
When opening an issue, please provide:
- A clear and descriptive title
- Detailed steps to reproduce the problem (if applicable)
- Expected and actual behavior
- Any relevant screenshots or logs
- Your environment details (e.g., OS, Node version, Docker version)



