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

  })
})

我得到的问题是,如果我使用操纵up的功能,则await browser.close(); 测试结束后退出浏览器它会自动失败,并且在终端中出现错误:

  ● Test suite failed to run

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

如果测试结束后我没有关闭浏览器,则它会通过。

#1楼 票数:0 已采纳

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

// preset: "jest-puppeteer",

  ask by Jake11 translate from so

未解决问题?本站智能推荐:

1回复

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

我正在使用JEST + Puppeteer在托管的Web应用程序上运行功能测试。 这是测试代码: 我得到的问题是,如果我使用操纵up的功能,则await browser.close(); 测试结束后退出浏览器它会自动失败,并且在终端中出现错误: 如果测试结束后我没有关闭浏
1回复

puppeteer 在运行所有 Jest 测试之前关闭浏览器

重现步骤 git clone https://github.com/anikethsaha/docsify git checkout e2e-test-puppeteer` npm i npm run test:e2e 检查sideBar.spec.js的测试 运行 122
1回复

如何用 puppeteer 和 jest 编写健壮的测试?

这是我编写的测试,我的问题是,我试图构建它尽可能健壮,但它有时会起作用,有时会由于如下所示的原因而失败。 也许我遗漏了一些东西,如果你们中的一个人可以帮助我使测试更加健壮,我会很感激。 注意:我从代码中删除了敏感信息。 失败:
1回复

使用 Jest 按顺序运行 Puppeteer 测试

我正在使用 Jest Puppeteer,我想先运行登录测试(设置 cookie/localStorage 进行身份验证),然后再运行其他测试,但是,我知道 Jest 不能以这种方式工作- 因为它搜索本地文件系统并根据文件名中的模式运行测试,并且它们运行的​​顺序不同。 我不完全确定我会以正确的方
1回复

如何使用 Jest + Puppeteer 测试显示的警报?

我需要验证在单击按钮后是否显示警报。 我尝试了以下方法: 但是测试失败,对 page.alert 的调用为零(实际上,在这种情况下单击此按钮后会显示警报)。 我也试过 window.alert - 它无法识别。 请帮忙。 更新:我这样试过了,警报功能没有被模拟功能取代(???)
1回复

从Puppeteer浏览器/页面上下文中提取本机界面

是否有可能从Browser或Page实例检索本机接口以检查对象是否是此接口的instanceof ? 例如,在一个开玩笑的测试上下文中(由于某些原因,CanvasRenderingContext2D不可用,因为它是Node上下文而不是JSDOM或浏览器API的其他模拟):
4回复

使用 Jest 运行 Puppeteer 测试时如何增加导航超时

我有一小套基于 Puppeteer 和 Jest 的测试,但我无法摆脱以下问题:当我运行单个特定测试(例如: yarn test myscenario.test.js )时,一切正常; 当我使用yarn test命令运行整个测试套件(大约 20 个测试)时出现问题,我的一些测试失败并出现以下错误:
1回复

人偶的page.goto(url)失败,我想正常关闭页面/退出,以便我的其他JEST测试可以继续运行

我有一个包含Jest和Puppeteer的测试套件,用于无头e2e测试。 我进行了设置,因此运行“ npm test”将首先运行我的Puppeteer测试,然后再运行其余的测试。 假设该网址不可用。 例如没有互联网连接,或者我忘了提供服务。 我想优雅地退出我的Puppeteer测试,
2回复

将 Jest 与 Puppeteer 一起使用:评估失败:ReferenceError:cov_4kq3tptqc 未定义

我正在尝试使用 Puppeteer 获取页面的描述,我有一个高阶函数可以为该函数提供页面对象: 该功能按预期工作。 然后,我使用 Jest 运行测试。 我有以下错误: 如果我只是将该函数粘贴到 jest 文件中,那么它会按预期工作
3回复

任何测试失败时如何运行函数 - Jest

每当任何jest测试失败时,我都想运行一个function / task 。 有没有一种方法可以利用afterEach ,而不是用try / catch包装我的所有测试或添加if检查? 如果测试失败,那么我希望它失败,只需运行一个单独的函数。 例如: 这是添加一个 if 检查...但我希望我