Quay lại danh sách
Tin tức công nghệ

Xây dựng Công cụ Tự động Chụp ảnh Màn hình và Theo dõi Thay đổi Giao diện Website (Visual Regression) với Shotglass trên VPS

3 tháng 6, 2026

Đặt vấn đề: Thách thức trong việc kiểm soát nhất quán giao diện Website

Trong quy trình phát triển và vận hành các hệ thống website hiện đại, việc duy trì tính nhất quán của giao diện người dùng (UI) là một thách thức không hề nhỏ. Mỗi một thay đổi dù là nhỏ nhất trong mã nguồn CSS, nâng cấp thư viện bên thứ ba, hay cấu hình CMS đều có thể dẫn đến những lỗi hiển thị nghiêm trọng (UI Regression) trên các thiết bị và trình duyệt khác nhau. Kiểm thử thủ công (Manual Testing) không chỉ tiêu tốn nguồn lực mà còn dễ bỏ sót các lỗi vi mô như lệch dòng, tràn chữ hoặc mất khối phần tử.

Để giải quyết triệt để bài toán này, các doanh nghiệp công nghệ lớn thường áp dụng giải pháp Visual Regression Testing (Kiểm thử thoái hóa giao diện). Hệ thống này tự động chụp ảnh màn hình (screenshot) các trang chuẩn, so sánh đối chiếu với phiên bản hiện tại sau mỗi lần cập nhật, và đưa ra cảnh báo nếu có sự sai lệch về mặt điểm ảnh (pixel). Trong bài viết này, chúng tôi sẽ hướng dẫn quý độc giả cách xây dựng một công cụ tự động hóa toàn diện bằng cách sử dụng Shotglass kết hợp cùng máy chủ ảo VPS riêng biệt.

Shotglass là gì và tại sao nên triển khai trên VPS?

Shotglass là một công cụ mã nguồn mở mạnh mẽ được thiết kế riêng cho tác vụ điều khiển trình duyệt không đầu (headless browser) để chụp ảnh màn hình hàng loạt và thực hiện so sánh Visual Regression với độ chính xác cao. Khác với các dịch vụ SaaS thương mại có chi phí đắt đỏ tính theo số lượng ảnh chụp, việc tự triển khai Shotglass mang lại những lợi ích chiến lược cho doanh nghiệp:

  • Tối ưu hóa chi phí: Tận dụng tài nguyên sẵn có của VPS, không giới hạn số lượng domain và tần suất chụp ảnh màn hình.
  • Bảo mật dữ liệu tuyệt đối: Toàn bộ dữ liệu giao diện, thông tin môi trường staging nội bộ của doanh nghiệp được lưu trữ cục bộ, không đi qua máy chủ bên thứ ba.
  • Khả năng tùy biến cao: Dễ dàng can thiệp vào mã nguồn để tích hợp sâu vào quy trình CI/CD (Jenkins, GitLab CI, GitHub Actions) hoặc hệ thống cảnh báo nội bộ (Slack, Telegram, Microsoft Teams).

Hướng dẫn từng bước xây dựng hệ thống trên VPS

Bước 1: Chuẩn bị và tối ưu hóa môi trường VPS

Để đảm bảo công cụ hoạt động ổn định và xử lý mượt mà các tác vụ đồ họa từ trình duyệt, VPS của bạn nên chạy hệ điều hành Ubuntu Server 22.04 LTS hoặc mới hơn với cấu hình tối thiểu 2 vCPU và 2GB RAM. Trước hết, chúng ta cần cài đặt các gói thư viện hệ thống và các font chữ thiết yếu để tránh tình trạng lỗi hiển thị chữ (font rendering) khi chụp ảnh website tiếng Việt.

Cập nhật hệ thống và cài đặt font chữ hệ thống:
sudo apt update && sudo apt upgrade -y
sudo apt install -y fonts-liberation fonts-noto-cjk fonts-roboto ttf-mscorefonts-installer

Tiếp theo, hãy cài đặt môi trường Node.js (phiên bản LTS) làm nền tảng chạy Shotglass cùng với Chromium - trình duyệt đóng vai trò cốt lõi trong việc render giao diện.

