QA The Other WayЗабезпечення якості в епоху AI-автоматизації. QA The Other Way.
Практичне QA

Помилка консолі не є неперехопленим винятком.

Збирайте повідомлення консолі та помилки сторінки окремо, потім перевіряйте результат сценарію.

5 хв. читанняQA The Other Way
Два канали: повідомлення консолі та неперехоплений виняток.
Авторська редакційна ілюстрація.
Ілюстративне відео до цієї статті. англійський текст на екрані; вибрати субтитри для цієї мови.

Перекладне видання. Технічні ідентифікатори залишаються в оригінальній формі.

Збирайте повідомлення консолі та помилки сторінки окремо, потім перевіряйте результат сценарію.
Локальний приклад з вигаданими даними, не інтерфейс клієнта чи постачальника.

Тест проходить останнє твердження, хоча сторінка під час дії пише помилку в консоль. В іншому запуску скрипт викидає неперехоплений виняток, але заголовок залишається. Це різні сигнали. Збір одного не описує іншого.

Page API описує console для викликів консольного API та pageerror для неперехоплених винятків. ConsoleMessage надає тип і текст. Зберігайте канал, щоб повідомлення рівня error не перетворилося на вигаданий діагноз винятку.

Підключіть обробник до дії

На вигаданій сторінці одна кнопка викликає console.error, інша планує викидання Error. Немає зовнішніх ресурсів чи клієнтських даних. Тест слухає до кліку й перевіряє власний канал події.

const pending = page.waitForEvent('console', message =>
  message.type() === 'error' && message.text() === 'demo diagnostic'
);
await page.getByRole('button', { name: 'Log demo error' }).click();
const message = await pending;
expect(message.text()).toBe('demo diagnostic');

Потрібні раннер Playwright, імпорт expect та локальна кнопка. Очікування починається до кліку для швидкої події. Зіставляє точний вигаданий текст, не кожну помилку застосунку. Для винятків потрібен окремий pageerror.

Приклад підтверджує console.error без додавання pageerror. Окремий запланований throw створює pageerror з контрольованим текстом. Це поведінка фікстури, не класифікація всіх діагностик браузера чи журналювання бібліотек.

Відділіть збір від правила релізу

Отримання події саме не створює невдалого твердження. Визначте, які неочікувані події блокують сценарій, які відомі дозволені та хто володіє винятком. Список дозволів має бути вузьким і перевірюваним, не вимикати весь канал.

Перевірте походження й дію перед висновком про причину. Консоль може описати оброблений стан, виняток стосуватися іншої роботи. Жоден окремо не доводить збереження запису. Залиште перевірки результату.

Якщо підготовка чи навігація відбулися раніше, список неповний за той період. Назвіть вікно спостереження. Порожній список не доводить справність, якщо запуск або інша потрібна сторінка не спостерігалися.

Захистіть діагностичні файли

Аргументи та помилки можуть містити записи, токени чи URL. Збирайте потрібне, очищайте до передачі. Можливість читання не дозволяє публікувати всі аргументи. Тут лише фіксовані вигадані тексти.

Під час огляду перевіряйте час підключення, фільтр і твердження, яке споживає результат. AnyTest описує дослідження й тести для людського огляду. Конкретний моніторинг консолі не заявлений. Назвіть канал, дію, очікування та відсутні дані.

Обробник однієї сторінки не описує окреме вікно. Прив'язуйте докази до сторінки й періоду. Перевірте пропуски покриття перед об'єднанням списків для рішення про реліз.

Загальні запитання

Чи завжди console.error означає неперехоплений виняток?

Ні. Повідомлення та винятки мають різні канали.

Чи робить прослуховування тест невдалим?

Ні. Потрібні твердження чи явне правило обробки доказів.

Джерела