Блог и новости

Таймауты в синтетических проверках: решаем проблемы и даем вам больше контроля

2025-09-11 11:54 Блог Проверки
Привет! Сегодня расскажу о важном обновлении, которое касается тайм-аутов в синтетических и пошаговых API-проверках.

Проблема, которую мы решили

Раньше, несмотря на то, что вы могли выставить собственный таймаут для проверки, на уровне Playwright-скрипта он все равно был жестко ограничен 30 секундами. Это означало, что даже если вы задавали, например, 15 секунд, скрипт все равно выполнялся 30 секунд.
Вместе с этим существовала еще одна проблема: глобальный таймаут для наших serverless-контейнеров тоже был 30 секунд. Если ваш Playwright-скрипт не укладывался в это время, контейнер просто «убивался», и вы получали лишь сухое уведомление о таймауте, без каких-либо деталей о том, на каком шаге произошла задержка.

Что изменилось и как это работает сейчас

Мы внедрили два ключевых изменения:
  1. Индивидуальный таймаут на уровне скрипта: Теперь таймаут, который вы выставляете в настройках проверки, корректно передается и устанавливается на уровне вашего Playwright-сценария. Это дает вам полный контроль над тем, сколько времени скрипту разрешено работать.
  2. Больше времени для сложных проверок: Мы увеличили глобальный таймаут для serverless-контейнеров с 30 до 45 секунд. Это дает вашим скриптам больше пространства для выполнения сложных многошаговых сценариев, без риска быть принудительно прерванными.
Более того, теперь, когда происходит таймаут на уровне Playwright, вы получаете не просто пустое сообщение, а подробный отчет обо всех данных, которые удалось собрать до момента прерывания. Вы увидите скриншоты, логи и другие детали, что позволит легко определить «узкое место».
Вот как это выглядело до обновления:
А вот как выглядит сейчас:

Как использовать новые возможности на полную

Чтобы извлечь максимум пользы из этих обновлений, мы настоятельно рекомендуем использовать console.log() в ваших Playwright-сценариях. Например:
test('Проверка сложного сценария', async ({ page }) => {
  // Шаг 1: Авторизация
  await page.goto('https://my-service.com/login');
  await page.fill('#username', 'user@pingera.com');
  await page.fill('#password', 'password');
  console.log('Попытка авторизации...'); // Отметка в логах
  await page.click('#submit');
  
  // Шаг 2: Переход в личный кабинет
  await page.waitForURL('**/dashboard');
  console.log('Переход на дашборд успешен.'); // Отметка в логах

  // Если таймаут произойдет на этом шаге,
  // вы увидите в логах, что авторизация прошла успешно,
  // а проблема возникла дальше.

  await page.click('.report-button');
  console.log('Кнопка отчета нажата.');
  
  await page.waitForSelector('.report-loaded');
});
Если скрипт прервется по таймауту, вы увидите в отчете, на каком именно console.log() он остановился, что значительно упростит отладку.

Заключение

Эти улучшения, наряду с возможностью создавать собственные Playwright-скрипты, выводят синтетический мониторинг в Pingera на новый уровень. Теперь вы не просто получаете уведомления о проблемах, а имеете в руках мощный инструмент для их детальной диагностики. Мы даем вам полный контроль, позволяя точно имитировать поведение пользователей и оперативно выявлять любые задержки.
Готовы попробовать?