1

我有 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 的测试,我需要用一个命令而不是一个一个命令来运行它们。

4

0 回答 0