| TC62-WEB | Đăng nhập | Desktop |
Đă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 |
 |
| TC63-WEB | Phân quyền route | Desktop |
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 |
 |
| TC64-WEB | Đăng xuất | Desktop |
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 |
 |
| TC66-WEB | Giỏ 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 |
 |
| TC67-WEB | Giỏ hàng — bền vững | Desktop |
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 |
 |
| TC68-WEB | Tra cứu SKU | Desktop |
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 |
 |
| 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 |
 |
| TC71-AD | OPS — Đối chiếu đơn | Desktop |
Kiểm tra 5 mã đơn vừa tạo có xuất hiện ở /sales/orders và /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 |
 |
| TC72-AD | OPS — Yêu cầu hủy đơn | Desktop |
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 |
 |
| TC73-AD | OPS — Hủy đơn | Desktop |
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 |
 |
| TC74-WEB | Đơn hàng của tôi | Desktop |
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 |
 |
| TC83-AD | OPS — Xử lý kho / Thêm IMEI | Desktop |
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 |
 |
| TC86-AD | OPS — Dialog hủy đơn | Desktop |
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 |
 |
| TC87-AD | OPS — Đồ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-6OZYTN và GVN-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 |
  |
| TC88-WEB | Đăng nhập — Hiện/ẩn mật khẩu | Desktop |
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 |
 |
| TC89-WEB | Đăng nhập — Email sai định dạng | Desktop |
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 |
 |
| TC90-WEB | Đăng nhập — Bằng email | Desktop |
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 |
 |
| TC91-WEB | Đăng nhập — Chống dò mật khẩu | Desktop |
Đă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 |
 |
| TC92-AD | OPS — Cập nhật yêu cầu VAT | Desktop |
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 |
 |
| TC93-AD | OPS — 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 |
 |
| TC94-AD | OPS — Phiếu thu chi sau khi giảm đơn | Desktop |
Đơ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 |
 |
| TC95-AD | OPS — 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 |
 |
| TC96-AD | OPS — 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 |
 |
| TC97-AD | OPS — Đị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 |
 |
| TC98-AD | OPS — Xác nhận đơn | Desktop |
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 |
 |