【问题标题】:why JEST test fails due to closing browser by puppeteer为什么 JEST 测试由于 puppeteer 关闭浏览器而失败
【发布时间】:2019-09-23 20:45:43
【问题描述】:

我正在使用 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')

  })
})

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

  ● Test suite failed to run

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

如果我在测试结束后不关闭浏览器,它应该会通过。

【问题讨论】:

  • 我已经尝试了你的代码(只是为我的测试更改了 login() 和 page.$eval,一切正常。没有“连接关闭”消息。
  • 所以问题可能出在我的测试环境配置中

标签: javascript jestjs puppeteer


【解决方案1】:

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

// preset: "jest-puppeteer",

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2021-02-27
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多