ChainSafe / dappeteer

[DEPRECATED]🏌🏼‍E2E testing for dApps using Puppeteer + MetaMask
Other
491 stars 152 forks source link

metamask start will error when use playwright with debug #215

Open gpBlockchain opened 1 year ago

gpBlockchain commented 1 year ago

version :0.4.0 test

import {readdir} from 'fs/promises';
import path from 'path';

import {use as chaiUse} from 'chai';
import chaiAsPromised from 'chai-as-promised';
import * as dappeteer from '@chainsafe/dappeteer/dist/index';
import puppeteer from 'puppeteer';

import {Dappeteer} from "@chainsafe/dappeteer/dist/types";
import {RECOMMENDED_METAMASK_VERSION} from "@chainsafe/dappeteer/dist/index";

chaiUse(chaiAsPromised);

function getCounterNumber(contract): Promise<number> {
    return contract.methods
        .count()
        .call()
        .then((res) => {
            return Number(res);
        });
}

async function clickElement(page, selector): Promise<void> {
    await page.bringToFront();
    await page.waitForSelector(selector);
    const element = await page.$(selector);
    await element.click();
}

export let testContract, browser, metamask: Dappeteer, testPage;

describe('dappeteer', () => {
    before(async () => {

        browser = await dappeteer.launch( {
            automation: "playwright",
            browser: "chrome",
            metaMaskVersion: RECOMMENDED_METAMASK_VERSION,
            playwrightOptions:{
                // args: [`--debug=true`],

            }
        });

        metamask = await dappeteer.setupMetaMask(browser,
            {
            // optional, else it will use a default seed
            seed: 'pioneer casual canoe gorilla embrace width fiction bounce spy exhibit another dog',
            password: 'password1234',
        });
        testPage = await browser.newPage();
        await testPage.goto('https://metamask.github.io/test-dapp/');

        // output version
        const directory = path.resolve(__dirname, '..', 'metamask');
        const files = await readdir(directory);
        console.log(`::set-output name=version::${files.pop().replace(/_/g, '.')}`);
    });
    it("de", async () => {
        console.log("dd")
    })

    after(async () => {
        // close browser
        await browser.close();
    });
});

package.json

"scripts": {
    "test": "PWDEBUG=1 mocha"
  },

will cause error, so should refresh when metamask web error

playwright debug doc: https://playwright.dev/docs/debug#pwdebug

image

aftrer refresh by handle ,script works fine