codeceptjs / CodeceptJS

Supercharged End 2 End Testing Framework for NodeJS

Home Page:http://codecept.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

It takes a long time to finish the process after testing

Hydrair opened this issue · comments

What are you trying to achieve?

I'm trying to run a test.

What do you get instead?

After running the test, codecept takes a long time to quit the process. It does not matter if the test succeeds or fails. After the test runs are finished, it just stays at OK in ... or finished teardown hook with --verbose. This happens randomly, sometimes finishing fast, but more often lasting up to several minutes.

Provide console output if related. Use --verbose mode for more details.

  ✔ OK in 12663ms

    --- STARTED "after each" hook: After for "Scenario1" ---
    Emitted | provisioning.user.removed ([object Object])
    Emitted | provisioning.user.removed ([object Object])
    --- ENDED "after each" hook: After for "Scenario1" ---

  OK  | 1 passed   // 16s
    started teardown hook
    Emitted | provisioning.context.removed ([object Object])
    finished teardown hook


✨  Done in 316.64s.

Provide test source code if related
Happens randomly to all tests.

Details

  • CodeceptJS version: v3.5.3
  • NodeJS Version: v21.6.2
  • Operating System: Sonoma 14.2.1
  • puppeteer version: 20.8.2
  • Configuration file:
    (cut sensitive data)
module.exports.config = {
  tests: './tests/**/*_test.js',
  timeout: 90,
  output: './output/',
  helpers: {
    Puppeteer: {
      url: process.env.LAUNCH_URL,
      smartWait: 1000,
      waitForTimeout: Number(process.env.WAIT_TIMEOUT),
      browser: 'chrome',
      restart: true,
      windowSize: '1280x1024',
      uniqueScreenshotNames: true,
      timeouts: {
        script: 5000
      },
      chrome: {
        executablePath: process.env.CHROME_BIN,
        args: [
          '--disable-crash-reporter',
          '--disable-dev-shm-usage',
          '--disable-features=IsolateOrigins',
          '--disable-gpu',
          '--disable-notifications', // to disable native notification window on Mac OS,
          '--disable-print-preview',
          '--disable-setuid-sandbox',
          '--disable-site-isolation-trials',
          '--disable-web-security',
          process.env.HEADLESS === 'false' ? '' : `--headless=${process.env.HEADLESS}`,
          '--no-first-run',
          '--no-sandbox',
          '--no-zygote',
            `--unsafely-treat-insecure-origin-as-secure=${process.env.LAUNCH_URL}`
        ].concat((process.env.CHROME_ARGS || '').split(' '))
      },
      show: process.env.HEADLESS === 'false' || 'new',
      waitForNavigation: ['domcontentloaded', 'networkidle0']
    },
    MockRequestHelper: {
      require: '@codeceptjs/mock-request'
    }
  },
  async teardown () {
    const { contexts } = global.inject()
    for (const ctx of contexts.filter(ctx => ctx.id > 100)) {
      if (ctx.id !== 10) await ctx.remove().catch(e => console.error(e.message))
    }
  },

}