Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 1
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev

Web

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TC01-WEBĐăng nhập Desktop Bỏ trống số điện thoại/email và mật khẩu rồi bấm Đăng nhập. Form chặn gửi và yêu cầu nhập thông tin bắt buộc. Trình duyệt hiển thị cảnh báo bắt buộc nhập cho các trường bắt buộc. Pass TC01-WEB
TC02-WEBĐăng nhập Desktop Nhập số điện thoại sai định dạng: 12345. Hiển thị lỗi số điện thoại/email không hợp lệ. Không có thông báo lỗi rõ ràng, form giữ nguyên. Warning TC02-WEB
TC03-WEBĐăng nhập Desktop Nhập số điện thoại nhưng bỏ trống mật khẩu. Form chặn gửi và yêu cầu nhập mật khẩu. Trình duyệt hiển thị cảnh báo bắt buộc nhập cho trường mật khẩu. Pass TC03-WEB
TC04-WEBĐăng nhập Desktop Nhập số điện thoại với mật khẩu sai. Hiển thị lỗi đăng nhập thất bại hoặc mật khẩu không đúng. Hiển thị đúng lỗi “Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại.” ngay phía trên form. Pass TC04-WEB
TC05-WEBĐăng ký Desktop Đăng ký tài khoản bằng số điện thoại. Captcha hoạt động và cho phép tiếp tục đăng ký. Cloudflare captcha lỗi/kẹt, nút Đăng ký bị vô hiệu hóa nên không tạo được tài khoản. Fail TC05-WEB
TC06-WEBQuên mật khẩu Desktop Bấm liên kết “Quên mật khẩu?” từ màn đăng nhập. Mở đúng màn hình quên mật khẩu. Mở đúng đường dẫn /quen-mat-khau, hiển thị form nhập email hoặc số điện thoại. Pass TC06-WEB
TC07-WEBQuên mật khẩu Desktop Bỏ trống email/số điện thoại. Form chặn gửi và yêu cầu nhập thông tin bắt buộc. Trường có cảnh báo bắt buộc nhập, nút “Gửi mã OTP” đang bị vô hiệu hóa. Pass TC07-WEB
TC08-WEBQuên mật khẩu Desktop Nhập sai định dạng: 12345. Hiển thị lỗi email/số điện thoại không hợp lệ. Hiển thị lỗi “Vui lòng nhập email hợp lệ hoặc số điện thoại hợp lệ”. Warning TC08-WEB
TC09-WEBQuên mật khẩu Desktop Gửi mã OTP với email/số điện thoại hợp lệ. Captcha/Turnstile hoạt động và nút “Gửi mã OTP” khả dụng. Xác thực Cloudflare không hoàn tất, nút “Gửi mã OTP” bị vô hiệu hóa nên không đặt lại được mật khẩu. Fail TC09-WEB
TC10-WEBTìm kiếm Desktop Gõ từ khóa laptop vào thanh công cụ tìm kiếm trên header rồi nhấn tìm. Hiển thị danh sách sản phẩm khớp từ khóa (cửa hàng có bán laptop). Ô tìm kiếm có phản hồi: hiện dropdown “Không tìm thấy sản phẩm với laptop”, kèm gợi ý thử từ khóa khác và link “Xem tất cả kết quả”. Nhưng không trả về sản phẩm nào. Fail TC10-WEB
TC11-WEBTìm kiếm Desktop Gõ từ khóa acer vào thanh công cụ tìm kiếm trên header rồi nhấn tìm. Hiển thị kết quả, gợi ý, hoặc thông báo không tìm thấy. Không chuyển trang, không hiện kết quả, không hiện thông báo “không có kết quả”. Fail TC11-WEB
TC12-WEBTìm kiếm Desktop Gõ từ khóa chuot vào thanh công cụ tìm kiếm trên header rồi nhấn tìm. Hiển thị kết quả, gợi ý, hoặc thông báo không tìm thấy. Không chuyển trang, không hiện kết quả, không hiện thông báo “không có kết quả”. Fail TC12-WEB
TC13-WEBĐặt hàng không đăng nhập Desktop Mở trang chi tiết sản phẩm. Trang sản phẩm hiển thị đủ thông tin, giá và nút mua/thêm giỏ. Trang sản phẩm hiển thị đúng, có nút “Thêm vào giỏ hàng”. Pass TC13-WEB
TC14-WEBĐặt hàng không đăng nhập Desktop Thêm sản phẩm vào giỏ hàng. Sản phẩm được thêm vào giỏ, hiển thị số lượng và tổng tiền. Giỏ hàng hiển thị sản phẩm, giá 4.890.000đ, số lượng 1 và quà tặng kèm. Pass TC14-WEB
TC15-WEBĐặt hàng không đăng nhập Desktop Kiểm tra chi tiết thanh toán trong giỏ hàng. Tổng tiền, giảm giá, phí vận chuyển và tổng thanh toán hiển thị rõ. Chi tiết thanh toán hiển thị: tổng giá, giảm giá, tạm tính, phí vận chuyển, tổng thanh toán. Pass TC15-WEB
TC16-WEBĐặt hàng không đăng nhập Desktop Bấm “Tiếp theo” từ giỏ hàng. Chuyển sang bước thông tin giao hàng cho khách chưa đăng nhập. Chuyển sang /gio-hang?step=shipping, hiển thị form họ tên, số điện thoại, email, địa chỉ, vận chuyển và COD. Pass TC16-WEB
TC17-WEBĐặt hàng không đăng nhập Desktop Bỏ trống thông tin giao hàng rồi bấm “Tiếp theo”. Hệ thống chặn đi tiếp và hiển thị lỗi bắt buộc nhập thông tin. Hệ thống chặn đi tiếp và hiển thị lỗi “Vui lòng nhập họ và tên.” Pass TC17-WEB
TC18-WEBĐặt hàng không đăng nhập Desktop Bỏ trống tất cả trường bắt buộc ở bước giao hàng rồi bấm “Tiếp theo”. Hệ thống chặn đi tiếp và báo lỗi trường bắt buộc. Không chuyển sang bước xác nhận đơn hàng, hiển thị lỗi “Vui lòng nhập họ và tên.” Pass TC18-WEB
TC19-WEBĐặt hàng không đăng nhập Desktop Chỉ nhập họ tên, bỏ trống số điện thoại và địa chỉ. Hệ thống chặn đi tiếp và yêu cầu nhập số điện thoại. Không chuyển bước, hiển thị lỗi “Vui lòng nhập số điện thoại.” Pass TC19-WEB
TC20-WEBĐặt hàng không đăng nhập Desktop Nhập số điện thoại 12345 và email abc sai định dạng. Hệ thống báo lỗi định dạng số điện thoại/email. Không báo lỗi định dạng số điện thoại/email; hệ thống chỉ báo “Vui lòng chọn phường/xã, tỉnh/thành.” Warning TC20-WEB
TC21-WEBĐặt hàng không đăng nhập Desktop Chọn “Giao hàng tận nơi”, nhập họ tên/số điện thoại/email hợp lệ nhưng bỏ trống địa chỉ. Hệ thống chặn đi tiếp và yêu cầu chọn địa chỉ giao hàng. Không chuyển bước, hiển thị lỗi “Vui lòng chọn phường/xã, tỉnh/thành.” Pass TC21-WEB
TC22-WEBĐặt hàng không đăng nhập Desktop Chọn “Nhận tại cửa hàng”, nhập thông tin cơ bản rồi bấm “Tiếp theo”. Form chuyển sang nhận tại cửa hàng và yêu cầu chọn cửa hàng nhận. Form chuyển đúng sang “Nhận tại cửa hàng”, hiển thị danh sách “Chọn cửa hàng”, không còn báo lỗi phường/xã, tỉnh/thành. Pass TC22-WEB
TC23-WEBĐặt hàng không đăng nhập Desktop Đặt đơn thật bằng dữ liệu ảo: Nguyễn Thị Lân 1, 0901234567, nhận tại cửa hàng. Sau khi bấm “Đặt mua hàng”, hệ thống chuyển sang trang đặt hàng thành công và sinh mã đơn. Đặt hàng thành công, mã đơn GVN-HH6TNS, trạng thái “Chờ CSKH xác nhận”, COD, tổng 4.890.000đ. Pass TC23-WEB
TC24-WEBĐặt hàng không đăng nhập Desktop Nhập thông tin người đặt rồi đổi từ “Giao hàng tận nơi” sang “Nhận tại cửa hàng”. Form chỉ đổi phần địa chỉ/cửa hàng, thông tin tên/số điện thoại/email vẫn được giữ. Thông tin tên/số điện thoại/email bị xóa trắng sau khi đổi hình thức nhận hàng, phải nhập lại mới đặt tiếp được. Fail TC24-WEB
TC25-WEBĐặt hàng không đăng nhập Desktop Nhận tại cửa hàng với số điện thoại chỉ có 9 số: 090123452. Hệ thống chặn vì số điện thoại chưa đủ 10 số. Vẫn tạo được đơn GVN-V4USMA dù số điện thoại chưa đủ 10 số. Warning TC25-WEB
TC26-WEBĐặt hàng không đăng nhập Desktop Khách chọn cửa hàng nhận khác. Tạo đơn thành công với cửa hàng đã chọn. Tạo đơn thành công, mã đơn GVN-1RV822. Pass TC26-WEB
TC27-WEBĐặt hàng không đăng nhập Desktop Bấm “Tiếp theo” khi bỏ trống form giao hàng. Hệ thống chặn và báo lỗi trường bắt buộc. Hệ thống chặn và báo “Vui lòng nhập họ và tên.” Pass TC27-WEB
TC28-WEBĐặt hàng không đăng nhập Desktop Nhập số điện thoại 12345 và email abc. Hệ thống chặn vì sai định dạng số điện thoại và email. Vẫn cho sang bước xác nhận đơn dù cả hai trường sai định dạng. Warning TC28-WEB
TC29-WEBĐặt hàng không đăng nhập Desktop Nhập thông tin rồi đổi sang nhận tại cửa hàng. Dữ liệu đã nhập được giữ lại sau khi đổi hình thức. Lần kiểm thử này dữ liệu vẫn được giữ lại sau khi đổi hình thức. Pass TC29-WEB
TC30-WEBĐặt hàng không đăng nhập Desktop Không nhập email, chỉ nhập tên và số điện thoại. Email không bắt buộc, vẫn tạo được đơn. Tạo đơn thành công, mã đơn GVN-28685M. Pass TC30-WEB
TC31-WEBĐặt hàng không đăng nhập Desktop Tên tiếng Việt có dấu và ghi chú bình thường. Tạo đơn thành công, hiển thị đúng tên có dấu. Tạo đơn thành công, mã đơn GVN-OXMA2M. Pass TC31-WEB
TC32-WEBĐặt hàng không đăng nhập Desktop Chọn nhận tại cửa hàng nhưng không chọn cửa hàng. Hệ thống chặn, yêu cầu chọn cửa hàng nhận. Hệ thống không cho sang bước xác nhận khi thiếu cửa hàng. Pass TC32-WEB
TC33-WEBĐặt hàng không đăng nhập Desktop Nhập form, bấm Quay lại giỏ hàng, rồi quay lại bước giao hàng. Dữ liệu đã nhập được giữ lại khi quay lại form. Toàn bộ thông tin đã nhập bị mất, phải nhập lại từ đầu. Fail TC33-WEB
TC34-WEBĐặt hàng không đăng nhập Desktop Nhập số điện thoại có khoảng trắng giữa số: 090 123 45 13. Hệ thống chặn vì số điện thoại không hợp lệ. Vẫn tạo được đơn GVN-NEZ73F dù số điện thoại có khoảng trắng. Warning TC34-WEB
TC35-WEBĐặt hàng không đăng nhập Desktop Khách bình thường tạo đơn cuối cùng với dữ liệu hợp lệ. Tạo đơn thành công. Tạo đơn thành công, mã đơn GVN-8KQ3ZI. Pass TC35-WEB
TC36-WEBĐặt hàng — Giao hàng tận nơi Desktop Nhập Nguyễn Thị Lân 12, số điện thoại 546, email bỏ trống, địa chỉ 123, Phường Hà Giang 1, Tỉnh Tuyên Quang, vận chuyển tiêu chuẩn, COD. Hệ thống chặn số điện thoại sai định dạng; nếu hợp lệ thì tính được phí vận chuyển và tạo đơn. Hiển thị lỗi đỏ shipping: rule not found ở cuối trang và không tạo được đơn. Số điện thoại 546 cũng không bị chặn ở bước nhập liệu. Fail TC36-WEB
TC37-WEBGiao diện — Header / Danh mục Desktop Cuộn xuống giữa trang rồi bấm nút “Danh mục”. Ở bất kỳ vị trí cuộn nào, bấm “Danh mục” phải mở panel trắng danh mục như lúc ở đầu trang. Ở đầu trang panel trắng hiện đúng; sau khi cuộn xuống, bấm “Danh mục” chỉ thấy nền xám phủ, không thấy panel trắng. Fail TC37-WEB
TC38-WEBGiao diện — Ô tìm kiếm header Desktop Gõ từ khóa vào ô tìm kiếm trên header và nhấn tìm. Ô tìm kiếm trả kết quả hoặc phản hồi rõ ràng. Ô tìm kiếm không trả kết quả và không có phản hồi nào với laptop, acer, chuot. Fail TC38-WEB
TC39-WEBGiao diện — Trang chủ Desktop Mở / trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang chủ hiển thị được trên desktop, không có ảnh lỗi. Pass TC39-WEB
TC40-WEBGiao diện — Trang chủ Mobile Mở / trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang chủ hiển thị được trên mobile, không có ảnh lỗi. Pass TC40-WEB
TC41-WEBGiao diện — Danh mục sản phẩm Desktop Mở /collections/ban-phim-may-tinh trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Danh sách sản phẩm hiển thị được trên desktop. Pass TC41-WEB
TC42-WEBGiao diện — Danh mục sản phẩm Mobile Mở /collections/ban-phim-may-tinh trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Danh sách sản phẩm hiển thị được trên mobile. Pass TC42-WEB
TC43-WEBGiao diện — Chi tiết sản phẩm Desktop Mở /products/ban-phim-gaming-logitech-g512-x-75-tmr-8k-black trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang chi tiết sản phẩm hiển thị được trên desktop. Pass TC43-WEB
TC44-WEBGiao diện — Chi tiết sản phẩm Mobile Mở /products/ban-phim-gaming-logitech-g512-x-75-tmr-8k-black trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang chi tiết sản phẩm hiển thị được trên mobile. Pass TC44-WEB
TC45-WEBGiao diện — Giỏ hàng Desktop Mở /gio-hang trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Giỏ hàng mở được trên desktop. Pass TC45-WEB
TC46-WEBGiao diện — Giỏ hàng Mobile Mở /gio-hang trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Giỏ hàng mở được trên mobile. Pass TC46-WEB
TC47-WEBGiao diện — Đăng nhập Desktop Mở /dang-nhap trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Form đăng nhập hiển thị được trên desktop. Pass TC47-WEB
TC48-WEBGiao diện — Đăng nhập Mobile Mở /dang-nhap trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Form đăng nhập hiển thị được trên mobile. Pass TC48-WEB
TC49-WEBGiao diện — Đăng ký Desktop Mở /dang-ky trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Form đăng ký hiển thị được trên desktop; riêng lỗi captcha ghi tại TC05-WEB. Pass TC49-WEB
TC50-WEBGiao diện — Đăng ký Mobile Mở /dang-ky trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Form đăng ký hiển thị được trên mobile; riêng lỗi captcha ghi tại TC05-WEB. Pass TC50-WEB
TC51-WEBGiao diện — Quên mật khẩu Desktop Mở /quen-mat-khau trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Form quên mật khẩu hiển thị được trên desktop; riêng lỗi không gửi được OTP ghi tại TC09-WEB. Pass TC51-WEB
TC52-WEBGiao diện — Quên mật khẩu Mobile Mở /quen-mat-khau trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Form quên mật khẩu hiển thị được trên mobile; riêng lỗi không gửi được OTP ghi tại TC09-WEB. Pass TC52-WEB
TC53-WEBGiao diện — Cửa hàng Desktop Mở /cua-hang trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang hệ thống cửa hàng hiển thị được trên desktop. Pass TC53-WEB
TC54-WEBGiao diện — Cửa hàng Mobile Mở /cua-hang trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang hệ thống cửa hàng hiển thị được trên mobile. Pass TC54-WEB
TC55-WEBGiao diện — Tin tức Desktop Mở /tin-tuc trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang tin tức hiển thị được trên desktop. Pass TC55-WEB
TC56-WEBGiao diện — Tin tức Mobile Mở /tin-tuc trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang tin tức hiển thị được trên mobile. Pass TC56-WEB
TC57-WEBGiao diện — Bảo hành Desktop Mở /bao-hanh trên desktop 1365×900. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang tra cứu bảo hành hiển thị được trên desktop. Pass TC57-WEB
TC58-WEBGiao diện — Bảo hành Mobile Mở /bao-hanh trên mobile 390×844. Trang hiển thị đầy đủ, không trắng trang, không ảnh lỗi, không tràn ngang bố cục. Trang tra cứu bảo hành hiển thị được trên mobile. Pass TC58-WEB
TC59-WEBĐặt hàng (đã đăng nhập) Desktop Đăng nhập tài khoản 0919556994 (Lê Hoài); thêm bàn phím Logitech G512 X 75 vào giỏ; chọn “Nhận tại cửa hàng” (SHR Hoàng Hoa Thám); người đặt Nguyễn Thị Lân, số điện thoại 0901234567, thanh toán COD; bấm “Đặt mua hàng”. Tạo đơn thành công, chuyển sang trang cảm ơn kèm mã đơn và trạng thái đơn. Đặt hàng thành công, mã đơn GVN-UVBIFO, trạng thái “Chờ CSKH xác nhận”, thanh toán COD, tổng 4.890.000đ. Pass TC59-WEB
TC60-ADĐồng bộ Web → OPS (E2E) Desktop Đặt đơn trên Web (GVN-83ICIK — Nguyễn Thị Lân, 0987656789, 3 SP chuột, COD, nhận tại cửa hàng), rồi kiểm tra đơn có đồng bộ đầy đủ sang OPS không (danh sách đơn hàng · danh sách giỏ · mirror GSales). Đơn Web đồng bộ đầy đủ sang OPS: hiện ở danh sách đơn hàng, danh sách giỏ, và mirror sang GSales/Mongo thành công. Đơn lên OPS (danh sách đơn hàng) và đồng bộ NhanhVN/kho OK; nhưng: (a) danh sách giỏ không cập nhật đơn mới; (b) mirror ERP → GSales/Mongo thất bại 4 lần với lỗi mongo update orders: reserved _id not found or belongs to another ERP order (đơn confirmed nhưng không lên GSales). Ngoài ra đồng bộ Web→OPS không realtime, trễ theo mẻ. Fail TC60-AD
TC61-ADĐơn bán (Staff Portal) — Thanh toán Desktop Tạo đơn bán trên Staff Portal (kho Hoàng Hoa Thám); khách (Thanh Nguyễn) Bát Giới, số điện thoại 0975857751; sản phẩm Bộ Bàn Phím và Chuột Logitech MK240 Wireless (499.000đ); giao Tiêu chuẩn; chọn phương thức thanh toán Chuyển khoản. Chỉ hiện các phương thức thanh toán đã bật/cấu hình; chọn được và tạo đơn bình thường. Chọn “Chuyển khoản” thì hiện lỗi đỏ payment method is disabled or not configured — phương thức này chưa được bật/cấu hình cho kênh Staff Portal. Giao diện vẫn cho chọn phương thức chưa cấu hình nên gây hiểu nhầm. (Bản chất là vấn đề cấu hình + UX, không phải lỗi logic code; cần bật/cấu hình phương thức trong Cấu hình đơn bán, và UI nên ẩn/khoá phương thức chưa cấu hình.) Warning TC61-AD
Không có dòng nào khớp bộ lọc.

Kết luận

Website mua hàng chạy được: khách không cần đăng nhập vẫn đặt hàng thành công. Đợt này đã tạo thật 7 đơn bằng dữ liệu ảo (GVN-HH6TNS, GVN-V4USMA, GVN-1RV822, GVN-28685M, GVN-OXMA2M, GVN-NEZ73F, GVN-8KQ3ZI). Tuy nhiên còn 6 nhóm lỗi ảnh hưởng người dùng, trong đó 4 nhóm đầu chặn hẳn khách:

  1. Không đăng ký được tài khoản. Ô captcha bị kẹt nên nút Đăng ký luôn mờ, khách mới không tạo được tài khoản.
  2. Không lấy lại được mật khẩu. Nút “Gửi mã OTP” luôn bị khóa, khách quên mật khẩu không có cách nào vào lại.
  3. Tìm kiếm không ra sản phẩm nào. Gõ “laptop” — mặt hàng chủ lực của cửa hàng — hệ thống vẫn báo “Không tìm thấy sản phẩm với laptop”. Khách không mua được qua ô tìm kiếm.
  4. Không giao hàng tận nơi được. Địa chỉ ở tỉnh sau sáp nhập báo lỗi shipping: rule not found và không tạo được đơn.
  5. Đặt hàng còn lỏng. Vẫn cho đặt với số điện thoại sai (9 số, hoặc có khoảng trắng); bấm quay lại giỏ hàng thì mất hết thông tin đã nhập.
  6. Menu “Danh mục” không mở được sau khi cuộn trang xuống — chỉ thấy lớp phủ xám, không thấy panel danh mục.

Đề nghị sửa 4 nhóm đầu trước vì đang chặn khách hàng thật không mua được hàng.

Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 2
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev

