почему JEST-тест не проходит из-за закрытия браузера кукловодом - PullRequest
0 голосов
/ 19 сентября 2019

Я использую JEST + Puppeteer для запуска функциональных тестов в размещенном веб-приложении.

вот тестовый код:

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 голосов
/ 23 сентября 2019

Я обнаружил, что если я закомментировал пресет в моем jest.config.js, ошибка перестает возникать:

// preset: "jest-puppeteer",
...