为什么由于puppeteer关闭浏览器而导致JEST测试失败

时间:2019-09-18 22:11:04

标签: javascript jestjs puppeteer

我正在使用JEST + Puppeteer在托管的Web应用上运行功能测试。

这是测试代码:

const puppeteer = require('puppeteer');

const url = 'https://somewebsite.com';

const login = (async(page, login, password) =>{
  await page.goto(url)
  await page.waitForSelector('#mat-input-0')
  await page.type('#mat-input-0', login)
  await page.type('#mat-input-1', password)
  await page.click('button')

})


beforeEach(async () => {
    browser = await puppeteer.launch({ headless: false });
    page = await browser.newPage();
});

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

describe('login to website test', () => {
  test('non existent user try', async() => {
    jest.setTimeout(300000);

    await login(page, 'user@email.com', 'upsiforgoTTThepassword')
    await page.waitFor(1000)
    var element  = await page.$eval('.mat-simple-snackbar', (element) => {
      return element.textContent.trim()
    })

    expect(element).toBe('User not Found')

  })
})

我得到的问题是,如果我在测试结束后使用伪造函数await browser.close();退出浏览器,它将自动失败,并且在终端中出现错误:

  ● Test suite failed to run

    Protocol error: Connection closed. Most likely the page has been closed.

如果在测试结束后我没有关闭浏览器,它将按预期通过。

1 个答案:

答案 0 :(得分:0)

我发现如果我注释掉jest.config.js中的预设,该错误停止发生:

self