#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;
};