Перевірте завантаження, а не лише кнопку.
Подія завантаження є початком доказу артефакту. Перевірте збережений вміст на відповідність невеликому явному контракту.

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

Відповідає кнопка Експорт. Розпочнеться завантаження. Тест стає зеленим. Пізніше хтось відкриває файл і знаходить учорашні рядки, неправильні стовпці або сторінку входу, збережену під назвою електронної таблиці. Взаємодія з браузером спрацювала, але корисного результату не було.
Цей посібник створює перевірку артефактів із документації для завантаження Playwright. У прикладі використовується крихітний винайдений CSV із локальної демонстрації. Це не фінансовий звіт, експорт постачальника або заява про те, що будь-який продукт підтримує цей формат. Мета полягає в тому, щоб зв'язати клацання з доказами про отримані байти.
Зареєструвати очікування перед дією
Швидке завантаження може початися відразу після натискання. Спочатку почніть очікувати, потім виконайте дію та дочекайтеся того самого обіцянку. Це зберігає подію в основному тестовому потоці замість того, щоб залишати невідстежуваний зворотний виклик після завершення сценарію.
import { readFile } from 'node:fs/promises';
const pendingDownload = page.waitForEvent('download');
await page.getByRole('button', { name: 'Export demo' }).click();
const download = await pendingDownload;
const output = testInfo.outputPath('demo-export.csv');
await download.saveAs(output);
const text = await readFile(output, 'utf8');
expect(text).toBe('name,status\nDemo task,ready\n');Цей фрагмент належить до тесту Playwright, який отримує сторінку та testInfo з очікуванням, імпортованим із тестового пакета. Явний вихідний шлях дозволяє уникнути розгляду запропонованого імені файлу як надійного призначення. У документації сказано, що saveAs очікує завершення. Зчитування файлової системи після цього кроку перевіряє збережений артефакт, а не лише обіцянку інтерфейсу користувача.
Виберіть договір вмісту, а не зручне твердження
Точні байти підходять для цієї навмисно фіксованої демонстрації. Справжній експорт може містити мітки часу, згенеровані ідентифікатори або порядок рядків, який законно змінюється. Вирішіть, які поля мають бути стабільними, і проаналізуйте фактичний формат за допомогою відповідної бібліотеки. Не робіть тест нестійким, вимагаючи рівності цінностей, які продукт ніколи не обіцяв.
Для CSV контракт може вимагати іменовані стовпці, очікуваний контрольований запис і дійсну кількість рядків. Реальний CSV може містити коми в лапках, розриви рядків і кодування; наївний поділ на коми не є загальним парсером. Для PDF-файлу використовуйте відповідну перевірку тексту чи структури та візуальний перегляд, коли макет має значення. Успішне збереження не підтверджує дійсність будь-якого формату.
Зберігайте дійсність формату, бізнес-контент і презентацію як окремі питання. Ім'я файлу, що закінчується на .csv, говорить про те, що запропонував абонент, а не про те, що містить файл. Заголовок може бути правильним, тоді як кожен рядок даних є неправильним. Синтаксичний аналізатор може приймати документ, сторінки якого обрізано. Виберіть чеки, які відповідають ризику експорту.
Надайте запису тесту безпечне місце для проживання
Playwright зазначає, що завантаження, що належать контексту, видаляються, коли цей контекст закривається. Зберігайте артефакт перед демонтажем, коли це знадобиться для тесту пізніше. Використовуйте контрольований каталог тестових виводів і вкажіть причину його збереження. Не покладайтеся на тимчасовий шлях браузера, який переживає пакет.
Збережений експорт може містити більш конфіденційний матеріал, ніж знімок екрана. Тестуйте з придуманими або схваленими проміжними записами та перевіряйте помилкові завантаження перед їх розповсюдженням. Редагування знімка екрана не змінює файл CSV, доданий поруч із ним. URL-адреса завантаження також може містити інформацію про приватний доступ; уникайте копіювання його в загальнодоступні нотатки про налагодження.
Якщо твердження не вдається, зберігайте лише ті докази, які дозволяє політика збереження вашої команди. Запис дії, контрольованого введення, результату аналізатора та невдалого контракту. Загальне відстеження натискання кнопки є корисним контекстом, але воно не може замінити артефакт, який фактично отримує користувач.
Умисно тестуйте порожні та відхилені шляхи
Хороша перевірка експорту включає очікувану поведінку за відсутності записів і для відхиленого запиту. Правильною відповіддю може бути порожній файл із заголовками, чітке повідомлення або відсутність завантаження. Це рішення про продукт, яке необхідно прийняти перед написанням твердження. Не змушуйте кожен стан створювати файл лише тому, що його очікує помічник щасливого шляху.
Використовуйте окремі тести з контрольованими входами. Якщо програма повідомляє про помилку, перевірте пояснення та безпечну наступну дію. Якщо неочікуваний файл все одно надходить, перевірте його замість того, щоб сліпо приймати запропоноване розширення. Документ із помилкою HTML не є успішним експортом даних.
AnyTest описує дослідження на основі URL-адрес і наскрізні тести, перевірені людьми. Рецензент може запитати, чи запропонована експортна подорож перевіряє артефакт чи лише контроль. У цьому посібнику не йдеться про певний синтаксичний аналізатор завантаження чи функцію зберігання в AnyTest. Для команд з обмеженим часом QA ця одна межа запобігає перетворенню обнадійливого кліку на помилкову обіцянку щодо наданих даних.
Загальні запитання
Чи достатньо запропонованої назви файлу?
Ні. Перевірте збережений формат і бізнес-вміст; використовувати контрольований вихідний шлях.
Чи переживе тимчасовий файл після закриття контексту?
У документації сказано, що завантаження контексту видаляються після закриття. Збережіть необхідні докази перед демонтажем.