{"id":13792616,"url":"https://github.com/hillstreetlabs/espresso","last_synced_at":"2025-05-12T14:31:56.752Z","repository":{"id":57230554,"uuid":"121879276","full_name":"hillstreetlabs/espresso","owner":"hillstreetlabs","description":"👯 speedy, parallelized, hot-reloading solidity test framework","archived":false,"fork":false,"pushed_at":"2018-06-08T17:07:30.000Z","size":276,"stargazers_count":76,"open_issues_count":9,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-27T00:34:40.013Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/hillstreetlabs/espresso","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hillstreetlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-17T18:08:11.000Z","updated_at":"2024-07-22T09:15:16.000Z","dependencies_parsed_at":"2022-09-06T13:40:43.453Z","dependency_job_id":null,"html_url":"https://github.com/hillstreetlabs/espresso","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hillstreetlabs%2Fespresso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hillstreetlabs%2Fespresso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hillstreetlabs%2Fespresso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hillstreetlabs%2Fespresso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hillstreetlabs","download_url":"https://codeload.github.com/hillstreetlabs/espresso/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253754967,"owners_count":21958934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T22:01:14.317Z","updated_at":"2025-05-12T14:31:56.376Z","avatar_url":"https://github.com/hillstreetlabs.png","language":"JavaScript","funding_links":[],"categories":["Roadmap"],"sub_categories":[],"readme":"```\n_______   ________  ________  ________  _______   ________   ________  ________\n|\\  ___ \\ |\\   ____\\|\\   __  \\|\\   __  \\|\\  ___ \\ |\\   ____\\ |\\   ____\\|\\   __  \\\n\\ \\   __/|\\ \\  \\___|\\ \\  \\|\\  \\ \\  \\|\\  \\ \\   __/|\\ \\  \\___|_\\ \\  \\___|\\ \\  \\|\\  \\\n \\ \\  \\_|/_\\ \\_____  \\ \\   ____\\ \\   _  _\\ \\  \\_|/_\\ \\_____  \\\\ \\_____  \\ \\  \\\\\\  \\\n  \\ \\  \\_|\\ \\|____|\\  \\ \\  \\___|\\ \\  \\\\  \\\\ \\  \\_|\\ \\|____|\\  \\\\|____|\\  \\ \\  \\\\\\  \\\n   \\ \\_______\\____\\_\\  \\ \\__\\    \\ \\__\\\\ _\\\\ \\_______\\____\\_\\  \\ ____\\_\\  \\ \\_______\\\n    \\|_______|\\_________\\|__|     \\|__|\\|__|\\|_______|\\_________\\\\_________\\|_______|\n             \\|_________|                            \\|_________\\|_________|\n```\n\n## A speedy, parallelized, hot-reloading Solidity test framework\n\nCreated by [@mertcelebi](https://github.com/mertcelebi) and [@pfletcherhill](https://github.com/pfletcherhill) at [ETHDenver](https://ethdenver.com/).\n\n## Hot-reloading :fire:\n![Hot-reloading example](https://thumbs.gfycat.com/HarmoniousAnxiousGnatcatcher-size_restricted.gif)\n\n### Installation\n\nInstall packages and run the build script (we prefer using [yarn](https://yarnpkg.com/en/))\n\n```\nyarn global add espresso-tests\n```\n\n### Running tests\n\n```\nespresso [--watch] [--fun]\n```\n\nWe recommend updating your `.gitignore` to include `.test/` directory.\n\n### Inspiration\n\nEthereum solidity development is still in it's early phase. But if you've ever written Solidity before, you know that testing it can be a pain. Truffle does a fine job compiling and deploying Solidity smart contracts, but Truffle's testing framework is slow and usually not helpful. With espresso we're trying to make Solidity testing easier, speedier, and more fun.\n\n### What it does\n\nespresso is a testing framework for Solidity smart contracts, written in Javascript. Features include:\n\n- ✅ Test parallelization\n- ✅ Hot-reloading and running of tests (with a --watch flag)\n- ✅ Isolated test RPC, so you don't have to have an RPC like ganache running or muddy your development RPC\n- ✅ Backwards compatibility with truffle test\n\n### How we built it\n\nespresso is a combination of many tools already being used in development and testing, namely parts of Truffle and Mocha. It relies on the nifty mocha-parallel-tests library for parallelizing the running of test files, and the testing RPC is created using Ganache.\n\n### Challenges we ran into\n\nTo list a few:\n\n* Integrating with some of Truffle's internal libraries (i.e. truffle-compile) while still building something new\n* Error handling and printing output for tests running in parallel\n* Watching arbitrary JS test files and Solidity smart contract files and re-running tests accordingly\n* Writing a wrapper around Truffle's config class so we can use truffle.js for projects that have it and generate a valid Truffle config for ones that don't\n\n### Performance\n\nWe're just starting to do benchmarking, but the performance thus far has been promising. On a demo folder of Open Zeppelin tests, espresso compiled Solidity, deployed to a test RPC and ran the tests almost twice as fast as Open Zeppelin's implementation of Truffle. Specifically, both successfully completed the 90 tests, with **espresso taking 8.577s and Truffle taking 14.666s**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhillstreetlabs%2Fespresso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhillstreetlabs%2Fespresso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhillstreetlabs%2Fespresso/lists"}