[Playwright Interview question #17]: Fixtures trong Playwright là gì và cách sử dụng?
Câu hỏi phỏng vấn #17: Fixtures trong Playwright là gì và cách sử dụng?
Trả lời mẫu:
Fixtures là cách Playwright setup và teardown test resources:
1. Built-in fixtures:
test('use built-in fixtures', async ({ page, context, browser }) => {
// page: isolated page instance
// context: isolated browser context
// browser: shared browser instance
});
2. Custom fixtures:
// fixtures.js
import { test as base } from '@playwright/test';
export const test = base.extend({
// Custom fixture
loginPage: async ({ page }, use) => {
const loginPage = new LoginPage(page);
await use(loginPage);
// Cleanup sau test (optional)
}
});
3. Fixture với dependencies:
test.extend({
storageState: async ({}, use) => {
await use('auth.json');
},
authenticatedPage: async ({ browser, storageState }, use) => {
const context = await browser.newContext({ storageState });
const page = await context.newPage();
await use(page);
await context.close();
}
});
4. Worker-scoped fixtures:
test.extend({
// Runs once per worker
workerAuth: [async ({}, use) => {
// Setup authentication once
const token = await getAuthToken();
await use(token);
// Cleanup
}, { scope: 'worker' }]
});
5. Auto fixtures:
test.extend({
// Auto-runs for every test
autoLogin: [async ({ page }, use) => {
await page.goto('/login');
await page.fill('#user', 'test');
await use();
}, { auto: true }]
});
💡 Tips:
- Fixtures enable test isolation
- Lazy evaluation - chỉ run khi được dùng
- Perfect cho reusable test setup
- Chain fixtures cho complex scenarios
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