【发布时间】: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