一起运行(同步)时,Jest Puppeteer测试失败

时间:2020-07-28 18:33:00

标签: jestjs jest-puppeteer

使用的技术:

  • npm
  • 开玩笑
  • 开玩笑的人

如果我逐个运行测试,则它们会分别通过

$ npm test test/file.to.test.js

...

Test Suites: 1 passed, 1 total
Tests:       6 passed, 6 total

但是,如果我作为一组来运行测试,那么错误就很普遍

$ npm test

...

Test Suites: 6 failed, 6 total
Tests:       88 failed, 17 todo, 4 passed, 109 total

问题

我的情况似乎与某种玩笑/伪造者缓存或chrome会话共享有关。 Regargless,我该如何进一步调试呢?

额外

在编写此问题时,我发现使用参数--runInBand(来自this answer)可以使所有测试通过,但它们顺序运行,这会使测试花费的时间更长-通常在开玩笑的情况下平行。

设置

package.json

"test": "set NODE_ENV=test && jest --runInBand --detectOpenHandles --forceExit",

jest-puppeteer.config.js

module.exports = {
    launch: {
        devtools: true, // allows for use of 'debugger;' in tests
        // executablePath: '/usr/bin/chromium-browser',
        headless: true,
        defaultViewport: {
            width: 1024,
            height: 768,
            //isMobile: true,
            //hasTouch: true,
        },
        ignoreDefaultArgs: ['--disable-extensions'],
        args: [
            '--enable-font-antialiasing',
            '--font-render-hinting=medium',
            '--disable-gpu',
            '--disable-dev-shm-usage',
            '--disable-setuid-sandbox',
            '--no-first-run',
            '--no-sandbox',
            '--no-zygote',
            '--single-process',

            "--renderer",
            "--no-service-autorun",
            "--no-experiments",
            "--no-default-browser-check",
            "--disable-extensions",
        ]
    },
    // server: {
    //     command: "npm run serve",
    //     port: 9000,
    //     launchTimeout: 180000
    // },
    browser: 'chromium',
    browserContext: 'default'
};

1 个答案:

答案 0 :(得分:0)

关于这一点我读了很多,但我不确定为什么会发生这种情况,因此有一些非常无缝的解决方法

--runInBand--maxConcurrency=2