Timeout Là Gì?
Ở bài viết trước, chúng ta đã cùng nhau tìm hiểu về auto-waiting của playwright, cách nó chờ các thành phần khả dụng, có thể click, v.v.. để tương tác với chúng. Hôm nay, chúng ta sẽ nói về timeout, tức là thời gian playwright sẽ chờ trong các điều kiện nhất định.
Timeout trong Playwright được thiết kế phụ thuộc vào 3 lớp.

Global Timeout
Lớp ngoài cùng là Global timeout, là giới hạn thời gian của toàn bộ lần chạy thử nghiệm. Điều đó có nghĩa là nếu bạn có nhiều bài kiểm tra, giả sử là mười bài kiểm tra trong bộ kiểm tra của mình, thời gian chờ toàn cục là tổng thời gian thực hiện toàn bộ lần chạy thử nghiệm.
Ví dụ, nếu thời gian chờ toàn cục được đặt là hai phút và nếu toàn bộ bộ kiểm tra của bạn chạy lâu hơn hai phút, thì theo mặc định, bài kiểm tra sẽ bị chấm dứt dựa trên thời gian chờ.
Global timeout không được định cấu hình và nếu bạn muốn định cấu hình, bạn hoàn toàn có thể thực hiện việc này.
Bạn có thể set global timeout trong file playwright.config.ts như sau:
export default defineConfig({ globalTimeout: 3_600_000, });
Test Timeout
Lớp tiếp theo là test timeout, là thời gian chờ thử nghiệm, nằm trong thời gian chờ thử nghiệm toàn cục. Test timeout là giới hạn thời gian cho một lần thực hiện bài kiểm tra duy nhất. Giá trị mặc định cho thời gian chờ là 30 giây hoặc 30.000 mili giây và bạn có thể định cấu hình giá trị này cho phù hợp.
// Set in config { use: { actionTimeout: 10_000 } } // Override in test locator.click({ timeout: 10_000 })
Action Timeout, Navigation Timeout, Expected Timeout
Bên trong test timeout có ba thời gian chờ lồng nhau khác là action timeout, navigation timeout và expected timeout.
Action Timeout
Ví dụ, nếu chúng ta lấy lệnh nhấp, lệnh nhấp sẽ đợi phần tử khả dụng, hiển thị, có thể nhấp, v.v. cho đến thời điểm thời gian chờ kiểm tra vì thời gian chờ hành động theo mặc định không được định cấu hình.
Thời gian chờ hành động không thể dài hơn thời gian chờ kiểm tra và thời gian chờ kiểm tra không thể dài hơn thời gian chờ toàn cục. Ví dụ, nếu bạn đặt thời gian chờ hành động là 40 giây nhưng thời gian chờ kiểm tra được định cấu hình là 30 giây, thời gian chờ hành động thực tế sẽ là 30 giây vì nó sẽ bị giới hạn bởi lớp thời gian chờ kiểm tra và theo mặc định thời gian chờ hành động cũng không được định cấu hình.
// Set in config { use: { actionTimeout: 10_000 } } // Override in test locator.click({ timeout: 10_000 })
Navigation Timeout
Navigation Timeout là thời gian mà nhà viết kịch sẽ điều hướng đến trang nhất định và tải trang này. Thời gian chờ này cũng không được định cấu hình theo mặc định và bị giới hạn bởi thời gian chờ kiểm tra.
// Set in config { use: { navigationTimeout: 30_000 } } // Override in test page.goto('/', { timeout: 30_000 })
Expected Timeout
Expected Timeout là giới hạn thời gian cho các khẳng định vị trí mong đợi. Giá trị mặc định là năm giây và chỉ các khẳng định vị trí mới có thời gian chờ vì khẳng định chung hoặc khẳng định chung kh1ông có thời gian chờ và chúng không chờ đợi bất cứ điều gì.
// Set in config expect: { timeout: 10_000, }, // Override in test await expect(locator).toHaveText('hello', { timeout: 10_000 });
Mình xin kết thúc bài viết hôm nay tại đây. Hẹn gặp lại các bạn trong bài viết tiếp theo.
Happy testing!