Bước 2: Cài đặt và cấu hình Shotglass

Sau khi môi trường hệ thống đã sẵn sàng, tiến hành khởi tạo thư mục dự án và cài đặt Shotglass thông qua trình quản lý gói npm. Chúng ta sẽ tạo một file cấu hình mang tên shotglass.config.json để định nghĩa danh sách các URL cần theo dõi, kích thước màn hình (viewport) cho cả giao diện máy tính (Desktop) và điện thoại (Mobile).

Một cấu hình mẫu tiêu chuẩn sẽ bao gồm các tham số quan trọng:

  • targets: Mảng chứa danh sách các trang web chiến lược (Trang chủ, Trang sản phẩm, Trang thanh toán).
  • viewports: Định nghĩa độ phân giải màn hình, ví dụ: Desktop (1920x1080) và Mobile (375x812).
  • threshold: Ngưỡng chấp nhận sai lệch pixel (thường đặt ở mức 0.1%). Nếu độ lệch vượt quá ngưỡng này, hệ thống sẽ đánh dấu là lỗi UI.

Bước 3: Thiết lập kịch bản so sánh Visual Regression

Quy trình cốt lõi của Shotglass vận hành theo cơ chế 3 bước nghiêm ngặt:

  1. Chụp ảnh cơ sở (Baseline): Chụp ảnh giao diện tại thời điểm website hoạt động hoàn hảo nhất để làm gốc so sánh.
  2. Chụp ảnh hiện tại (Current): Chụp lại giao diện sau khi hệ thống thực hiện cập nhật hoặc theo định kỳ.
  3. So sánh và xuất báo cáo (Diff): Thuật toán so sánh ảnh pixel-by-pixel sẽ tạo ra một ảnh thứ ba (Diff Image) làm nổi bật các vùng có sự thay đổi bằng màu magenta (hồng tím) để kỹ sư QA dễ dàng nhận biết.

Lưu ý quan trọng: Đối với các thành phần động trên website như banner quảng cáo xoay vòng, video, hoặc widget chat, chúng ta cần cấu hình thuộc tính excludeElements trong Shotglass để ẩn các thẻ HTML này trước khi chụp, tránh tạo ra các cảnh báo sai (False Positives).

Bước 4: Tự động hóa lịch trình với Cron Job và Tích hợp Cảnh báo

Để biến hệ thống này thành một công cụ giám sát tự động 24/7 thực thụ, chúng ta sử dụng công cụ lập lịch Cron Job có sẵn trên Linux. Ví dụ, thiết lập hệ thống tự động kiểm tra giao diện vào lúc 0h00 mỗi ngày:

Bên cạnh đó, việc tích hợp API thông báo là vô cùng cần thiết. Khi phát hiện bất kỳ sự sai lệch giao diện nào vượt ngưỡng cho phép, Shotglass sẽ kích hoạt một script webhook gửi trực tiếp ảnh Diff cùng thông tin cảnh báo về kênh Telegram hoặc Slack của đội ngũ vận hành kỹ thuật (DevOps/QA), giúp giảm thiểu tối đa thời gian phát hiện và khắc phục sự cố UI.

Kết luận và Khuyến nghị vận hành

Việc xây dựng thành công công cụ tự động chụp ảnh màn hình và theo dõi thay đổi giao diện website với Shotglass trên VPS giúp doanh nghiệp hoàn toàn làm chủ quy trình kiểm thử thị giác. Giải pháp này không chỉ nâng cao tính chuyên nghiệp trong khâu phát hành sản phẩm mà còn giảm thiểu rủi ro thương hiệu do lỗi giao diện gây ra trên môi trường Production.

Để hệ thống vận hành tối ưu lâu dài, chúng tôi khuyến nghị doanh nghiệp nên định kỳ dọn dẹp các tệp tin ảnh cũ trên VPS để tránh đầy dung lượng ổ cứng, đồng thời thường xuyên cập nhật phiên bản Chromium để đảm bảo khả năng tương thích tốt nhất với các công nghệ web mới nhất.

Xây dựng Công cụ Tự động Chụp ảnh Màn hình và Theo dõi Thay đổi Giao diện Website (Visual Regression) với Shotglass trên VPS | DPTCloud