我正在使用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.
如果在测试结束后我没有关闭浏览器,它将按预期通过。
答案 0 :(得分:0)
我发现如果我注释掉jest.config.js中的预设,该错误停止发生:
self