Bài này mình sẽ chia sẽ với các bạn một automation tool được dùng cho React Native. Đó là Detox. Chúng ta cùng bắt đầu nhé
Detox automation là gì?
Detox là End-to-End Automation testing framework được viết bằng ngôn ngữ Javascript dưới dạng API đơn giản, được dành cho các ứng dụng dành cho thiết bị di động trên cả Android và iOS, do Wix, một trong những cộng tác viên hàng đầu từ cộng đồng React Native, phát triển ban đầu.
Việc thiết lập ban đầu hơi phức tạp xíu, nhưng bạn sẽ có trải nghiệm khá thú vị khi làm việc trên Detox để thiết lập các bài kiểm tra bằng Cucumber. Detox cũng có thể được sử dụng với Jest và Mocha, đồng thời cũng có thể được sử dụng với quy trình Tích hợp liên tục (CI) bằng cách sử dụng Travis và TeamCity mà không gặp bất kỳ rắc rối nào.
Detox được xây dựng để tương tác trực tiếp với các lớp NATIVE của thiết bị di động chứ không thông qua WebDriver như trên web. Detox tương tác với native drivers Espresso và EarlGrey bằng cơ chế phản chiếu dựa trên JSON. Điều này cho phép gọi trực tiếp các phương thức NATIVE trên thiết bị.
native drivers Espresso và EarlGrey được viết bởi Google, nó giúp việc viết các bài tests một cách rõ ràng, cung cấp khả năng đồng bộ hóa với ứng dụng và tương tác với ứng dụng đó khi ứng dụng không hoạt động.
- EarlGrey dùng cho iOS
- Espresso dùng cho Android
Ưu điểm khi sử dụng Detox
Detox được xây dựng cho các ứng dụng di động và đặc biệt hỗ trợ rất tốt cho các ứng dụng React Native chạy trên thiết bị di động. Detox được kỳ vọng chạy trực tiếp trong ứng dụng đã kiểm thử trên trình mô phỏng hoặc thiết bị, thay vì tập lệnh thử nghiệm chạy trên node.js.
Kiểm thử đầu cuối (End-to-End) trong ứng dụng mobile như thế nào?
Thử nghiệm đầu cuối (hoặc E2E) trong các ứng dụng dành cho thiết bị di động là một quy trình tương tự như quy trình thử nghiệm E2E với các ứng dụng web.
Quá trình kiểm thử E2E:
- Thiết lập môi trường;
- Tạo một phiên bản giả lập cho thiết bị Android hoặc IOS.
- Cài đặt ứng dụng trên thiết bị/trình giả lập.
- Chạy ứng dụng trên thiết bị/trình giả lập.
- Thực hiện các hành động như nhấp (click), nhập (type), di chuột (hover), v.v. được thực hiện trên các thành phần (elements) bằng cách sử dụng các tham chiếu như nút (button), chế độ xem (view) và trình bao bọc màn hình (screenwrapper).
- Kiểm tra kết quả mong đợi: sử dụng các hàm assert/expect để kiểm tra kết quả bằng cách thực hiện các chức năng tương tự như được mô tả trong bước trên.
Không giống các công cụ E2E như Appium, Detox dựa trên mô hình thử nghiệm GREY-BOX. Nó có nghĩa là người thực hiện kiểm thử có một số kiến thức về hoạt động bên trong của ứng dụng và điều này cho phép khung giám sát ứng dụng từ bên trong và đồng bộ hóa với nó. Thử nghiệm GREY-BOX không chỉ ổn định hơn so với thử nghiệm BLACK-BOX mà còn nhanh hơn nhiều.
Cơ chế hoạt động của detox
Sơ đồ dưới đây cho thấy giao tiếp chung giữa các thành phần trong Detox.

Cài đặt môi trường
Note: hỗ trợ chính thức được cung cấp cho các phiên bản React Native 0.70.x và 0.71.x mà không có “Kiến trúc mới” của React Native.