Кукольник: Тайм-аут: Превышен тайм-аут во время ожидания события по тайм-ауту.setTimeout (/home/site/wwwroot/node_modules/puppeteer/lib/helper.js)

#javascript #error-handling #automated-tests #timeout #puppeteer

Вопрос:

Я пытаюсь определить, как устранить эту ошибку. У меня всегда были проблемы с тайм-аутом на моих сайтах и при тестировании. Это не согласуется, и каждый раз это другой сайт. Я думал, что решил это с помощью page.setDefaultTimeout(0); метода, но теперь я получаю другую ошибку, на которую указывает lib/helper.js .

Не уверен, куда идти дальше. Я хочу продлить время ожидания до нескольких минут, чтобы при попытке загрузки он не выдавал ошибку менее чем за минуту.

 "ErrorMessage": "Timeout exceeded while waiting for event",
                "ErrorStack": "TimeoutError: Timeout exceeded while waiting for event
    at Timeout.setTimeout (/home/site/wwwroot/node_modules/puppeteer/lib/helper.js:196:24)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5)
  -- ASYNC --
    at Page.<anonymous> (/home/site/wwwroot/node_modules/puppeteer/lib/helper.js:111:15)
    at Promise.all.endpoints.map.endpoint (/home/site/wwwroot/scripts/tests.js:162:19)
    at Array.map (<anonymous>)
    at Object.testStoreManagerLoad [as StoreManagerLoad] (/home/site/wwwroot/scripts/tests.js:161:15)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7)"
 
 const runTests = async (TestCases, customOpts = {}, log = console.log) => {
  const puppeteerOpts = {
    defaultViewport: {
      width: 1200,
      height: 850
    },
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
    ...customOpts
  };
  const browser = await puppeteer.launch(puppeteerOpts);

  let page = await browser.newPage();

  page.setDefaultTimeout(0);
  
  const functionObj = {
    ClientContact: testClientContactForm,
    ClientSubmission: testClientSubmissionForm,
    TagRedemption: testTagRedemption,
    TagSubmission: testTagSubmissionForm,
    StoreManagerLoad: testStoreManagerLoad
  };

  for (const Case of TestCases) {
    try {
      log(`Started: ${Case.TestCaseName}`);
      await functionObj[Case.TestCaseType](Case, page);
      log(`Success: ${Case.TestCaseName}`);
      Case.Success = true;
    } catch (err) {
      log(`Failure: ${Case.TestCaseName}`);
      log(err.stack);
      Case.Success = false;
      Case.ErrorName = err.name;
      Case.ErrorMessage = err.message;
      Case.ErrorStack = err.stack;
    }

    if (!Case.Success) {
      if (Case.AlternateURL) {
        try {
          await functionObj[Case.TestCaseType](Case, page, true);
          log(`Alternate Success: ${Case.TestCaseName}`);
          Case.Success = true;
        } catch (altErr) {
          log(`Alternate Failure: ${Case.TestCaseName}`);
          log(altErr.stack);
          Case.ErrorName = altErr.name;
          Case.ErrorMessage = altErr.message;
          Case.ErrorStack = altErr.stack;
        }
      } else {
        page = await browser.newPage();
        try {
          await functionObj[Case.TestCaseType](Case, page);
          log(`Alternate Success: ${Case.TestCaseName}`);
          Case.Success = true;
        } catch (altErr) {
          log(`Alternate Failure: ${Case.TestCaseName}`);
          log(altErr.stack);
          Case.ErrorName = altErr.name;
          Case.ErrorMessage = altErr.message;
          Case.ErrorStack = altErr.stack;
        }
      }
    }
  }

  // Close the browser and exit the script
  await browser.close();

  return TestCases;
};