[Playwright] page.close() có cần thiết không? 🤔

Một câu hỏi hay trên discord mà mình thấy. Học viên các lớp Fullstack Automation QA từ chưa biết gì với Playwright Typescript cũng thường xuyên hỏi mình câu này.
Câu trả lời ngắn gọn là không!!! nhé cả nhà. Playwright sẽ tự động close page sau khi test kết thúc.
Marijana Rukavina 😊:
Nếu bạn đang dùng Playwright Test runner, có cần phải thêm page.close() vào cuối mỗi bài kiểm thử không? Tôi cứ nghĩ là không cần làm vậy đâu.
Như trong ví dụ này, tôi không nghĩ bạn cần viết rõ ràng page.close() ở cuối bài kiểm thử, đúng không?
import { test, expect } from '@playwright/test';
test('Login Test for Orange HRM', async ({ page }) => {
await page.goto('https://opensource-demo.orangehrmlive.com');
await page.getByPlaceholder('Username').fill('Admin');
await page.getByPlaceholder('Password').fill('admin123');
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
await page.getByRole('img', { name: 'profile picture' }).click();
await page.getByText('Logout').click();
await expect(page.getByRole('textbox', { name: 'username' })).toBeVisible();
// page.close(); Có cần ở đây không nhỉ? 🤔
});SinFluxx ✅:
Đúng vậy, trang sẽ tự động đóng mà không cần dòng đó đâu!
NZCarnage 💡:
Nếu bạn dùng nhiều context, bạn có thể muốn loại bỏ trang (dispose of the page) để giải phóng tài nguyên càng sớm càng tốt trong bài kiểm thử, thay vì đợi đến khi kết thúc. Không thực sự cần thiết khi làm việc trong một context duy nhất vì framework bên dưới đã làm việc đó cho bạn rồi.
metoto_hj 🛠️:
Trong hầu hết các trường hợp, bạn không cần làm điều này vì Playwright sẽ tự động đóng trong quá trình tear down. Tuy nhiên, nếu bạn có bước đặc biệt, như lắng nghe sự kiện đóng (close event) rồi làm gì đó sau bài kiểm thử, tôi khuyên bạn nên tự đóng nó trong test hook hoặc bước kiểm thử.
Marijana Rukavina 🙌:
Cảm ơn tất cả các bạn vì đã trả lời! ❤️
Danii 😅:
Xin lỗi vì trả lời muộn nhé!
Tôi có các page fixtures mà sau mỗi lần await use(new HomePage) tôi đều thêm page.close().
Giờ tôi thấy nó dư thừa rồi 😬.
Dòng mã nguồn nào chịu trách nhiệm cho các thao tác này vậy? (Tear down tự động đóng context đúng không?)
