const dappeteer = require('@chainsafe/dappeteer'); const puppeteer = require('puppeteer'); const SEED = 'hello world its me again'; const PWD = '123456Git'; const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); const retry = async (fn, count = 3) => { try { return await fn(); } catch (error) { if (count <= 0) { throw error; } return await retry(fn, --count); } } (async () => { const browser = await dappeteer.launch(puppeteer, { metamaskVersion: 'v10.8.1', headless: false, defaultViewport: null }); const metamask = await dappeteer.setupMetamask(browser, { seed: SEED, password: PWD }); const metamaskPage = metamask.page; // navigate ::: metamask create account page await metamaskPage.goto(metamaskPage.url().endsWith('#new-account') ? metamaskPage.url() : `${metamaskPage.url()}new-account`, { waitUntil: 'networkidle2' }); // wait ::: until create button shows await retry( () => metamaskPage.waitForSelector('button.new-account-create-form__button:last-child', { visible: true }) ); // click ::: create button await metamaskPage.click('button.new-account-create-form__button:last-child'); // wait ::: until main page shows await retry( () => metamaskPage.waitForSelector('#app-content .main-container', { visible: true }) ); await browser.close(); })();