import { test, expect } from '@playwright/test'; import fs from 'node:fs/promises'; test('download report', async ({ page }, testInfo) => { await page.route('**/reports/monthly.csv', async route => { await route.fulfill({ status: 200, headers: { 'Content-Type': 'text/csv', 'Content-Disposition': 'attachment; filename="report.csv"', }, body: 'month,total\nJune,42\n', }); }); await page.setContent(` Download report `); const downloadPromise = page.waitForEvent('download'); await page.getByRole('link', { name: 'Download report' }).click(); const download = await downloadPromise; expect(download.suggestedFilename()).toBe('report.csv'); const savedPath = testInfo.outputPath('downloads', download.suggestedFilename()); await download.saveAs(savedPath); const contents = await fs.readFile(savedPath, 'utf8'); expect(contents).toContain('June,42'); });