{"id":20923389,"url":"https://github.com/assert-equals/dappdriver","last_synced_at":"2026-03-09T02:12:38.596Z","repository":{"id":243212887,"uuid":"766192293","full_name":"assert-equals/DappDriver","owner":"assert-equals","description":"🕹️ DappDriver is an e2e testing framework designed for testing decentralized applications (dApps) using MetaMask, Rainbow or Zerion","archived":false,"fork":false,"pushed_at":"2025-05-05T17:11:55.000Z","size":2676,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T17:21:29.581Z","etag":null,"topics":["automation","blockchain","browser","chrome","dapp","dapp-developers","e2e-tests","end-to-end-testing","ethereum","extension","metamask","playwright","rainbow","selenium","testing","web3","webdriver","zerion"],"latest_commit_sha":null,"homepage":"https://dappdriver.xyz/","language":"TypeScript","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/assert-equals.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-02T15:35:37.000Z","updated_at":"2025-05-05T17:11:59.000Z","dependencies_parsed_at":"2024-06-28T00:14:03.632Z","dependency_job_id":"64e38b23-26e5-4e14-96b4-372f9d2f2d16","html_url":"https://github.com/assert-equals/DappDriver","commit_stats":null,"previous_names":["assert-equals/dappdriver"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assert-equals%2FDappDriver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assert-equals%2FDappDriver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assert-equals%2FDappDriver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assert-equals%2FDappDriver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/assert-equals","download_url":"https://codeload.github.com/assert-equals/DappDriver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253981652,"owners_count":21994312,"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":["automation","blockchain","browser","chrome","dapp","dapp-developers","e2e-tests","end-to-end-testing","ethereum","extension","metamask","playwright","rainbow","selenium","testing","web3","webdriver","zerion"],"created_at":"2024-11-18T20:15:26.577Z","updated_at":"2026-03-09T02:12:38.583Z","avatar_url":"https://github.com/assert-equals.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  DappDriver\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eAutomated tests for dApps\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@assert-equals/dappdriver\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://img.shields.io/npm/v/@assert-equals/dappdriver?colorA=21262d\u0026colorB=21262d\u0026style=flat\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/v/@assert-equals/dappdriver?colorA=f6f8fa\u0026colorB=f6f8fa\u0026style=flat\" alt=\"Version\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/assert-equals/dappdriver/blob/main/LICENSE\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://img.shields.io/npm/l/@assert-equals/dappdriver?colorA=21262d\u0026colorB=21262d\u0026style=flat\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/l/@assert-equals/dappdriver?colorA=f6f8fa\u0026colorB=f6f8fa\u0026style=flat\" alt=\"MIT License\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@assert-equals/dappdriver\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://img.shields.io/npm/dm/@assert-equals/dappdriver?colorA=21262d\u0026colorB=21262d\u0026style=flat\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/dm/@assert-equals/dappdriver?colorA=f6f8fa\u0026colorB=f6f8fa\u0026style=flat\" alt=\"Downloads per month\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[DappDriver](https://github.com/assert-equals/dappdriver) is a web testing framework designed for testing decentralized applications (dApps).\n\nIt's all about being flexible and user-friendly, DappDriver seamlessly integrates both [Playwright](https://playwright.dev/) and [Selenium WebDriver](https://www.selenium.dev/).\n\nDappDriver loads [MetaMask](https://metamask.io/), [MetaMask Flask](https://metamask.io/flask/), [Rainbow](https://rainbow.me/) or [Zerion](https://zerion.io/) into the browser session, empowering you to efficiently confirm blockchain transactions.\n\nRead on to get started locally in a couple of minutes.\n\n\u003e [!NOTE]\n\u003e DappDriver is in active development, so all APIs are subject to change.\n\n## Install\n\nDappDriver is [available on npm](https://www.npmjs.com/package/@assert-equals/dappdriver):\n\n```shell\nyarn add @assert-equals/dappdriver\n```\n\n## Get Started\n\n**Add a Page Object**\n\nThen, write your page object in `test/page/dapp.ts`:\n\n```ts\nimport { HTMLElement, PageObject } from '@assert-equals/dappdriver';\nimport { Connect } from '@assert-equals/dappdriver/wallet';\n\nexport class Dapp extends PageObject {\n  private accountsLabel: () =\u003e HTMLElement = () =\u003e new HTMLElement('#accounts');\n  private connectButton: () =\u003e HTMLElement = () =\u003e new HTMLElement('#connectButton');\n  constructor() {\n    super('https://metamask.github.io/', 'E2E Test Dapp');\n  }\n\n  async getAccounts(): Promise\u003cstring\u003e {\n    return await this.accountsLabel().getText();\n  }\n\n  async connect(): Promise\u003cConnect\u003e {\n    return await this.connectButton().clickAndOpensInWindow\u003cConnect\u003e(Connect);\n  }\n}\n```\n\n**Write Your First Test**\n\nNext, write your test in `test/spec/dapp.spec.ts`:\n\n```ts\nimport { CHROME, DappDriver, METAMASK, PLAYWRIGHT, BrowserOptions } from '@assert-equals/dappdriver';\nimport { Connect } from '@assert-equals/dappdriver/wallet';\nimport { expect } from 'chai';\nimport { Dapp } from '../page/dapp';\n\ndescribe('E2E Test Dapp', () =\u003e {\n  let dapp: Dapp;\n  const browserOptions: BrowserOptions = {\n    extension: {\n      wallet: METAMASK,\n      seed: 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent' // MetaMask test seed https://github.com/MetaMask/metamask-extension/blob/v12.7.1/test/e2e/seeder/ganache.ts\n    }\n  };\n\n  beforeEach(async () =\u003e {\n    dapp = await DappDriver.create\u003cDapp\u003e(\n      'https://metamask.github.io/test-dapp/',\n      PLAYWRIGHT,\n      CHROME,\n      Dapp,\n      browserOptions\n    );\n  });\n\n  afterEach(async () =\u003e {\n    await DappDriver.dispose();\n  });\n\n  it('connects Account One to the dapp', async () =\u003e {\n    const connectPopup: Connect = await dapp.connect();\n    dapp = await connectPopup.accept\u003cDapp\u003e(Dapp);\n    const actualAccount: string = await dapp.getAccounts();\n    const expectedAccount: string = '0xe18035bf8712672935fdb4e5e431b1a0183d2dfc';\n    expect(actualAccount).to.be.equal(expectedAccount);\n  });\n});\n```\n\n**Run the Test**\n\nFinally, run your tests:\n\n```shell\nyarn test\n```\n\n## Examples\n\nIf you learn best by example, check out our [example project](https://github.com/assert-equals/DappDriver-examples) to help you get going.\n\n## Documentation\n\nRead our [API documentation](https://assert-equals.github.io/DappDriver/).\n\n## Support\n\nJoin our [community](https://github.com/assert-equals/DappDriver/discussions) and elevate your decentralized testing experience.\n\nIf you like DappDriver, [give us a star ⭐ on GitHub!](https://github.com/assert-equals/DappDriver)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fassert-equals%2Fdappdriver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fassert-equals%2Fdappdriver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fassert-equals%2Fdappdriver/lists"}