Я использую 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.
, и если я не закрываю браузер после завершения теста, он проходит как следует.