[Playwright Interview question #19]: Làm thế nào để test upload/download file?
Câu hỏi phỏng vấn #19: Làm thế nào để test upload/download file?
Trả lời mẫu:
1. File upload:
// Method 1: Direct input
await page.locator('input[type="file"]').setInputFiles('path/to/file.pdf');
// Method 2: Multiple files
await page.locator('input[type="file"]').setInputFiles([
'file1.png',
'file2.jpg'
]);
// Method 3: File chooser
const [fileChooser] = await Promise.all([
page.waitForEvent('filechooser'),
page.click('#upload-btn')
]);
await fileChooser.setFiles('document.pdf');
2. File download:
// Wait for download
const [download] = await Promise.all([
page.waitForEvent('download'),
page.click('#download-btn')
]);
// Save to specific path
await download.saveAs('downloads/file.pdf');
// Get download info
console.log(download.suggestedFilename());
console.log(download.url());
3. Download với custom path:
const context = await browser.newContext({
acceptDownloads: true,
downloadsPath: './test-downloads'
});
4. Verify file content:
// Read downloaded file
const download = await page.waitForEvent('download');
const path = await download.path();
const content = await fs.readFile(path, 'utf-8');
expect(content).toContain('expected text');
5. Buffer/stream handling:
// Create download stream
const download = await page.waitForEvent('download');
const stream = await download.createReadStream();
// Process stream...
💡Tips:
- Clear input trước khi upload:
setInputFiles([])
- Test drag-and-drop upload với
page.dragAndDrop()
- Verify upload progress nếu có progress bar
- Cleanup downloaded files sau test
Lời Kết
Playwright đang trở thành một trong những automation frameworks phổ biến nhất cho web testing. Thông qua series này, hy vọng bạn sẽ:
- Nắm vững kiến thức từ cơ bản đến nâng cao
- Tự tin trong các buổi phỏng vấn
- Áp dụng hiệu quả vào dự án thực tế
- Trở thành một phần của cộng đồng Playwright Việt Nam năng động
📚 Bắt đầu hành trình của bạn với: Bài 1: Playwright vs Selenium
💬 Có câu hỏi? Tham gia group Facebook của chúng mình!
⭐ Theo dõi series để không bỏ lỡ bài viết mới!
All rights reserved