我有 2 个测试示例,当我同时运行它们时,似乎没有时间将它们都执行到最后。当我单独运行它们时,它们会一直运行到最后。
我读过 Puppeteer-cluster 可以帮助一次运行多个测试,但是该过程在 page.goto() 函数之后立即停止。我不确定这是否是解决我的问题的正确方法,因此请随时提供 Puppeteer-cluster 的其他解决方案。
测试1:
const { Cluster } = require('puppeteer-cluster');
const timeout = 100000
const { toMatchImageSnapshot } = require('jest-image-snapshot')
expect.extend({ toMatchImageSnapshot })
describe('login', () => {
test('test user login', async () => {
await page.goto(URL + 'login.jsp', { waitUntil: 'domcontentloaded' });
const cluster = await Cluster.launch({
concurrency: Cluster.CONCURRENCY_CONTEXT,
maxConcurrency: 2,
});
await cluster.task(async ({ page, data: url }) => {
await page.goto(URL + url, { waitUntil: 'domcontentloaded' });
await page.waitForSelector('input[name=username]')
await page.type('input[name=username]', username)
await page.type('input[name=password]', password)
const loginFormFilled = await page.screenshot();
expect(loginFormFilled).toMatchImageSnapshot({
failureThreshold: '0.01',
failureThresholdType: 'percent'
});
await page.waitForSelector('.roundButton').then(async () =>{
await page.evaluateHandle(() => {
let button = [...document.querySelectorAll('.roundButton')].find(element => element.textContent === 'Prijavi se');
if(button){
button.click();
}
});
})
await page.waitForSelector(".profilePic")
const image = await page.screenshot();
expect(image).toMatchImageSnapshot({
failureThreshold: '0.10',
failureThresholdType: 'percent'
});
});
cluster.queue('login.jsp');
await cluster.idle();
await cluster.close();
}, timeout);
});
第二个测试几乎相同,只是我正在测试注册过程而不是登录。
我尝试了与此处相同的示例https://www.npmjs.com/package/puppeteer-cluster但测试在 page.goto 之后立即停止并以通过测试结束。
在不久的将来,我有 30-40 多个类似于 test1 的测试,我需要用一个命令而不是一个一个命令来运行它们。