Перевірте договір завантаження, а не шлях до файлу.
Використовуйте невеликий вигаданий файл, щоб перевірити вибір і прийняття, а потім зберігайте дані обробки сервером окремо.

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

Відкриється засіб вибору файлів, тест вибере файл, і пакет оголошує, що завантаження завершено. Додаток отримав лише вибір введення. Він все одно може відхилити формат, не пройти перевірку або не завершити обробку. Зелений крок вибору є вужчим результатом, ніж придатний для використання завантажений документ.
Цей посібник використовує вхідну документацію Playwright для створення крихітного локального текстового файлу. Файл містить вигаданий вміст. Це не вкладення клієнта, документ, що посвідчує особу, або приклад продукту. Ми відокремлюємо договір введення браузера від будь-якої подальшої обробки, яку виконує програма.
Надайте приладу читабельну ідентичність
Тестовий фікстур має вказувати свою назву, тип MIME та вміст. Для невеликого текстового прикладу корисне навантаження в пам'яті легше переглянути, ніж непояснений двійковий файл у сховищі. Використовуйте реалістичні дійсні вхідні дані для свого продукту, але уникайте приватних вихідних документів, якщо контрольований зразок дасть відповідь на запитання.
await page.getByLabel('Demo attachment').setInputFiles({
name: 'demo-note.txt',
mimeType: 'text/plain',
buffer: Buffer.from('Invented demo note\n', 'utf8')
});
await expect(page.getByRole('status')).toHaveText('Selected: demo-note.txt');Фрагмент передбачає доступний вхідний файл і поведінку локального інтерфейсу користувача, який повідомляє вибране ім'я файлу. Твердження встановлює таку поведінку, а не успішне зберігання на сервері. Збережіть це обмеження в назві тесту та на пояснювальному малюнку.
Playwright документує шляхи, кілька файлів, об'єкти корисного навантаження та очищення вибору через setInputFiles. Виберіть найменшу форму введення, яка відповідає регістру. Багатофайловий тест потребує вимог щодо порядку, обмежень та індивідуальних помилок; це не просто та сама перевірка щасливого шляху, що повторюється з кількома іменами.
Використовуйте подію вибору лише тоді, коли це необхідна межа
Деякі інтерфейси створюють введення динамічно після натискання кнопки. Посібник із введення описує очікування події вибору файлів перед дією, а потім виклик setFiles у поверненому виборі. Поставте очікування події першим, щоб засіб швидкого вибору все ще було підключено до ініціального елемента керування.
const pendingChooser = page.waitForEvent('filechooser');
await page.getByRole('button', { name: 'Choose demo file' }).click();
const chooser = await pendingChooser;
await chooser.setFiles({
name: 'demo-note.txt',
mimeType: 'text/plain',
buffer: Buffer.from('Invented demo note\n', 'utf8')
});Це альтернативні підходи до вибору для різних інтерфейсів, а не два необхідні кроки в одному завантаженні. Не автоматизуйте рідне діалогове вікно операційної системи за вгаданими екранними координатами, якщо задокументований ввід або межа селектора можуть прямо виражати дію.
Вибір, прийняття та обробка є окремими станами
Після вибору програма може перевірити файл, надіслати його на сервер і запустити фоновий процесор. Напишіть очікуваний стан для кожного відповідного шару. Повідомлення про прийняття, яке відкриває користувач, має означати те, що в ньому сказано. Якщо обробка все ще очікує, тест не повинен позначати всю функцію як завершену.
Для фактичного шляху завантаження використовуйте схвалене проміжне сховище та перевірте остаточний контрольований запис за допомогою підтверджених доказів продукту. Перевірте, чи доступний правильний документ, а не лише те, що фішка зникла. Не завантажуйте вигадані тести в поточну папку клієнта лише тому, що інтерфейс користувача полегшує це.
Назва файлу та тип MIME є вхідними даними, а не незалежним підтвердженням вмісту файлу. Текстове навантаження з назвою image.png не є дійсним зображенням. Вибирайте навмисно недійсні зразки під час тестування на відбраковування та дійсні зразки під час тестування на прийняття. Поясніть, який контракт має виконувати кожен екземпляр.
Зберігайте недійсні випадки малими та корисними
Продукт може відхилити непідтримуваний формат, завеликий вхідний файл, порожній файл або дублікат. Встановіть очікувану політику від команди програми, перш ніж писати ці твердження. Не вигадуйте максимальний розмір і не припускайте, що атрибут accept браузера є всім правилом безпеки.
Перевірте пояснення та безпечні наступні дії для відхиленого файлу. Користувач повинен мати можливість вибрати інший файл або видалити виділення, якщо це призначений дизайн. Тестове очищення також має значення: прийняте проміжне завантаження може залишатися після закриття браузера, тому організуйте видалення запису схваленим шляхом.
Зберігайте прилади та артефакти, що випливають з ладу, під контролем конфіденційності. Невеликі вигадані вхідні дані легше перевіряти та безпечніше розповсюджувати, ніж захоплені справжні документи. Знімки екрана та трасування можуть виявити вибрані назви файлів, навіть якщо байти файлу не прикріплено.
AnyTest описує агентів, які досліджують веб-програму та створюють наскрізні тести для перевірки людьми. Використовуйте ці межі, щоб переглянути будь-який запропонований шлях файлу: вибраний, прийнятий, оброблений і доступний. У цьому посібнику не стверджується конкретний інтерфейс завантаження AnyTest або інтеграція перевірки. Перевагою є чіткий контракт артефакту, який запобігає успішній дії введення стати помилковою обіцянкою про результати сервера.
Загальні запитання
Чи підтверджує вибір файлу завершення завантаження?
Ні. Вибір, прийняття та остаточна серверна обробка є окремими доказами.
Чи може пристрій використовувати реальний документ клієнта?
Використовуйте винайдені або схвалені постановочні зразки. Уникайте приватних файлів, якщо контрольований вміст відповідає на запитання тесту.