2.8.2 • Published 3 months ago

@tenkeylabs/dappwright v2.8.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

dAppwright

E2E testing for dApps using Playwright + MetaMask & Coinbase Wallet

Installation

$ npm install -s @tenkeylabs/dappwright
$ yarn add @tenkeylabs/dappwright

Usage

Quick setup with Hardhat

  # test.spec.ts

  import { BrowserContext, expect, test as baseTest } from "@playwright/test";
  import dappwright, { Dappwright, MetaMaskWallet } from "@tenkeylabs/dappwright";

  export const test = baseTest.extend<{
    context: BrowserContext;
    wallet: Dappwright;
  }>({
    context: async ({}, use) => {
      // Launch context with extension
      const [wallet, _, context] = await dappwright.bootstrap("", {
        wallet: "metamask",
        version: MetaMaskWallet.recommendedVersion,
        seed: "test test test test test test test test test test test junk", // Hardhat's default https://hardhat.org/hardhat-network/docs/reference#accounts
        headless: false,
      });

      // Add Hardhat as a custom network
      await wallet.addNetwork({
        networkName: "Hardhat",
        rpc: "http://localhost:8546",
        chainId: 31337,
        symbol: "ETH",
      });

      await use(context);
    },

    wallet: async ({ context }, use) => {
      const metamask = await dappwright.getWallet("metamask", context);

      await use(metamask);
    },
  });

  test.beforeEach(async ({ page }) => {
    await page.goto("http://localhost:8080");
  });

  test("should be able to connect", async ({ wallet, page }) => {
    await page.click("#connect-button");
    await wallet.approve();

    const connectStatus = page.getByTestId("connect-status");
    expect(connectStatus).toHaveValue("connected");

    await page.click("#switch-network-button");

    const networkStatus = page.getByTestId("network-status");
    expect(networkStatus).toHaveValue("31337");
  });

Alternative Setups

There are a number of different ways integrate dAppwright into your test suite. For some other examples, please check out dAppwright's example application repo.

Special Thanks

This project is a fork of the Chainsafe and Decentraland version of dAppeteer.

2.8.2

3 months ago

2.8.1

3 months ago

2.8.0

4 months ago

2.6.0

4 months ago

2.7.1

4 months ago

2.5.0

7 months ago

2.4.1

7 months ago

2.4.0

9 months ago

2.5.2

6 months ago

2.3.4

9 months ago

2.5.1

6 months ago

2.5.4

6 months ago

2.5.3

6 months ago

2.5.5

6 months ago

2.3.3

11 months ago

2.3.2

11 months ago

2.3.1

1 year ago

2.3.0

1 year ago

2.2.7

1 year ago

2.2.6

1 year ago

2.2.3

1 year ago

2.2.2

1 year ago

2.2.5

1 year ago

2.2.4

1 year ago

2.2.1

1 year ago

2.2.0

1 year ago

2.1.0

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago