Screenplay pattern hoạt động như thế nào (phần 1)

Như bài trước mình đã phân tích, cấu trúc của screenplay (trong context UI automation) gồm 3 phần với các mục đich như sau:

  • Ability (khả năng): khởi tạo WebDriver và inject nó vào test case (sẽ viết ở bài khác).
  • Action (hành động): thực hiện các action liên tiếp và action to có thể chứa nhiều action con (nội dung của bài này)
  • Question (kiểm tra thông tin): lấy thông tin từ website và so sánh với kết quả mong đợi. (bài khác).

I. Nguyên lý hoạt động

Screenplay hoạt động dựa trên 1 biến thể của Command pattern. Nó định nghĩa như sau:

  1. Testcase là client code
  2. Actor (class) là Invoker
  3. Task (interface) là Command
  4. Task1,2,3,4,5 …. chính là những action, có thể dùng trực tiếp hoặc lồng vào nhau. Ví dụ: Task 1 là gộp của task 4 và task 5. Task2 có chứa task 5…
Ảnh tự vẽ, ko copy của ai cả

II. Code đơn giản

Minh viết lại code ở mức dễ hiểu hơn rất nhiều so với code thực tế của screenplay để các bạn không bị confused.

Test case

Actor

Task

Task 1

Task 2,3,4

Ở đây mình sử dụng lambda expression vì Task là 1 functional interface.


So sánh với code thực tế của Screenplay

Lưu ý:

  • wasAbleTo() chính là attemptsTo()
  • givenThat(), when(), then() thêm vào để cho dòng code giống như 1 câu văn xuôi, không có tác dụng gì khác.

III. Tổng kết

Như bạn đã thấy, screenplan khác hoàn toàn Page Object Model, nó chỉ còn task, không còn các page nữa. Code thực tế của framework thì còn lằng nhằng hơn rất nhiều vì nó còn có các thứ khác nữa, mình thì không có sức để đọc và viết hết được. =)))

+2
5 2 votes
Article Rating
Subscribe
Notify of
guest


0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments