如何在 Puppeteer 中设计用于测试的函数中的可重用代码?

How can I design reusable code in function for testing in Puppeteer?

我开玩笑地在 puppeteer 中进行代码测试:

如何在不重复代码的情况下为类似的登录测试创建可重用的函数?

  describe('new user test', () => {
    test('no existed user try', async() => {
  browser = await puppeteer.launch(chromeOptions)
  const page = await browser.newPage();

  await page.goto("https://admin.manager.synthrone.com/") 

  await page.waitForSelector('#mat-input-0')
  await page.type('#mat-input-0', 'test')
  await page.type('#mat-input-1', 'pass')
  await page.click('button')

您已经编写了一个有效的匿名回调函数,您只需要参数化一些需要的变量并为该函数命名。

这里有一个选择器和 url 作为参数的例子

async function loginTest(url, selectors){
    const browser = await puppeteer.launch(chromeOptions);
    const page = await browser.newPage();
    await page.goto(url);

    await page.waitForSelector('#mat-input-0');
    await Promise.all(Object.keys(selectors).map(selector => page.type(selector, selectors[selector])));
    await page.click('button');

    await browser.close();
}

describe('new user test', () => {
    test('no existed user try', () => loginTest("https://admin.manager.synthrone.com/", {'#mat-input-0': 'test', '#mat-input-1': 'pass'}));
    test('some other test', () => loginTest("https://admin.manager.synthrone.com/", {'#mat-input-0': 'differentarg', '#mat-input-1': 'differentpass'}));
});