Подписываются на page.waitForEvent('download'), сохраняют файл через download.saveAs и проверяют имя/содержимое.
Разбор
- Не полагайтесь только на клик без ожидания download event.
- В headless путь сохранения контролируете явно.
- Для PDF — проверка размера/парсинг текста по необходимости.
- Чистите temp-файлы в teardown.
Пример
const [download] = await Promise.all([
page.waitForEvent('download'),
page.getByText('Export').click(),
]);
await download.saveAs('/tmp/export.csv');
Итог
Download API даёт детерминированную проверку файловых сценариев.