← Danh sách kịch bản L4 · Tổng quan

ap-open-booking-fab-mobile

Target: app | Khổ màn hình: 390×844 | Đồng hồ đóng băng: 2026-08-02T09:00:00 | TZ: Europe/Berlin

Steps: 6 | Có Expected: 6 | Thiếu Expected: 0

#StepMàn hìnhTổngExpected
1mở app ở 390pxportal:overview0.00✅
2bấm FAB Bookportal:overview0.00✅
3chọn dịch vụportal:overview5.00✅
4kéo rộng qua 880px để đi tiếpportal:overview5.00✅
5xác nhận đặt lịchportal:overview5.00✅
6bấm Doneportal:bookings0.00✅

ap-open-booking-fab-mobile Step 1 · mở app ở 390px

🎯 Expected: App mở ở màn Overview, chào Mary Pham. Thanh dưới có nút Book (FAB).

step 1

Panels

Đơn đặt

TrườngGiá trị
Màn hìnhportal:overview
Tổng tiền0.00
Số add-on0

Thành viên

Đăng nhậpChip
——

Cổng thành viên

TrườngGiá trị
TênMary Pham
HạngGold Member
Điểm1240
Khung nhìnportal:overview
Số voucher1

ap-open-booking-fab-mobile Step 2 · bấm FAB Book

🎯 Expected: Lớp phủ đặt lịch mở NGAY TRONG app (không rời trang) và wizard đã ở bước 1 với danh tính Mary Pham đổ sẵn: tên và số điện thoại lấy từ tài khoản nên bị khoá readonly. App mặc định giao diện SÁNG nên popup cũng sáng — không có lớp book-dark.

step 2

Panels

Đơn đặt

TrườngGiá trị
TênMary Pham
SĐT0766 345 439
Emailmary.pham@example.com
Ngày2026-08-02
Giờ
Số khách1
TrườngGiá trị
Màn hìnhportal:overview
Tổng tiền0.00
Số add-on0

Thành viên

Đăng nhậpChip
——

Cổng thành viên

TrườngGiá trị
TênMary Pham
HạngGold Member
Điểm1240
Khung nhìnportal:overview
Số voucher1

Lớp phủ đang mở: bookOv

ap-open-booking-fab-mobile Step 3 · chọn dịch vụ

🎯 Expected: Sang bước chọn dịch vụ và thêm được 1 món, tổng 5. Ở 390px giỏ nằm ở trang con riêng.

step 3

Panels

Đơn đặt

TrườngGiá trị
Màn hìnhportal:overview
Tổng tiền5.00
Số add-on0

Thành viên

Đăng nhậpChip
——

Cổng thành viên

TrườngGiá trị
TênMary Pham
HạngGold Member
Điểm1240
Khung nhìnportal:overview
Số voucher1

Lớp phủ đang mở: bookOv

ap-open-booking-fab-mobile Step 4 · kéo rộng qua 880px để đi tiếp

🎯 Expected: Wizard tự dựng lại sang nhánh desktop: giỏ nhập lại cùng trang với danh sách, stepper còn 3 mốc. Dịch vụ đã chọn không mất.

step 4

Panels

Đơn đặt

Mục trong giỏ
French Tip$5.00+ · 15 min Add add-ons
TrườngGiá trị
Màn hìnhportal:overview
Tổng tiền5.00
Số add-on0

Thành viên

Đăng nhậpChip
——

Cổng thành viên

TrườngGiá trị
TênMary Pham
HạngGold Member
Điểm1240
Khung nhìnportal:overview
Số voucher1

Lớp phủ đang mở: bookOv

ap-open-booking-fab-mobile Step 5 · xác nhận đặt lịch

🎯 Expected: Màn Booking Confirmed. Wizard gọi ngược lên app qua onBookSession() để app ghi lại phiên — đây là cầu nối thay cho postMessage của bản web.

step 5

Panels

Đơn đặt

TrườngGiá trị
Màn hìnhportal:overview
Tổng tiền5.00
Số add-on0

Thành viên

Đăng nhậpChip
——

Cổng thành viên

TrườngGiá trị
TênMary Pham
HạngGold Member
Điểm1240
Khung nhìnportal:overview
Số voucher1

Lớp phủ đang mở: bookOv

ap-open-booking-fab-mobile Step 6 · bấm Done

🎯 Expected: Lớp phủ đóng và app KHÔNG đứng yên ở Overview: closeBooking() nạp lại dữ liệu rồi chuyển thẳng sang màn Bookings để người dùng thấy lịch vừa đặt.

step 6

Panels

Đơn đặt

TrườngGiá trị
Màn hìnhportal:bookings
Tổng tiền0.00
Số add-on0

Thành viên

Đăng nhậpChip
——

Cổng thành viên

TrườngGiá trị
TênMary Pham
HạngGold Member
Điểm1240
Khung nhìnportal:bookings
Số voucher1

Hướng dẫn cho LLM review

Với mỗi step: đọc Expected, đối chiếu với ảnh và bảng Panels, rồi trả lời

KHỚP hoặc LỆCH. Nếu LỆCH, chỉ rõ phần nào của Expected không thấy.

Giới hạn đã biết của ảnh L4: test chạy trong jsdom, không có layout engine, nên mọi vị trí do app tự tính từ kích thước đo được sẽ không đúng. Ảnh này do Chromium dựng lại TỪ DOM dump ở bước sau, nên bố cục CSS tĩnh thì đúng, còn thứ phụ thuộc đo đạc lúc chạy thì không. Đừng báo LỆCH vì lý do bố cục — chỉ xét nội dung, text, trạng thái và sự hiện diện của phần tử.

Font chữ trong ảnh khác bản thật: <link> Google Fonts bị gỡ khi nạp trang để test không đi ra mạng, nên chữ rơi về serif hệ thống. Đây không phải lỗi.