Any denizen of the 2000s internet who dabbled in web development probably remembers the Acid3 browser testing website. The six squares jittering slightly as they change color, never quite reaching the rainbow from the reference image:
If you've been following the AllWalletDevs meetingsβand if you haven't been, you should beβyou might be aware that we've prototyped a framework for testing Ethereum wallets inspired by the Acid3 tests. Our goal is to foster quality and consistency by making it trivially easy to share tests across wallets.
This project is official now, with a one year grant from the Ethereum Foundation's Ecosystem Support Program!
The initial scope of the project is split into several milestones spaced out over one year. After completing these milestones, the testing framework should be in a reasonable place for outside contributors and be ready for wallets to integrate.
execution-apis
specification for a single wallet, where the website walks the user through
the tests with specific human-readable instructions.A web server that forwards JSON-RPC requests between the wallet and the simulated chain. Necessary because browsers do not allow web pages to listen for HTTP or WebSocket connections.
The software under test. Communicates with the tests using window.ethereum
,
and with the simulated chain through the proxy with JSON-RPC.
An isolated Ethereum-compatible blockchain (like Ganache.) The simulated chain presents a JSON-RPC interface to the wallet through the proxy.
Collection of functions that put the simulated chain into a known state, then perform some operation with or retrieve some information through the wallet.
Software specific to each wallet that translates conceptual actions (eg. approve transaction) into a format that the wallet understands. Initially this will be on-screen instructions for the user to follow, but later on the glue could be implemented with, for example, WebDriver for browser-based wallets.
You'll start to see some activity in the repository in the next week or so, and perhaps some discussion in #testing.
If you're developing a wallet and want to contribute, please reach out to @gaudren_!