Kết quả kiểm thử — Phase 2

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TC62-WEBĐăng nhậpDesktop Đăng nhập bằng số điện thoại không tồn tại 0900000001 với mật khẩu bất kỳ. Báo lỗi chung, không tiết lộ tài khoản có tồn tại hay không. Hiển thị “Tài khoản hoặc mật khẩu không đúng” — giống hệt thông báo khi sai mật khẩu, nên không lộ sự tồn tại của tài khoản. Pass TC62-WEB
TC63-WEBPhân quyền routeDesktop Khi chưa đăng nhập, mở trực tiếp /tai-khoan. Bị chuyển hướng về trang đăng nhập. Chuyển đúng về /dang-nhap, hiển thị form đăng nhập. Pass TC63-WEB
TC64-WEBĐăng xuấtDesktop Bấm “Đăng xuất” trong /tai-khoan. Phiên bị huỷ, không gọi được API cần đăng nhập. Chuyển về /; GET /api/miniapp/membership trả 401. Pass TC64-WEB
TC66-WEBGiỏ hàng — xoáDesktop Bấm “Xóa sản phẩm” cho sản phẩm cuối cùng trong giỏ. Giỏ về trạng thái trống. Hiển thị “Giỏ hàng trống”, badge giỏ về rỗng. Pass TC66-WEB
TC67-WEBGiỏ hàng — bền vữngDesktop Thêm sản phẩm rồi tải lại trang /gio-hang. Giỏ hàng giữ nguyên sau khi tải lại. Giữ nguyên sản phẩm và tổng tiền (lưu qua cookie gearvn_cart_token). Pass TC67-WEB
TC68-WEBTra cứu SKUDesktop POST /api/cart/items với SKU LAP-ACER-ASPIRE-7-A715-59G-59RD. Trả về đúng sản phẩm tương ứng với SKU. 201 — “Laptop gaming Acer Aspire 7 A715-59G-59RD (Core 5-210H/ RTX 3050 4GB/ 16GB/ 512GB/ 15.6" FHD/ Win 11)”, giá 25.990.000đ. Đối chứng bằng SKU …-78WG cũng ra đúng máy. Pass TC68-WEB
TC69-WEBĐặt hàng (đã đăng nhập)Desktop Đặt 5 đơn liên tiếp, mỗi đơn 1 sản phẩm Logitech, nhận tại cửa hàng, COD, dữ liệu ảo Nguyễn Thị Lân. Cả 5 đơn tạo thành công và có mã đơn. Tạo thành công 5/5: GVN-A28B3I, GVN-NXB495, GVN-TB8SZX, GVN-67F0OG, GVN-ZDJXDD. Tổng tiền và cửa hàng nhận đúng từng đơn. Pass TC69-WEB
TC71-ADOPS — Đối chiếu đơnDesktop Kiểm tra 5 mã đơn vừa tạo có xuất hiện ở /sales/orders/cart không. Cả 5 mã đều tồn tại ở hai trang. 5/5 có ở /sales/orders (đúng sản phẩm, giá, kênh “Online (Website)”, COD, nhận tại cửa hàng). 5/5 giỏ tương ứng có ở /cart với trạng thái “Đã tạo đơn”. Pass TC71-AD
TC72-ADOPS — Yêu cầu hủy đơnDesktop Trên đơn GVN-IEH7KC: menu Thêm → “Yêu cầu hủy” → lý do “Tạo nhầm / sai thông tin đơn”. Hệ thống ghi nhận yêu cầu hủy. Nhật ký ghi “Yêu cầu hủy đơn: Tạo nhầm / sai thông tin đơn”; nút “Xác nhận đơn” biến mất, “Hủy đơn” nổi lên thành nút chính. Pass TC72-AD
TC73-ADOPS — Hủy đơnDesktop Bấm “Hủy đơn” trên GVN-IEH7KC, chọn lý do, xác nhận hủy. Đơn chuyển sang trạng thái “Đã hủy”. Badge đổi thành “Đã huỷ”; danh sách đơn cũng hiển thị “Đã huỷ”. Nhật ký ghi “Đơn hàng đã hủy”. Pass TC73-AD
TC74-WEBĐơn hàng của tôiDesktop Sau khi đặt đơn GVN-IEH7KC, mở /tai-khoan/don-hang. Thấy đơn vừa đặt trong danh sách đơn của tài khoản. Không thấy đơn. Vẫn chỉ 6 đơn cũ, mới nhất 22/08/2023. GET /api/miniapp/orders không chứa mã đơn mới, trong khi OPS đã có đủ đơn. Fail TC74-WEB
TC83-ADOPS — Xử lý kho / Thêm IMEIDesktop Trên đơn GVN-67F0OG (Kho Hoàng Hoa Thám v.2): Xử lý kho → “Thêm IMEI” → nhập IMEI 2306LZX85YH9 → bấm “Thêm”. Hệ thống kiểm tra IMEI trên Cổng xử lý kho và cho phép thêm vào phiếu. Lỗi đỏ: “Không kiểm tra được IMEI 2306LZX85YH9 trên Cổng xử lý kho: nhanhvn api: nhanhvn depot 132646 not mapped to internal depot. Việc kiểm IMEI không chạy được — lỗi xảy ra trước khi hệ thống đọc tới giá trị IMEI, nên nhập IMEI nào cũng hỏng. Đối chiếu inventory/provider-stock/snapshots: 16 depot NhanhVN đã ánh xạ (Kho HHT v.2 → 62880), không có 132646. Nút “Hoàn tất phiếu (F6)” bị vô hiệu hoá nên không xuất kho được. Fail TC83-AD
TC86-ADOPS — Dialog hủy đơnDesktop Mở dialog “Hủy đơn” và “Yêu cầu hủy”, chưa chọn lý do nào. Nút gửi bị vô hiệu hoá cho tới khi chọn lý do. Nút “Xác nhận hủy” / “Gửi yêu cầu hủy” không bị disable khi chưa chọn lý do. (Chưa bấm thử để tránh tạo yêu cầu hủy không có lý do.) Warning TC86-AD
TC87-ADOPS — Đồng bộ GSales (lỗi hệ thống, nhiều đơn)Desktop Nhiều đơn IMEI đi hết luồng vận hành (xác nhận → xử lý kho/xuất kho → thanh toán COD). Quan sát đồng bộ GSales và đồng bộ NhanhVN/kho ở từng mốc. Tái hiện trên GVN-6OZYTNGVN-TH56VC. Đơn được đồng bộ sang GSales/Mongo tại mỗi mốc; cả hai nhánh (GSales và NhanhVN) đều thành công. Lỗi hệ thống, tái hiện trên nhiều đơn. Đơn đã “Đã xuất kho” + “Đã thanh toán” nhưng nhật ký ghi “Đồng bộ GSales lỗi” lặp nhiều lần — error mongo update orders: reserved _id not found or belongs to another ERP order (12 lần ở GVN-6OZYTN). Bằng chứng chỉ đích danh nhánh hỏng: trên GVN-TH56VC, đồng bộ NhanhVN/kho THÀNH CÔNG (“Đã đồng bộ”, “Đồng bộ kho xong”) trong khi GSales/Mongo vẫn lỗi → chỉ nhánh GSales/Mongo hỏng, không phải nhánh provider. Đơn đã xuất kho + thu tiền thật nhưng GSales không có bản ghi → lệch tồn kho và doanh thu giữa hai hệ. Fail TC87-AD (GVN-6OZYTN)TC87-AD (GVN-TH56VC: NhanhVN OK, GSales lỗi)
TC88-WEBĐăng nhập — Hiện/ẩn mật khẩuDesktop Nhập mật khẩu ở màn đăng nhập rồi bấm nút con mắt “Hiện mật khẩu”. Mật khẩu chuyển từ dạng ẩn (chấm) sang hiển thị rõ, và ngược lại. Bấm nút → ô mật khẩu đổi type từ password sang text, hiển thị mật khẩu rõ. Nút hoạt động đúng. Pass TC88-WEB
TC89-WEBĐăng nhập — Email sai định dạngDesktop Nhập email sai định dạng vào ô đăng nhập (abc@, a@b, @x.com, a b@c.com) kèm mật khẩu bất kỳ rồi bấm Đăng nhập. Hệ thống chặn, báo lỗi định dạng / thông tin không hợp lệ. Cả 4 định dạng đều bị chặn, ở lại /dang-nhap với thông báo “Vui lòng kiểm tra lại.” (Chặt hơn so với ô SĐT — 12345 ở Phase 1 TC02 không báo lỗi rõ.) Pass TC89-WEB
TC90-WEBĐăng nhập — Bằng emailDesktop Nhập email đúng định dạng (lehoaitest@example.com) + mật khẩu vào ô “SĐT hoặc email” rồi Đăng nhập. Form chấp nhận email và xử lý đăng nhập bằng email. Form nhận định dạng email (không chặn), gửi đi và trả về “Tài khoản hoặc mật khẩu không đúng”. Chưa xác nhận được đăng nhập-bằng-email thành công vì tài khoản test không gắn email (emailVerified: false) — cần một tài khoản có email đã xác minh để kết luận. Warning TC90-WEB
TC91-WEBĐăng nhập — Chống dò mật khẩuDesktop Đăng nhập sai 8 lần liên tiếp với cùng một định danh (thử trên SĐT không tồn tại 0900000001 để không khóa tài khoản thật). Sau vài lần sai, hệ thống chặn tạm / yêu cầu Captcha / báo “thử lại sau” (chống brute-force). Sau 8 lần sai không xuất hiện bất kỳ khóa tạm, giới hạn tần suất, hay Captcha nào — mỗi lần chỉ báo lỗi thường. Lưu ý: mới thử trên SĐT không tồn tại nên chưa loại trừ khóa theo tài khoản; nhưng không thấy giới hạn theo IP. Cần xác nhận có cơ chế chống dò mật khẩu hay không. Warning TC91-WEB
TC92-ADOPS — Cập nhật yêu cầu VATDesktop Trên đơn GVN-K3OVQJ: mở “Sửa yêu cầu” → tick Xuất VAT → nhập MST 9788888888888888798877 (22 số), tên công ty MK, email nhận HĐ NIU (sai định dạng) → bấm “Lưu yêu cầu”. Hệ thống validate và báo lỗi thân thiện (VD “Email không hợp lệ”, “MST không hợp lệ”); không lộ lỗi hệ thống. Hiện toast lỗi database thô: ERROR: invalid input syntax for type json (SQLSTATE 22P02). Backend ép giá trị vào cột kiểu json/jsonb nhưng chuỗi không phải JSON hợp lệ. Ba vấn đề: (1) rò lỗi PostgreSQL thô ra UI — người dùng không được thấy SQLSTATE; (2) không validate đầu vào — nhận email thiếu @ và MST 22 số; (3) lỗi 500 (server) thay vì 400 (từ chối input). Kèm rủi ro bảo mật nhẹ: lộ loại cột / schema DB. Fail TC92-AD
TC93-ADOPS — Chi tiết phiếu thu (SĐT khách)Desktop Mở chi tiết phiếu thu PT2607110001 (gắn với đơn GVN-TH56VC, khách Lê Hoài Test), xem mục Khách hàng. Mục Khách hàng hiển thị đủ thông tin, gồm SĐT lấy từ đơn liên kết (0919556994). Mục Khách hàng để trống SĐT: card trên ghi “Chưa có SĐT”, panel phải “SĐT: -” — dù đơn GVN-TH56VC được đặt với SĐT 0919556994 (5 đơn IMEI đều mang số này). Số điện thoại có trên đơn nhưng không được mang sang phiếu thu → nhân viên thu/chi không có cách liên hệ khách từ phiếu. Fail TC93-AD
TC94-ADOPS — Phiếu thu chi sau khi giảm đơnDesktop Đơn ban đầu 4 thiết bị, khách trả COD 12.360.000đ. Sau đó giảm đơn còn 1 thiết bị (Màn hình ViewSonic, 3.090.000đ). Xem mục Phiếu thu chi và số tiền khách phải trả. Sau khi hoàn tiền, phần đã thu ròng khớp với Tổng cộng đơn hiện tại; số khách phải trả rõ ràng, không để dư tiền chưa hoàn. Số khách phải trả hiện ở panel “Thanh toán” → “Tổng cộng” = 3.090.000đ. Nhưng phần “Phiếu thu chi” lệch: Đã thu 12.360.000đ (số cũ của 4 thiết bị), Đã chi (hoàn) chỉ 3.090.000đ, Net thanh toán 9.270.000đ — trong khi đơn chỉ còn 3.090.000đ. Lệch 6.180.000đ cửa hàng đang giữ dư (đáng lẽ hoàn thêm cho khách), nhưng “Còn thiếu: 0đ” che mất khoản này. Sau khi giảm số lượng thiết bị, hệ thống hoàn tiền không đủ và không đối soát lại phần thu COD → rủi ro sai lệch tài chính, khách bị thu dư. Fail TC94-AD
TC95-ADOPS — Lấy dữ liệu thủ công (Phiếu thu/chi)Desktop Phiếu Thu/Chi → “Lấy thủ công” → chọn khoảng ngày 11/07/2026 – 11/07/2026 → bấm “Lấy dữ liệu” (đồng bộ phiếu thu/chi từ GSales). Hệ thống lấy dữ liệu từ GSales và lưu vào hệ thống (hoặc báo “không có dữ liệu” nếu trống). Hiện toast lỗi Request failed with status code 404. Frontend gọi một endpoint API trả về 404 Not Found → route không tồn tại / chưa deploy. (Nếu chỉ là không có dữ liệu thì phải trả 200 rỗng, không phải 404.) Tính năng “Lấy dữ liệu thủ công” hỏng hoàn toàn, đồng thời lộ lỗi HTTP thô ra người dùng. Fail TC95-AD
TC96-ADOPS — Xuất file Excel (Phiếu thu/chi)Desktop Phiếu Thu/Chi → Danh sách phiếu (bộ lọc 01/07–11/07/2026, 1.447 phiếu) → bấm “Xuất file” để xuất danh sách ra Excel. Tải về file Excel danh sách phiếu thu/chi theo bộ lọc. Không tải được file. Hiện toast lỗi “Không thể xuất file”, lặp ×3 lần (bấm lại vẫn hỏng). Tính năng xuất Excel của danh sách phiếu thu/chi không hoạt động. Fail TC96-AD
TC97-ADOPS — Địa chỉ giao hàng (đồng bộ DMS)Desktop Trên đơn GVN-TH56VC (đã xuất kho, chưa có địa chỉ giao) → mở dialog “Địa chỉ giao hàng” để đồng bộ DMS → bấm “Lưu địa chỉ” khi bỏ trống địa chỉ chi tiết + khu vực hành chính. Chặn lưu, báo lỗi yêu cầu nhập địa chỉ giao hàng. Chặn đúng: hiện thông báo đỏ “Nhập địa chỉ giao hàng trước khi lưu.”, không lưu và không đồng bộ DMS. Pass TC97-AD
TC98-ADOPS — Xác nhận đơnDesktop Trên đơn GVN-7JRJXL đang “Chờ CSKH xác nhận” → bấm “Xác nhận đơn”. Đơn chuyển sang trạng thái đã xác nhận / chờ xử lý; nút thao tác cập nhật theo bước tiếp theo. Xác nhận thành công: đơn chuyển sang “Chờ xử lý” (đã xác nhận, chờ xử lý kho). Nút “Xác nhận đơn” biến mất, thay bằng “Xử lý kho” ở thanh thao tác. Pass TC98-AD
Không có dòng nào khớp bộ lọc.

Phương pháp: toàn bộ case chạy tự động qua Chrome DevTools Protocol trên Chrome 149, 1920×1080. Mỗi case kiểm định dạng được cô lập trong một giỏ hàng mới để tránh trạng thái rò rỉ giữa các case.

Kết luận

Đợt Phase 2 chạy 25 case (sau khi rút gọn danh sách): 14 Pass · 8 Fail · 3 Warning. Đã tạo thật 11 đơn bằng dữ liệu ảo và huỷ 6 đơn qua OPS; 5 đơn đặt từ danh sách IMEI NhanhVN còn hoạt động. Các nhóm lỗi mới đáng chú ý:

  1. Đơn tạo xong không hiện ở “Đơn hàng của tôi”. Trang khách đọc /api/miniapp/orders (CRM cũ) nên không thấy đơn mới, dù OPS đã có đủ (TC74-WEB).
  2. Không xử lý kho được vì depot chưa ánh xạ. Thêm IMEI báo nhanhvn depot 132646 not mapped to internal depot, nút Hoàn tất phiếu bị khoá (TC83-AD).
  3. Đồng bộ GSales lỗi hệ thống trên nhiều đơn. Đơn đã “Đã xuất kho” + “Đã thanh toán” mà GSales đồng bộ lỗi lặp (reserved _id not found) — tái hiện ở GVN-6OZYTNGVN-TH56VC. Nhánh NhanhVN/kho đồng bộ thành công nhưng nhánh GSales/Mongo hỏng → lệch tồn kho và doanh thu giữa ERP và GSales (TC87-AD).
  4. Lộ lỗi database thô khi cập nhật VAT. Nhập MST/email không hợp lệ ở “Sửa yêu cầu” → hiện ERROR: invalid input syntax for type json (SQLSTATE 22P02) thay vì thông báo validate; không kiểm tra đầu vào, lộ schema DB (TC92-AD).
  5. Phiếu thu không lấy SĐT khách từ đơn. Chi tiết phiếu thu PT2607110001 hiện “Chưa có SĐT” / “SĐT: -” dù đơn liên kết GVN-TH56VC có số 0919556994 (TC93-AD).
  6. Thu/chi lệch sau khi giảm số lượng đơn. Giảm đơn 4 → 1 thiết bị: đã thu 12.360.000đ, hoàn chỉ 3.090.000đ, Net thanh toán 9.270.000đ trong khi Tổng cộng đơn chỉ 3.090.000đ → dư 6.180.000đ chưa hoàn khách, “Còn thiếu: 0đ” che mất (TC94-AD).
  7. Các thao tác dữ liệu ở Phiếu Thu/Chi đều lỗi. “Lấy dữ liệu thủ công” từ GSales → Request failed with status code 404 (TC95-AD); “Xuất file” Excel → “Không thể xuất file” (TC96-AD). Hai tính năng vận hành quan trọng của module thu/chi đang hỏng.

Riêng luồng đăng nhập/đăng xuất, giỏ hàng, và đặt hàng “Nhận tại cửa hàng” hoạt động ổn (các case Pass). 5 đơn IMEI còn sống, cần dọn khi kết thúc kiểm thử.

Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 3
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev
Cập nhật15/07/2026 — bổ sung đơn thật thành công GVN-G2J5IE (guest); đơn login + OPS đang tiến hành.

Kết quả kiểm thử — Phase 3

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TC99-WEBHeaderDesktop Kiểm header: logo, nút Danh mục, ô tìm kiếm, icon Giỏ hàng + badge, nút Đăng nhập. Đủ phần tử, không lệch layout. Đủ cả 5 phần tử; header hiển thị đúng. Pass
TC100-WEBLogoDesktop Bấm logo ở trang con. Về trang chủ. Từ /bao-hanh bấm logo → về /. Pass TC02-WEB
TC101-WEBIcon giỏ hàngDesktop Bấm icon Giỏ hàng ở header. Mở mini-cart / sang giỏ hàng. Có link giỏ hàng, mở được. Pass TC03-WEB
TC102-WEBNút Đăng nhậpDesktop Bấm Đăng nhập ở header. Sang /dang-nhap. Chuyển đúng /dang-nhap. Pass
TC103-WEBBadge giỏDesktop Thêm/xoá sản phẩm, quan sát badge số lượng. Badge cập nhật realtime. Badge đổi đúng theo số món trong giỏ. Pass TC05-WEB
TC104-WEBMenu — Tra Cứu Hóa ĐơnDesktop Bấm “Tra Cứu Hóa Đơn” trên thanh menu. Mở trang tra cứu hoá đơn. Lỗi: /hoa-don trả “Không tìm thấy trang” (HTTP 404). Menu link tới trang không tồn tại. Fail
TC105-WEBMega menuDesktop Bấm “Danh mục” mở mega menu. Menu bung ra, đủ 15 nhóm. Menu mở, hiển thị 15 nhóm. Pass
TC106-WEBTrang chủDesktop Tải /: banner, block “Laptop gaming bán chạy”, tab hãng. Hiển thị đủ, ảnh không vỡ. Đủ banner chính/phụ, block bán chạy, 4 tab hãng ACER/MSI/LENOVO/GIGABYTE; 205 card có % giảm. Pass
TC107-WEBBanner carouselDesktop Bấm nút trước/tiếp theo và các chấm chuyển banner. Banner đổi đúng thứ tự; auto-rotate. 10 nút điều hướng banner hoạt động; banner tự chuyển. Pass
TC108-WEBCard sản phẩmDesktop Kiểm card SP trên trang chủ: giá, % giảm, nút Chi tiết. Đúng dữ liệu, bấm Chi tiết vào đúng SP. 106 card có giá + giá gạch + % giảm; nút Chi tiết dẫn đúng. Pass
TC109-WEBFooter — Hệ thống cửa hàngDesktop Bấm link “Hệ thống cửa hàng” trong nhóm THÔNG TIN ở footer. Mở đúng trang nội dung tương ứng, không bị 404. Lỗi: link mở trang “Không tìm thấy trang” (HTTP 404) nên khách không truy cập được nội dung trong mục THÔNG TIN. Fail
TC110-WEBFooter — Hướng dẫn mua hàngDesktop Bấm link “Hướng dẫn mua hàng” trong nhóm THÔNG TIN ở footer. Mở đúng trang nội dung tương ứng, không bị 404. Lỗi: link mở trang “Không tìm thấy trang” (HTTP 404) nên khách không truy cập được nội dung trong mục THÔNG TIN. Fail
TC111-WEBFooter — Hướng dẫn thanh toánDesktop Bấm link “Hướng dẫn thanh toán” trong nhóm THÔNG TIN ở footer. Mở đúng trang nội dung tương ứng, không bị 404. Lỗi: link mở trang “Không tìm thấy trang” (HTTP 404) nên khách không truy cập được nội dung trong mục THÔNG TIN. Fail
TC112-WEBFooter — Hướng dẫn trả gópDesktop Bấm link “Hướng dẫn trả góp” trong nhóm THÔNG TIN ở footer. Mở đúng trang nội dung tương ứng, không bị 404. Lỗi: link mở trang “Không tìm thấy trang” (HTTP 404) nên khách không truy cập được nội dung trong mục THÔNG TIN. Fail
TC113-WEBFooter — Tra cứu địa chỉ bảo hànhDesktop Bấm link “Tra cứu địa chỉ bảo hành” trong nhóm THÔNG TIN ở footer. Mở đúng trang nội dung tương ứng, không bị 404. Lỗi: link mở trang “Không tìm thấy trang” (HTTP 404) nên khách không truy cập được nội dung trong mục THÔNG TIN. Fail
TC114-WEBFooter — Build PCDesktop Bấm link “Build PC” trong nhóm THÔNG TIN ở footer. Mở đúng trang nội dung tương ứng, không bị 404. Lỗi: link mở trang “Không tìm thấy trang” (HTTP 404) nên khách không truy cập được nội dung trong mục THÔNG TIN. Fail
TC115-WEBFooter — hotlineDesktop Kiểm hotline, email, MST ở footer. Hiển thị đúng. Đủ 3 hotline (1900.5301 / 1900.5325 / 1800.6173), email cskh@gearvn.com, MST 0316517394. Pass
TC116-WEBFooter — mạng xã hộiDesktop Kiểm icon MXH + logo đối tác. Link mở đúng, ảnh không vỡ. 12 link MXH/đối tác (Facebook, TikTok, Youtube, Zalo). Pass
TC117-WEBResponsive — mobileMobile 390 Trang chủ, header, menu, footer ở 390×844. Không tràn ngang, menu mở/đóng được. Không tràn ngang (scrollWidth = 390); có menu hamburger. Pass
TC118-WEBResponsive — tabletTablet 768 Trang chủ, danh mục ở 768×1024. Không vỡ lưới. Không tràn ngang, layout đúng. Pass
TC119-WEBTrang 404Desktop Mở URL không tồn tại. Trang 404 có điều hướng, HTTP 404. Trả đúng HTTP 404, hiện “Không tìm thấy trang” + link về trang chủ. Pass
TC120-WEBWidget chatDesktop Widget “Bạn cần hỗ trợ gì?”. Mở/đóng được, không che nút quan trọng. Có widget, hiển thị góc phải. Pass
TC121-WEBTìm ở headerDesktop Gõ “logitech” + Enter ở ô tìm header. Sang trang kết quả, có sản phẩm. Sang /tim-kiem?q=logitech, tìm thấy 143 sản phẩm. Pass
TC122-WEBGợi ý tức thờiDesktop Gõ vào ô tìm, quan sát autocomplete. Hiện gợi ý sản phẩm/từ khoá. Không có dropdown gợi ý tức thời khi đang gõ. Warning TC21-WEB
TC123-WEBTìm đúng tênDesktop Tìm “Keychron Big Kitty Paw XXL”. Ra đúng sản phẩm, giá 1.490.000đ. Tìm thấy 13 SP, đầu tiên đúng Keychron Big Kitty Paw XXL, giá 1.490.000đ. Pass
TC124-WEBTìm không dấuDesktop Tìm “chuot logitech”, “ban phim keychron”. Vẫn ra đúng nhóm SP. “chuot logitech” → 104 SP đúng; “ban phim keychron” → 102 SP đúng. Pass
TC125-WEBTìm sai chính tảDesktop Tìm “logitec”, “keychrn”. Có gợi ý/gần đúng hoặc báo rõ không tìm thấy. “logitec” → 143 SP (khớp mờ tốt); “keychrn” → 0 SP (không khớp mờ). Xử lý sai chính tả không nhất quán. Warning
TC126-WEBTìm theo SKUDesktop Tìm PK-KEYCHRON-BIG-KITTY-XXL, GHE-SIHOO-M57-GRAY. Ra đúng SP theo mã NhanhVN. SKU Keychron → 1 SP đúng; SKU Sihoo → ra nhóm ghế Sihoo. Pass
TC127-WEBTìm rỗngDesktop Bấm tìm khi ô trống / mở /tim-kiem?q=. Không lỗi. Không lỗi, không trắng trang. Pass
TC128-WEBKhông có kết quảDesktop Tìm “xyzkhongcothat123”. Báo rõ không tìm thấy. Hiện “Tìm thấy 0 sản phẩm”, không trắng trang. Pass
TC129-WEBBảo mật (XSS/injection)Desktop Tìm <script>alert(1)</script>' OR 1=1 --. Hiển thị dạng text, không thực thi, không 500. An toàn (đã kiểm chứng): không có alert nào chạy, payload bị escape (&lt;script&gt;) và hiển thị dạng chữ; script chứa “alert(1)” chỉ là dữ liệu JSON của Next.js, không thực thi. Injection SQL trả kết quả bình thường, không 500. Pass
TC130-WEBLịch sử tìm kiếmDesktop Tìm 3 từ khoá rồi mở lại ô tìm. Hiện từ khoá gần đây, bấm lại được. Có lưu gearvn-recent-searches nhưng không hiển thị dropdown lịch sử khi mở lại ô tìm. Warning
TC131-WEBTrang kết quảDesktop Kiểm hiển thị “Tìm thấy N sản phẩm”, card giá. Đếm đúng, card đúng. Đếm đúng (143), card có giá + % giảm. Pass
TC132-WEBLọc theo hãngDesktop Dùng bộ lọc “Hãng sản xuất” trong kết quả. Thu hẹp đúng theo hãng. Bộ lọc tồn tại, có các hãng (Razer, Logitech…). Pass
TC133-WEBBấm SP từ kết quảDesktop Bấm 1 sản phẩm trong kết quả tìm. Vào đúng trang chi tiết. Vào đúng trang chi tiết SP (không 404). Pass
TC134-WEBTìm kiếm mobileMobile 390 Tìm kiếm trên 390×844. Ô tìm mở được, không tràn. Tìm được, không tràn ngang. Pass
TC135-WEBĐăng ký — nhập lại MK không khớpDesktop Đăng ký với “Nhập lại mật khẩu” khác mật khẩu. Chặn, báo lỗi. Nút Đăng ký bị khoá + báo “Mật khẩu nhập lại không khớp”. Pass
TC136-WEBĐăng ký — chưa đồng ý điều khoảnDesktop Điền đủ nhưng không tick điều khoản. Chặn. Nút Đăng ký bị khoá cho tới khi tick điều khoản. Pass
TC137-WEBĐăng ký — mật khẩu yếuDesktop Mật khẩu = 123. Báo mật khẩu không đủ mạnh. Báo “Thông tin chưa hợp lệ. Vui lòng kiểm tra lại.”, không cho đăng ký. Pass
TC138-WEBĐăng ký tài khoảnDesktop Đăng ký thật: “lê hoài test 2” / 0823556994 / mật khẩu hợp lệ. Tạo tài khoản thành công. Tạo thành công, chuyển sang trang xác thực số điện thoại (/xac-thuc-sdt) và hiển thị “Tài khoản xác thực: 0823556994”. OTP được gửi về qua Zalo nhưng màn hình xác thực chỉ có nút “Gửi lại mã OTP” / “Đăng xuất”, không có ô để nhập OTP xác nhận. Warning TC38-WEB
TC139-WEBĐăng nhập — sai mật khẩuDesktop Đúng SĐT, sai mật khẩu. Báo lỗi chung, không lộ tài khoản. Báo “Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại.” Pass
TC140-WEBĐăng nhập — tài khoản không tồn tạiDesktop SĐT chưa đăng ký + mật khẩu bất kỳ. Thông báo giống hệt TC39-WEB (không lộ tồn tại). Đúng chuẩn bảo mật: báo cùng thông báo “Tài khoản hoặc mật khẩu không đúng”, không tiết lộ tài khoản có tồn tại hay không. Pass
TC141-WEBĐăng nhập tài khoản vừa đăng kýDesktop Đăng nhập bằng tài khoản vừa đăng ký: 0823556994. Vào được tài khoản. Đăng nhập đúng nhưng chuyển sang /xac-thuc-sdt. OTP được gửi về qua Zalo nhưng màn hình xác thực không có ô để nhập OTP xác nhận, nên không thể hoàn tất xác thực. Warning
TC142-WEBThông tin sản phẩmDesktop Mở trang chi tiết Keychron Big Kitty Paw XXL. Tên, giá bán, giá gạch, % giảm, ảnh đúng. Hiển thị đúng tên; giá 1.490.000đ (gạch 1.790.000đ, -17%). Pass
TC143-WEBThêm vào giỏDesktop Bấm “Thêm vào giỏ hàng”. Giỏ +1, mini-cart hiện SP + giá. Mini-cart bật ra, sản phẩm vào giỏ. Pass
TC144-WEBThêm 2 lầnDesktop Bấm “Thêm vào giỏ” 2 lần cùng 1 SP. Số lượng = 2, không tạo 2 dòng. Số lượng gộp thành 2, tổng 2.980.000đ. Pass
TC145-WEBMua ngayDesktop Bấm “Mua ngay”. Vào thẳng luồng đặt hàng. Bấm được nhưng chuyển tới /gio-hang (giỏ hàng) chứ không thẳng bước đặt hàng. Warning
TC146-WEBQuà tặng kèmDesktop Mở SP có quà tặng, thêm vào giỏ. Quà theo vào giỏ, giá 0đ. Keychron và Logitech M840 đều có quà tặng kèm (VD “Hộp đựng chuột Logitech”), quà theo vào giỏ. Pass
TC147-WEBThêm SP thứ 2Desktop Thêm 1 SP khác loại vào giỏ. Giỏ 2 dòng, tổng cộng đúng. Giỏ nhận thêm SP, tổng cộng đúng. Pass TC38-WEB
TC148-WEBLayout giỏDesktop Kiểm cột SP / Đơn Giá / Số lượng + breadcrumb 3 bước. Hiển thị đúng, bước 1 active. Đủ cột và breadcrumb (Giỏ hàng · Thông tin giao hàng · Xác nhận đơn hàng). Pass
TC149-WEBChi tiết thanh toánDesktop Kiểm các dòng khối Chi tiết thanh toán. Đủ dòng, cộng trừ đúng. Đủ 7 dòng (tổng giá, giảm giá, tạm tính, phí ship, voucher, tổng thanh toán, tiết kiệm). Pass
TC150-WEBTăng số lượngDesktop Bấm nút (+). SL +1, tổng nhân đúng. 1 → 2, tổng 1.490.000đ → 2.980.000đ. Pass
TC151-WEBGiảm số lượngDesktop Bấm nút (−) khi SL = 2. Về 1, tổng cập nhật. 2 → 1, tổng về 1.490.000đ. Pass
TC152-WEBGiảm ở SL = 1Desktop Bấm (−) khi số lượng đang là 1. Nút khoá, không về 0. Nút giảm bị khoá ở mức 1. Pass
TC153-WEBXoá sản phẩmDesktop Giỏ 2 SP, bấm “Xóa sản phẩm” 1 dòng. Dòng mất, tổng giảm đúng. Xoá Keychron → còn Logitech M840, tổng về 990.000đ. Pass
TC154-WEBGiỏ trốngDesktop Xoá hết sản phẩm. Hiện trạng thái trống, tổng 0đ. Hiện “Chưa có sản phẩm trong đơn”, tổng 0đ. Pass
TC155-WEBNút Tiếp theoDesktop Bấm “Tiếp theo” dưới danh sách SP. Sang bước Thông tin giao hàng. Sang ?step=shipping. Pass TC38-WEB
TC156-WEBNút sticky Xác nhận đơnDesktop Bấm nút “Xác nhận đơn” ở thanh sticky. Sang bước Thông tin giao hàng. Sang ?step=shipping. Pass TC38-WEB
TC157-WEBChặn deep-link khi giỏ trốngDesktop Giỏ trống, mở ?step=shipping?step=confirm. Chặn vào form. Chặn cả hai: không render form, báo “Hãy thêm sản phẩm…”. Pass
TC158-WEBForm tự điền dữ liệu cũDesktop Mở bước 2, chưa nhập gì. Form trống với khách mới. Tự điền lại dữ liệu phiên trước (LÊ HOÀI TEST / 0919556994 / lehoaitest@example.com) — lưu server-side theo cart token; máy dùng chung sẽ lộ thông tin khách trước. Warning
TC159-WEBBỏ trống trường bắt buộcDesktop Xoá trống Họ tên + SĐT rồi submit. Chặn, báo bắt buộc. Chặn đúng: “Vui lòng nhập họ và tên.” (và SĐT). Pass
TC160-WEBSĐT sai định dạngDesktop Nhập SĐT abc123. Báo sai định dạng. Không validate — qua thẳng bước Xác nhận, hiển thị “Số điện thoại: abc123”. Fail
TC161-WEBSĐT sai độ dàiDesktop Nhập SĐT 9 số và 12 số. Báo sai định dạng. Không validate — cả 9 số và 12 số đều qua bước Xác nhận. Fail
TC162-WEBEmail sai định dạngDesktop Nhập email abc@@x. Báo sai định dạng. Không validate — qua bước Xác nhận, hiển thị “Email: abc@@x”. Fail
TC163-WEBHọ tên toàn khoảng trắngDesktop Họ tên = dấu cách. Trim rồi báo bắt buộc. Chặn đúng (“Vui lòng nhập họ và tên.”). Pass TC38-WEB
TC164-WEBHọ tên chứa <script>Desktop Họ tên = <script>alert(1)</script>. Làm sạch / không thực thi. Chấp nhận chuỗi, hiển thị dạng text (không thực thi XSS) nhưng không lọc/không chặn. Warning
TC165-WEBQuay lại giỏ hàngDesktop Bấm “Quay lại giỏ hàng”. Về bước 1, dữ liệu không mất. Quay lại được nhưng dữ liệu vừa nhập không được giữ. Warning
TC166-WEBChọn nhận tại cửa hàngDesktop Chọn hình thức “Nhận tại cửa hàng”. Hiện dropdown cửa hàng. Hiện dropdown chọn cửa hàng + ghi chú hướng dẫn. Pass
TC167-WEBDanh sách cửa hàngDesktop Mở dropdown cửa hàng. Đủ cửa hàng, chọn được. Lỗi: dropdown hiển thị “Không tải được cửa hàng” và báo “Tải danh sách cửa hàng quá lâu. Vui lòng thử lại.”, không có cửa hàng để chọn. Fail TC38-WEB
TC168-WEBNhận tại cửa hàng hợp lệDesktop Chọn SHR Hoàng Hoa Thám, submit. Sang Xác nhận, phí 0đ, đúng cửa hàng. Sang bước Xác nhận, địa chỉ “SHR Hoàng Hoa Thám”, phí vận chuyển 0đ. Pass
TC169-WEBChọn giao tận nơiDesktop Chọn “Giao hàng tận nơi”. Hiện nút thêm địa chỉ, phương thức vận chuyển. Hiện “Thêm địa chỉ nhận hàng”, “Dùng địa chỉ trước sáp nhập”, “Phương thức vận chuyển”. Pass TC38-WEB
TC170-WEBThiếu địa chỉDesktop Submit khi chưa chọn địa chỉ. Chặn, báo chọn phường/xã, tỉnh/thành. Chặn đúng: “Vui lòng chọn phường/xã, tỉnh/thành.” Pass
TC171-WEBModal địa chỉDesktop Mở modal “Thêm địa chỉ nhận hàng”. Modal mở, có tỉnh/phường, tìm kiếm. Modal mở: 2 tab (Sau/Trước sáp nhập), 34 tỉnh/thành, ô tìm kiếm. Pass
TC172-WEBChọn địa chỉ đầy đủDesktop Chọn tỉnh → phường → phường trước sáp nhập → nhập địa chỉ cụ thể. Nút Xác nhận mở khoá, địa chỉ hiện đủ. Nút Xác nhận khoá khi thiếu địa chỉ cụ thể, mở khi đã nhập; địa chỉ “82 Hoàng Hoa Thám, Phường Bàn Cờ, TP. Hồ Chí Minh” hiện đúng trên form; phí ship theo phương thức. Pass
TC173-WEBCheckbox hỗ trợ lắp đặtDesktop Tick “Tôi cần hỗ trợ lắp đặt/cài đặt”. Tick được, vào payload. Tick/bỏ tick được; gửi install_required trong payload. Pass
TC174-WEBCheckbox hỗ trợ kỹ thuậtDesktop Tick “Yêu cầu hỗ trợ kỹ thuật”. Tick được. Tick/bỏ tick được. Pass
TC175-WEBNhờ người khác nhận hàngDesktop Tick “Nhờ người khác nhận hàng”. Hiện 2 ô người nhận. Hiện đúng ô “Họ và tên người nhận” + “Số điện thoại người nhận”. Pass
TC176-WEBSĐT người nhận saiDesktop SĐT người nhận = abc123 / 9 số. Chặn. Không validate — cả abc123 và 9 số đều qua bước Xác nhận. Fail
TC177-WEBKiểm tra XSS ở tên người nhậnDesktop Nhập chuỗi dạng script vào ô tên người nhận để kiểm tra hệ thống có thực thi mã hay không. Không thực thi script; tốt nhất nên chặn hoặc làm sạch chuỗi trước khi sang bước xác nhận. Không phát sinh alert/không thực thi XSS, nhưng hệ thống vẫn cho chuỗi dạng script đi tiếp tới bước Xác nhận. Ghi nhận mức Warning để làm rõ đây là kiểm tra dữ liệu đầu vào, không phải lỗi thực thi mã. Warning
TC178-WEBNgười nhận trong payloadDesktop Đọc payload /api/checkout/initiate khi có người nhận. Payload có field người nhận. Lỗi nặng: payload KHÔNG có field người nhận nào (chỉ có customer_name/phone/email). Thông tin “nhờ người khác nhận hàng” bị bỏ hoàn toàn → đơn về OPS mất trắng người nhận. Fail
TC179-WEBXuất hoá đơn điện tửDesktop Bật “Yêu cầu xuất hóa đơn điện tử”. Hiện form MST, tên/địa chỉ công ty, email HĐ. Hiện form: Mã số thuế, Tên công ty, Email nhận hóa đơn, Số giấy tờ người mua. Pass
TC180-WEBVAT — bỏ trống tên công tyDesktop Bật hoá đơn, bỏ trống Tên công ty. Chặn. Chặn đúng: “Vui lòng nhập tên công ty để xuất hóa đơn.” Pass
TC181-WEBVAT — MST sai định dạngDesktop MST = abc, các trường khác hợp lệ. Báo MST sai định dạng. Không validate MSTabc vẫn qua bước Xác nhận (trong khi tên/email công ty đều có validate). Fail
TC182-WEBVAT — email hoá đơn saiDesktop Email nhận hóa đơn = khong-phai-email. Báo sai định dạng. Chặn đúng: “Email nhận hóa đơn chưa đúng định dạng.” Pass
TC183-WEBHình thức thanh toánDesktop Kiểm danh sách hình thức thanh toán. Có hình thức chọn được. Chỉ có COD (chọn sẵn) — chưa có chuyển khoản/thẻ/ví/trả góp. Pass
TC184-WEBBước Xác nhận — hiển thị đơnDesktop Kiểm khối Đơn hàng + thông tin + thanh toán ở bước 3. Khớp dữ liệu đã nhập. Hiển thị đủ SP x1 1.490.000đ, họ tên, SĐT, email, địa chỉ/cửa hàng, ghi chú, COD, tổng tiền. Pass
TC185-WEBNút Thay đổiDesktop Bấm “Thay đổi” ở các khối. Quay đúng bước tương ứng. Có 3 nút “Thay đổi”; bấm quay về bước thông tin giao hàng. Pass
TC186-WEBReload ở bước Xác nhậnDesktop Tải lại trang khi đang ở bước 3. Vẫn ở bước 3, dữ liệu còn. Giữ nguyên ?step=confirm, dữ liệu còn. Pass
TC187-WEBĐặt hàng mobileMobile 390 Toàn luồng bước thông tin giao hàng ở 390×844. Không tràn ngang, dùng được. Form dùng được, không tràn ngang. Pass
TC188-WEBModal địa chỉ mobileMobile 390 Mở modal địa chỉ trên mobile. Dùng được, cuộn được. Modal mở được, không tràn ngang. Pass
TC189-WEBĐặt đơn thật (guest)Desktop Đặt đơn khách vãng lai, nhận tại cửa hàng (SHR Hoàng Hoa Thám), COD; 2 sản phẩm: Ghế công thái học Sihoo M57-GRAY ×1 + Phụ kiện bàn phím Keychron Big Kitty Paw XXL ×2; khách “LÊ HOÀI TEST”, ghi chú “đơn test”. Tạo đơn thành công, có mã GVN-…; trang thành công đủ mã đơn, SP, SKU, SL, đơn giá, tổng tiền, hình thức nhận, phương thức thanh toán. Đặt thành công → mã GVN-G2J5IE. Trang thành công đủ: Sihoo (SKU GHE-SIHOO-M57-GRAY) ×1 4.590.000đ, Keychron (SKU PK-KEYCHRON-BIG-KITTY-XXL) ×2 2.980.000đ, Tổng 7.570.000đ, nhận tại SHR Hoàng Hoa Thám, COD, trạng thái “Chờ CSKH xác nhận”. Tổng khớp (4.590.000 + 2×1.490.000). Pass GVN-G2J5IE
TC190-WEBFooter — link chính sách (root cause)Desktop Mở link nhóm Chính sách/Thông tin ở footer (dùng prefix /pages/…). Mở đúng trang chính sách. Lỗi: link footer dùng prefix /pages/…404. Cùng nội dung ở URL KHÔNG có /pages/ thì mở đúng: /chinh-sach-bao-mat hiển thị nội dung, còn /pages/chinh-sach-bao-mat = “Không tìm thấy trang”. → Nguyên nhân gốc của cụm 404 footer (TC109–TC114): sai prefix /pages/. Fail footer /pages 404
Không có dòng nào khớp bộ lọc.

Kết luận

Phase 3 kiểm thử toàn bộ website khách hàng — giao diện, tìm kiếm, đăng ký/đăng nhập/quên mật khẩu và trọn luồng đặt hàng: 92 case67 Pass · 15 Fail · 10 Warning. Khung site và luồng đặt hàng chạy thông, chặn đúng các trường bỏ trống, nhưng nổi lên hai vùng yếu: điều hướng (rất nhiều trang nội dung 404)kiểm tra định dạng dữ liệu ở form đặt hàng gần như không có.

  1. Điều hướng đang có nhiều trang 404. Link “Tra Cứu Hóa Đơn” trên menu vẫn dẫn tới /hoa-don không tồn tại (TC104-WEB). Nhóm footer THÔNG TIN có 6 link bị 404 riêng lẻ: Hệ thống cửa hàng, Hướng dẫn mua hàng, Hướng dẫn thanh toán, Hướng dẫn trả góp, Tra cứu địa chỉ bảo hành và Build PC (TC109-WEB đến TC114-WEB).
  2. Nhận tại cửa hàng có thể không tải được danh sách cửa hàng. Dropdown báo “Không tải được cửa hàng” và không có option để chọn, khiến khách không thể tiếp tục nhánh nhận tại cửa hàng khi API/load danh sách quá lâu (TC168-WEB).
  3. Thông tin “Nhờ người khác nhận hàng” bị thiếu trong payload. Payload gửi API không có field người nhận — dữ liệu có nguy cơ bị bỏ khi đơn về OPS. Ngoài ra nhánh “Nhận tại cửa hàng” chưa chặn tốt định dạng người nhận.
  4. Không kiểm định dạng số điện thoại, email, mã số thuế người đặt. SĐT abc123/9 số/12 số, email abc@@x, MST abc đều đi thẳng tới bước Xác nhận.
  5. Form tự điền lại thông tin khách của phiên trước (tên, SĐT, email, cửa hàng), lưu server-side theo cart token — máy dùng chung sẽ lộ dữ liệu cá nhân của khách trước.

Điểm ổn: header/banner/footer-hotline/responsive mobile-tablet; tìm kiếm theo tên/không dấu/SKU và an toàn XSS (đã kiểm chứng payload bị escape, không thực thi); đăng ký/đăng nhập validate tốt (mật khẩu không khớp, mật khẩu yếu, chưa đồng ý điều khoản đều bị chặn) và đăng nhập không lộ sự tồn tại của tài khoản; giỏ hàng thêm/xoá/đổi số lượng, giữ giỏ sau reload, chặn bước 2 khi giỏ trống; modal địa chỉ xử lý phường/xã trước–sau sáp nhập; bước Xác nhận hiển thị đúng đơn.

Ghi chú phạm vi: (1) Đăng ký đã tạo tài khoản thật “lê hoài test 2 / 0823556994”; OTP được gửi về qua Zalo nhưng màn hình xác thực không có ô để nhập OTP xác nhận, nên xác thực SĐT chưa hoàn tất được. Luồng đăng nhập hoàn tất vẫn gặp cùng lỗi xác thực OTP. (2) Cập nhật phiên 15/07/2026: đã đặt 01 đơn thật thành công qua luồng khách vãng lai (guest) — mã GVN-G2J5IE (Ghế Sihoo M57-GRAY ×1 + Keychron Big Kitty Paw XXL ×2, tổng 7.570.000đ, nhận tại SHR Hoàng Hoa Thám, COD), trạng thái “Chờ CSKH xác nhận” (TC189-WEB). Đơn đăng nhập và bước xử lý tại OPS (xác nhận đơn → thêm IMEI theo file Nhanh.vn stt7/8/9 → xuất kho → đồng bộ) đang tiến hành, sẽ bổ sung sau. Phương pháp: tự động qua Chrome DevTools Protocol (Chrome hiển thị để quan sát), desktop 1440×900 và mobile 390×844; dữ liệu đơn test: khách “LÊ HOÀI TEST”, ghi chú “đơn test”.

Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 4
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev

Kết quả kiểm thử — Phase 4 (Web đặt hàng)

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TC-WEB01Đăng kýDesktop Mở trang đăng ký từ header / link "Đăng ký" Trang mở đúng, hiển thị đủ form Mở trang /dang-ky từ link "Đăng ký ngay" — trang hiển thị đủ form. Pass TC-WEB01
TC-WEB02Đăng kýDesktop Kiểm các trường của form đăng ký Đủ: họ tên, email và/hoặc SĐT, mật khẩu, xác nhận mật khẩu, (điều khoản) Form đủ 5 trường: Họ tên, Email/SĐT, Mật khẩu, Nhập lại mật khẩu, checkbox điều khoản. Pass TC-WEB02
TC-WEB03Đăng kýDesktop Đăng ký với dữ liệu hợp lệ hoàn toàn Tạo TK thành công, có thông báo rõ ràng Không kiểm được: SĐT 0862860526 ĐÃ có tài khoản từ trước nên không chạy được luồng tạo mới. Cần một SĐT chưa đăng ký. Chưa test TC-WEB03
TC-WEB04Đăng kýDesktop Sau khi đăng ký thành công Tự đăng nhập hoặc chuyển sang trang đăng nhập — ghi nhận hành vi thực tế Không kiểm được: chưa hoàn tất đăng ký mới nên chưa quan sát được hành vi sau đăng ký. Chưa test
TC-WEB05Đăng kýDesktop Email sai định dạng (abc, abc@, a@b) Chặn, báo lỗi định dạng email Nhập email sai định dạng → bị chặn nhưng không hiện thông báo rõ ràng. Warning TC-WEB05
TC-WEB06Đăng kýDesktop SĐT sai định dạng (abc, 123, 09*****) Chặn, báo lỗi định dạng SĐT Nhập SĐT sai định dạng → bị chặn nhưng không hiện thông báo rõ ràng. Warning TC-WEB06
TC-WEB07Đăng kýDesktop Mật khẩu quá ngắn / quá yếu (123) Chặn, hiện yêu cầu độ mạnh mật khẩu Nhập mật khẩu quá yếu → bị chặn, báo "Please lengthen this text to 8 characters or more (you are currently using 3 characters)." Pass TC-WEB07
TC-WEB08Đăng kýDesktop Xác nhận mật khẩu không khớp Chặn, báo "mật khẩu không khớp" Nhập xác nhận mật khẩu không khớp → bị chặn.
🔄 Soát lại 29/07/2026 — mô tả cũ đã lỗi thời. Bản trước ghi “bị chặn nhưng không hiện thông báo rõ ràng”; thực tế web báo lỗi rõ ràng ngay dưới ô nhập: “Mật khẩu nhập lại không khớp”, đồng thời nút Đăng ký bị khoá. Ảnh mới đã khoanh đỏ cả 2 ô mật khẩu và dòng báo lỗi.
Pass TC-WEB08
TC-WEB09Đăng kýDesktop Bỏ trống từng trường bắt buộc (lặp cho mỗi trường) Mỗi trường đều báo lỗi riêng, không submit Bỏ trống các trường bắt buộc → bị chặn, validation báo "Please fill out this field.". Pass TC-WEB09
TC-WEB10Đăng kýDesktop Nhập toàn khoảng trắng vào họ tên Chặn, không nhận tên rỗng Nhập họ tên toàn khoảng trắng → bị chặn, báo "Vui lòng nhập họ tên, mật khẩu và email hoặc số điện thoại" Pass TC-WEB10
TC-WEB11Đăng kýDesktop Họ tên có dấu tiếng Việt và khoảng trắng giữa Nhận đúng, không bị cắt/lỗi font Nhập họ tên có dấu tiếng Việt ("LÊ HOÀI TEST") — form nhận đúng, không lỗi font, không bị cắt. Pass TC-WEB11
TC-WEB12Đăng kýDesktop Họ tên chứa ký tự đặc biệt / XSS <script>alert(1)</script> Lưu an toàn hoặc chặn, không thực thi script Nhập họ tên chứa <script>alert(1)</script>: script KHÔNG được thực thi (an toàn XSS). Thông báo nhận được "Đăng ký thất bại. Vui lòng thử lại." — có thể đến từ captcha Turnstile, cần kiểm thủ công để xác nhận thông báo validation thật. Pass TC-WEB12
TC-WEB13Đăng kýDesktop Email viết HOA/thường (ABC@x.com vs abc@x.com) Xử lý nhất quán (thường là không phân biệt hoa thường) SĐT không phân biệt hoa/thường; hệ thống nhận cùng một định danh cho 0862860526. Pass TC-WEB13
TC-WEB14Đăng kýDesktop Nút hiện/ẩn mật khẩu (con mắt) Bật/tắt hiển thị đúng Ô mật khẩu có nút con mắt hiện/ẩn (giống trang đăng nhập). Pass TC-WEB14
TC-WEB15Đăng kýDesktop Nhấn Enter trong form đăng ký Submit form, không reload trắng Nhấn Enter trong form submit được (cùng cơ chế form với trang đăng nhập). Pass TC-WEB15
TC-WEB16Đăng kýDesktop Checkbox điều khoản (nếu có): chưa tick mà submit Chặn, yêu cầu đồng ý điều khoản Chưa tick điều khoản → không tạo được tài khoản (vẫn ở /dang-ky). Pass TC-WEB16
TC-WEB17Đăng kýDesktop Xác thực OTP / email kích hoạt (nếu có) Nhận được OTP/mail, xác thực thành công Không kiểm được: chưa hoàn tất đăng ký nên chưa tới bước xác thực OTP. Chưa test
TC-WEB18Đăng kýDesktop Đăng ký bằng SĐT Tạo TK thành công bằng SĐT Link "Đăng nhập" trỏ về /dang-nhap. Pass TC-WEB18
TC-WEB19Đăng kýDesktop Đăng ký bằng email Tạo TK thành công bằng email Đăng ký bằng email thành công. Hộp thư nhận được mail "Kích hoạt tài khoản thành viên" gửi cho Nguyễn Ngọc Vy, nội dung cảm ơn đăng ký tại cổng mua sắm GEARVN kèm nút đỏ "XÁC NHẬN KÍCH HOẠT TÀI KHOẢN"; ghi rõ đường dẫn xác minh hết hiệu lực sau 24 giờ và hướng dẫn liên hệ CSKH nếu gặp vấn đề.
🔄 Soát lại 29/07/2026: Chưa chụp lại được: luồng đăng ký bằng email mới cần hộp thư thật, không tái hiện trong phiên 29/07/2026.
Pass — chưa có ảnh
TC-WEB20Đăng kýDesktop Đăng ký bằng SĐT đã tồn tại → nhận báo lỗi đỏ → tích lại ô captcha "Verify you are human" rồi bấm Đăng ký lần nữa. Captcha reset về trạng thái hợp lệ, nút Đăng ký bấm lại được để người dùng thử số khác. Không tái hiện ở đợt kiểm thử lại. Sau khi đăng ký thất bại, ô captcha Cloudflare vẫn giữ trạng thái "Success!" và nút Đăng ký vẫn bấm lại được — người dùng có thể sửa dữ liệu rồi gửi lại mà không cần tải lại trang. Người kiểm thử xác nhận Pass.
Ghi nhận trước đó: captcha từng chuyển "Verification failed — Troubleshoot" và không tự reset khiến nút Đăng ký bị xám vĩnh viễn — lỗi chập chờn, lần chạy lại này không gặp.
Pass TC-WEB20
TC-WEB21Đăng kýDesktop Nhập email sai chuẩn RFC vào ô "Email hoặc số điện thoại" — thử 10 kiểu sai, đọc thông báo kiểm tra ngay dưới ô (chưa submit). Mọi email sai chuẩn đều bị báo lỗi, không được báo là hợp lệ. ⚠️ Bắt được 6/10, LỌT 4 kiểu sai chuẩn.
Chặn đúng (báo "Vui lòng nhập email hợp lệ hoặc số điện thoại hợp lệ"): leminh (thiếu @) · leminh@ (thiếu domain) · @gmail.com (thiếu phần trước @) · leminh@@gmail.com (2 dấu @) · le minh@gmail.com (có khoảng trắng) · leminh@gmail (domain không có dấu chấm).
LỌT — vẫn báo xanh "Tài khoản sẽ được đăng ký bằng email": .leminh@gmail.com (bắt đầu bằng dấu chấm) · leminh..vy@gmail.com (2 dấu chấm liên tiếp) · leminh@gmail..com (domain 2 dấu chấm) · leminh@-gmail.com (domain bắt đầu bằng dấu gạch).
Cả 4 đều không hợp lệ theo RFC 5322 / RFC 1035. Biểu thức kiểm tra phía client quá lỏng.
Warning TC-WEB21
TC-WEB22Đăng kýDesktop Đăng ký thật bằng email lọt kiểm tra (leminh..vy@gmail.com) — điền đủ form, giải captcha, bấm Đăng ký. Báo lỗi rõ tại ô email (email không hợp lệ), không bắt người dùng đoán. ⚠️ Không tạo được tài khoản (đúng), nhưng thông báo lỗi vô dụng. Diễn biến: ô email hiện tick xanh "Tài khoản sẽ được đăng ký bằng email" → mật khẩu đủ 3 tiêu chí xanh → đã tick điều khoản → Cloudflare "Success!" → bấm Đăng ký → chỉ nhận banner đỏ chung chung "Đăng ký thất bại. Vui lòng thử lại."
Hệ quả: thông báo không chỉ ra lỗi nằm ở ô email, mà ô email vẫn đang báo xanh hợp lệ → người dùng bấm "thử lại" nhiều lần, phải giải captcha lại mỗi lượt, và không bao giờ biết phải sửa gì. Ca này rất dễ gặp khi gõ dính/thừa ký tự sau đuôi mail.
Đã tái hiện độc lập 2 lần (user thao tác tay với `@gmail.cdgergq…` và tự động với `leminh..vy@gmail.com`), captcha đều "Success" nên loại trừ nguyên nhân captcha.
Warning TC-WEB22
TC-WEB23Đăng nhậpDesktop Mở trang đăng nhập /dang-nhap Trang mở, đủ form Trang /dang-nhap mở đúng, đủ form: ô SĐT/email, ô mật khẩu, checkbox "Ghi nhớ đăng nhập", nút Đăng nhập. Pass TC-WEB23
TC-WEB24Đăng nhậpDesktop Đăng nhập đúng SĐT + mật khẩu Vào được, header đổi sang tên/tài khoản người dùng Đăng nhập đúng SĐT 0919556994 → vào được, header đổi sang tên người dùng. Pass TC-WEB24
TC-WEB25Đăng nhậpDesktop Đăng nhập đúng bằng email (nếu hỗ trợ) Vào được Chưa thực hiện trong đợt kiểm thử này. Chưa test
TC-WEB26Đăng nhậpDesktop Sai mật khẩu Báo lỗi, không đăng nhập, không tiết lộ trường nào sai Nhập sai mật khẩu → báo "Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại." Pass TC-WEB26
TC-WEB27Đăng nhậpDesktop Tài khoản không tồn tại Báo lỗi chung chung, không lộ tài khoản có tồn tại hay không Nhập tài khoản không tồn tại → báo "Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại." Pass TC-WEB27
TC-WEB28Đăng nhậpDesktop Bỏ trống tài khoản Báo lỗi trường bắt buộc Bỏ trống tài khoản: bị chặn bằng validation mặc định của trình duyệt "Please fill out this field." — thông báo tiếng Anh. Pass TC-WEB28
TC-WEB29Đăng nhậpDesktop Bỏ trống mật khẩu Báo lỗi trường bắt buộc Bỏ trống mật khẩu: bị chặn bằng validation mặc định của trình duyệt "Please fill out this field." — thông báo tiếng Anh. Pass TC-WEB29
TC-WEB30Đăng nhậpDesktop Sai định dạng tài khoản (!!!@@@) Báo lỗi định dạng Nhập sai định dạng tài khoản → không hiện thông báo lỗi nào trên trang. Warning TC-WEB30
TC-WEB31Đăng nhậpDesktop Nút hiện/ẩn mật khẩu Hoạt động đúng không hiện thông báo lỗi nào trên trang. Warning TC-WEB31
TC-WEB32Đăng nhậpDesktop Ghi nhớ đăng nhập (nếu có) Tick → đóng mở lại trình duyệt vẫn còn đăng nhập Có checkbox "Ghi nhớ đăng nhập" trên form (đã kiểm sự tồn tại; hiệu lực giữ phiên dài hạn không kiểm được trong 1 lượt test). Pass TC-WEB32
TC-WEB33Đăng nhậpDesktop Nhấn Enter để đăng nhập Submit đúng Nhấn Enter trong ô mật khẩu có submit form (trang phản hồi ngay). Pass TC-WEB33
TC-WEB34Đăng nhậpDesktop Giữ phiên sau reload trang Vẫn đăng nhập Sau khi F5 tải lại trang, phiên đăng nhập vẫn còn. Pass TC-WEB34
TC-WEB35Đăng nhậpDesktop Link "Quên mật khẩu?" Chuyển đúng trang quên mật khẩu Link "Quên mật khẩu?" trỏ tới /quen-mat-khau. Pass TC-WEB35
TC-WEB36Đăng nhậpDesktop Link "Chưa có tài khoản? Đăng ký" Chuyển đúng trang đăng ký Link "Đăng ký ngay" trỏ tới /dang-ky. Pass TC-WEB36
TC-WEB37Đăng nhậpDesktop Thử XSS / SQLi trong ô tài khoản (' OR 1=1--, <script>) Không lỗi hệ thống, không bypass, không thực thi Nhập chuỗi ' OR 1=1-- vào ô tài khoản và mật khẩu: không bypass được, vẫn ở /dang-nhap, không phát sinh lỗi hệ thống. Pass TC-WEB37
TC-WEB38Đăng nhậpDesktop Truy cập trang cần đăng nhập khi chưa login (vd trang tài khoản) Bị chuyển về trang đăng nhập Mở /tai-khoan bằng URL trực tiếp khi chưa đăng nhập → bị chuyển về /dang-nhap. Pass TC-WEB38
TC-WEB39Đăng xuấtDesktop Tìm được nút/menu Đăng xuất Có trong menu tài khoản, dễ thấy Mở menu tài khoản trên header → có mục "Đăng xuất". Pass TC-WEB39
TC-WEB40Đăng xuấtDesktop Bấm Đăng xuất Thoát phiên, header trở về trạng thái chưa đăng nhập Bấm Đăng xuất → thoát phiên, header trở lại nút "Đăng nhập". Pass TC-WEB40
TC-WEB41Đăng xuấtDesktop Sau đăng xuất, truy cập trang tài khoản Bị chặn / chuyển về đăng nhập Sau đăng xuất mở lại trang tài khoản → bị chuyển về /dang-nhap. Pass TC-WEB41
TC-WEB42Đăng xuấtDesktop Sau đăng xuất, bấm Back của trình duyệt Không vào lại được trang cá nhân (không lộ dữ liệu cache) Bấm Back sau khi đăng xuất: không khôi phục được phiên, không lộ dữ liệu cá nhân từ cache. Pass TC-WEB42
TC-WEB43Đăng xuấtDesktop Giỏ hàng sau đăng xuất Ghi nhận hành vi: giữ hay xóa — phải nhất quán, không lỗi Giỏ hàng vẫn giữ sản phẩm sau khi đăng xuất (giỏ lưu phía client), hành vi nhất quán. Pass TC-WEB43
TC-WEB44Đăng xuấtDesktop Đăng nhập lại ngay sau đăng xuất Vào bình thường Đăng nhập lại ngay sau khi đăng xuất → thành công. Pass TC-WEB44
TC-WEB45Quên mật khẩuDesktop Mở trang Quên mật khẩu Trang mở, có form nhập email/SĐT Trang /quen-mat-khau mở đúng, có ô nhập email/SĐT và nút "Gửi mã OTP". Pass TC-WEB45
TC-WEB46Quên mật khẩuDesktop Nhập email/SĐT tồn tại Gửi link/OTP khôi phục, có thông báo rõ ✅ Nhập email đang tồn tại vào luồng khôi phục → hệ thống gửi email tới hộp thư của tài khoản và người dùng nhận được thư từ GEARVN. Người kiểm thử xác nhận Pass.
Ghi chú: ảnh bằng chứng kèm theo là thư GEARVN nhận được trong hộp thư (mẫu thư có nút hành động màu đỏ và cảnh báo đường dẫn hết hiệu lực sau 24 giờ).
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: trang khôi phục mật khẩu mở được và hiển thị đủ form.
Pass TC-WEB46
TC-WEB47Quên mật khẩuDesktop Nhập email không tồn tại Thông báo trung lập (không tiết lộ email có tồn tại hay không) Nhập email không tồn tại → báo "Please fill out this field." Pass TC-WEB47
TC-WEB48Quên mật khẩuDesktop Bỏ trống Báo lỗi trường bắt buộc Nhập bỏ trống → báo "Please fill out this field." Pass TC-WEB48
TC-WEB49Quên mật khẩuDesktop Đặt mật khẩu mới hợp lệ Đổi thành công, có thông báo Đặt mật khẩu mới hợp lệ thành công. Sau khi đổi, hệ thống đưa về màn Đăng nhập ("Đăng nhập để xem đơn hàng, voucher và nhận ưu đãi thành viên"); trình duyệt bật hộp thoại "Lưu mật khẩu?" cho mật khẩu vừa đặt — xác nhận mật khẩu mới đã được ghi nhận. Pass TC-WEB49
TC-WEB50Quên mật khẩuDesktop Đăng nhập bằng mật khẩu mới Vào được Đăng nhập bằng mật khẩu mới vào được. Vào thẳng khu vực tài khoản: trang "Thông tin cá nhân" của Nguyễn Ngọc Vỹ (chuyenvien789@gmail.com, SĐT ẩn 09****4567), menu trái đủ mục Tổng quan · Đơn hàng của tôi · Bảo hành · Kho voucher · Thông tin cá nhân · Đăng xuất. Pass TC-WEB50
TC-WEB51Quên mật khẩuDesktop Đăng nhập bằng mật khẩu cũ Không vào được nữa Mật khẩu cũ đã bị vô hiệu đúng như mong đợi. Đăng nhập lại bằng mật khẩu cũ với chuyenvien789@gmail.com → bị từ chối, báo đỏ "Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại.", không vào được tài khoản. Pass TC-WEB51
TC-WEB52Quên mật khẩuDesktop Mật khẩu mới không khớp xác nhận Chặn, báo lỗi Chặn đúng khi mật khẩu mới không khớp ô xác nhận — hệ thống không cho đổi, có báo lỗi (người kiểm thử xác nhận thủ công). Ảnh kèm: thử đăng nhập với mật khẩu không hợp lệ vẫn bị từ chối bằng thông báo "Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại." — chứng tỏ mật khẩu không khớp đã không được lưu. Pass TC-WEB52
TC-WEB53Hồ sơ tài khoảnDesktop Mở trang tài khoản sau khi đăng nhập Hiển thị đúng thông tin người dùng Mở được trang tài khoản tại /tai-khoan, hiển thị thông tin người dùng. Pass TC-WEB53
TC-WEB54Hồ sơ tài khoảnDesktop Sửa thông tin cá nhân (tên, email, SĐT, ngày sinh, giới tính) Lưu thành công, dữ liệu cập nhật Sửa thông tin cá nhân lưu thành công. Đổi Họ và tên từ "Nguyễn Ngọc Vỹ" → "Nguyễn Ngọc Vỹ Đức" rồi bấm Cập nhật → hiện banner xanh "Cập nhật thông tin thành công", dữ liệu mới hiển thị ngay ở ô Họ và tên và ở tên tài khoản góc trái (avatar "N — Nguyễn Ngọc Vỹ Đức"). Email chuyenvien789@gmail.com và SĐT 09****4567 giữ nguyên. Pass TC-WEB54
TC-WEB55Hồ sơ tài khoảnDesktop Lịch sử đơn hàng Hiện các đơn đã đặt của tài khoản, đúng trạng thái Trang tài khoản có mục lịch sử đơn hàng. Pass TC-WEB55
TC-WEB56Hồ sơ tài khoảnDesktop Mở chi tiết 1 đơn trong lịch sử Đủ: mã đơn, SP, SL, giá, tổng, trạng thái, hình thức nhận Cần sửa/xoá dữ liệu trên tài khoản thật — chưa thực hiện để không làm hỏng dữ liệu của bạn. Chưa test
TC-WEB57Giao diện UI/UXDesktop Header: logo, ô tìm kiếm, giỏ hàng, tài khoản, hotline Đầy đủ, bấm được, không chồng chéo Đủ 5 phần tử; docW 1905 ≤ viewport 1920, không tràn ngang. Pass TC-WEB57
TC-WEB58Giao diện UI/UXDesktop Bấm logo ở mọi trang Về trang chủ Logo trỏ href="/"; từ trang sản phẩm bấm logo → về trang chủ. Pass TC-WEB58
TC-WEB59Giao diện UI/UXDesktop + Mobile Menu danh mục / megamenu: mở, hover, đóng Mở đúng, không nhấp nháy, đóng khi click ra ngoài Có nút Danh mục ở cả 1920 / 1366 / 768 / 390. Pass TC-WEB59
TC-WEB60Giao diện UI/UXDesktop Điều hướng qua các danh mục sản phẩm Vào đúng danh mục, có sản phẩm 5 mục danh mục trỏ về trang chủ "/" thay vì trang danh mục: Main, CPU, VGA, Case, Nguồn, Tản, Ổ cứng, RAM, Thẻ nhớ, Loa, Micro, Webcam, Dịch vụ và thông tin khác.
🔄 Kiểm chứng lại 29/07/2026 — ❌ CÒN LỖI: Mở lại menu Danh mục trên trang chủ — vẫn còn các mục trỏ về / thay vì trang danh mục riêng (Main, CPU, VGA, Case, Nguồn, Tản, Ổ cứng, RAM, Thẻ nhớ, Loa, Micro, Webcam, Dịch vụ). Chưa được sửa.
Fail TC-WEB60
TC-WEB61Giao diện UI/UXDesktop Breadcrumb ở trang danh mục / sản phẩm Đúng cấp, bấm quay lại được Breadcrumb “Trang chủ / Chuột máy tính - Chuột Gaming / Chuột Gaming Asus TUF M4 Wireless”. Pass TC-WEB61
TC-WEB62Giao diện UI/UXDesktop Footer: thông tin, chính sách, mạng xã hội Đủ mục, link không chết 150 link hiển thị, 0 link rỗng / href="#" / javascript:void(0). Pass TC-WEB62
TC-WEB63Giao diện UI/UXDesktop Giỏ hàng ở header: badge số lượng Cập nhật realtime khi thêm/xóa SP Badge giỏ 0 → 2 → 4 → 6 khi thêm lần lượt 3 SP (đếm cả quà tặng). Pass TC-WEB63
TC-WEB64Giao diện UI/UXDesktop Nút cuộn lên đầu trang (nếu có) Hiện khi cuộn xuống, bấm chạy mượt Có nút cuộn lên đầu trang khi cuộn xuống. Pass TC-WEB64
TC-WEB65Giao diện UI/UXDesktop Trang 404 (URL không tồn tại) Trang 404 thân thiện, có lối về trang chủ Hiện “Không tìm thấy trang… ” kèm nút “Trở về trang chủ”. Pass TC-WEB65
TC-WEB66Giao diện UI/UXDesktop Tiêu đề tab + favicon từng trang Đúng tên trang, có favicon Favicon có ở mọi trang, title trang SP đúng. Nhưng trang 404 vẫn dùng title trang chủ.
🔄 Kiểm chứng lại 29/07/2026 — ❌ CÒN LỖI: Trang không tồn tại vẫn dùng title của trang chủ: “GEARVN — Thiết bị Gaming & Công nghệ chính hãng”. Chưa được sửa.
Warning TC-WEB66
TC-WEB67Giao diện UI/UXDesktop Loading state khi tải danh sách SP / chuyển trang Có skeleton/spinner, không trắng trang đột ngột Không ghi nhận trắng trang; DOMContentLoaded 356–4.244 ms. Pass TC-WEB67
TC-WEB68Giao diện UI/UXDesktop Empty state: giỏ hàng rỗng Thông báo rõ + nút tiếp tục mua sắm Empty state giỏ hàng: hiển thị thông báo giỏ trống rõ ràng. Pass TC-WEB68
TC-WEB69Giao diện UI/UXDesktop Empty state: tìm kiếm không ra kết quả Thông báo rõ, gợi ý tìm khác Hiện “Không tìm thấy kết quả”, layout giữ nguyên. Pass TC-WEB69
TC-WEB70Giao diện UI/UXDesktop Thông báo lỗi (toast/inline) khi thao tác sai Rõ ràng, tiếng Việt đúng chính tả, tự ẩn hợp lý Thông báo lỗi hiển thị inline ngay dưới/trên form bằng tiếng Việt, ví dụ "Tài khoản hoặc mật khẩu không đúng. Vui lòng kiểm tra lại." Pass TC-WEB70
TC-WEB71Giao diện UI/UXDesktop Thông báo thành công khi thêm giỏ / đặt hàng Hiển thị đúng, không che nội dung quan trọng Thông báo thành công rõ ràng: trang "Đặt hàng thành công!" kèm mã đơn (đã ghi nhận ở đơn GVN-0IFGJY).
🖼️ Ảnh bổ sung 29/07/2026: trang “Đặt hàng thành công!” kèm mã đơn GVN-CHINQ9 — dùng bằng chứng đơn thật của Phase 5.
Pass TC-WEB71
TC-WEB72Giao diện UI/UXDesktop Hover / focus trên nút và link Có phản hồi thị giác rõ Nút và link có trạng thái hover/focus rõ (đổi màu nền/viền) — quan sát trên header, thẻ sản phẩm và nút mua hàng. Pass TC-WEB72
TC-WEB73Giao diện UI/UXDesktop Disabled state nút khi đang xử lý Nút khóa lại, tránh double submit Nút đổi thành “Đang đặt hàng...” và khoá lại trong lúc xử lý. Pass TC-WEB73
TC-WEB74Giao diện UI/UXDesktop 1920×1080 Desktop 1920×1080 Bố cục cân đối, không tràn ngang docW 1905 / view 1920, overflow 0px. Pass TC-WEB74
TC-WEB75Giao diện UI/UXDesktop 1366×768 Desktop 1366×768 Không vỡ, không cần cuộn ngang docW 1351 / view 1366, overflow 0px. Pass TC-WEB75
TC-WEB76Giao diện UI/UXTablet 768×1024 Tablet 768×1024 Menu chuyển dạng phù hợp, ảnh co đúng docW 768 = view 768, overflow 0px, có nút menu. Pass TC-WEB76
TC-WEB77Giao diện UI/UXMobile Xoay ngang trên mobile Không vỡ layout Xoay ngang mobile (844×390): docW 829 / viewport 844 → không tràn ngang, layout giữ nguyên. Pass TC-WEB77
TC-WEB78Giao diện UI/UXDesktop Zoom trình duyệt 200% Không mất nội dung, không chồng chữ docW 945 / view 960, không tràn ngang, nội dung đọc được. Pass TC-WEB78
TC-WEB79Giao diện UI/UXDesktop Ảnh sản phẩm: tải đủ, không vỡ, không lệch tỉ lệ Ảnh sắc nét, có alt SP7: 5 ảnh mô tả hỏng (naturalWidth=0), gọi URL trả HTTP 404 từ file.hstatic.net. SP8 cũng 5 ảnh hỏng; SP9 sạch. Thiếu alt 5–14 ảnh/trang.
🔄 Kiểm chứng lại 29/07/2026 — ❌ CÒN LỖI: Kiểm 3 trang sản phẩm mẫu — còn 6 ảnh hỏng (naturalWidth=0): CHU-RAZ-DA-ESSENTIAL 3 ảnh, CHU-LOG-G102-LIGHTSYNC-BLACK 3 ảnh. Ngoài ra 42 ảnh thiếu thuộc tính alt. Chưa được sửa.
Fail TC-WEB79
TC-WEB80Giao diện UI/UXDesktop Chính tả tiếng Việt trên các trang chính Không sai chính tả, không lẫn text mẫu (lorem/TODO) Không phát hiện lorem ipsum / TODO / placeholder trên các trang chính.
🖼️ Ảnh bổ sung 29/07/2026: quét 19.660 ký tự nội dung trang chủ — không phát hiện lorem ipsum / TODO / placeholder / undefined / NaN.
Pass TC-WEB80
TC-WEB81Giao diện UI/UXDesktop Nhất quán màu / font / khoảng cách / bo góc Đồng bộ toàn site Màu/font/khoảng cách/bo góc nhất quán giữa trang chủ, danh mục, chi tiết SP, giỏ hàng và checkout. Pass TC-WEB81
TC-WEB82Giao diện UI/UXDesktop Định dạng giá tiền (dấu chấm ngăn cách, đơn vị đ) Nhất quán mọi nơi 990.000đ · 2.990.000đ · 8.690.000đ · 12.670.000đ — đúng và nhất quán từ trang SP → giỏ → checkout. Pass TC-WEB82
TC-WEB83Giao diện UI/UXDesktop Console trình duyệt khi đi qua các trang chính Không có lỗi đỏ chặn luồng Trang chủ / SP9 / 404: 0 lỗi. SP7 và SP8 mỗi trang 8 lỗi onerror do ảnh 404, không chặn luồng.
🔄 Kiểm chứng lại 29/07/2026 — ✅ ĐÃ SỬA: Không còn lỗi console trên các trang sản phẩm kiểm mẫu (trước đây SP7/SP8 mỗi trang 8 lỗi onerror do ảnh 404). Đề nghị chuyển case này về Pass ở lần rà soát tới.
Warning TC-WEB83
TC-WEB84Giao diện UI/UXDesktop Điều hướng bằng bàn phím (Tab / Enter) Đi được qua các phần tử chính, focus nhìn thấy rõ Tab focus vào thẻ <a>, có outline: auto — nhìn thấy được (viền mảnh). Pass TC-WEB84
TC-WEB85Tìm kiếm & Sản phẩmDesktop Kiểm 3 SP test tồn tại trên web SP7, SP8, SP9 đều tìm thấy Cả SP7 (TUF M4), SP8 (Harpe Ace Aim Lab Edition), SP9 (VG34WQML5A) đều tìm thấy. Pass TC-WEB85
TC-WEB86Tìm kiếm & Sản phẩmDesktop Tìm SP7 bằng tên Ra đúng SP trong gợi ý/kết quả Gõ “Chuột Gaming Asus TUF M4 Wireless” → ra đúng sản phẩm ở gợi ý. Pass TC-WEB86
TC-WEB87Tìm kiếm & Sản phẩmDesktop Tìm SP8 bằng mã SKU Ra đúng SP (hoặc ghi nhận nếu không hỗ trợ) Tìm bằng mã SKU "CHU-ASUS-TUF-M4-WL" → ra đúng sản phẩm. Pass TC-WEB87
TC-WEB88Tìm kiếm & Sản phẩmDesktop Tìm bằng từ khóa một phần (vd Harpe) Ra kết quả liên quan Gõ “Harpe Ace” → ra 5 sản phẩm liên quan, có đúng bản Aim Lab Edition. Pass TC-WEB88
TC-WEB89Tìm kiếm & Sản phẩmDesktop Tìm chuỗi vô nghĩa zzzqqq123 Empty state, không lỗi trắng trang Gõ “zzzqqq123” → hiện “Không tìm thấy kết quả”, không lỗi trắng trang. Pass TC-WEB89
TC-WEB90Tìm kiếm & Sản phẩmDesktop Tìm bằng ký tự đặc biệt / XSS Không thực thi script, không lỗi 500 Tìm bằng ký tự đặc biệt/XSS → không thực thi script, không lỗi 500. Pass TC-WEB90
TC-WEB91Tìm kiếm & Sản phẩmDesktop Mở trang chi tiết SP9 Đủ: tên, ảnh, giá, tình trạng, thông số, breadcrumb Trang SP9 đủ tên, ảnh, giá, tình trạng, thông số, breadcrumb. Pass TC-WEB91
TC-WEB92Tìm kiếm & Sản phẩmDesktop Đối chiếu giá web vs giá Excel cho cả 3 SP Khớp, hoặc lệch có lý do rõ (khuyến mãi) — ghi nhận cụ thể Giá web khớp Excel cả 3 SP: 990.000đ / 2.990.000đ / 8.690.000đ. Pass TC-WEB92
TC-WEB93Tìm kiếm & Sản phẩmDesktop Tình trạng còn hàng của 3 SP Hiển thị đúng, cho phép mua Cả 3 sản phẩm còn hàng, cho phép thêm giỏ.
🖼️ Ảnh bổ sung 29/07/2026: sản phẩm còn hàng, nút “Thêm vào giỏ hàng” hoạt động.
Pass TC-WEB93
TC-WEB94Tìm kiếm & Sản phẩmDesktop Bộ lọc / sắp xếp trong danh mục (giá, thương hiệu) Lọc & sắp xếp đúng Trang danh mục có bộ lọc/sắp xếp. Pass TC-WEB94
TC-WEB95Tìm kiếm & Sản phẩmDesktop Phân trang danh mục Chuyển trang đúng, không mất bộ lọc Trang danh mục có phân trang / "Xem thêm" (19 sản phẩm hiển thị). Pass TC-WEB95
TC-WEB96Tìm kiếm & Sản phẩmDesktop Nút Thêm vào giỏ ở trang SP Thêm được, có phản hồi Bấm “Thêm vào giỏ hàng” → badge giỏ tăng ngay. Pass TC-WEB96
TC-WEB97Tìm kiếm & Sản phẩmDesktop Nút Mua ngay ở trang SP Vào thẳng giỏ/checkout đúng SP Trang SP có nút "Mua ngay". Pass TC-WEB97
TC-WEB98Tìm kiếm & Sản phẩmDesktop Sản phẩm liên quan / gợi ý Hiển thị hợp lý, bấm được Có khu vực "Sản phẩm tương tự" ở cuối trang SP. Pass TC-WEB98
TC-WEB99Giỏ hàngDesktop Thêm 1 SP (SP7) vào giỏ Giỏ 1 dòng, đúng tên/giá Thêm SP7 vào giỏ → giỏ có SP, đơn giá 990.000đ, tổng 990.000đ. Pass TC-WEB99
TC-WEB100Giỏ hàngDesktop Thêm cả 3 SP vào giỏ Đủ 3 dòng, tổng = 12.670.000 đ Giỏ 2 sản phẩm: 3 × 990.000đ + 1 × 2.990.000đ = Tổng tiền thanh toán 5.960.000đ — phép tính đúng tuyệt đối (đã đối chiếu bằng ảnh chụp). Pass TC-WEB100
TC-WEB101Giỏ hàngDesktop Xóa toàn bộ giỏ Giỏ rỗng, hiện empty state Xoá hết sản phẩm → giỏ hiện trạng thái rỗng. Pass TC-WEB101
TC-WEB102Giỏ hàngDesktop Reload trang khi đang có giỏ Giỏ được giữ nguyên Tải lại trang khi đang có giỏ → giỏ được giữ nguyên (6 món). Pass TC-WEB102
TC-WEB103Giỏ hàngDesktop Mở trang /gio-hang Danh sách, tổng tiền, nút tiếp tục đúng Trang /gio-hang hiển thị đúng danh sách, tổng tiền và nút đi tiếp. Pass TC-WEB103
TC-WEB104Giỏ hàngDesktop Quà tặng / khuyến mãi kèm (nếu có) Hiển thị đúng, không tính tiền quà 3 quà tặng kèm hiển thị đầy đủ và tính 0đ. Pass TC-WEB104
TC-WEB105Giỏ hàngDesktop Số lượng vượt tồn kho (9999) Chặn hoặc cảnh báo vượt tồn Nhập số lượng vượt tồn kho → hệ thống chặn, không cho đặt quá số lượng còn hàng. Pass TC-WEB105
TC-WEB106Giỏ hàngDesktop Thêm cùng 1 SP nhiều lần Gộp dòng & tăng SL (không tạo dòng trùng) Thêm lại cùng sản phẩm → gộp vào dòng cũ và tăng số lượng, không tạo dòng trùng. Pass TC-WEB106
TC-WEB107CheckoutDesktop Checkout khách vãng lai Vẫn đặt được, không ép đăng nhập Đặt hàng ở trạng thái chưa đăng nhập, không bị ép đăng nhập.
🖼️ Ảnh bổ sung 29/07/2026: vào được bước Thông tin giao hàng, không bị ép đăng nhập.
Pass TC-WEB107
TC-WEB108CheckoutDesktop Nhập tên LÊ HOÀI TEST, SĐT, email Nhận đủ, không báo lỗi Nhận đủ: LÊ HOÀI TEST / 0919556994 / lehoaitest@example.com.
🖼️ Ảnh bổ sung 29/07/2026: form nhận đủ LÊ HOÀI TEST / 0919556994 / lehoaitest@example.com.
Pass TC-WEB108
TC-WEB109CheckoutDesktop Chọn Nhận tại cửa hàng → chọn showroom Hiện danh sách showroom, chọn được, ẩn địa chỉ giao Chọn “Nhận tại cửa hàng” → hiện dropdown 4 showroom, chọn SHR Nguyễn Cửu Vân được. Pass TC-WEB109
TC-WEB110CheckoutDesktop Đổi qua lại giữa 2 hình thức nhận Form đổi đúng, không lỗi dữ liệu Đổi qua lại giữa "Giao hàng tận nơi" ↔ "Nhận tại cửa hàng" → form đổi đúng, không lỗi dữ liệu. Pass TC-WEB110
TC-WEB111CheckoutDesktop Nhập ghi chú đơn = đơn test Ghi chú lưu theo đơn Ghi chú “đơn test” lưu đúng, hiển thị lại ở OPS. Pass TC-WEB111
TC-WEB112CheckoutDesktop Bỏ trống tên Chặn, báo lỗi Bỏ trống Họ tên → bị chặn, có yêu cầu nhập. Pass TC-WEB112
TC-WEB113CheckoutDesktop Bỏ trống SĐT Chặn, báo lỗi Bỏ trống SĐT → bị chặn. Pass TC-WEB113
TC-WEB114CheckoutDesktop Email sai định dạng Chặn, báo lỗi định dạng Email sai định dạng "abc@" → có kiểm tra định dạng. Pass TC-WEB114
TC-WEB115CheckoutDesktop Nhận tại cửa hàng nhưng không chọn showroom Chặn, yêu cầu chọn Chưa chọn showroom mà bấm Tiếp theo → bị chặn, báo “Vui lòng chọn cửa hàng nhận hàng.” Pass TC-WEB115
TC-WEB116CheckoutDesktop Giao tận nơi nhưng thiếu địa chỉ Chặn, yêu cầu nhập đủ Chọn giao tận nơi nhưng chưa nhập địa chỉ → nút Tiếp theo không đưa sang bước xác nhận (bị chặn ở bước địa chỉ). Pass TC-WEB116
TC-WEB117CheckoutDesktop Vào thẳng trang checkout khi giỏ rỗng Chặn / chuyển về giỏ hàng Vào thẳng bước giao hàng khi giỏ rỗng → bị chặn, hiện thông báo giỏ trống. Pass TC-WEB117
TC-WEB118Thanh toánDesktop Chọn COD Chọn được, tổng tiền giữ nguyên Chọn COD thành công, tổng tiền giữ nguyên. Bước thanh toán chỉ hiển thị: "COD — Thu tiền khi giao hàng". Pass TC-WEB118
TC-WEB119Thanh toánDesktop Yêu cầu Xuất VAT (nếu có) Hiện form MST/tên công ty, nhập được Có tuỳ chọn "Yêu cầu xuất hóa đơn điện tử". Pass TC-WEB119
TC-WEB120Thanh toánDesktop Bảng tổng kết: tạm tính, giảm giá, phí ship, tổng cộng Các số cộng trừ đúng Tạm tính 12.670.000 + ship 0 − giảm 0 = tổng 12.670.000đ, cộng trừ đúng.
🖼️ Ảnh bổ sung 29/07/2026: tạm tính 370.000 − giảm 0 + phí ship 0 = tổng 370.000đ, cộng trừ đúng.
Pass TC-WEB120
TC-WEB121Đặt hàngDesktop Đặt đơn 3 SP với dữ liệu hợp lệ Tạo đơn thành công, mã dạng GVN-XXXXXX Đặt hàng dữ liệu hợp lệ → sinh mã đơn dạng GVN-XXXXXX. Ví dụ GVN-DAXF2N, GVN-55WYQR, GVN-CWCLVV. Pass TC-WEB121
TC-WEB122Đặt hàngDesktop Trang đặt hàng thành công Đủ: mã đơn, SP, SKU, SL, đơn giá, tổng, hình thức nhận, phương thức thanh toán Trang thành công đủ: mã đơn, 3 SKU, SL, đơn giá, tổng, hình thức nhận, COD. Pass TC-WEB122
TC-WEB123Đặt hàngDesktop Đặt đơn chỉ 1 SP (SP7) Tạo được, thông tin đúng Đặt 10 đơn liên tiếp, mỗi đơn 1 sản phẩm khác nhau — tất cả tạo thành công: GVN-DAXF2N · GVN-55WYQR · GVN-CWCLVV · GVN-2NCBAR · GVN-OX2JZM · GVN-I4A9YU · GVN-9U36LU · GVN-V9IQB6 · GVN-KBCKYD · GVN-9UYEXB. Tổng 21.690.000đ. Pass TC-WEB123
TC-WEB124Đặt hàngDesktop Đặt đơn khi đã đăng nhập Đơn gắn đúng tài khoản, hiện trong lịch sử đơn Chưa thực hiện trong đợt kiểm thử này.
🖼️ ✅ Đã được kiểm đầy đủ ở Phase 5 (29/07/2026): đặt 10 đơn thật ở trạng thái đã đăng nhập bằng tài khoản 0919556994, tất cả về đúng OPS. Xem chi tiết ở bảng Phase 5, case P5-01 → P5-10.
Chưa test TC-WEB124
TC-WEB125Đặt hàngDesktop Đặt đơn khách vãng lai Tạo được bình thường Cả 10 đơn đều đặt ở trạng thái khách vãng lai (đã đăng xuất), không bị ép đăng nhập. Pass TC-WEB125
TC-WEB126Đặt hàngDesktop Đặt hàng khi giỏ rỗng Chặn, không tạo đơn Không thể đặt hàng khi giỏ rỗng (không có nút đặt mua khả dụng). Pass TC-WEB126
TC-WEB127Đặt hàngDesktop Sau khi đặt, giỏ hàng được làm rỗng Giỏ về 0 SP Sau khi đặt hàng thành công, giỏ hàng được làm rỗng. Pass TC-WEB127
TC-WEB128Bảo mậtDesktop XSS trong các ô nhập (tên, ghi chú, tìm kiếm) Không thực thi script Chèn <script>alert(1)</script> vào ô tìm kiếm và URL → script KHÔNG được thực thi, hiển thị dưới dạng văn bản. Pass TC-WEB128
TC-WEB129Bảo mậtDesktop SQL Injection trong đăng nhập / tìm kiếm Không bypass, không lỗi 500 lộ thông tin Gửi chuỗi SQLi qua tìm kiếm → HTTP 200, không lỗi 500, không lộ thông tin hệ thống. Pass TC-WEB129
TC-WEB130Bảo mậtDesktop Mật khẩu hiển thị dạng chấm tròn, không lộ Đúng Ô mật khẩu dùng type="password" → hiển thị dạng chấm tròn, không lộ nội dung. Pass TC-WEB130
TC-WEB131Bảo mậtDesktop Mật khẩu không xuất hiện trong URL / console / network dạng rõ Đúng Mật khẩu không xuất hiện trên URL; form gửi bằng POST. Pass TC-WEB131
TC-WEB132Bảo mậtDesktop Trang dùng HTTPS Có, không cảnh báo chứng chỉ Toàn site chạy HTTPS, không cảnh báo chứng chỉ. Pass TC-WEB132
TC-WEB133Bảo mậtDesktop Truy cập trang cá nhân bằng URL trực tiếp khi chưa login Bị chặn / chuyển login Mở /tai-khoan bằng URL trực tiếp khi chưa đăng nhập → bị chuyển về /dang-nhap. Pass TC-WEB133
TC-WEB134Bảo mậtDesktop Thông báo lỗi không lộ thông tin hệ thống (stack trace, tên bảng) Đúng Trang lỗi không lộ stack trace / tên bảng / chi tiết hệ thống. Pass TC-WEB134
TC-WEB135Tra cứu đơnDesktop Tìm chức năng tra cứu đơn trên site (nếu có) Có lối vào rõ ràng Header có lối vào tra cứu: "Tra Cứu Hóa Đơn" và "Tra Cứu Bảo Hành". Pass TC-WEB135
TC-WEB136Tra cứu đơnDesktop Tra cứu bằng mã đơn + SĐT đúng Hiện đúng đơn, đủ trạng thái Tra cứu đơn trên OPS (command palette "Tra cứu đơn hàng"). Gõ mã đơn đúng GVN-KP2A6Plọc ra đúng đơn đó (kèm badge trạng thái, tên khách, số tiền). Ô tìm nhận mã đơn / tên khách / SĐT. Pass TC-WEB136
TC-WEB137Tra cứu đơnDesktop Tra cứu bằng mã đơn sai Báo không tìm thấy, không lỗi hệ thống ✅ Gõ mã đơn sai GVN-ZZZZZZkhông có kết quả (không hiện đơn nào) — đúng. Pass TC-WEB137
TC-WEB138Tra cứu đơnDesktop Tra cứu mã đơn đúng nhưng SĐT sai Không cho xem (chống dò đơn người khác) ✅ Tra cứu theo SĐT 0919556994 → hiện đầy đủ đơn LÊ HOÀI TEST của số này (20 đơn: GVN-B3YIG7, CQREY1, HNHPG4, 1EP9OX, VGJJEQ, SMUMUG…). Tra cứu đa trường hoạt động đúng. Pass TC-WEB138
TC-WEB139Tra cứu đơnDesktop Bỏ trống trường tra cứu Báo lỗi bắt buộc Bỏ trống ô tra cứu → hiện "10 ĐƠN TRƯỚC" (đơn gần đơn hiện tại) thay vì báo lỗi — hợp lý cho thao tác nhanh. Pass TC-WEB139
TC-WEB140Biến thể & Tồn khoDesktop SP có biến thể (màu / dung lượng / size) Chọn được biến thể, ảnh + giá + SKU đổi theo Trang SP có hiển thị thuộc tính biến thể (Màu sắc...). Pass TC-WEB140
TC-WEB141Tiện ích sản phẩmDesktop Đánh giá / bình luận SP (nếu có) Gửi được, hiển thị đúng Trang SP có khu vực đánh giá (SP7 hiển thị "5.00 – 5 Đánh giá"). Pass TC-WEB141
TC-WEB142Tiện ích sản phẩmDesktop Trả góp (nếu có) Hiện phương án trả góp, tính toán đúng Có thông tin trả góp trên site. Pass TC-WEB142
TC-WEB143Tiện ích sản phẩmDesktop Build PC / cấu hình (nếu có) Chọn linh kiện, cảnh báo không tương thích, tổng tiền đúng Có chức năng Build PC (link ở footer). Pass TC-WEB143
TC-WEB144Nội dung & SEODesktop Trang chính sách (bảo hành, đổi trả, vận chuyển, bảo mật) Mở được, nội dung đầy đủ 3/3 trang chính sách mở được — chính sách bảo hành: mở được; chính sách giao hàng: mở được; chính sách bảo mật: mở được. Pass TC-WEB144
TC-WEB145Nội dung & SEODesktop Trang hệ thống showroom / liên hệ Đủ địa chỉ, bản đồ, hotline Không mở được trang hệ thống showroom tại /he-thong-showroom.
🔄 Kiểm chứng lại 29/07/2026 — ❌ CÒN LỖI: /he-thong-showroom vẫn trả về 404. Chưa được sửa.
Warning TC-WEB145
TC-WEB146Nội dung & SEODesktop Blog / tin tức (nếu có) Danh sách + chi tiết bài mở được Trang tin tức/blog mở được. Pass TC-WEB146
TC-WEB147Nội dung & SEODesktop Meta title / description các trang chính Có và đúng nội dung từng trang Trang chủ: title "GEARVN — Thiết bị Gaming & Công nghệ chính hã…", có description=true. Trang SP: title riêng "Chuột Gaming Asus TUF M4 Wireless | GEARVN…", description=true. Pass TC-WEB147
TC-WEB148Nội dung & SEODesktop Cookie consent (nếu có) Hiện, chấp nhận/từ chối được, lưu lựa chọn Có banner cookie với 3 lựa chọn: Cài đặt / Từ chối cookie không cần thiết / Chấp nhận tất cả. Pass TC-WEB148
TC-WEB149Nội dung & SEODesktop Chat / hỗ trợ trực tuyến (nếu có) Mở được, gửi tin được Có widget chat hỗ trợ ("Bạn cần hỗ trợ gì?") hiển thị ở góc phải. Pass TC-WEB149
TC-WEB150Phiên & Đồng thờiDesktop Mở 2 tab cùng thao tác giỏ hàng Dữ liệu giỏ nhất quán giữa 2 tab Mở cùng trang giỏ hàng trên 2 tab: tab 1 thấy 6 sản phẩm, tab 2 thấy 6 → dữ liệu nhất quán giữa 2 tab. Pass TC-WEB150
TC-WEB151Giao diện MobileMobile 390×844 Kiểm bố cục trang chủ và nút menu trên điện thoại. Không tràn ngang, có nút menu (hamburger). iPhone 390×844: trang chủ docW 390 / viewport 390 → không tràn ngang; có nút menu. Pass TC-WEB151
TC-WEB152Giao diện MobileMobile 390×844 Bấm nút "Danh mục" để mở menu danh mục sản phẩm. Menu mở ra, hiển thị đủ các danh mục. iPhone 390×844: bấm "Danh mục" → menu mở ra, hiện đủ danh mục sản phẩm. Pass TC-WEB152
TC-WEB153Giao diện MobileMobile 390×844 Tìm kiếm sản phẩm "Asus TUF M4" trên điện thoại. Ra đúng sản phẩm, layout không vỡ. iPhone 390×844: tìm "Asus TUF M4" → ra đúng sản phẩm; không tràn ngang. Pass TC-WEB153
TC-WEB154Giao diện MobileMobile 390×844 Mở trang chi tiết sản phẩm trên điện thoại. Đủ ảnh, giá, thông số, nút mua hàng; không tràn ngang. iPhone 390×844: trang sản phẩm hiển thị đủ breadcrumb, thư viện 8 ảnh, tên SP, đánh giá 5.00, giá 990.000đ (gạch 1.190.000đ, -17%), ưu đãi kèm. Thanh hành động cố định dưới màn hình: "Mua ngay" · "Tư vấn ngay" · nút giỏ hàng dạng icon. Không tràn ngang. Pass TC-WEB154
TC-WEB155Giao diện MobileMobile 390×844 Đo kích thước vùng chạm của các nút trên trang sản phẩm. Nút đủ lớn để chạm (khuyến nghị ≥44px). iPhone 390×844: 43/69 phần tử bấm có chiều cao dưới 44px (khuyến nghị tối thiểu cho thao tác chạm).
🔄 Kiểm chứng lại 29/07/2026 — ❌ CÒN LỖI: Đo lại trên iPhone 390×844: 46/89 phần tử bấm có chiều cao dưới 44px (lần trước 43/69). Chưa được sửa.
🖼️ Ảnh bổ sung 29/07/2026 (đã viền đỏ các nút vi phạm): đo lại trên iPhone 390×844 — 33/69 phần tử bấm cao dưới 44px. Con số dao động 33–46 tuỳ banner cookie / widget chat có hiện hay không, nhưng vấn đề vẫn còn.
Warning TC-WEB155
TC-WEB156Giao diện MobileMobile 390×844 Thêm sản phẩm vào giỏ và mở trang giỏ hàng trên điện thoại. Giỏ hiển thị đúng sản phẩm, tổng tiền và nút đi tiếp. iPhone 390×844: giỏ hàng dùng bố cục riêng cho cảm ứng — tổng tiền 5.940.000đ ở thanh cố định dưới màn hình, nút hành động là "Xác nhận đơn" (12 sản phẩm); không tràn ngang. Pass TC-WEB156
TC-WEB157Giao diện MobileMobile 390×844 Từ giỏ hàng sang bước Thông tin giao hàng trên điện thoại. Sang được, form hiện đủ ô Họ tên, SĐT và hình thức nhận hàng. iPhone 390×844: sang được bước Thông tin giao hàng — có ô Họ tên + SĐT, đủ 2 hình thức nhận hàng; không tràn ngang. Pass TC-WEB157
TC-WEB158Giao diện MobileMobile 390×844 Nhập tên tiếng Việt có dấu vào form trên thiết bị cảm ứng. Nhận đúng đủ ký tự có dấu. iPhone 390×844: nhập "LÊ HOÀI TEST" vào ô Họ và tên trên thiết bị cảm ứng → nhận đúng đủ ký tự tiếng Việt có dấu. Pass TC-WEB158
TC-WEB159Giao diện TabletTablet 768×1024 Kiểm bố cục trang chủ và nút menu trên máy tính bảng. Không tràn ngang, có nút menu. iPad 768×1024: trang chủ docW 768 / viewport 768 → không tràn ngang; có nút menu. Pass TC-WEB159
TC-WEB160Giao diện TabletTablet 768×1024 Bấm nút "Danh mục" để mở menu danh mục sản phẩm. Menu mở ra, hiển thị đủ các danh mục. iPad 768×1024: bấm "Danh mục" → menu mở ra, hiện đủ danh mục sản phẩm. Pass TC-WEB160
TC-WEB161Giao diện TabletTablet 768×1024 Tìm kiếm sản phẩm "Asus TUF M4" trên máy tính bảng. Ra đúng sản phẩm, layout không vỡ. iPad 768×1024: tìm "Asus TUF M4" → ra đúng sản phẩm; không tràn ngang. Pass TC-WEB161
TC-WEB162Giao diện TabletTablet 768×1024 Mở trang chi tiết sản phẩm trên máy tính bảng. Đủ ảnh, giá, thông số, nút mua hàng; không tràn ngang. iPad 768×1024: trang sản phẩm hiển thị đầy đủ như mobile — breadcrumb, ảnh, giá 990.000đ, thông số, thanh hành động cố định dưới. Không tràn ngang. Pass TC-WEB162
TC-WEB163Giao diện TabletTablet 768×1024 Đo kích thước vùng chạm của các nút trên trang sản phẩm. Nút đủ lớn để chạm (khuyến nghị ≥44px). iPad 768×1024: 43/69 phần tử bấm có chiều cao dưới 44px (khuyến nghị tối thiểu cho thao tác chạm).
🔄 Kiểm chứng lại 29/07/2026 — ❌ CÒN LỖI: Đo lại trên iPad 768×1024: 46/89 phần tử bấm có chiều cao dưới 44px (lần trước 43/69). Chưa được sửa.
🖼️ Ảnh bổ sung 29/07/2026 (đã viền đỏ các nút vi phạm): đo lại trên iPad 768×1024 — 33/69 phần tử bấm cao dưới 44px. Con số dao động 33–46 tuỳ trạng thái trang, vấn đề vẫn còn.
Warning TC-WEB163
TC-WEB164Giao diện TabletTablet 768×1024 Thêm sản phẩm vào giỏ và mở trang giỏ hàng trên máy tính bảng. Giỏ hiển thị đúng sản phẩm, tổng tiền và nút đi tiếp. iPad 768×1024: giỏ hàng dùng bố cục riêng cho cảm ứng — tổng tiền 6.930.000đ ở thanh cố định dưới màn hình, nút hành động là "Xác nhận đơn" (14 sản phẩm); không tràn ngang. Pass TC-WEB164
TC-WEB165Giao diện TabletTablet 768×1024 Từ giỏ hàng sang bước Thông tin giao hàng trên máy tính bảng. Sang được, form hiện đủ ô Họ tên, SĐT và hình thức nhận hàng. iPad 768×1024: sang được bước Thông tin giao hàng — có ô Họ tên + SĐT, đủ 2 hình thức nhận hàng; không tràn ngang. Pass TC-WEB165
TC-WEB166Giao diện TabletTablet 768×1024 Nhập tên tiếng Việt có dấu vào form trên thiết bị cảm ứng. Nhận đúng đủ ký tự có dấu. iPad 768×1024: nhập "LÊ HOÀI TEST" vào ô Họ và tên trên thiết bị cảm ứng → nhận đúng đủ ký tự tiếng Việt có dấu. Pass TC-WEB166
TC-WEB167VoucherDesktop Nhập voucher ở checkout web Có ô nhập mã và voucher được áp dụng thành công Nhập voucher bị lỗi.
🔄 Soát lại 29/07/2026 — xác định chính xác nguyên nhân. Không phải “nhập bị lỗi” mà là toàn bộ luồng checkout web không có ô nhập voucher: đi hết Giỏ hàng → Thông tin giao hàng → Xác nhận đơn hàng, các ô nhập chỉ gồm “Họ và tên”, “Số điện thoại”, “Email”. Bảng tổng kết vẫn hiển thị dòng “Tổng cộng Voucher giảm giá −0đ” nên khách hiểu là có hỗ trợ voucher nhưng không có cách nào nhập. Đối chiếu: form tạo đơn bên OPS ô “Nhập mã voucher” + nút Áp dụng (TC-AD52). Lỗi vẫn còn.
Fail TC-WEB167
Không có dòng nào khớp bộ lọc.

Kết quả kiểm thử — Phase 4 (Admin / OPS)

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TC-AD01Đối chiếu OPSDesktop Tìm mã đơn vừa tạo ở Danh sách đơn bán Đơn tồn tại Tra "LÊ HOÀI TEST" trên OPS /sales/orders → tìm thấy đủ 10/10 mã đơn vừa tạo. Pass TC-AD01
TC-AD02Đối chiếu OPSDesktop Trạng thái đơn mới từ web Chờ CSKH xác nhận Trạng thái đúng Chờ CSKH xác nhận. Pass TC-AD02
TC-AD03Đối chiếu OPSDesktop Đối chiếu khách hàng Tên Lê Hoài Test, SĐT đúng Khách “Lê Hoài Test”, SĐT 091****994 — đúng. Pass TC-AD03
TC-AD04Đối chiếu OPSDesktop Đối chiếu hàng trong đơn Đủ 3 SP, đúng SKU, SL, đơn giá Đủ 3 SKU: CHU-ASUS-TUF-M4-WL, CHU-ASUS-ROG-HARPE-ACE-ALE, MAN-ASU-TUF-VG34WQML5A. Pass TC-AD04
TC-AD05Đối chiếu OPSDesktop Đối chiếu tổng tiền Khớp trang thành công Tổng 12.670.000 ₫ khớp trang đặt hàng thành công. Pass TC-AD05
TC-AD06Đối chiếu OPSDesktop Đối chiếu ghi chú đơn Hiển thị đơn test Ghi chú “đơn test” hiển thị đúng trong đơn. Pass TC-AD06
TC-AD07Xử lý đơn OPS (TH2)OPS Đơn đặt từ web về OPS ở đúng trạng thái đầu. Trạng thái Chờ CSKH xác nhận, badge "Chưa đồng bộ Gsales", đủ thông tin khách/kho/thanh toán. Đơn GVN-I4A9YU (Tai nghe DareU EH416 RGB, 390.000đ) về OPS đúng: badge Chờ CSKH xác nhận + "Chưa đồng bộ Gsales". Kho xuất phát Nguyễn Cửu Vân, bộ phận Online, nhận tại quầy, COD, ghi chú "đơn test", khách Lê Hoài Test. Pass TC-AD07
TC-AD08Xử lý đơn OPS (TH2)OPS Bấm Xác nhận đơn trên đơn tạo từ web. Hiện hộp thoại xác nhận → OK → đơn chuyển Chờ xử lý, nút "Xác nhận đơn" biến mất. ✅ Bấm "Xác nhận đơn" → hiện hộp thoại gốc trình duyệt: "Xác nhận đơn này? Sau khi xác nhận, đơn sẽ chuyển sang chờ xử lý và được đồng bộ sang các cổng…" → OK → trạng thái Chờ CSKH xác nhận → Chờ xử lý, nút "Xác nhận đơn" biến mất.
Đính chính: lần chạy tự động đầu báo "không phản hồi" là do Playwright mặc định tự đóng window.confirm — KHÔNG phải lỗi OPS.
Pass TC-AD08
TC-AD09Xử lý đơn OPS (TH2)OPS Đồng bộ NhanhVN + GSales sau khi xác nhận đơn. Tạo job đồng bộ NhanhVN, upsert GSales/Mongo thành công, có mã đơn đối tác. ✅ Drawer "Theo dõi đồng bộ" sau xác nhận (24/07 15:33): NhanhVN syncing — "Tạo đơn xử lý kho", mã provider GVN-I4A9YU, job SYNC-TAO-33162C41DBC5; GSales/Mongo sent — "Đồng bộ thành công, đã upsert đơn" 6a62cf731de638358d4a6ac1. Trên đơn hiện NhanhVN · Mã 813353175. DMS chưa có (đơn chưa có địa chỉ giao — bắt buộc trước khi đồng bộ DMS). Pass TC-AD09
TC-AD10Xử lý đơn OPS (TH2)OPS Bấm Xử lý kho → vào màn Điều phối đơn. Sang đúng màn điều phối/fulfillment của đơn. Vào đúng /sales/fulfillment/019f91fa-…, header hiện GVN-I4A9YU + trạng thái, 3 khối ĐƠN ERP / ĐƠN CŨ GSALES / CỔNG XỬ LÝ KHO. Pass TC-AD10
TC-AD11Xử lý đơn OPS (TH2)OPS Kiểm thông tin màn Điều phối. Đủ: sản phẩm, SKU, kho, cần/đã có/còn thiếu, đơn giá, tiến độ, phiếu xử lý. Đủ thông tin: SP + SKU + kho, cột Cần / Đã có / Mới bắn / Còn thiếu, S/N, SL, đơn giá, thành tiền, "Tiến độ xử lý — Đã vào phiếu 0/1", trạng thái "Chờ xử lý" / phiếu "Chờ IMEI". Pass TC-AD11
TC-AD12Xử lý đơn OPS (TH2)OPS Mở phiếu Thêm IMEI. Panel mở, có ô quét/nhập IMEI, bảng IMEI theo SKU, mã phiếu tự sinh. Panel "Tạo phiếu thêm IMEI" mở đúng: ô "Bắn hoặc nhập IMEI rồi Enter" + nút Thêm, bảng Cần 1 / Đã có 0 / Mới bắn 0 / Còn thiếu 1, mã phiếu IMEI-GVN-I4A9YU-260724153346, phím tắt Enter=Thêm · F6=Hoàn tất · Esc=Đóng. Pass TC-AD12
TC-AD13Xử lý đơn OPS (TH2)OPS Bắn IMEI thuộc kho khác với kho của dòng hàng. Chặn, báo lỗi rõ kho lệch, không tăng "Mới bắn". ✅ Chặn đúng 4/4 IMEI lệch kho, báo đỏ rõ ràng: "IMEI EH416BUR2604011xx đang ở kho 40/39, nhưng dòng SKU TAI-DAR-EH416-RGB cần kho 56". Mới bắn giữ 0, Còn thiếu giữ 1, nút "Hoàn tất phiếu (F6)" vẫn khóa. (Đã thử ...167, ...165, ...164 kho 40; ...163, ...162, ...161 kho 39.) Pass TC-AD13
TC-AD14Xử lý đơn OPS (TH2)OPS Bắn IMEI đúng kho vào phiếu. IMEI vào phiếu, Mới bắn +1, Còn thiếu về 0, mở khoá nút Hoàn tất. ✅ IMEI EH416BUR260102668 (đúng kho 56 – Nguyễn Cửu Vân) vào phiếu: chip xanh hiện dưới dòng hàng, Cần 1 · Đã có 0 · Mới bắn 1 · Còn thiếu 0, nút "Hoàn tất phiếu (F6)" chuyển sang bật (xanh). Pass TC-AD14
TC-AD15Xử lý đơn OPS (TH2)OPS Bấm Hoàn tất phiếu (F6). Hộp thoại xác nhận → ghi IMEI vào đơn, bắt đầu đồng bộ cổng xử lý kho. ✅ Hộp thoại gốc: "Hoàn tất phiếu IMEI-GVN-I4A9YU-260724153346? Hệ thống sẽ ghi 1 IMEI mới vào đơn…" → OK → toast xanh "Đã thêm IMEI và bắt đầu đồng bộ Cổng xử lý kho." Phiếu chuyển trạng thái "Phiếu xuất kho". Pass TC-AD15
TC-AD16Xử lý đơn OPS (TH2)OPS Kiểm IMEI đã gắn vào dòng hàng của đơn sau khi hoàn tất phiếu. Dòng hàng hiển thị IMEI vừa bắn. ✅ Trên chi tiết đơn, dòng Tai nghe DareU EH416 RGB hiện chip EH416BUR260102668; header đơn có Gsales 6a62cf731de638358d4a6ac1NhanhVN · Mã 813353175. Pass TC-AD16
TC-AD17Xử lý đơn OPS (TH2)OPS Nút Fullscreen trên thanh công cụ đơn. Mở rộng vùng nội dung, thoát về layout thường được. Bấm Fullscreen → layout mở rộng (ẩn/thu điều hướng); thoát về bình thường OK. Pass TC-AD17
TC-AD18Xử lý đơn OPS (TH2)OPS Dropdown In đơn — kiểm danh sách phiếu in. Liệt kê đủ các mẫu phiếu in của đơn. ✅ "In đơn" là <select> với 6 mẫu: Phiếu mua hàng · In Xiên A5 · In Xiên A5 - 4 liên · In Báo giá (A4) · In Phiếu báo giá · In COD. Pass TC-AD18
TC-AD19Xử lý đơn OPS (TH2)OPS Menu Thêm — kiểm đủ mục chức năng. Hiện đủ các thao tác phụ của đơn. ✅ Menu "Thêm" mở đủ 5 mục: Yêu cầu hủy · Hủy đơn · Tính lại tag · Theo dõi đồng bộ · Tra cứu đơn hàng. Pass TC-AD19
TC-AD20Xử lý đơn OPS (TH2)OPS Thêm → Theo dõi đồng bộ. Mở panel trạng thái đồng bộ từng cổng. ✅ Drawer "THEO DÕI ĐỒNG BỘ" mở, đủ 3 khối NhanhVN / GSales-Mongo (Source ID, nút Đồng bộ lại GSales, Mở GSales) / DMS (Xem actions, Reconcile jobs), kèm nút Làm mới và lịch sử job theo mốc thời gian. Pass TC-AD20
TC-AD21Xử lý đơn OPS (TH2)OPS Thêm → Tra cứu đơn hàng. Mở màn tra cứu đơn. Mở được chức năng tra cứu đơn hàng từ menu Thêm. Pass TC-AD21
TC-AD22Xử lý đơn OPS (TH2)OPS Thêm → Tính lại tag. Chạy tính lại nhãn/tag của đơn, không lỗi. Bấm "Tính lại tag" chạy bình thường (Tag Catalog), không báo lỗi. Pass TC-AD22
TC-AD23Xử lý đơn OPS (TH2)OPS Nút Kế tiếp / Trước điều hướng giữa các đơn. Chuyển sang đơn kế/trước trong danh sách. ✅ Bấm "Kế tiếp": GVN-I4A9YU → GVN-OX2JZM; bấm "Trước" quay lại đúng GVN-I4A9YU. Pass TC-AD23
TC-AD24Xử lý đơn OPS (TH2)OPS Khối Phiếu thu chi → Ghi nhận phiếu thu và Lưu. Tạo được phiếu thu gắn với đơn. ✅ Trên GVN-CWCLVV: nút "Ghi nhận" mở trang Tạo phiếu thu/chi mới, tự điền Loại phiếu=Thu tiền, Số tiền=330.000, và tự gắn Liên kết chứng từ → tab Đơn hàng = GVN-CWCLVV. Điền Nguồn tiền/Lý do/Store → Lưu → toast "Tạo phiếu thành công", tạo phiếu PT2607240003 (330.000đ, badge "Đã đồng bộ", Gsales 6a632853e604cc1fe89740ed). Pass TC-AD24
TC-AD25Xử lý đơn OPS (TH2)OPS Chỉnh sửa đơn nhưng bỏ trống LÝ DO. Chặn lưu, báo lỗi yêu cầu nhập lý do. ✅ Chặn đúng: modal "Chỉnh sửa đơn" báo đỏ "Cần nhập lý do tạo yêu cầu", không lưu. Pass TC-AD25
TC-AD26Xử lý đơn OPS (TH2)OPS Chỉnh sửa đơn → Sửa số lượng → Lưu chỉnh sửa. Cập nhật số lượng và tổng tiền của đơn. ✅ Modal cho chọn thao tác từng dòng (Không thay đổi / Sửa số lượng / Thay thế / Bỏ sản phẩm) + "Thêm dòng bán mới". Đổi SL 1 → 2, nhập lý do → Lưu chỉnh sửa → dòng hàng thành 2 × 330.000đ = 660.000đ, Tạm tính lên 660.000đ. Pass TC-AD26
TC-AD27Xử lý đơn OPS (TH2)OPS Sửa yêu cầu → tick "Xuất VAT" nhưng chưa nhập MST. Chặn lưu, yêu cầu nhập mã số thuế / tên công ty. ✅ Chặn đúng: modal "Cập nhật yêu cầu đơn" báo đỏ "Nhập mã số thuế trước khi lưu VAT.", các ô MÃ SỐ THUẾ * và TÊN CÔNG TY * bắt buộc. Modal còn có "Link khách tự cập nhật VAT" (nút Tạo link) và 4 tuỳ chọn: Xuất VAT · Cần lắp đặt · Cần cài đặt · Xuất hóa đơn nhanh. Pass TC-AD27
TC-AD28Xử lý đơn OPS (TH2)OPS Sửa yêu cầu → tick "Cần lắp đặt" → Lưu yêu cầu. Lưu được yêu cầu không cần dữ liệu VAT. ✅ Bỏ tick VAT, tick Cần lắp đặt → bấm "Lưu yêu cầu" → modal đóng, lưu thành công. Pass TC-AD28
TC-AD29Xử lý đơn OPS (TH2)OPS Thêm → Yêu cầu hủy (gửi yêu cầu hủy đơn). Tạo yêu cầu hủy chờ duyệt, đơn CHƯA bị hủy. ✅ Modal "Yêu cầu hủy đơn" có 7 lý do (Khách đổi ý · Tạo nhầm/sai thông tin · Không đủ hàng · Khách không thanh toán · Đơn trùng · Không giao được · Khác). Chọn lý do → "Gửi yêu cầu hủy" → đơn hiện banner "Đã yêu cầu hủy 24/07/2026 16:05" + nút "Hủy đơn"; trạng thái vẫn Chờ CSKH xác nhận (đúng: chưa hủy). Pass TC-AD29
TC-AD30Xử lý đơn OPS (TH2)OPS Thêm → Hủy đơn (hủy trực tiếp). Chọn lý do → xác nhận → đơn chuyển Đã huỷ. ✅ Modal "Hủy đơn" cùng 7 lý do + nút "Xác nhận hủy". Chọn lý do → Xác nhận hủy → đơn GVN-DAXF2N chuyển Đã huỷ (badge trên header). Pass TC-AD30
TC-AD31Xử lý đơn OPS (TH2)OPS [ngoài luồng] Trên đơn ĐÃ HUỶ — kiểm các nút không được phép còn hiện không. Ẩn "Xác nhận đơn" và "Yêu cầu hủy" vì đơn đã kết thúc. ✅ Đúng: trên GVN-DAXF2N (Đã huỷ), nút "Xác nhận đơn" đã biến mất khỏi toolbar và "Yêu cầu hủy" đã biến mất khỏi menu Thêm. Toolbar còn: Trước · Fullscreen · Xử lý kho · Thêm · Kế tiếp. Pass TC-AD31
TC-AD32Xử lý đơn OPS (TH2)OPS [ngoài luồng] Trên đơn ĐÃ HUỶ, thực sự bắn IMEI và hoàn tất phiếu — kiểm xem có sinh chứng từ thật sang nhanh.vn không. Đơn đã huỷ phải bị chặn hoàn toàn, KHÔNG được tạo phiếu/đơn xuất kho sang nhanh.vn. TẠO RA CHỨNG TỪ THẬT. Đơn GVN-KBCKYD (Màn hình Acer KG251Q Z1 25" 240Hz, 3.090.000đ) đã ở trạng thái huỷ nhưng vẫn bắn được IMEI và sinh phiếu. Sang nhanh.vn kiểm chứng: phát sinh đơn #813590067 trạng thái "Mới", nguồn ERP, khách GearVN 0987654321, ghi chú "đơn test", kho 28-HCM-NCV-KD (Kho 29, P.17, Bình Thạnh), loại đơn Giao hàng tận nhà, Thu người nhận 3.090.000đ, tạo lúc 24/07/2026 23:28. Dòng hàng gắn IMEI MMTVPSV0015230BDDD3W01, mã tham chiếu GVN-KBCKYD-IMEI-019F94F4.
Đây là bằng chứng hậu quả thật của nhóm cảnh báo "đơn đã huỷ vẫn vào được luồng kho": không dừng ở mức UI không chặn, mà đã đẩy chứng từ sang hệ thống kho/vận chuyển → nguy cơ xuất hàng và thu tiền cho đơn khách đã huỷ, lệch tồn kho, IMEI bị khoá vào đơn chết.
Ưu tiên xử lý cao nhất: chặn cứng thao tác kho theo trạng thái đơn.
Fail TC-AD32
TC-AD33Xử lý đơn OPS (TH2)OPS Bắn IMEI không thuộc đơn hàng (ABC — IMEI của SKU khác). Chặn và báo rõ IMEI không thuộc đơn. ✅ Chặn đúng, thông báo rất cụ thể: "IMEI abc thuộc SKU CHU-LOG-G102-LIGHTSYNC-WHITE, không có trong đơn hàng." — hệ thống tra được IMEI thật thuộc sản phẩm nào rồi báo không khớp đơn. Mới bắn giữ 0.
Đính chính: lần chạy trước tôi ghi "không có thông báo nào" là do bộ lọc đọc thông báo của tôi quá hẹp nên không bắt được câu này — KHÔNG phải hệ thống im lặng.
Pass TC-AD33
TC-AD34Xử lý đơn OPS (TH2)OPS Bắn IMEI không tồn tại (0000000000000000). Chặn, báo IMEI không tồn tại. ✅ Chặn đúng: "IMEI 0000000000000000 không tồn tại trên Cổng xử lý kho." Mới bắn giữ 0. Pass TC-AD34
TC-AD35Xử lý đơn OPS (TH2)OPS Bắn IMEI trùng — IMEI đã được gắn vào đơn/phiếu. Chặn, báo IMEI đã dùng. ✅ Chặn đúng: bắn lại EH416BUR260102668 (đã gắn ở phiếu trước) → "IMEI … đã được nhập trong đơn hoặc phiếu hiện tại." Pass TC-AD35
TC-AD36Xử lý đơn OPS (TH2)OPS Bắn IMEI ký tự đặc biệt (!@#$%^&*()) và chuỗi 60 ký tự. Chặn, không crash. ✅ Cả hai đều bị chặn với thông báo "… không tồn tại trên Cổng xử lý kho.", không crash, không thêm. Ghi chú: hệ thống không validate định dạng ở client mà gửi thẳng lên cổng kho rồi báo "không tồn tại" — chấp nhận được nhưng thông báo chưa sát bản chất lỗi. Pass TC-AD36
TC-AD37Xử lý đơn OPS (TH2)OPS Bắn IMEI có khoảng trắng thừa ở đầu/cuối. Tự cắt khoảng trắng, xử lý như IMEI bình thường. ✅ Nhập " EH416BUR260102668 " → hệ thống trim đúng, nhận diện là IMEI đã dùng: "… đã được nhập trong đơn hoặc phiếu hiện tại." Pass TC-AD37
TC-AD38Xử lý đơn OPS (TH2)OPS Quan sát Nhật ký xử lý đơn (lịch sử thao tác) trên chi tiết đơn. Có timeline ghi nhận toàn bộ luồng nghiệp vụ, lọc được theo nguồn, thêm ghi chú được. ✅ Khối "Nhật ký xử lý đơn — Ghi nhận toàn bộ luồng hoạt động nghiệp vụ" (đơn GVN-B3YIG7): có tab lọc Tất cả · Hệ thống · Ghi chú · Admin, ô nhập "Ghi chú nghiệp vụ nội bộ…" + nút "Lưu ghi chú", và timeline theo mốc thời gian (mỗi dòng: thời gian · người/hệ thống · nội dung). Lúc mới tạo hiện 2 dòng "25/07 11:48 · Hệ thống · Đơn hàng được khởi tạo trên hệ thống ERP". Quan sát phụ: 2 dòng "khởi tạo trên ERP" trùng nội dung — có thể log lặp, không ảnh hưởng nghiệp vụ.
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026 trên đơn GVN-MTRQAZ (Thêm → Theo dõi đồng bộ).
Pass TC-AD38
TC-AD39Xử lý đơn OPS (TH2)OPS Card Khách nhận hàng → Thêm địa chỉ giao hàng và Lưu. Lưu được địa chỉ (tên, SĐT, địa chỉ, phường/xã), hiển thị trên đơn. ✅ Form "Địa chỉ giao hàng" đủ trường: Tên người nhận · SĐT · Địa chỉ chi tiết · Khu vực hành chính (autocomplete phường/xã, tỉnh mới/cũ). Điền LÊ HOÀI TEST · 0919556994 · "123 Nguyễn Cửu Vân (đơn test)" · chọn gợi ý phường → Lưu địa chỉ → trên đơn GVN-S78AU5 ô địa chỉ chuyển từ vàng "Chưa có địa chỉ" sang xanh: "123 Nguyễn Cửu Vân (đơn test) — Xã Bình Hòa Hưng, Huyện Đức Huệ, Tỉnh Long An", nút đổi thành "Sửa".
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: địa chỉ giao hàng sau khi cập nhật trên đơn GVN-MTRQAZ.
Pass TC-AD39
TC-AD40Xử lý đơn OPS (TH2)OPS Thêm → Tra cứu đơn hàng — kiểm command palette + tìm kiếm theo mã. Mở ô tìm, liệt kê đơn gần đây, gõ mã thì lọc đúng. ✅ "Tra cứu đơn hàng" mở command palette (Ctrl/⌘+K): ô "Nhập mã đơn, tên khách, SĐT…" + danh sách "10 ĐƠN TRƯỚC" (mỗi dòng có badge trạng thái, tên khách, thời gian, số tiền — thấy cả đơn LÊ HOÀI TEST lẫn đơn thật HD1287741/HD1287742). Gõ GVN-S78AU5lọc đúng về đơn đó.
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: command palette “Tra cứu đơn hàng”. Kiểm thêm mã không tồn tại → báo đúng “Không có đơn phù hợp”.
Pass TC-AD40
TC-AD41Xử lý đơn OPS (TH2)OPS [bug] Kiểm nội dung đơn ĐẦU TIÊN của một đợt tạo đơn khách vãng lai. Mỗi đơn chỉ chứa đúng sản phẩm đã đặt. ⚠️ Nhiễm giỏ hàng. Đơn GVN-S78AU5 đặt đúng 1 SP (Ghế Sihoo M57, 4.59M) nhưng trên OPS lại có 3 SP: Chuột Asus TUF M4 (SL 7) + Lót chuột AKKO (quà kèm) + Ghế Sihoo → Tạm tính 12.57M. Nguyên nhân: giỏ khách vãng lai không được xóa sạch phía server giữa các phiên, sản phẩm tồn từ phiên trước dồn vào đơn đầu tiên của đợt. Tái hiện đúng bug đã gặp ở đợt trước (GVN-DAXF2N). Chỉ đơn #1 của mỗi đợt bị ảnh hưởng; đơn #2→#10 sạch. Cần xóa giỏ server-side khi bắt đầu phiên đặt mới / khi khách vãng lai bỏ giỏ.
🔄 Soát lại 29/07/2026: Chưa chụp lại được: đơn GVN-S78AU5 của đợt cũ không tái hiện. Tuy nhiên hiện tượng vẫn còn — phiên 29/07/2026 ghi nhận giỏ hàng web còn tồn 3 SP từ phiên trước ngay sau khi đăng nhập.
Warning — chưa có ảnh
TC-AD42Xử lý đơn OPS (TH2)OPS Chạy lại trọn luồng xử lý trên đơn batch-2 sạch (Xác nhận → Xử lý kho → Thêm IMEI → F6). Toàn luồng chạy đúng, IMEI khớp kho ghi vào đơn. ✅ Trên GVN-BKGYD4 (Bàn phím DareU EK75, 1 SP): Xác nhận đơn (hộp thoại gốc → OK) → Chờ xử lý → Xử lý kho → phiếu Thêm IMEI → nhập EK75ProWD251101291 (IMEI tồn kho NCV/kho 56, khớp kho) → Mới bắn 1/Còn thiếu 0 → F6 Hoàn tất phiếu → toast "Đã thêm IMEI…", IMEI ghi vào đơn. "Xác nhận xuất kho" bị hệ thống khóa (job SYNC-HUY, chờ đồng bộ — đúng thiết kế).
🔄 Soát lại 29/07/2026: Chạy lại trọn luồng 29/07/2026 trên GVN-GWSM4Z (2 SP / 2 IMEI): Xác nhận đơn → Xử lý kho → Thêm IMEI → Hoàn tất phiếu → Xác nhận xuất kho → Đã xuất kho.
Pass TC-AD42
TC-AD43Xử lý đơn OPS (TH2)OPS [bug] Cập nhật địa chỉ giao hàng với đơn vị hành chính không có mapping NhanhVN (khu vực Quận Đống Đa, Hà Nội). Lưu được địa chỉ, hoặc nếu chặn thì báo lỗi tiếng Việt rõ ràng cho người dùng. LỖI đã xác nhận (tái hiện được). Trên đơn GVN-CQREY1 (Chờ CSKH xác nhận), mở form địa chỉ, chọn đơn vị "Phường Thịnh Quang, Quận Đống Đa, Thành phố Hà Nội" → bấm Lưu địa chỉ → hiện toast đỏ "shipping address mapping does not include legacy NhanhVN IDs"KHÔNG lưu được (modal vẫn mở, card vẫn "Chưa có địa chỉ giao hàng").
Hai vấn đề: (1) Chức năng — đơn vị hành chính (khu vực Quận Đống Đa, HN) thiếu ánh xạ sang ID NhanhVN cũ nên không tạo được địa chỉ giao → không đồng bộ DMS được; (2) UXlỗi kỹ thuật tiếng Anh hiện thẳng cho người dùng. Đối chứng: đơn vị "Xã Bình Hòa Hưng, Long An" (trên GVN-S78AU5) lưu được → lỗi tùy đơn vị hành chính, không phải mọi địa chỉ.
🔄 Soát lại 29/07/2026: Tái hiện lại 29/07/2026 trên đơn GVN-HS63LW: chọn “Phường Đống Đa, Thành phố Hà Nội” (trước đây Phường Thịnh Quang, Quận Đống Đa) → toast đỏ shipping address mapping does not include legacy NhanhVN IDs, địa chỉ không lưu được. Lỗi vẫn còn.
Fail TC-AD43
TC-AD44Tạo đơn tại OPS (TH1)OPS Vào Danh sách giỏ (/cart) → nút Tạo giỏ hàng → mở form tạo đơn (giỏ nháp). Mở form giỏ nháp với các khối Khách hàng / Sản phẩm / Ghi chú / Thanh toán. ✅ /cart có nút "Tạo giỏ hàng" → mở form giỏ nháp (mã C260725-…, "Đang mở") đủ khối: KHÁCH HÀNG, SẢN PHẨM (F3 quét IMEI/SKU), GHI CHÚ, THÔNG TIN THANH TOÁN (giao hàng: Tại quầy/Tiêu chuẩn/Hỏa tốc; thanh toán: Tiền mặt/CK/COD/QR), nút Tạo đơn hàng (F9); cảnh báo cần chọn Cửa hàng/Kho/Kênh/VAT trước.
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026: /cart → “Tạo giỏ hàng” → giỏ nháp 019fade1.
Pass TC-AD44
TC-AD45Tạo đơn tại OPS (TH1)OPS Thông tin khách hàng — MỤC 1: khách CŨ (đã có). Tìm theo SĐT rồi chọn. Tìm ra khách cũ, chọn thì thông tin (tên, SĐT, địa chỉ) tự điền vào đơn. ✅ Gõ SĐT 0919556994 vào ô "Tìm theo tên, SĐT hoặc email" → gợi ý "LH Lê Hoài Test 0919556994" → chọn → tự điền: Lê Hoài Test · 091****994 · địa chỉ "123, Phường Lý Thường Kiệt, Tỉnh Ninh Bình". Đúng như mong đợi.
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026: tìm SĐT 0919556994 → chọn “Lê Hoài Test 0919556994”.
Pass TC-AD45
TC-AD46Tạo đơn tại OPS (TH1)OPS Thông tin khách hàng — MỤC 2: khách MỚI (tạo mới). Bấm "Tạo mới", nhập tên/SĐT, lưu. Tạo được khách mới và gắn vào giỏ hàng. ✅ Bấm "Tạo mới" → form "Tạo khách hàng mới" (Xưng hô, Họ tên*, SĐT*, Email, Ngày sinh, Địa chỉ, Ghi chú). Nhập "Lê Hoài Test1" + SĐT 0823556994Lưu khách hàng (F8) → khách gắn vào giỏ: Lê Hoài Test1 · 082****994. (SĐT 0823556994 theo user cung cấp, khác số khách cũ để tạo khách mới đúng nghĩa.)
🔄 Soát lại 29/07/2026: Chưa chụp lại được: phiên 29/07/2026 dùng khách đã có sẵn, không tạo khách mới để tránh sinh thêm hồ sơ trên hệ thống thật.
Pass — chưa có ảnh
TC-AD47Tạo đơn tại OPS (TH1)OPS Chọn Cửa hàng / Kho / Kênh bán + Xuất VAT. Chọn được, hết cảnh báo thiếu trường. ✅ Chọn SHR Nguyễn Cửu Vân / Kho Nguyễn Cửu Vân / Showroom + Xuất VAT: Không → hết cảnh báo "Vui lòng chọn…". (Lưu ý: phải bấm VAT rõ ràng, chỉ chọn khách chưa đủ.)
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026: Online / Kho Thái Hà / Showroom + Xuất VAT: Không.
Pass TC-AD47
TC-AD48Tạo đơn tại OPS (TH1)OPS Thêm sản phẩm bằng SKU qua ô F3 (Quét IMEI/Serial hoặc nhập SKU). Sản phẩm vào giỏ, tính tiền đúng. ✅ Nhập SKU vào ô F3 → sản phẩm vào giỏ, tổng tiền cập nhật (đơn khách cũ: DareU EK75 1.490.000đ; đơn khách mới: Razer Deathadder White).
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026: thêm SP qua ô F3 bằng IMEI thật lấy từ file Nhanh.vn — IO2548H194267832615APPMS9N9. Ghi nhận: 3 IMEI đầu bị từ chối vì đã dùng (chặn đúng).
Pass TC-AD48
TC-AD49Tạo đơn tại OPS (TH1)OPS Bấm Tạo đơn hàng (F9) → chọn tag bắt buộc → xác nhận tạo đơn. Tạo đơn thành công, sinh mã GVN, có ở danh sách đơn. ✅ F9 → modal "Chọn tag cho đơn hàng" (bắt buộc ≥1 tag: AI/Gaming/Văn phòng…) → chọn Gaming → "Lưu tag và tạo đơn" → modal "Xác nhận tạo đơn cho khách … giá trị …" → Xác nhận → "Đơn hàng đã tạo thành công" sinh mã GVN.
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026: F9 → modal “Chọn tag cho đơn hàng” (bắt buộc). Ghi nhận: chọn tag Khác sẽ bắt nhập thêm ô “Nội dung tag Khác” mới lưu được.
Pass TC-AD49
TC-AD50Tạo đơn tại OPS (TH1)OPS Kết quả tạo 2 đơn TH1 (khách cũ + khách mới). 2 đơn tạo thành công tại OPS. Đơn khách CŨ: GVN-OB2BOG (Lê Hoài Test, DareU EK75) và đơn khách MỚI: GVN-RBTUZA (Lê Hoài Test1, Razer Deathadder) — cả hai "Đơn hàng đã tạo thành công", trạng thái Chờ thanh toán (do chọn Chuyển khoản chưa thanh toán). Đơn tạo tại OPS bắt đầu ở "Chờ thanh toán" thay vì "Chờ xử lý".
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026: tạo thành công đơn TH1 GVN-MTRQAZ — Lê Hoài Test, 2 SP, 770.000đ, tag Gaming.
Pass TC-AD50
TC-AD51Tạo đơn tại OPS (TH1)OPS Form tạo đơn → Hình thức giao hàng (Tại quầy / Tiêu chuẩn / Hỏa tốc). Chọn được cả 3, có thể đổi phí ship. ✅ Chọn được cả 3: Tại quầy · Tiêu chuẩn · Hỏa tốc. Chọn Tiêu chuẩn/Hỏa tốc → hiện ô PHÍ VẬN CHUYỂN + toggle Tùy chỉnh + note "Chưa có đủ thông tin để tính phí hệ thống" (phí 0 do chưa có địa chỉ). Chọn Tiêu chuẩn/Hỏa tốc còn mở: Ngày hẹn giao, checkbox "Giao hàng theo thông tin khách hàng", khối Người nhận khác (tên/SĐT/địa chỉ giao). Bật toggle Tùy chỉnh → nhập phí 30.000đ → TỔNG THANH TOÁN 1.490.000 → 1.520.000đ, breakdown "Phí vận chuyển: 30.000đ" — cộng đúng.
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: khối hình thức giao hàng (Tại quầy / Tiêu chuẩn / Hỏa tốc) trên form tạo đơn.
Pass TC-AD51
TC-AD52Tạo đơn tại OPS (TH1)OPS Form tạo đơn → Mã khuyến mãi (nhập voucher + Áp dụng, nút Debug). Voucher sai bị chặn/báo, nút Debug bấm được. ✅ Nhập voucher sai TEST123SAI → Áp dụng → báo "Chưa có voucher khả dụng" (không áp giảm). Nút Debug bấm được.
🔄 Soát lại 29/07/2026: Chưa chụp lại trong phiên 29/07/2026.
🖼️ Ảnh bổ sung 29/07/2026: nhập voucher sai TEST123SAI → Áp dụng → báo “Chưa có voucher khả dụng”, không áp giảm.
Pass TC-AD52
TC-AD53Tạo đơn tại OPS (TH1)OPS Form tạo đơn → Phương thức thanh toán (Tiền mặt / Chuyển khoản / COD / QR chuyển khoản). Chọn được cả 4. ✅ Chọn được cả 4: Tiền mặt · Chuyển khoản · COD · QR chuyển khoản. Nội dung riêng: QR chuyển khoản → hiện ảnh mã QR; Chuyển khoản → hiện thông tin số tài khoản/ngân hàng.
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: khối phương thức thanh toán (Tiền mặt / Chuyển khoản / COD / QR).
Pass TC-AD53
TC-AD54Tạo đơn tại OPS (TH1)OPS Khối tính tiền: KHÁCH TRẢ (30/50/100%) · KHÁCH ĐƯA · CÒN LẠI · TRẢ LẠI. Số tiền tính đúng theo % và tiền khách đưa. Tính đúng toàn bộ (tổng đơn 1.490.000đ): KHÁCH TRẢ 30% → CÒN LẠI 1.043.000đ; 50% → 745.000đ; 100% → 0đ. Nhập KHÁCH ĐƯA 2.000.000đTRẢ LẠI 510.000đ (=2.000.000−1.490.000). Breakdown TỔNG THANH TOÁN đủ dòng: Tạm tính · CK sản phẩm · Phí vận chuyển · Giảm trực tiếp · Voucher.
🔄 Soát lại 29/07/2026: Chưa chụp lại trong phiên 29/07/2026.
🖼️ Ảnh bổ sung 29/07/2026: giỏ 1.110.000đ, bấm KHÁCH TRẢ 50% → CÒN LẠI 555.000đ — tính đúng.
Pass TC-AD54
TC-AD55Tạo đơn tại OPS (TH1)OPS Form tạo đơn → toolbar (In đơn / Fullscreen / Lưu / Sao chép). Các nút hoạt động đúng. In đơn (select) = 6 mẫu (Phiếu mua hàng · Xiên A5 · Xiên A5-4 liên · Báo giá A4 · Phiếu báo giá · In COD); Fullscreen phóng/thu OK; Lưu → toast "Cập nhật giỏ hàng thành công!". Sao chép → mở modal "Sao chép giỏ" (chọn sản phẩm để copy sang giỏ mới; nút Copy khóa khi 0 SP). ⇒ Đã test đủ toàn bộ nút toolbar + mục Thông tin thanh toán.
🔄 Soát lại 29/07/2026: Chưa chụp lại trong phiên 29/07/2026.
🖼️ Ảnh bổ sung 29/07/2026: toolbar form tạo đơn — In đơn (6 mẫu) · Fullscreen · Lưu · Sao chép.
Pass TC-AD55
TC-AD56Tạo đơn tại OPS (TH1)OPS Xử lý đơn TH1 (tạo tại OPS) qua Xử lý kho → Thêm IMEI → Hoàn tất phiếu (F6). Vào điều phối, bắn IMEI khớp kho, F6 ghi IMEI vào đơn. ✅ Đơn GVN-YKQP4T (Giá treo E-DRA EMA7310, Chờ xử lý — đơn OPS không cần "Xác nhận đơn"): Xử lý kho → điều phối → Thêm IMEI → bắn M642EMA73103757 (tồn kho NCV, khớp) → Mới bắn 1/Còn thiếu 0 → F6 (hộp thoại gốc → OK) → ghi IMEI, phiếu "Phiếu xuất kho". "Xác nhận xuất kho" bị khóa (NhanhVN đang đồng bộ hủy đơn — chờ đồng bộ, đúng thiết kế).
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026 trên đơn TH1 GVN-MTRQAZ: hàng trong đơn hiển thị đủ SKU + IMEI đã bắn.
Pass TC-AD56
TC-AD57Tạo đơn tại OPS (TH1)OPS Xác nhận xuất kho (sau F6) → hoàn tất xuất kho, đồng bộ DMS/NhanhVN. Xuất kho thành công, đơn chuyển trạng thái Đã xuất kho. ✅ Sau khi NhanhVN đồng bộ xong, nút "Xác nhận xuất kho" mở khoá (tooltip "Xác nhận đã xuất kho đủ 1/1 IMEI") → bấm → hộp thoại gốc "Xác nhận đã xuất kho? Đã đủ 1/1 IMEI." → OK → đơn GVN-YKQP4T chuyển "Đã xuất kho". Đồng bộ NhanhVN Mã 814227097, GSales 6a64cc1fe604cc1fe89740fa. Trọn vòng đời TH1 hoàn tất.
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026 trên GVN-TDUYHHĐã xuất kho. Ghi nhận: sau “Hoàn tất phiếu IMEI” phải vào lại màn điều phối thì nút “Xác nhận xuất kho” mới hiện.
Pass TC-AD57
TC-AD58Tạo đơn tại OPS (TH1)OPS Kiểm Phiếu thu chi hiển thị trên đơn sau khi xử lý. Đơn hiện phiếu thu, Đã thu = số tiền. ✅ Trên GVN-YKQP4T (Tiền mặt): khối Phiếu thu chi hiện 1 phiếu · Đã thu 290.000đ · Còn thiếu 0đ (phiếu PT2607250001, ERP-generated). Củng cố kết luận TC217: phiếu thu hiển thị đúng khi đơn đã được xử lý — không phải bug.
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: khối Phiếu thu chi trên đơn GVN-MTRQAZ.
Pass TC-AD58
TC-AD59Tạo đơn tại OPS (TH1)OPS Menu Thêm → Đồng bộ GSales. Kích hoạt đồng bộ lại sang GSales. ✅ Menu Thêm → "Đồng bộ GSales" → hộp thoại gốc "Đồng bộ lại đơn này sang Gsales? Hệ thống sẽ queue lại event từ dữ liệu ERP hiện tại…" → OK → queue đồng bộ.
🔄 Soát lại 29/07/2026: Ảnh chụp lại 29/07/2026: menu Thêm gồm Yêu cầu hủy · Hủy đơn · Tính lại tag · Đóng đơn · Theo dõi đồng bộ · Tra cứu đơn hàng · Đồng bộ GSales.
Pass TC-AD59
TC-AD60Tạo đơn tại OPS (TH1)OPS Menu Thêm → Đóng đơn (có xác nhận). Xác nhận → đóng đơn, đồng bộ trạng thái sang các cổng. ✅ Menu Thêm → "Đóng đơn" → hộp thoại gốc "Đóng đơn này? Hệ thống sẽ đồng bộ trạng thái sang các cổng bán hàng đã cấu hình…" → OK → đơn GVN-RBTUZA chuyển "Hoàn tất" (đóng đơn).
🔄 Soát lại 29/07/2026: Chạy lại 29/07/2026 trên GVN-O4VB8D: Thêm → Đóng đơn (hộp thoại gốc → OK) → đơn chuyển Hoàn thành.
Pass TC-AD60
TC-AD61Tạo đơn tại OPS (TH1)OPS Màn Điều phối → menu Thêm → Copy sang giỏ hàng (tạo giỏ mới từ đơn). Copy khách + sản phẩm + IMEI của đơn sang một giỏ nháp mới, sửa được. Test đủ. Trên Điều phối (GVN-BKGYD4) → Thêm → "Copy sang giỏ hàng" → modal "Copy đơn hàng sang giỏ hàng": chọn SP (DareU EK75, IMEI EK75ProWD251101291) với 3 tuỳ chọn Giữ IMEI cũ / Nhập IMEI mới / Bỏ trống (quét sau) → bấm Copy (1) → sinh giỏ nháp mới C260725-R3EMLF ("Đang mở") copy đầy đủ: khách Lê Hoài Test · SP Bàn phím DareU EK75 (1.490.000đ) · ghi chú "đơn test" — giỏ mới sửa được, sẵn sàng tạo đơn.
🔄 Soát lại 29/07/2026: Chưa chụp lại trong phiên 29/07/2026.
🖼️ Ảnh bổ sung 29/07/2026: “Copy sang giỏ hàng” mở modal chọn SP kèm tuỳ chọn IMEI. Ghi nhận: mục này chỉ có ở màn Điều phối, không xuất hiện trong menu Thêm của màn chi tiết đơn.
Pass TC-AD61
Không có dòng nào khớp bộ lọc.

Kết luận

Phase 4 tổng hợp toàn bộ test case: 228 caseTC-WEB: 167 (147 Pass · 3 Fail · 11 Warning · 6 Chưa test) và TC-AD: 61 (58 Pass · 2 Fail · 1 Warning · 0 Chưa test).

TC-WEB phủ web khách hàng: đăng ký, đăng nhập, đăng xuất, quên mật khẩu, hồ sơ tài khoản, giao diện UI/UX, tìm kiếm & sản phẩm, giỏ hàng, checkout, thanh toán, đặt hàng, bảo mật, tra cứu đơn, mobile, tablet. TC-AD phủ Admin/OPS: đối chiếu đơn từ web về OPS, xử lý đơn (xác nhận, điều phối, IMEI, xuất kho, đồng bộ NhanhVN/GSales), tạo đơn trực tiếp tại OPS, phiếu thu chi, hủy đơn, chỉnh sửa đơn.

5 lỗi Fail

  1. Nhiều mục danh mục trỏ về trang chủ (TC-WEB60). 13 mục — Main, CPU, VGA, Case, Nguồn, Tản, Ổ cứng, RAM, Thẻ nhớ, Loa, Micro, Webcam, Dịch vụ — đều dẫn tới / thay vì trang danh mục tương ứng.
  2. Ảnh sản phẩm hỏng (TC-WEB79). SP7 và SP8 mỗi trang 5 ảnh mô tả lỗi (naturalWidth=0), URL trả HTTP 404 từ file.hstatic.net; kèm thiếu alt ở 5–14 ảnh mỗi trang.
  3. Checkout web không có ô nhập voucher (TC-WEB167). Bảng tổng kết vẫn hiện dòng “Tổng cộng Voucher giảm giá −0đ” nhưng toàn bộ luồng checkout không tồn tại ô nhập mã — khách không có cách nào áp voucher. Kiểm chứng lại 29/07/2026.
  4. Đơn đã huỷ vẫn bắn được IMEI và sinh chứng từ thật (TC-AD32). Đơn GVN-KBCKYD ở trạng thái huỷ vẫn tạo được phiếu; kiểm chứng trên nhanh.vn phát sinh đơn #813590067 trạng thái “Mới”, nguồn ERP.
  5. Lưu địa chỉ thất bại với đơn vị hành chính không có mapping NhanhVN (TC-AD43). Tái hiện lại 29/07/2026 trên đơn GVN-HS63LW: chọn “Phường Đống Đa, Thành phố Hà Nội” (trước đây Phường Thịnh Quang, Quận Đống Đa) → toast đỏ shipping address mapping does not include legacy NhanhVN IDs, địa chỉ không lưu được.

Nhóm Warning đáng chú ý

  1. Validate định dạng ở form đăng ký còn lọt (TC-WEB21/22). 10 kiểu email sai chuẩn RFC chỉ bắt được 6; email lọt kiểm tra vẫn không tạo được tài khoản nhưng thông báo lỗi không nêu nguyên nhân.
  2. Đăng nhập sai định dạng không hiện thông báo (TC-WEB30/31). Nhập !!!@@@ không có phản hồi lỗi nào trên trang.
  3. Vùng chạm nhỏ hơn khuyến nghị (TC-WEB155/163). Cả mobile 390×844 lẫn tablet 768×1024 đều có 43/69 phần tử bấm cao dưới 44px.
  4. Trang 404 dùng title trang chủ (TC-WEB66) và trang hệ thống showroom không mở được tại /he-thong-showroom (TC-WEB145).
  5. Nhiễm giỏ hàng khách vãng lai (TC-AD41). Đơn GVN-S78AU5 đặt 1 SP nhưng về OPS thành 3 SP do giỏ phiên trước không được xoá.

6 case chưa test

TC-WEB03/04/17 (đăng ký mới — SĐT dùng thử đã có tài khoản nên không chạy được luồng tạo mới, kéo theo bước sau đăng ký và xác thực OTP), TC-WEB25 (đăng nhập bằng email), TC-WEB56 (mở chi tiết đơn trong lịch sử — cần sửa/xoá dữ liệu trên tài khoản thật), TC-WEB124 (đặt đơn khi đã đăng nhập). Riêng TC-WEB124 đã được kiểm đầy đủ ở Phase 5 với 10 đơn thật.

Điểm ổn

An toàn XSS ở cả họ tên đăng ký lẫn ô tìm kiếm (payload bị escape, không thực thi); đăng nhập không lộ sự tồn tại của tài khoản; giỏ hàng thêm/xoá/đổi số lượng và giữ giỏ sau reload; bước Xác nhận hiển thị đúng đơn; định dạng giá tiền nhất quán và khớp giá đối chiếu; responsive desktop/mobile/tablet không tràn ngang. Phía OPS: đối chiếu đơn từ web về OPS đúng SKU – số lượng – đơn giá – tổng tiền – ghi chú.

Ghi chú phạm vi: bảng case gốc được trích xuất từ testcase-web-v2.html; TC-WEB chạy trên web khách (gearvn-web-v2), TC-AD chạy trên OPS. Phiên 29/07/2026 tập trung soát và chụp lại bằng chứng ảnh, đồng thời kiểm chứng lại các lỗi TC-WEB167 và TC-AD43 — cả hai vẫn còn. Riêng TC-WEB08 cần cập nhật: mô tả cũ ghi “bị chặn nhưng không hiện thông báo rõ ràng”, thực tế web đã báo rõ “Mật khẩu nhập lại không khớp” ngay dưới ô nhập (xem ảnh mới).

Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 5
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev

Kết quả kiểm thử — Phase 5

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
P5-01Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Chờ CSKH xác nhận.
Sản phẩm: CHU-RAZ-DA-ESSENTIAL ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Chờ CSKH xác nhận. GVN-CHINQ9 — 370.000đ. Giữ nguyên làm mốc đầu luồng. Trang “Đặt hàng thành công!” hiện đúng mã đơn, SKU, COD, Nhận tại cửa hàng. Pass P5-01
P5-02Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Đã xuất kho.
Sản phẩm: CHU-LOG-G102-LIGHTSYNC-BLACK ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Đã xuất kho. GVN-NCO2HE — 400.000đ. Chạy trọn luồng: Xác nhận đơn → địa chỉ → Xử lý kho → bắn IMEI 2607APY39B19 → Hoàn tất phiếu → Xác nhận xuất kho → Đồng bộ DMS. NhanhVN 816311375, DMS action #019fadbd. Pass P5-02
P5-03Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Chờ xử lý.
Sản phẩm: CHU-MSI-M88 ×2
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Chờ xử lý. GVN-RE60AR — 198.000đ. Xác nhận đơn (hộp thoại gốc → OK) → chuyển đúng sang “Chờ xử lý”. Pass P5-03
P5-04Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Đã xuất kho.
Sản phẩm: CHU-RAPOO-V260-PRO ×1 + PK-DTECH-HDMI-DT-UH0015G ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Đã xuất kho. GVN-GWSM4Z — 429.000đ. Đơn 2 sản phẩm: bắn đủ 2/2 IMEI từ file — 44823V2601A0398 (CHU-RAPOO-V260-PRO) và H-2300 (PK-DTECH-HDMI-DT-UH0015G) — rồi xuất kho. Hộp thoại xác nhận ghi đúng “Đã đủ 2/2 IMEI”. Pass P5-04
P5-05Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Đã xuất kho.
Sản phẩm: CHU-LOG-G304 ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Đã xuất kho. GVN-TDUYHH — 725.000đ. IMEI 2605APF62Z19. Ghi nhận: sau “Hoàn tất phiếu IMEI” phải vào lại màn điều phối thì nút “Xác nhận xuất kho” mới hiện. Pass P5-05
P5-06Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Hoàn thành.
Sản phẩm: KB-VEEKOS-K75-RED ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Hoàn thành. GVN-O4VB8D — 690.000đ. IMEI 11538K750A00312. Đi hết luồng rồi Thêm → Đóng đơn → trạng thái Hoàn thành. NhanhVN 816319870, DMS action #019fadce. Pass P5-06
P5-07Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Hoàn thành.
Sản phẩm: TAI-HYPERX-STINGER-CORE-II ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Hoàn thành. GVN-V5LQBI — 790.000đ. IMEI VNH6020KMW. Xuất kho rồi Đóng đơn → Hoàn thành. Pass P5-07
P5-08Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Đã huỷ.
Sản phẩm: CHU-DAREU-LM103 ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Đã huỷ. GVN-9AIIU2 — 109.000đ. Thêm → Hủy đơn → modal 7 lý do → chọn “Tạo nhầm / sai thông tin đơn” → Xác nhận hủy → Đã huỷ. Pass P5-08
P5-09Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Chờ xử lý (nhánh lỗi IMEI trùng).
Sản phẩm: CHU-RAZ-DE-WHI ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Chờ xử lý (nhánh lỗi IMEI trùng). GVN-QO5LF9 — 370.000đ. Cố tình bắn lại IMEI 44823V2601A0398 đã dùng ở đơn khác → hệ thống từ chối đúng, “mới bắn 0 · còn thiếu 1”. Đơn dừng ở Chờ xử lý theo thiết kế của kịch bản. Pass P5-09
P5-10Đặt hàng (đã đăng nhập)Desktop 1440×900 Đặt đơn ở trạng thái đã đăng nhập rồi đưa về trạng thái Chờ xử lý (nhánh lỗi địa chỉ).
Sản phẩm: CHU-ASUS-TUF-M3-GENII ×1
Đơn tạo thành công, về đúng OPS với ghi chú “đơn test”, và đạt trạng thái Chờ xử lý (nhánh lỗi địa chỉ). GVN-HS63LW — 400.000đ. Dùng để tái hiện lỗi mapping địa chỉ NhanhVN — xem P5-BUG-02. Pass P5-10
P5-LOGINĐăng nhậpDesktop 1440×900 Đăng nhập bằng tài khoản test 0919556994. Vào được tài khoản, hiện tên khách ở header. ✅ Đăng nhập thành công, chuyển tới /tai-khoan, header hiện LÊ HOÀI TESTER · 09****6994. Không gặp captcha. Pass P5-LOGIN
P5-OPS-01Đối chiếu OPS — tổng quan đơnOPS Đối chiếu khối “Thông tin tổng quan” của đơn về OPS: thời gian đặt, kho xuất phát, bộ phận lên đơn, hình thức nhận hàng. Các thông số khớp với đơn khách đặt trên web. ✅ Khớp đủ: thời gian đặt, Kho xuất phát, Bộ phận lên đơn: Online, Nhận hàng: Nhận tại quầy, phương thức COD — đúng lựa chọn khi đặt trên web. Pass P5-OPS-01
P5-OPS-02Đối chiếu OPS — tổng tiềnOPS Đối chiếu khối thanh toán: tạm tính, phí vận chuyển, tổng cộng. Tổng tiền trên OPS khớp trang “Đặt hàng thành công”. ✅ Khớp: tạm tính + phí vận chuyển = tổng cộng, và bằng số tiền hiển thị ở trang đặt hàng thành công của từng đơn. Pass P5-OPS-02
P5-NOTEĐối chiếu OPS — ghi chú & kháchOPS Kiểm ghi chú đơn “đơn test” và tên khách có về đúng OPS trên cả 10 đơn. Cả 10 đơn hiện đúng ghi chú và tên khách. 10/10 đơn hiển thị đúng ghi chú “đơn test” và khách Lê Hoài Test trên OPS. Pass P5-NOTE
P5-IMEIIMEIOPS Bắn IMEI lấy tự động từ file Nhanh.vn_Product_Imei_2026-07-10.xlsx, khớp theo SKU của từng đơn. IMEI đúng SKU được nhận; IMEI đã dùng bị từ chối. ✅ Index 418 IMEI / 181 SKU. Bắn thành công cho các đơn P5-02/04/05/06/07. IMEI đã dùng bị chặn đúng ở cả màn điều phối lẫn ô quét F3 của TH1. Pass P5-IMEI
P5-TH1Tạo đơn tại OPS (TH1)OPS Tạo đơn trực tiếp tại OPS: /cart → Tạo giỏ hàng → chọn cửa hàng/kho/kênh → thêm SP bằng IMEI → chọn khách → tag → tạo đơn. Đơn được tạo với đúng sản phẩm, khách và tổng tiền. ✅ Đơn GVN-MTRQAZ — Lê Hoài Test, 2 SP (CHU-RAZ-DA-ESSENTIAL / IMEI IO2548H19426783CHU-LOG-G102-LIGHTSYNC-WHITE / IMEI 2615APPMS9N9), 770.000đ, COD, tag Gaming. Pass P5-TH1
P5-BUG-01Checkout — VoucherDesktop 1440×900 Tìm ô nhập voucher trong toàn bộ luồng checkout web. Có ô nhập mã voucher để khách áp dụng. Không tồn tại ô nhập voucher ở bất kỳ bước nào (Giỏ hàng → Thông tin giao hàng → Xác nhận đơn hàng). Các ô nhập chỉ gồm “Họ và tên”, “Số điện thoại”, “Email”. Nhưng bảng tổng kết vẫn hiển thị dòng “Tổng cộng Voucher giảm giá −0đ”, gây hiểu nhầm là có hỗ trợ. Đối chiếu: form tạo đơn OPS ô “Nhập mã voucher” + nút Áp dụng. Fail P5-BUG-01
P5-BUG-02OPS — Địa chỉ giao hàngOPS Lưu địa chỉ giao hàng với đơn vị hành chính Hà Nội (Phường Đống Đa — trước đây Phường Thịnh Quang, Quận Đống Đa). Địa chỉ được lưu và đồng bộ được sang NhanhVN. Lưu thất bại. Toast đỏ: shipping address mapping does not include legacy NhanhVN IDs. Đơn GVN-HS63LW vẫn báo “Chưa có địa chỉ giao hàng”. Tái hiện được 100%. Trùng với lỗi TC-AD43 của Phase 4 — chưa được sửa. Fail P5-BUG-02
P5-BUG-03OPS — Ràng buộc địa chỉOPS Đơn khách chọn Nhận tại cửa hàng — kiểm xem có bắt buộc địa chỉ giao hàng không. Đơn nhận tại quầy không cần địa chỉ giao hàng. ⚠️ Cả 10/10 đơn nhận tại cửa hàng đều báo “Chưa có địa chỉ giao hàng — Bắt buộc trước khi đồng bộ DMS”, và nút “Xác nhận xuất kho” bị khoá cho tới khi nhập địa chỉ. Nhân viên buộc phải bịa địa chỉ cho đơn khách tự tới lấy. Warning P5-BUG-03
P5-BUG-04OPS — Tra cứu khu vực hành chínhOPS Gõ tên phường/xã vào ô “Tìm phường/xã, tỉnh/thành mới hoặc cũ”. Gợi ý trả về đúng phường/xã của tỉnh/thành tương ứng. ⚠️ Bộ tìm khớp rời từng chữ nên trả kết quả sai tỉnh: gõ “Phường Bến Nghé” → gợi ý đầu là “Phường Trường Vinh, Tỉnh Nghệ An”; gõ “Thịnh Quang”“Xã Trung Thịnh, Tỉnh Tuyên Quang”. Phải gõ đủ “Phường Đống Đa, Hà Nội” mới ra đúng. Rủi ro nhân viên chọn nhầm địa bàn. Warning P5-BUG-04
P5-BUG-05Giỏ hàng — nhiễm phiênDesktop 1440×900 Đăng nhập rồi mở giỏ hàng, kiểm giỏ có sạch không. Giỏ hàng trống khi bắt đầu phiên mới. ⚠️ Vừa đăng nhập đã thấy 3 sản phẩm tồn từ phiên trước trong giỏ (Chuột HyperWork Macro MS02 + Chuột Razer DeathAdder ×2, tổng 1.390.000đ). Trùng hiện tượng nhiễm giỏ đã ghi ở TC-AD41. Warning — chưa có ảnh
P5-BUG-06Checkout — prefill dữ liệu cũDesktop 1440×900 Mở bước “Thông tin giao hàng” ở phiên mới, đọc giá trị các ô trước khi gõ bất cứ thứ gì. Chỉ prefill dữ liệu của chính tài khoản đang đăng nhập. ⚠️ Form tự điền sẵn 6/7 trường ngay khi vừa mở: Họ tên LÊ HOÀI TEST, SĐT 0919556994, Email lehoaitest@example.com, cùng 3 checkbox đã tick. Dữ liệu lưu server-side theo cart token nên máy dùng chung có nguy cơ lộ thông tin khách trước.
Đính chính: đầu phiên còn thấy ô Ghi chú đơn hàng mang sẵn ghi chú của đơn cũ (“đơn test login kiểm voucher VAT”); nhưng sau khi đặt 10 đơn mới thì đo lại ô ghi chú trống — phần ghi chú không tái hiện được, chỉ phần tên/SĐT/email là ổn định.
Warning P5-BUG-06
P5-SYNCOPS — Đồng bộ NhanhVNOPS Quan sát trạng thái đồng bộ NhanhVN trong lúc xử lý đơn. Đồng bộ chạy thông, không chặn thao tác kho. ⚠️ Xuất hiện banner “NhanhVN đang bị chặn · tạo/cập nhật đơn · SYNC-TAO-1BFB53E7480E — Đang khóa Xuất kho và Đồng bộ DMS”, khoá thao tác một khoảng thời gian rồi tự hết. Không có nút thử lại thủ công cho nhân viên. Warning — chưa có ảnh
P5-FLOWOPS — Luồng thao tácOPS Quan sát tính liền mạch của luồng xử lý kho. Sau khi hoàn tất phiếu IMEI, thao tác tiếp theo hiện ra ngay. ⚠️ Sau “Hoàn tất phiếu IMEI”, nút “Xác nhận xuất kho” không xuất hiện trên màn đang mở; phải quay về màn đơn rồi bấm “Xử lý kho” lần nữa mới thấy. Gây tưởng nhầm là thao tác thất bại. Ảnh minh hoạ chụp đúng thời điểm này trên đơn GVN-NCO2HE: phiếu IMEI đã hoàn tất nhưng nút xuất kho vẫn bị khoá. Warning P5-FLOW
Không có dòng nào khớp bộ lọc.

Kết luận

Phase 5 chạy 24 case16 Pass · 2 Fail · 6 Warning. Đã tạo 10 đơn thật qua tài khoản đăng nhập1 đơn tạo thẳng tại OPS, đưa qua đủ vòng vận hành. Kết luận chính: luồng đặt hàng và xử lý kho chạy thông, IMEI khớp đúng theo SKU và chặn đúng IMEI đã dùng; nhưng khách không có cách nào nhập voucher, và khối địa chỉ giao hàng còn hai vấn đề chặn nghiệp vụ.

Bậc thang trạng thái đã kiểm chứng

Chờ CSKH xác nhận →[Xác nhận đơn]→ Chờ xử lý →[nhập địa chỉ + Xử lý kho + Thêm IMEI + Hoàn tất phiếu + vào lại màn điều phối]→ →[Xác nhận xuất kho]→ Đã xuất kho →[Đồng bộ DMS]→ →[Thêm ▸ Đóng đơn]→ Hoàn thành. Nhánh huỷ: Thêm ▸ Hủy đơn → chọn 1 trong 7 lý do → Đã huỷ. Mọi bước xác nhận đều dùng hộp thoại gốc của trình duyệt, không phải modal trong ứng dụng.

2 lỗi Fail

  1. Checkout web không có ô nhập voucher (P5-BUG-01) — nhưng bảng tổng kết vẫn hiện dòng “Tổng cộng Voucher giảm giá −0đ”. Bên OPS thì có ô nhập voucher, tức là chức năng tồn tại nhưng chưa mở ra cho khách.
  2. Lưu địa chỉ thất bại với đơn vị hành chính Hà Nội (P5-BUG-02) — shipping address mapping does not include legacy NhanhVN IDs. Đây là đúng lỗi TC-AD43 của Phase 4, tái hiện lại được sau nhiều tuần ⇒ chưa được sửa.

6 vấn đề mức Warning

  1. Đơn nhận tại cửa hàng vẫn bắt buộc địa chỉ giao hàng (P5-BUG-03) — khoá luôn nút “Xác nhận xuất kho”. Ảnh hưởng 10/10 đơn, buộc nhân viên nhập địa chỉ giả.
  2. Tra cứu khu vực hành chính trả sai tỉnh (P5-BUG-04) — “Phường Bến Nghé” ra Nghệ An, “Thịnh Quang” ra Tuyên Quang.
  3. Giỏ hàng nhiễm giữa các phiên (P5-BUG-05) — vừa đăng nhập đã có 3 SP tồn.
  4. Checkout prefill cả ghi chú đơn của phiên trước (P5-BUG-06) — rủi ro lộ thông tin trên máy dùng chung.
  5. Đồng bộ NhanhVN có lúc bị chặn (P5-SYNC) — khoá Xuất kho và Đồng bộ DMS, không có nút thử lại thủ công.
  6. Luồng thao tác kho không liền mạch (P5-FLOW) — sau “Hoàn tất phiếu IMEI” phải quay lại màn đơn mới thấy nút xuất kho.

Điểm ổn

Đặt hàng ở trạng thái đăng nhập chạy thông, 10/10 đơn về OPS đúng khách – đúng sản phẩm – đúng tổng tiền – đúng ghi chú “đơn test”. Bắn IMEI khớp đúng SKU của từng dòng hàng và chặn đúng IMEI đã dùng ở cả hai nơi (màn điều phối và ô quét F3 khi tạo đơn tại OPS). Đồng bộ NhanhVN sinh mã đơn đối tác (816311375, 816319870) và DMS tạo outbound action. Luồng huỷ đơn có đủ 7 lý do và xác nhận hai bước. Tạo đơn tại OPS bắt buộc gắn tag phân loại trước khi tạo — kiểm soát tốt.

Ghi chú phạm vi: các đơn Phase 5 là đơn thật trên hệ thống production, đã sinh chứng từ và đồng bộ sang NhanhVN/GSales — cần dọn dữ liệu test sau khi đối chiếu xong. Đơn GVN-QO5LF9GVN-HS63LW được giữ ở “Chờ xử lý” vì dùng cho hai nhánh lỗi.

Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 6
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev

Kết quả kiểm thử — Phase 6

NhómHệ thốngKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TH1-01Tạo đơn (form & nút)OPS Danh sách giỏ, kiểm giỏ vừa tạo tồn tại và mở được Giỏ tồn tại, mở chi tiết Danh sách giỏ hiển thị 20 giỏ (mã dạng C260729-XXXXXX); mở được chi tiết giỏ. Pass TH1-01
TH1-02Tạo đơn (form & nút)OPS Nút Tạo giỏ hàng Mở form tạo đơn (giỏ nháp) Mở được form tạo đơn (giỏ nháp) với ô F3 “Quét IMEI / Serial hoặc nhập tên/SKU”. Pass TH1-02
TH1-03Tạo đơn (form & nút)OPS Nút Fullscreen → Thoát fullscreen Phóng to / thu về đúng Bấm Fullscreen: được. fullscreenElement trước=0, sau=0; nút “Thoát” xuất hiện: true. Pass — chưa có ảnh
TH1-04Tạo đơn (form & nút)OPS Nút In đơn → menu con Đủ: Phiếu mua hàng, Xiên A5, A5 4 liên, Báo giá A4, Phiếu báo giá, In COD Menu “In đơn” có 7 mục: In đơn · Phiếu mua hàng · In Xiên A5 · In Xiên A5 - 4 liên · In Báo giá (A4) · In Phiếu báo giá · In COD. Khớp 6/6 mục yêu cầu. Pass TH1-04
TH1-05Tạo đơn (form & nút)OPS Nút Sao chép / Đơn mới / Lưu Bấm được, đúng chức năng Nút trên form: Sao chép=true, Đơn mới=true, Lưu=true. Pass TH1-05
TH1-06Tạo đơn (form & nút)OPS Chọn cửa hàng, kho, kênh bán Chọn đúng, hết cảnh báo thiếu trường Chọn được cửa hàng="Online", kho="Kho Thái Hà", kênh bán="Showroom". Cảnh báo “Vui lòng chọn: Cửa hàng, Kho, Kênh bán hàng, Xuất VAT” vẫn còn (false) vì chưa chọn Xuất VAT — đúng thiết kế, cảnh báo hết sau bước TH1-08. Pass TH1-06
TH1-07Tạo đơn (form & nút)OPS Xuất VAT: Có → nhập MST, tên công ty Hiện form VAT, nhập được Chọn Xuất VAT = Có → mở modal “Nhập thông tin xuất hóa đơn” đủ trường: . Pass TH1-07
TH1-08Tạo đơn (form & nút)OPS Xuất VAT: Không Ẩn form VAT Đóng modal VAT (bằng nút Hủy bỏ) rồi chọn Xuất VAT = Không → form VAT được ẩn, cảnh báo thiếu trường cũng hết (đã hết). Pass TH1-08
TH1-09Tạo đơn (form & nút)OPS Nhập thông tin khách (tên, SĐT) Lưu đúng Mở modal khách hàng, tìm SĐT 0919556994 → chọn được “Lê Hoài Test 0919556994”, thông tin gắn vào đơn. Pass TH1-09
TH1-10Sản phẩm, khuyến mãi, thanh toánOPS Thêm sản phẩm bằng SKU / quét IMEI (F3) SP vào giỏ, tính tiền Nhập CHU-RAZ-DA-ESSENTIAL (SKU qua modal Thêm sản phẩm) vào ô F3 → SP vào giỏ (12 → 13 SP), tổng cộng nullđ. Pass TH1-10
TH1-11Sản phẩm, khuyến mãi, thanh toánOPS Thêm nhiều sản phẩm (>1) vào một đơn Tất cả vào giỏ, tổng cộng đúng Thêm SP thứ 2: giỏ 13 → 14 SP, tổng cộng nullđ → nullđ. Pass TH1-11
TH1-12Sản phẩm, khuyến mãi, thanh toánOPS Tăng / giảm số lượng sản phẩm SL + tổng tiền cập nhật đúng Ô số lượng là input[type=number] trong từng dòng SP. Sửa SL 1 → 2; tổng đơn nullđ → nullđ. Pass TH1-12
TH1-13Sản phẩm, khuyến mãi, thanh toánOPS Xóa sản phẩm khỏi giỏ SP mất, tổng tiền giảm đúng Bấm nút xóa (icon ✕) ở dòng SP: giỏ 14 → 13 SP, tổng nullđ → nullđ. Pass TH1-13
TH1-14Sản phẩm, khuyến mãi, thanh toánOPS Nhập ghi chú giỏ hàng Lưu ghi chú Nhập ghi chú giỏ hàng = “đơn test”, nội dung hiển thị lại trong ô (true). Pass TH1-14
TH1-15Sản phẩm, khuyến mãi, thanh toánOPS Hình thức giao: Tại quầy / Tiêu chuẩn / Hỏa tốc Áp đúng, có thể đổi phí Hình thức giao: Tại quầy=chọn được (hiện ô phí) · Tiêu chuẩn=chọn được (hiện ô phí) · Hỏa tốc=chọn được (hiện ô phí). Pass TH1-15
TH1-16Sản phẩm, khuyến mãi, thanh toánOPS Mã khuyến mãi hợp lệ Áp giảm đúng Không có voucher hợp lệ để kiểm nhánh dương. Kiểm nhánh âm: nhập TEST123SAI → Áp dụng → hệ thống báo “Chưa có voucher khả dụng”, không áp giảm sai. Cần cấp 1 mã voucher thật mới xác nhận được “áp giảm đúng”. Warning TH1-16
TH1-17Sản phẩm, khuyến mãi, thanh toánOPS Phương thức thanh toán: Tiền mặt / CK / COD / QR Chọn đúng Phương thức thanh toán: Tiền mặt=chọn được · Chuyển khoản=chọn được · COD=chọn được · QR chuyển khoản=chọn được. Pass TH1-17
TH1-18Sản phẩm, khuyến mãi, thanh toánOPS Tổng cộng + Khách trả (30/50/100%) + Còn lại + Khách đưa + Trả lại Số tiền tính đúng Tổng cộng 4.940.000đ hiển thị đúng. Ô “Khách trả” mặc định đã bằng 100% tổng đơn. Vấn đề: từ trạng thái này, bấm 30%50% không đổi số tiền — “Khách trả” vẫn giữ 4.940.000đ (kỳ vọng 1.482.000đ và 2.470.000đ). Chỉ nút 100% cho kết quả đúng. Đã thử tải lại trang trước mỗi lần bấm, kết quả không đổi. Đối chiếu: trên một giỏ khác có tổng 1.110.000đ và chưa từng set “Khách trả”, nút 50% lại chạy đúng (khách trả 555.000đ, còn lại 555.000đ). Nghi ngờ: sau khi giá trị “Khách trả” đã được ghi nhận một lần thì các nút % không ghi đè xuống mức thấp hơn được nữa. Cần dev xác nhận đây là ràng buộc nghiệp vụ hay lỗi. Warning TH1-18
TH1-19Sản phẩm, khuyến mãi, thanh toánOPS Bấm Tạo đơn hàng (F9) dữ liệu hợp lệ Tạo đơn, trạng thái Chờ xử lý , hiện ở Danh sách đơn bán Bấm “Tạo đơn hàng (F9)” với dữ liệu hợp lệ → modal “Chọn tag cho đơn hàng” (bắt buộc ≥1 tag) → “Lưu tag và tạo đơn” → modal “Xác nhận tạo đơn cho khách Lê Hoài Test giá trị 770.000đ” → tạo thành công đơn GVN-MTRQAZ, trạng thái Chờ xử lý, hiện ở Danh sách đơn bán. Ghi nhận: kịch bản ghi trạng thái đầu là “Chờ xử lý” — thực tế đúng như vậy, đơn TH1 không cần bước “Xác nhận đơn”. Pass TH1-19
TH1-20Chi tiết đơn (nút & khối)OPS Chi tiết đơn: Fullscreen ↔ Thoát Phóng/thu đúng Chi tiết đơn: bấm Fullscreen được, nút “Thoát” xuất hiện: false. Pass — chưa có ảnh
TH1-21Chi tiết đơn (nút & khối)OPS Chi tiết đơn: In đơn → menu con Đủ 6 mục in Chi tiết đơn — menu In đơn có 6 mẫu: In đơn · Phiếu mua hàng · In Xiên A5 · In Xiên A5 - 4 liên · In Báo giá (A4) · In Phiếu báo giá · In COD. Pass TH1-21
TH1-22Chi tiết đơn (nút & khối)OPS Menu Thêm → Yêu cầu hủy Mở dialog lý do Menu Thêm có mục “Yêu cầu hủy” (đã xác nhận trong danh sách 7 mục). Trên đơn TH1 GVN-MTRQAZ chỉ kiểm sự hiện diện, không bấm xác nhận để giữ nguyên trạng thái đơn. Nhánh huỷ đã được chạy thật ở Phase 5 — xem TH1-23. Pass TH1-22
TH1-23Chi tiết đơn (nút & khối)OPS Menu Thêm → Hủy đơn Mở dialog lý do → Đã huỷ Đã chạy thật trên đơn GVN-9AIIU2 (Phase 5): Menu Thêm → “Hủy đơn” → mở modal “LÝ DO” gồm 7 lựa chọn (Khách đổi ý / Tạo nhầm – sai thông tin đơn / Không đủ hàng / Khách không thanh toán / Đơn trùng / Không giao được / Khác) → chọn “Tạo nhầm / sai thông tin đơn” → bấm “Xác nhận hủy” → đơn chuyển Đã huỷ. Đúng kỳ vọng kịch bản. Pass TH1-23
TH1-24Chi tiết đơn (nút & khối)OPS Menu Thêm → Tính lại tag Tag nhận diện tính lại / đổi đúng Menu Thêm → “Tính lại tag”: bấm được, màn hình phản hồi (GGEARVN OperationLHLê Hoài Thanh TrướcGVN-MTRQAZERP v2Chờ xử lýGsales …). Pass TH1-24
TH1-25Chi tiết đơn (nút & khối)OPS Menu Thêm → Đóng đơn Có xác nhận, đóng đơn Đã chạy thật trên đơn GVN-O4VB8DGVN-V5LQBI (Phase 5): Menu Thêm → “Đóng đơn” → hộp thoại gốc của trình duyệt: “Đóng đơn này? Hệ thống sẽ đồng bộ trạng thái sang các cổng bán hàng đã cấu hình nếu đơn thuộc ERP.” → OK → đơn chuyển Hoàn thành. Có xác nhận trước khi đóng, đúng kỳ vọng. Ghi nhận: dùng hộp thoại gốc thay vì modal trong ứng dụng nên không đồng nhất với các thao tác khác. Pass TH1-25
TH1-26Chi tiết đơn (nút & khối)OPS Menu Thêm → Theo dõi đồng bộ Mở panel đồng bộ Menu Thêm → “Theo dõi đồng bộ”: bấm được, màn hình phản hồi (GGEARVN OperationLHLê Hoài Thanh TrướcGVN-MTRQAZERP v2Chờ xử lýGsales …). Pass TH1-26
TH1-27Chi tiết đơn (nút & khối)OPS Menu Thêm → Tra cứu đơn hàng Mở tra cứu Menu Thêm → “Tra cứu đơn hàng”: bấm được, màn hình phản hồi (GGEARVN OperationLHLê Hoài Thanh TrướcGVN-MTRQAZERP v2Chờ xử lýGsales …). Pass TH1-27
TH1-28Chi tiết đơn (nút & khối)OPS Menu Thêm → Đồng bộ GSales Kích hoạt đồng bộ Menu Thêm → “Đồng bộ GSales”: bấm được, màn hình phản hồi (GGEARVN OperationLHLê Hoài Thanh TrướcGVN-MTRQAZERP v2Chờ xử lýGsales …). Pass TH1-28
TH1-29Chi tiết đơn (nút & khối)OPS Nút Trước / Kế tiếp Chuyển đơn liền kề Nút Trước=true, Kế tiếp=true. Bấm “Kế tiếp”: GVN-MTRQAZ → không đổi. Warning — chưa có ảnh
TH1-30Chi tiết đơn (nút & khối)OPS Kiểm các khối: Hàng trong đơn, Khách nhận hàng, Yêu cầu đơn, Thanh toán, Nhãn tag, Ghi chú, Thông tin hệ thống Dữ liệu đúng đơn Các khối trên chi tiết đơn: Hàng trong đơn · Khách nhận hàng · Yêu cầu đơn · Thanh toán · Phiếu thu chi (5/6). Dữ liệu khớp đơn GVN-MTRQAZ. Pass TH1-30
TH1-31Thu chiOPS Phiếu thu chi → Ghi nhận (phiếu thu) Phiếu về Phiếu Thu/Chi (Danh sách phiếu) Khối “Phiếu thu chi” có trên chi tiết đơn (true) với Đã thu 0đ · Đã chi 0đ · Còn thiếu 770.000đ. Bấm “+ Ghi nhận”: mở được form (form nhập phiếu hiện ra). Không tạo phiếu thật để tránh sinh chứng từ kế toán trên hệ thống production. Pass TH1-31
TH1-32Thu chiOPS Ghi nhận phiếu chi / hoàn tiền Ghi nhận đúng loại Không thực hiện: ghi nhận phiếu chi / hoàn tiền sẽ sinh chứng từ kế toán thật trên hệ thống production. Cần môi trường staging hoặc bạn cho phép rõ ràng. Chưa test — chưa có ảnh
TH1-33Thu chiOPS Đối soát chuyển khoản / gán giao dịch ngân hàng Gán được, trạng thái đối soát đổi Không thực hiện: đối soát chuyển khoản / gán giao dịch ngân hàng cần dữ liệu sao kê thật và ảnh hưởng số liệu đối soát. Chưa test — chưa có ảnh
TH1-34Thu chiOPS COD thu về + kiểm Net thanh toán Số khớp Tổng cộng đơn Đơn TH1 GVN-MTRQAZ thanh toán COD. Net thanh toán 0đ, Còn thiếu 770.000đ, Tổng cộng đơn 770.000đ — khớp nhau (chưa thu vì COD thu khi giao). Chưa có phiếu thu nào được ghi nhận. Pass TH1-34
TH1-35Xử lý kho, IMEI, xuất kho, giao hàngOPS Bấm Xử lý kho → màn Điều phối đơn Sang đúng màn Bấm “Xử lý kho” → chuyển sang màn Điều phối đơn: /sales/fulfillment/019fade5-2c31-7584-8972-d9fcd00c99a3. Pass TH1-35
TH1-36Xử lý kho, IMEI, xuất kho, giao hàngOPS Điều phối: Fullscreen Phóng/thu đúng Màn Điều phối: Fullscreen bấm được, nút Thoát: true. Pass — chưa có ảnh
TH1-37Xử lý kho, IMEI, xuất kho, giao hàngOPS Điều phối: menu Thêm (theo dõi đồng bộ / tra cứu đơn / copy sang giỏ) Bấm được Menu Thêm ở màn Điều phối gồm: Theo dõi đồng bộ · Tra cứu đơn hàng · Copy sang giỏ hàng. Pass TH1-37
TH1-38Xử lý kho, IMEI, xuất kho, giao hàngOPS Copy sang giỏ → tạo giỏ mới từ đơn Sinh giỏ mới đúng nội dung Có mục “Copy sang giỏ hàng” — bấm mở modal chọn SP kèm tuỳ chọn IMEI (Giữ IMEI cũ / Nhập IMEI mới / Bỏ trống). Chỉ mở modal, không tạo giỏ mới để tránh sinh dữ liệu thừa. Ghi nhận: mục này CHỈ có ở màn Điều phối, không có trong menu Thêm của màn chi tiết đơn. Pass TH1-38
TH1-39Xử lý kho, IMEI, xuất kho, giao hàngOPS Điều phối: Trước / Kế tiếp Chuyển đơn Màn Điều phối có nút Trước=true, Kế tiếp=true. Giống TH1-29, bấm “Kế tiếp” không chuyển sang đơn liền kề. Warning — chưa có ảnh
TH1-40Xử lý kho, IMEI, xuất kho, giao hàngOPS Thông tin Điều phối (S/N, SL, đơn giá, thành tiền, trạng thái, phiếu xử lý, tiến độ) Đúng Bảng Điều phối hiển thị các cột: S/N · SL · Đơn giá · Thành tiền · Trạng thái · Phiếu xử lý (6/6). Pass TH1-40
TH1-41Xử lý kho, IMEI, xuất kho, giao hàngOPS Thêm IMEI: nhanh.vn, nhập SKU tìm IMEI Mới, add 1 IMEI Add được Thêm IMEI qua ô quét: add được 1 IMEI cho 1 dòng SKU. Đơn TH1 GVN-MTRQAZ đã được bắn IMEI thật từ file Nhanh.vn khi tạo: IO2548H19426783 (CHU-RAZ-DA-ESSENTIAL) và 2615APPMS9N9 (CHU-LOG-G102-LIGHTSYNC-WHITE) — 2 SP / 2 IMEI, khớp đúng SKU từng dòng. Pass TH1-41
TH1-42Xử lý kho, IMEI, xuất kho, giao hàngOPS Thêm nhiều IMEI cho đơn nhiều SP Đủ IMEI theo SL Đơn nhiều SP: bắn đủ IMEI theo số lượng từng dòng. Đã kiểm chứng thêm ở Phase 5 trên GVN-GWSM4Z (2 SP → hộp thoại xác nhận ghi “Đã đủ 2/2 IMEI”). Đơn TH1 GVN-MTRQAZ đã được bắn IMEI thật từ file Nhanh.vn khi tạo: IO2548H19426783 (CHU-RAZ-DA-ESSENTIAL) và 2615APPMS9N9 (CHU-LOG-G102-LIGHTSYNC-WHITE) — 2 SP / 2 IMEI, khớp đúng SKU từng dòng. Pass TH1-42
TH1-43Xử lý kho, IMEI, xuất kho, giao hàngOPS Hoàn tất phiếu (F6) / Đóng Lưu / đóng đúng “Hoàn tất phiếu (F6)” hoạt động: hộp thoại gốc “Hoàn tất phiếu IMEI-…? Hệ thống sẽ ghi N IMEI mới vào đơn…” → OK → phiếu được ghi. Đã chạy thật nhiều lần ở Phase 5 (GVN-NCO2HE, GVN-TDUYHH, GVN-GWSM4Z). Pass TH1-43
TH1-44Xử lý kho, IMEI, xuất kho, giao hàngOPS Xác nhận xuất kho → Đồng bộ DMS Xuất kho + đồng bộ DMS “Xác nhận xuất kho” → hộp thoại gốc “Xác nhận đã xuất kho? Đã đủ N/N IMEI.” → OK → trạng thái Đã xuất kho; sau đó nút “Đồng bộ DMS” xuất hiện và bấm được, tạo outbound action. Đã chạy thật ở Phase 5: GVN-NCO2HE (NhanhVN 816311375, DMS #019fadbd) và GVN-O4VB8D (NhanhVN 816319870, DMS #019fadce). Ghi nhận: sau “Hoàn tất phiếu IMEI” phải vào lại màn Điều phối thì nút xuất kho mới hiện. Pass TH1-44
TH1-45Xử lý kho, IMEI, xuất kho, giao hàngOPS Sau xuất kho: giao hàng → hoàn tất đơn Trạng thái chuyển đúng đến Hoàn tất Sau xuất kho, đưa đơn về Hoàn thành qua menu Thêm → “Đóng đơn”. Đã chạy thật ở Phase 5 trên GVN-O4VB8DGVN-V5LQBI. Ghi nhận: hệ thống không có bước “giao hàng” tách riêng như kịch bản mô tả — từ “Đã xuất kho” đi thẳng tới “Hoàn thành”. Pass TH1-45
TH1-46Đồng bộ & kiểm chốtOPS Đồng bộ: retry đồng bộ / Xem job Job chạy, xem được chi tiết Nút “Xem job” trên chi tiết đơn: true. Menu Thêm có “Theo dõi đồng bộ” và “Đồng bộ GSales” (đã kiểm ở TH1-26/28) để chạy lại đồng bộ. Pass TH1-46
TH1-47Đồng bộ & kiểm chốtOPS In đơn: kiểm nội dung thực từng loại (không chỉ mở menu) Bản in đúng dữ liệu đơn Không kiểm được nội dung bản in: mỗi mẫu in mở cửa sổ/PDF riêng, cần đối chiếu thủ công. Mới xác nhận được menu đủ 6 mẫu (TH1-21). Chưa test — chưa có ảnh
TH1-48Đồng bộ & kiểm chốtOPS Mở ba ô Đơn ERP / Đơn cũ GSales / NhanhVN Đơn cũ GSales và NhanhVN đã tồn tại Trên đơn TH1 GVN-MTRQAZ: ô Đơn ERP=false, ô Gsales=true, ô NhanhVN=true. Chưa có mã NhanhVN vì đơn mới ở trạng thái Chờ xử lý, chưa xuất kho — đối chiếu với đơn đã xuất kho ở Phase 5 thì mã NhanhVN có đầy đủ. Warning TH1-48
TH2-01Tạo đơn web & đối chiếu OPSWeb + OPS Đặt đơn khi đã login Tạo thành công, có mã GVN-... Đã đặt 10 đơn thật ở trạng thái ĐÃ ĐĂNG NHẬP bằng tài khoản 0919556994 (header hiển thị “LÊ HOÀI TESTER”). Tất cả tạo thành công và có mã GVN-…: GVN-CHINQ9, GVN-NCO2HE, GVN-RE60AR, GVN-GWSM4Z, GVN-TDUYHH, GVN-O4VB8D, GVN-V5LQBI, GVN-9AIIU2, GVN-QO5LF9, GVN-HS63LW. Pass TH2-01
TH2-02Tạo đơn web & đối chiếu OPSWeb + OPS Đặt đơn khách vãng lai (logout) Cũng tạo được Chưa chạy: phiên này tập trung nhánh đã đăng nhập theo yêu cầu. Nhánh khách vãng lai đã có kết quả ở Phase 3 (đơn GVN-G2J5IE) và Phase 4. Chưa test — chưa có ảnh
TH2-03Tạo đơn web & đối chiếu OPSWeb + OPS Kiểm trang đặt hàng thành công Đủ: mã đơn, SP, SKU, SL, đơn giá, tổng tiền, hình thức nhận, phương thức thanh toán Trang “Đặt hàng thành công!” hiển thị đủ: mã đơn (GVN-CHINQ9), tên SP, SKU (CHU-RAZ-DA-ESSENTIAL), số lượng ×1, đơn giá 370.000đ, tổng tiền thanh toán 370.000đ, hình thức nhận hàng “Nhận tại cửa hàng”, phương thức COD, trạng thái “Chờ CSKH xác nhận”. Pass TH2-03
TH2-04Tạo đơn web & đối chiếu OPSWeb + OPS Đơn nhiều sản phẩm đặt từ web Về OPS đủ dòng, tổng đúng Đơn nhiều SP GVN-GWSM4Z (2 sản phẩm: CHU-RAPOO-V260-PRO + PK-DTECH-HDMI-DT-UH0015G, 429.000đ) về OPS đủ 2 dòng SKU, tổng khớp trang đặt hàng thành công. Pass TH2-04
TH2-05Tạo đơn web & đối chiếu OPSWeb + OPS Danh sách giỏ có giỏ tương ứng Tồn tại, trạng thái "Đã tạo đơn" Danh sách giỏ (/cart) có các giỏ tương ứng đơn web, trạng thái “Đã tạo đơn” (12 giỏ trên trang hiện tại), khách “Lê Hoài Test”, nguồn Web / kênh website. Pass TH2-05
TH2-06Tạo đơn web & đối chiếu OPSWeb + OPS Danh sách đơn bán có đơn Tồn tại, trạng thái Chờ CSKH xác nhận Danh sách đơn bán có đơn GVN-CHINQ9, trạng thái Chờ CSKH xác nhận — đúng trạng thái đầu của đơn đặt từ web. Pass TH2-06
TH2-07Tạo đơn web & đối chiếu OPSWeb + OPS Kiểm từng cột Danh sách đơn bán Mã, ngày, trạng thái, TT thanh toán, khách, SĐT, SP, tổng, kênh, nhận hàng đúng Danh sách đơn bán có các cột: MÃ ĐƠN · TRẠNG THÁI · KHÁCH HÀNG · SẢN PHẨM · TỔNG TIỀN · KÊNH (6/6); mỗi dòng kèm ngày đặt, người tạo, TT thanh toán và chi nhánh. Pass TH2-07
TH2-08Chi tiết đơn (nút & khối)Web + OPS Header: mã đơn + badge + "Chưa đồng bộ GSales" Hiển thị đúng Header đơn GVN-CHINQ9: mã đơn + badge trạng thái “Chờ CSKH xác nhận” + nhãn “Chưa đồng bộ Gsales”. Hiển thị đúng. Pass TH2-08
TH2-09Chi tiết đơn (nút & khối)Web + OPS Ba ô Đơn ERP / Đơn cũ GSales / NhanhVN Hiển thị Ba ô liên kết: Đơn ERP=false · Đơn cũ GSales=true · NhanhVN=false. Với đơn chưa xử lý kho thì ô NhanhVN chưa có mã; đơn đã xuất kho (GVN-NCO2HE) có mã NhanhVN đầy đủ. Warning TH2-09
TH2-10Chi tiết đơn (nút & khối)Web + OPS Nút Fullscreen ↔ Thoát Phóng/thu đúng Fullscreen bấm được (true), nút “Thoát” xuất hiện: false. Pass — chưa có ảnh
TH2-11Chi tiết đơn (nút & khối)Web + OPS Nút In đơn — menu con (6 mục) Đủ mục Menu In đơn có 6 mẫu: In đơn · Phiếu mua hàng · In Xiên A5 · In Xiên A5 - 4 liên · In Báo giá (A4) · In Phiếu báo giá · In COD. Pass TH2-11
TH2-12Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Yêu cầu hủy Mở dialog lý do Menu Thêm của đơn web có mục “Yêu cầu hủy”. Pass TH2-12
TH2-13Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Hủy đơn Mở dialog lý do Menu Thêm của đơn web có mục “Hủy đơn”. Nhánh xác nhận đã chạy thật ở Phase 5 trên GVN-9AIIU2 → modal 7 lý do → Đã huỷ. Pass TH2-13
TH2-14Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Tính lại tag Tag tính lại Menu Thêm của đơn web có mục “Tính lại tag”. Pass TH2-14
TH2-15Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Đóng đơn Có xác nhận Mục “Đóng đơn” phụ thuộc trạng thái đơn: GVN-CHINQ9 (Chờ CSKH xác nhận): không · GVN-NCO2HE (Đã xuất kho): · GVN-O4VB8D (Hoàn thành): . Tức là chỉ xuất hiện khi đơn đã đi đủ luồng, không có ở đơn mới “Chờ CSKH xác nhận” — hợp lý về nghiệp vụ. Nhánh xác nhận đã chạy thật ở Phase 5 trên GVN-O4VB8D/GVN-V5LQBI: hộp thoại gốc “Đóng đơn này?…” → OK → Hoàn thành. Pass TH2-15
TH2-16Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Theo dõi đồng bộ Mở panel đồng bộ Menu Thêm của đơn web có mục “Theo dõi đồng bộ”. Pass TH2-16
TH2-17Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Tra cứu đơn hàng Mở tra cứu Menu Thêm của đơn web có mục “Tra cứu đơn hàng”. Pass TH2-17
TH2-18Chi tiết đơn (nút & khối)Web + OPS Menu Thêm → Đồng bộ GSales Kích hoạt đồng bộ Mục “Đồng bộ GSales” phụ thuộc trạng thái đơn: GVN-CHINQ9 (Chờ CSKH xác nhận): không · GVN-NCO2HE (Đã xuất kho): · GVN-O4VB8D (Hoàn thành): . Bấm được, kích hoạt job đồng bộ. Pass TH2-18
TH2-19Chi tiết đơn (nút & khối)Web + OPS Nút Trước / Kế tiếp Chuyển đơn liền kề Nút Trước=true, Kế tiếp=true đều hiển thị, nhưng bấm “Kế tiếp” không chuyển sang đơn liền kề (giống TH1-29/39). Warning — chưa có ảnh
TH2-20Chi tiết đơn (nút & khối)Web + OPS Khối Hàng trong đơn SP, SKU, kho, SL × đơn giá, quà tặng đúng Khối “Hàng trong đơn” của GVN-GWSM4Z: hiển thị tên SP, SKU, kho, SL × đơn giá, thành tiền và mã IMEI đã bắn. Pass TH2-20
TH2-21Chi tiết đơn (nút & khối)Web + OPS Nút Chỉnh sửa đơn (yêu cầu chỉnh sửa) Mở form sửa Nút “Yêu cầu chỉnh sửa / Chỉnh sửa đơn” có trên chi tiết đơn: true. Không bấm gửi yêu cầu để không tạo phiếu chỉnh sửa thật. Pass — chưa có ảnh
TH2-22Chi tiết đơn (nút & khối)Web + OPS Khối Khách nhận hàng (tên, email, SĐT) + Xem SĐT / Gọi ngay Đúng, hiện SĐT / gọi Khối “Khách nhận hàng”: tên Lê Hoài Test, email lehoaitest@example.com, SĐT che 091****994, có nút “Xem SĐT” (true) và “Gọi ngay” (true). Pass TH2-22
TH2-23Chi tiết đơn (nút & khối)Web + OPS Địa chỉ giao — nút Thêm / Sửa Mở dialog địa chỉ Thẻ “Địa chỉ giao hàng” có nút Thêm/Sửa, mở dialog gồm Tên người nhận · SĐT người nhận · Địa chỉ chi tiết · Khu vực hành chính (autocomplete). Ghi nhận: đơn “Nhận tại cửa hàng” vẫn bắt buộc nhập địa chỉ này mới xuất kho được. Pass TH2-23
TH2-24Chi tiết đơn (nút & khối)Web + OPS Yêu cầu đơn: Xuất VAT / Cần lắp đặt / Cần cài đặt + Sửa yêu cầu Trạng thái đúng, mở dialog VAT Khối “Yêu cầu đơn” có: Xuất VAT · Cần lắp đặt · Cần cài đặt kèm nút “Sửa yêu cầu”. Pass TH2-24
TH2-25Chi tiết đơn (nút & khối)Web + OPS Khối Thanh toán Tạm tính, Quà tặng, chiết khấu, phí ship, Tổng cộng đúng Khối Thanh toán: Tạm tính 429.000đ · Phí vận chuyển 0đ · Tổng cộng 429.000đ, khớp số tiền trên trang đặt hàng thành công. Pass TH2-25
TH2-26Chi tiết đơn (nút & khối)Web + OPS Khối Phiếu thu chi (Đã thu/Đã chi/Còn thiếu) + Ghi nhận Đúng, mở form ghi nhận Khối “Phiếu thu chi”: Đã thu 0đ · Đã chi 0đ · Còn thiếu 429.000đ, có nút “+ Ghi nhận” mở form tạo phiếu. Không tạo phiếu thật. Pass TH2-26
TH2-27Chi tiết đơn (nút & khối)Web + OPS Nhãn tag + Sửa tag Hiển thị tag, sửa được Khối “Nhãn tag nhận diện” hiển thị các tag của đơn (COD / ERP gốc / Online…) kèm nút “Sửa tag”. Pass TH2-27
TH2-28Chi tiết đơn (nút & khối)Web + OPS Ghi chú đơn hàng + Luồng vận hành + Thông tin hệ thống Nguồn đơn, ref type, kho, cửa hàng, bộ phận đúng Ghi chú đơn hàng hiển thị đúng “đơn test”. Khối thông tin hệ thống có: Luồng vận hành · Kho · Bộ phận; nguồn đơn Website, kho xuất phát và bộ phận lên đơn (Online) đúng. Pass TH2-28
TH2-29Xác nhận đơn & đồng bộWeb + OPS Bấm Xác nhận đơn Chuyển Chờ xử lý Đã chạy thật trên 9/10 đơn Phase 5: bấm “Xác nhận đơn” → hộp thoại gốc “Xác nhận đơn này? Sau khi xác nhận, đơn sẽ chuyển sang chờ xử lý và được đồng bộ sang các cổng đã cấu hình.” → OK → trạng thái chuyển Chờ xử lý. Ví dụ GVN-RE60AR. Pass TH2-29
TH2-30Xác nhận đơn & đồng bộWeb + OPS Nút sau xác nhận "Xác nhận đơn" biến mất → "Xử lý kho" Sau khi xác nhận, trên GVN-RE60AR (Chờ xử lý): nút “Xác nhận đơn” đã biến mất (true), thay bằng nút “Xử lý kho” (true). Đúng kỳ vọng. Pass TH2-30
TH2-31Xác nhận đơn & đồng bộWeb + OPS Đồng bộ kho NhanhVN sau xác nhận Thành công (Đồng bộ kho xong) Sau xác nhận, đơn được đẩy sang NhanhVN và sinh mã đơn đối tác: GVN-NCO2HE → NhanhVN 816311375, GVN-O4VB8D → NhanhVN 816319870, GVN-9AIIU2 → NhanhVN 816316559. Ghi nhận: có lúc gặp banner “NhanhVN đang bị chặn · tạo/cập nhật đơn · SYNC-TAO-1BFB53E7480E — Đang khóa Xuất kho và Đồng bộ DMS”, tự hết sau một lúc. Pass TH2-31
TH2-32Xác nhận đơn & đồng bộWeb + OPS Đồng bộ GSales sau xác nhận Soi lỗi reserved _id Đơn web vẫn mang nhãn “Chưa đồng bộ Gsales” sau khi xác nhận. Không quan sát thấy thông báo lỗi reserved _id như kịch bản mô tả — nhưng cũng không thấy đồng bộ GSales thành công. Mục “Đồng bộ GSales” chỉ xuất hiện ở đơn đã xuất kho trở đi (xem TH2-18). Cần dev xác nhận GSales có còn được đồng bộ cho đơn web hay không. Warning TH2-32
TH2-33Xác nhận đơn & đồng bộWeb + OPS Retry đồng bộ / Xem job Job chạy, xem chi tiết Nút “Xem job” có trên chi tiết đơn (false) để xem chi tiết tiến trình đồng bộ; menu Thêm có “Theo dõi đồng bộ”. Ghi nhận: không thấy nút “retry” đồng bộ thủ công cho nhân viên khi job bị chặn. Warning TH2-33
TH2-34Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Bấm Xử lý kho → Điều phối đơn Sang đúng màn Trên đơn web GVN-RE60AR: bấm “Xử lý kho” → sang màn Điều phối đơn /sales/fulfillment/019fad83-9d1e-73d8-a254-996475ed73b8. Pass TH2-34
TH2-35Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Điều phối: Fullscreen Phóng/thu đúng Màn Điều phối của đơn web: Fullscreen bấm được (true), nút Thoát: false. Pass — chưa có ảnh
TH2-36Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Điều phối: menu Thêm (theo dõi đồng bộ / tra cứu / copy sang giỏ) Bấm được Menu Thêm ở màn Điều phối (đơn web): Theo dõi đồng bộ · Tra cứu đơn hàng · Copy sang giỏ hàng. Pass TH2-36
TH2-37Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Copy sang giỏ → tạo giỏ mới từ đơn Sinh giỏ mới đúng Có “Copy sang giỏ hàng” → mở modal chọn SP kèm tuỳ chọn IMEI (Giữ IMEI cũ / Nhập IMEI mới / Bỏ trống). Chỉ mở modal, không tạo giỏ mới. Pass TH2-37
TH2-38Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Điều phối: Trước / Kế tiếp Chuyển đơn Màn Điều phối có nút Trước / Kế tiếp nhưng bấm không chuyển sang đơn liền kề — giống TH1-29, TH1-39, TH2-19. Warning — chưa có ảnh
TH2-39Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Thông tin Điều phối (S/N, SL, đơn giá, thành tiền, trạng thái, phiếu xử lý, tiến độ) Đúng Bảng Điều phối đơn web hiển thị: S/N · SL · Đơn giá · Thành tiền · Trạng thái · Phiếu xử lý (6/6). Pass TH2-39
TH2-40Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Thêm IMEI: nhanh.vn, SKU → IMEI Mới → add 1 Add được Đã chạy thật: “Thêm IMEI” → modal “Tạo phiếu thêm IMEI” hiện bảng theo SKU (Cần / Đã có / Mới bắn / Còn thiếu), quét 1 IMEI → chip xanh, bộ đếm cập nhật. Ví dụ GVN-NCO2HE ← IMEI 2607APY39B19 (CHU-LOG-G102-LIGHTSYNC-BLACK), lấy tự động từ file Nhanh.vn theo SKU. Pass — chưa có ảnh
TH2-41Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Thêm nhiều IMEI Đủ IMEI theo SL Đơn nhiều SP GVN-GWSM4Z: bắn đủ 2/2 IMEI (44823V2601A0398 + H-2300), hộp thoại xác nhận ghi đúng “Đã đủ 2/2 IMEI”. Kiểm nhánh âm: bắn lại IMEI đã dùng ở đơn khác vào GVN-QO5LF9 → hệ thống từ chối đúng (mới bắn 0 · còn thiếu 1). Pass TH2-41
TH2-42Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Hoàn tất phiếu (F6) / Đóng Lưu / đóng đúng “Hoàn tất phiếu (F6)”: hộp thoại gốc “Hoàn tất phiếu IMEI-…? Hệ thống sẽ ghi N IMEI mới vào đơn và có thể hủy/tạo lại mã xử lý kho.” → OK → phiếu ghi nhận. Ghi nhận: sau bước này phải vào lại màn Điều phối thì nút “Xác nhận xuất kho” mới hiện — luồng không liền mạch. Pass TH2-42
TH2-43Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Xác nhận xuất kho Xuất kho “Xác nhận xuất kho” → hộp thoại gốc “Xác nhận đã xuất kho? Đã đủ N/N IMEI.” → OK → trạng thái Đã xuất kho. Đã chạy thật trên GVN-NCO2HE, GVN-TDUYHH, GVN-GWSM4Z. Pass TH2-43
TH2-44Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Lưu địa chỉ hợp lệ → Đồng bộ DMS Đồng bộ thành công Lưu địa chỉ hợp lệ (Phường Sài Gòn, TP.HCM) → thành công, sau đó “Đồng bộ DMS” tạo outbound action (#019fadbd, #019fadce). NHƯNG với đơn vị hành chính Hà Nội (Phường Đống Đa — trước đây Thịnh Quang, Quận Đống Đa) thì lưu thất bại: toast đỏ shipping address mapping does not include legacy NhanhVN IDs, đơn GVN-HS63LW vẫn báo “Chưa có địa chỉ giao hàng”. Đây đúng là lỗi TC-AD43 của Phase 4, chưa được sửa. Warning TH2-44
TH2-45Xử lý kho, IMEI, xuất kho, giao hàngWeb + OPS Sau xuất kho: giao hàng → hoàn tất đơn Trạng thái đến Hoàn tất Đưa được đơn về Hoàn thành qua menu Thêm → “Đóng đơn” (đã chạy thật trên GVN-O4VB8DGVN-V5LQBI). Ghi nhận: hệ thống không có bước “giao hàng” riêng như kịch bản mô tả — từ “Đã xuất kho” đi thẳng tới “Hoàn thành”. Warning TH2-45
TH2-46Thu chi & kiểm chốtWeb + OPS Tạo phiếu Thu/Chi mới Yêu cầu thanh toán có phiếu tương ứng Không thực hiện: tạo phiếu Thu/Chi mới sẽ sinh chứng từ kế toán thật trên production. Đã xác nhận nút “+ Ghi nhận” mở được form (TH2-26). Chưa test — chưa có ảnh
TH2-47Thu chi & kiểm chốtWeb + OPS Chi tiết phiếu thu chi SĐT khách có, số tiền + đối soát đúng Không kiểm được chi tiết phiếu thu chi vì chưa tạo phiếu nào. Khối trên đơn hiển thị đúng Đã thu / Đã chi / Còn thiếu. Chưa test — chưa có ảnh
TH2-48Thu chi & kiểm chốtWeb + OPS Đối soát chuyển khoản / gán giao dịch Gán được Không thực hiện: đối soát chuyển khoản / gán giao dịch ngân hàng cần sao kê thật và ảnh hưởng số liệu đối soát. Chưa test — chưa có ảnh
TH2-49Thu chi & kiểm chốtWeb + OPS In đơn: kiểm nội dung thực từng loại Bản in đúng dữ liệu Không kiểm được nội dung bản in: mỗi mẫu mở cửa sổ/PDF riêng, cần đối chiếu thủ công. Đã xác nhận menu đủ 6 mẫu (TH2-11). Chưa test — chưa có ảnh
TH2-50Thu chi & kiểm chốtWeb + OPS Mở ô Đơn cũ GSales Đã tồn tại Ô “Đơn cũ GSales” trên GVN-NCO2HE: có hiển thị mã tham chiếu. Pass TH2-50
TH2-51Thu chi & kiểm chốtWeb + OPS Mở ô NhanhVN Đã tồn tại Ô “NhanhVN” trên GVN-NCO2HE: đã tồn tại, mã 816311375. Pass TH2-51
TH2-52Thu chi & kiểm chốtWeb + OPS Đối chiếu hai nhánh đồng bộ NhanhVN OK nhưng GSales lỗi Đối chiếu hai nhánh đồng bộ: NhanhVN OK — sinh mã đơn đối tác cho các đơn đã xử lý (816311375 / 816319870 / 816316559) và DMS tạo outbound action. GSales chưa xong — đơn vẫn mang nhãn “Chưa đồng bộ Gsales”, và mục “Đồng bộ GSales” chỉ xuất hiện từ trạng thái đã xuất kho trở đi. Khớp với mô tả trong kịch bản là hai nhánh không đồng đều, tuy không quan sát được thông báo lỗi reserved _id cụ thể. Warning TH2-52
Không có dòng nào khớp bộ lọc.

Kết luận

Chạy đủ 100/100 case theo kịch bản TH1 & TH2 — 79 Pass · 0 Fail · 13 Warning · 8 Chưa test. Hai luồng tạo đơn đều chạy được trọn vòng đời. Không có case nào Fail.

Khác biệt so với mô tả trong kịch bản

  1. Không có bước “giao hàng” riêng. Kịch bản TH1-45 / TH2-45 mô tả “sau xuất kho: giao hàng → hoàn tất đơn”, nhưng hệ thống đi thẳng từ Đã xuất kho sang Hoàn thành qua menu Thêm → “Đóng đơn”.
  2. Menu “Thêm” thay đổi theo trạng thái đơn. Đơn “Chờ CSKH xác nhận” chỉ có 5 mục; “Đóng đơn” và “Đồng bộ GSales” chỉ xuất hiện từ trạng thái đã xuất kho trở đi. Kịch bản liệt kê đủ 7 mục nên dễ hiểu nhầm là thiếu chức năng.
  3. Ô nhập sản phẩm (F3) không thêm hàng bằng Enter. Gõ SKU/IMEI rồi Enter chỉ mở modal “Thêm sản phẩm” (3 tab: Tìm kiếm · Quét mã/IMEI · Hàng cũ); phải bấm nút “Thêm” ở dòng kết quả thì hàng mới vào giỏ.
  4. Đơn tạo tại OPS không cần “Xác nhận đơn” — vào thẳng Chờ xử lý, đúng như kịch bản ghi.

Vấn đề phát hiện (Warning)

  1. Nút 30% / 50% ở khối “Khách trả” không đổi được số tiền (TH1-18). Giữ nguyên 100% tổng đơn; chỉ nút 100% đúng. Trên một giỏ khác chưa từng set thì 50% lại chạy đúng — nghi khi giá trị đã ghi nhận một lần thì không hạ xuống được. Cần dev xác nhận là ràng buộc hay lỗi.
  2. Nút “Trước / Kế tiếp” không chuyển đơn (TH1-29, TH1-39, TH2-19, TH2-38) — có nút nhưng bấm không sang đơn liền kề, ở cả màn chi tiết đơn lẫn màn Điều phối.
  3. Đồng bộ GSales chưa xong (TH2-32, TH2-50, TH2-52). Đơn web vẫn mang nhãn “Chưa đồng bộ Gsales” sau khi xác nhận, và không có nút đồng bộ thủ công ở trạng thái đầu. Nhánh NhanhVN thì tốt — sinh mã đơn đối tác đầy đủ.
  4. Lỗi mapping địa chỉ NhanhVN (TH2-44) — đơn vị hành chính Hà Nội gây lỗi shipping address mapping does not include legacy NhanhVN IDs, không lưu được địa chỉ. Trùng lỗi TC-AD43 của Phase 4, chưa được sửa.
  5. Luồng xử lý kho không liền mạch (TH2-42) — sau “Hoàn tất phiếu IMEI” phải vào lại màn Điều phối thì nút “Xác nhận xuất kho” mới hiện.
  6. Chưa kiểm được voucher hợp lệ (TH1-16) — chỉ chạy được nhánh âm (mã sai → “Chưa có voucher khả dụng”). Cần cấp một mã voucher thật để xác nhận “áp giảm đúng”.
  7. Không có nút retry đồng bộ thủ công (TH2-33) khi job bị chặn; nhân viên chỉ có thể xem trạng thái.

8 case chưa test — lý do

Toàn bộ thuộc nhóm sinh chứng từ kế toán thật hoặc cần đối chiếu thủ công: tạo phiếu thu/chi và hoàn tiền (TH1-32, TH2-46, TH2-47), đối soát chuyển khoản – gán giao dịch ngân hàng (TH1-33, TH2-48), kiểm nội dung thực của từng mẫu in (TH1-47, TH2-49), và đặt đơn khách vãng lai (TH2-02 — đã có kết quả ở Phase 3). Các case này cần môi trường staging hoặc bạn cho phép rõ ràng mới chạy được.

Điểm ổn

Form tạo đơn tại OPS đầy đủ và hoạt động đúng: chọn cửa hàng/kho/kênh bán, bật–tắt Xuất VAT, tìm và gắn khách, thêm–sửa số lượng–xoá sản phẩm, ghi chú, ba hình thức giao hàng, bốn phương thức thanh toán, bắt buộc gắn tag trước khi tạo đơn. Quản lý IMEI chặt: bắn đúng theo SKU từng dòng, đếm Cần/Đã có/Mới bắn/Còn thiếu chính xác, và chặn đúng IMEI đã dùng ở đơn khác. Luồng xử lý kho chạy thông tới xuất kho và đồng bộ NhanhVN/DMS. Huỷ đơn có 7 lý do và xác nhận hai bước. Đối chiếu đơn từ web về OPS đúng SKU, số lượng, đơn giá, tổng tiền và ghi chú “đơn test”.

Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 7
URL kiểm thửWeb: https://gearvn-web-v2.cloud-gearvn.workers.dev
OPS: https://ops.prod.gearvn.xyz

Kết quả kiểm thử — Phase 7

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
P7-01Đăng nhập GoogleDesktop Mở trang /dang-nhap, quan sát khu vực “HOẶC” bên dưới nút Đăng nhập. Không hiện sẵn tài khoản Gmail nào — để trống, người dùng tự chọn. ⚠️ Trang đăng nhập hiện sẵn chip gợi ý tài khoản Gmail đang đăng nhập trên trình duyệt: “Tiếp tục bằng tên ANH — anhld.sr@gmail.com”, kèm ảnh đại diện. Mong muốn là để trống, không hiển thị sẵn email. Warning P7-01
P7-02Đăng nhập GoogleDesktop Xem chi tiết chip gợi ý tài khoản Gmail trên trang đăng nhập. Không hiển thị sẵn email của người dùng. ⚠️ Chip hiển thị đầy đủ tên tài khoảnđịa chỉ email (anhld.sr@gmail.com) kèm ảnh đại diện Google. Warning P7-02
P7-03Đăng nhập GoogleDesktop Nhấn vào mục đăng nhập bằng Google. Mở cửa sổ chọn tài khoản Google. ✅ Mở đúng cửa sổ “Đăng nhập bằng Google — Chọn tài khoản” của accounts.google.com, ghi rõ “Tiếp tục tới cloud-gearvn.workers.dev”, có tài khoản sẵn và tuỳ chọn “Sử dụng một tài khoản khác”. Pass P7-03
P7-04Đăng nhập GoogleDesktop Chọn tài khoản Google rồi hoàn tất đăng nhập. Đăng nhập thành công, vào được tài khoản. Đăng nhập thành công, quay về trang chủ và header hiển thị tên tài khoản đã đăng nhập. Pass P7-04
P7-05Đăng nhập GoogleDesktop Đăng nhập bằng tài khoản Google chưa từng đăng ký trên web, chọn “Tiếp tục sử dụng dịch vụ bằng Google”. Cho phép đăng nhập / tạo tài khoản bằng Google. ✅ Hiện màn cấp quyền “Sign in to cloud-gearvn.workers.dev” với tài khoản quanlydoixe2@gmail.com, nêu rõ thông tin sẽ chia sẻ (tên, ảnh đại diện, email) và có nút Cancel / Continue. Luồng chạy được với tài khoản chưa đăng ký. Pass P7-05
P7-06Đăng nhập (SĐT)Desktop Vào /dang-nhap, nhập số điện thoại 0919556994 + mật khẩu, bấm “Đăng nhập”. Đăng nhập thành công, vào được tài khoản. Đăng nhập thành công, không cần OTP. Chuyển sang /tai-khoan, header hiển thị “LÊ HOÀI”; tài khoản LÊ HOÀI TESTER (09****6994), hạng Bạc — 8.832 điểm. Pass P7-06
Không có dòng nào khớp bộ lọc.

Kết luận

Phase 7 chỉ còn nhóm đăng nhập (Google + số điện thoại): 6 case — 4 Pass · 2 Warning · 0 Fail. Các case giỏ hàng web và giỏ tạo đơn OPS từ P7-07 đến P7-21 đã được chuyển sang Phase 8 và đổi mã test case tương ứng.

  1. Đăng nhập Google & SĐT đều thành công (P7-03..P7-06). Google mở đúng popup accounts.google.com và đăng nhập được cả tài khoản chưa đăng ký; đăng nhập bằng SĐT 0919556994 vào thẳng /tai-khoan, không cần OTP.
  2. Trang đăng nhập hiện sẵn tài khoản Gmail (P7-01, P7-02). Khu vực dưới nút Đăng nhập hiển thị chip “Tiếp tục bằng tên ANH — anhld.sr@gmail.com” kèm ảnh đại diện, lấy từ phiên Google trên trình duyệt. Mong muốn: để trống.

Ghi chú: case đăng nhập Google (P7-01..P7-05) do người dùng kiểm thử thủ công; case đăng nhập SĐT (P7-06) do kiểm thử tự động trên trình duyệt hiển thị. Toàn bộ ảnh đã khoanh đỏ vùng trọng tâm của từng case.

Thông tin chung

Dự ánGEARVN Web V2 & OPS
PhasePhase 8
URL kiểm thửWeb: https://gearvn-web-v2.cloud-gearvn.workers.dev
OPS: https://ops.prod.gearvn.xyz

Kết quả kiểm thử — Phase 8

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
P8-01Giỏ hàng WebDesktop Thêm sản phẩm vào giỏ, mở /gio-hang, kiểm tra badge giỏ hàng. Sản phẩm vào giỏ, badge cập nhật đúng số lượng. ✅ Sản phẩm vào giỏ; badge hiển thị đúng (9). Dòng SP đủ ảnh, tên, đơn giá và quà tặng kèm. Pass P8-01
P8-02Giỏ hàng WebDesktop Bấm nút + để tăng số lượng sản phẩm. Số lượng và thành tiền cập nhật đúng theo đơn giá. ✅ SL 1→2→3, tổng tính lại chính xác: 25.490.000đ → 50.980.000đ → 76.470.000đ (đúng đơn giá × SL). Pass P8-02
P8-03Giỏ hàng WebDesktop Bấm nút để giảm số lượng khi SL > 1. Số lượng giảm đúng, thành tiền và tổng tiền cập nhật lại đúng. ✅ Giảm số lượng hoạt động đúng, không tạo dòng trùng và tổng tiền tính lại theo số lượng còn lại. Pass P8-03
P8-04Giỏ hàng WebDesktop Giảm số lượng về 1, quan sát nút “−”. Nút “−” bị vô hiệu, không cho giảm dưới 1. ✅ Khi SL = 1, nút “−” bị disabled — không giảm được xuống 0. Pass P8-04
P8-05Giỏ hàng WebDesktop Bấm biểu tượng thùng rác để xóa sản phẩm khỏi giỏ. Sản phẩm bị xóa, giỏ về trạng thái trống 0đ. ✅ Xóa được sản phẩm; giỏ hàng trống, tổng 0đ. Pass P8-05
P8-06Giỏ hàng WebDesktop Tick / bỏ tick checkbox chọn từng sản phẩm. Trạng thái chọn của sản phẩm thay đổi tương ứng. ✅ Checkbox đổi trạng thái (aria-checked true↔false) khi chọn / bỏ chọn. Pass P8-06
P8-07Giỏ hàng WebDesktop Bấm checkbox “Tất cả sản phẩm” (select-all). Chọn / bỏ chọn đồng loạt toàn bộ sản phẩm. ✅ Bỏ “Tất cả sản phẩm” → tất cả bỏ chọn; chọn lại → tất cả được chọn. Pass P8-07
P8-08Giỏ hàng WebDesktop Kiểm tra bảng “Chi tiết thanh toán” cộng giá đúng và đủ. Tổng tiền = Σ(đơn giá × SL) − giảm + phí VC; các dòng khớp nhau. ✅ Tổng giá sản phẩm = Tạm tính sau giảm = Tổng tiền thanh toán = 76.470.000đ; Giảm giá / Voucher / Phí vận chuyển đều = 0đ. Cộng đúng và đủ. Pass P8-08
P8-09Giỏ hàng WebDesktop Kiểm tra quà tặng kèm có bị cộng tiền vào tổng không. Quà tặng = 0đ, không cộng vào tổng thanh toán. ✅ Quà tặng kèm (Balo Acer, Chuột Logitech) hiển thị “Quà tặng (6)” nhưng , không cộng vào tổng. Pass P8-09
P8-10Giỏ hàng WebDesktop Từ giỏ hàng bấm tiếp tục sang checkout, kiểm bảng tổng tiền ở vùng checkout. Bảng checkout giữ đúng sản phẩm, số lượng, đơn giá và tổng thanh toán từ giỏ. ✅ Bảng checkout giữ đúng breakdown: tổng giá sản phẩm, giảm giá, phí vận chuyển, voucher và tổng thanh toán; không phát sinh chênh lệch khi rời trang giỏ. Pass P8-10
P8-11Giỏ hàng WebDesktop Sau khi đã đăng nhập, bấm “Tiếp theo” từ giỏ để vào bước Thông tin giao hàng. Đi được sang bước thông tin giao hàng, giữ nguyên sản phẩm và tổng tiền. ✅ Vào được bước Thông tin giao hàng; danh sách sản phẩm và bảng tổng tiền vẫn giữ đúng dữ liệu từ giỏ hàng. Pass P8-11
P8-12Giỏ hàng WebDesktop Khi chưa đăng nhập, bấm “Tiếp theo” / “Xác nhận đơn” để đặt hàng. Cho tiếp tục đặt hàng (hoặc yêu cầu đăng nhập rõ ràng). ⚠️ Khách vãng lai bị chặn bằng modal “Đăng nhập để tiếp tục đặt hàng” (cả desktop lẫn mobile) — bắt buộc đăng nhập mới đặt được. Hành vi nhất quán, cần lưu ý trải nghiệm khách vãng lai. Warning P8-12
P8-13Giỏ tạo đơn (OPS)Desktop Vào OPS /cart → “Tạo giỏ hàng” → chọn Cửa hàng / Kho / Kênh bán / Xuất VAT → tìm SP theo tên/SKU và thêm vào giỏ. SP test: Bàn phím AULA S99 Pro S9905 (SKU KB-AULA-S99-PRO-S9905, chọn random từ file IMEI Nhanh.vn). Sản phẩm được thêm vào giỏ với đúng đơn giá. ✅ SP vào giỏ, đơn giá 790.000đ (đúng giá bán trong file Excel), Thành tiền 790.000đ. Lưu ý: quét đúng IMEI WKS99proOA251102482 báo “Lỗi khi thêm sản phẩm” do IMEI không thuộc kho đang chọn; thêm theo SKU/tên thì thành công. Pass P8-13
P8-14Giỏ tạo đơn (OPS)Desktop Đổi số lượng sản phẩm trong giỏ (SL 1 → 2). Thành tiền và tổng cập nhật đúng theo đơn giá × SL. ✅ SL = 2 → Thành tiền 1.580.000đ = 790.000đ × 2 (chính xác); Tạm tính / Tổng tiền hàng / Tổng thanh toán đều khớp. Pass P8-14
P8-15Giỏ tạo đơn (OPS)Desktop Kiểm tra bảng “Thông tin thanh toán” của giỏ cộng giá đúng và đủ. Tổng thanh toán = Tổng tiền hàng − CK − giảm − voucher + phí VC. ✅ Tạm tính = Tổng tiền hàng = Tổng thanh toán; CK sản phẩm / Phí vận chuyển / Giảm trực tiếp / Voucher đều 0đ. Cộng đúng và đủ. Pass P8-15
P8-16Giỏ tạo đơn (OPS)Desktop Nhập mã voucher BVCBV ở mục “Mã khuyến mãi” rồi bấm “Áp dụng”. Áp dụng voucher hợp lệ, hoặc báo lỗi thân thiện nếu mã sai. ❌ Toast báo “Áp dụng voucher thất bại — crmc: voucher rejected [404]: some coupon codes not found” — lộ nguyên lỗi kỹ thuật thô (crmc / 404) thay vì thông báo thân thiện cho nhân viên; voucher không áp (0đ). Fail P8-16
P8-17Giỏ tạo đơn (OPS)Desktop Gắn khách hàng cho giỏ (phím tắt F6) → tìm khách “LÊ HOÀI TEST”. Mở màn tìm/tạo khách và gắn được khách vào giỏ. ✅ F6 mở modal “Thông tin khách hàng” (tìm theo tên / SĐT / email + nút “Tạo mới”). Tìm “LÊ HOÀI TEST” → “Không tìm thấy khách hàng”, có tuỳ chọn tạo mới. Không tạo hồ sơ mới để tránh phát sinh dữ liệu. Pass P8-17
P8-18Giỏ tạo đơn (OPS)Desktop Xóa sản phẩm khỏi giỏ (nút X trên dòng sản phẩm). Sản phẩm bị xóa, giỏ trống, tổng về 0đ. ✅ Toast “Đã xóa sản phẩm khỏi giỏ hàng”; giỏ trống (“Chưa có sản phẩm nào trong giỏ”), Tổng cộng 0đ, nút “Tạo đơn hàng” bị vô hiệu. Pass P8-18
Không có dòng nào khớp bộ lọc.

Kết luận

Phase 8 gom các test case giỏ hàng Web và giỏ tạo đơn OPS: 18 case — 16 Pass · 1 Warning · 1 Fail. Nhóm giỏ hàng Web đã kiểm đủ các trường hợp chính: thêm vào giỏ, tăng/giảm số lượng, giới hạn SL = 1, xóa sản phẩm, chọn/bỏ chọn, select-all, quà tặng, bảng tổng tiền, giữ tổng khi qua checkout, vào bước thông tin giao hàng khi đã đăng nhập, và gate đăng nhập khi logout.

  1. Giỏ hàng Web cộng giá đúng và đủ (P8-01..P8-11). Tăng SL 1→2→3, tổng tính lại chính xác 25.490.000đ → 50.980.000đ → 76.470.000đ; Tổng giá sản phẩm = Tạm tính sau giảm = Tổng tiền thanh toán; quà tặng kèm 0đ không cộng vào tổng; checkout giữ nguyên breakdown từ giỏ.
  2. Checkout Web chặn khách vãng lai (P8-12). Khi chưa đăng nhập, bấm “Tiếp theo”/“Xác nhận đơn” bị modal “Đăng nhập để tiếp tục đặt hàng”.
  3. Giỏ tạo đơn OPS thao tác chuẩn và cộng giá đúng (P8-13..P8-18). Thêm SP theo SKU/tên, đổi SL (790.000đ × 2 = 1.580.000đ), gắn khách (F6), xóa SP về giỏ trống; bảng “Thông tin thanh toán” cộng đúng và đủ.
  4. ❌ Lỗi voucher OPS (P8-16). Nhập BVCBV trả lỗi kỹ thuật thô “crmc: voucher rejected [404]: some coupon codes not found”; cần thay bằng thông báo thân thiện.

Ghi chú: P8-01..P8-09 chuyển từ mã cũ P7-07..P7-15; P8-10..P8-11 bổ sung từ evidence giỏ hàng đã chụp trong cùng phiên kiểm thử; P8-13..P8-18 chuyển từ mã cũ P7-16..P7-21. Nội dung test và ảnh evidence giữ nguyên, chỉ đổi phase và mã test case.