CYBERSOFT
Đăng nhập

Playwright Component Testing cho Tester: test UI cô lập nhanh hơn E2E (có trắc nghiệm)

Chuyên công nghệTMĐTPlaywrightNâng caoChuẩn SEO
🗓 1 tháng trước19 phút đọc·👁 1,062 lượt xem👤 89 người đọc

Bài chuyên công nghệ: Playwright Component Testing (CT) qua app TMĐT ShopEasy. Khác biệt với E2E, cách cài đặt & cấu hình, viết test đầu tiên cho ProductCard, 2 tình huống thực tế (E2E chậm/flaky, bug ẩn trong state hiếm), chiến lược chọn CT/E2E, lỗi hay gặp, nhiều mockup giao diện, FAQ và trắc nghiệm 5 câu. Chuẩn SEO, dẫn về khóa Tester CyberSoft.

1. Tóm tắt nhanh & Playwright Component Testing là gì

⭐ TL;DR — Playwright Component Testing (CT) cho phép bạn mount (dựng lên) một component UI cô lập trong trình duyệt thật rồi test riêng nó — không cần chạy cả app, server hay database. Kết quả: test nhanh hơn E2E hàng chục lần, ổn định hơn, và giúp bạn bắt lỗi hiển thị/props/state ngay khi component vừa được viết. Bài này bám app TMĐT ShopEasy: bạn sẽ test component ProductCard và MiniCartWidget, có mockup, tình huống thực tế và trắc nghiệm cuối bài.

Chào bạn! Khi mới làm quen với automation, bạn thường học Playwright qua các test E2E: mở trình duyệt, vào trang, điền form, bấm nút. Cách đó rất trực quan nhưng có một vấn đề: mỗi test phải tải cả một trang web, đôi khi cả một luồng nhiều bước, nên chạy chậm và dễ 'flaky' (lúc pass lúc fail) vì phụ thuộc mạng, tốc độ server. Component Testing giải quyết đúng vấn đề đó cho một nhóm test rất lớn: các test chỉ liên quan tới MỘT component UI, không cần cả hệ thống.

🔒 localhost:3100/__ct/ProductCard.spec.tsx Playwright CT · Isolated ShopEasy · Component Test: ProductCard (mount cô lập, không cần server thật) Props truyền vào: name Tai nghe Bluetooth X200Props truyền vào: price 590.000 ₫Props truyền vào: inStock falseKết quả assert 2/2 assertions passed▶ Chạy lại (mount) render component < 60ms, không gọi API thật
Màn hình test: mount component ProductCard cô lập, không cần server thật
📖 Component Testing (CT): kỹ thuật test mount (dựng lên) một component UI đơn lẻ trong trình duyệt thật, truyền props/callback giả lập, rồi kiểm tra kết quả hiển thị và hành vi — không chạy toàn bộ ứng dụng.

2. Component Testing khác gì E2E Testing

Hãy nghĩ về kim tự tháp kiểm thử: dưới cùng là Unit Test (test một hàm thuần, không có UI), ở giữa là Component Test (test một component UI cô lập), trên cùng là E2E Test (test cả một luồng qua trình duyệt thật, có server/API thật). Càng lên cao, test càng 'thật' hơn nhưng cũng càng chậm và tốn công bảo trì hơn.

Unit → Component → E2E: mỗi tầng test một phạm vi khác nhau thêm UI thật (render + sự kiện) thêm mạng, DB, trình duyệt thậtUnit Test~5 ms/test · logic thuầnComponent Test (CT)~40–150 ms/test · UI cô lậpE2E Test~2–8 s/test · cả hệ thống thật
Kim tự tháp: Unit Test → Component Test → E2E Test, mỗi tầng một phạm vi và tốc độ khác nhau
So sánh Component Testing (CT) và E2E Testing Tiêu chíComponent TestingE2E TestingPhạm vi kiểm tra1 component UI cô lậpToàn bộ luồng qua trình duyệt thậtTốc độ mỗi test~40–150 ms~2–8 giâyCần server/API thật?Không — mock props/callbackCó, hoặc mock networkBắt lỗi tốt nhất ởLogic hiển thị, props, state, sự kiệnLuồng nghiệp vụ & tích hợp thậtĐộ ổn định (ít flaky)Rất caoDễ flaky hơn (mạng, thời gian tải)Chạy khi nàoMỗi lần sửa component, ngay trong PRTrước khi release, luồng quan trọng
Bảng so sánh nhanh: Component Testing và E2E Testing khác nhau ở đâu

Điểm mấu chốt: CT KHÔNG thay thế E2E, mà lấp đúng khoảng trống mà Unit Test không với tới (vì Unit Test không đụng DOM) và E2E làm quá chậm để chạy thường xuyên (vì phải tải cả trang). Một dự án khỏe mạnh thường có rất nhiều Unit Test, khá nhiều Component Test, và một số ít E2E Test cho các luồng quan trọng nhất.

3. Vì sao Tester nên biết Playwright CT

Ngày càng nhiều đội frontend tách UI thành các component nhỏ, tái sử dụng (nút, thẻ sản phẩm, giỏ hàng mini…). Nếu chỉ test qua E2E, bạn phải đi qua nhiều màn hình chỉ để chạm được một component sâu bên trong — vừa chậm vừa khó tạo ra những trạng thái hiếm (như 'hết hàng', 'lỗi mạng', 'vượt tồn kho'). CT cho bạn quyền truy cập trực tiếp: truyền thẳng props để tạo ra bất kỳ trạng thái nào bạn muốn, ngay lập tức.

Với Tester automation, biết CT nghĩa là bạn có thêm một công cụ đúng việc: khi cần kiểm tra kỹ một component (nhiều biến thể props, nhiều trạng thái), CT nhanh gấp chục lần và cho phản hồi ngay trong Pull Request — trước khi code được merge. Đây cũng là kỹ năng ngày càng được các công ty làm sản phẩm (SaaS, TMĐT) hỏi trong phỏng vấn vị trí SDET/Automation Tester.

4. Chuẩn bị: cài đặt & cấu hình Playwright CT

Playwright CT là gói riêng, không dùng chung file cấu hình với E2E. Với dự án React, bạn cần cài @playwright/experimental-ct-react và tạo một file cấu hình CT riêng.

▶ Bước 1: Cài gói CT cho React: npm install -D @playwright/experimental-ct-react.

▶ Bước 2: Tạo file playwright-ct.config.ts, chỉ định testDir trỏ tới thư mục chứa các file *.spec.tsx của component.

▶ Bước 3: Chạy thử: npx playwright test -c playwright-ct.config.ts để xác nhận môi trường mount hoạt động.

🔒

Nội dung bị khoá

Bạn đang xem bản xem trước. Đăng nhập để mở khoá toàn bộ bài viết và tất cả tài liệu Tester/QA.

Đã xem 24% nội dung
  • Đọc trọn vẹn mọi bài viết
  • Lưu bài & ghi chú cá nhân
  • Theo dõi tiến độ đã đọc
  • Luyện phỏng vấn, ISTQB, Mock
Đăng nhập để đọc tiếp

Chưa có mã? Lấy mã qua Fanpage / Zalo CyberSoft.

0

💬 Bình luận (0)

Bạn có thể đọc mọi bình luận. Đăng nhập để bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!