Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
Hướng dẫn · Kiểm trađọc 7 phút·Updated tháng 10 năm 2026·Đội ngũ ExodeUI

Kiểm tra trạng thái giao diện người dùng và hoạt ảnh với Playwright

Cách viết các bài kiểm tra ổn định cho giao diện người dùng hoạt hình bằng Playwright: kiểm soát thời gian bằng page.clock, mô phỏng chuyển động giảm và chế độ tối cũng như ảnh chụp màn hình tắt hoạt ảnh.

Tóm tắt và định nghĩa

Điểm chính

Làm cho các thử nghiệm hoạt ảnh mang tính quyết định: kiểm soát thời gian với page.clock, bao gồm bộ hẹn giờ, requestAnimationFrame và hiệu suất; mô phỏng cài đặt người dùng với page.emulateMedia({reduceMotion, colorScheme }); khẳng định các trạng thái thay vì các pixel hoạt hình giữa; và chụp ảnh màn hình với hình ảnh động bị tắt. Kiểm tra đường chuyển động giảm như trường hợp hạng nhất.

Tại sao các bài kiểm tra hoạt hình lại không ổn định

Hoạt ảnh phụ thuộc vào thời gian và thời gian thực khác nhau giữa các lần chạy và máy. Ảnh chụp màn hình được chụp sớm hoặc muộn 10 mili giây sẽ hiển thị một khung hình khác. Cách khắc phục là kiểm soát thời gian và cài đặt, đồng thời kiểm tra trạng thái hoạt ảnh di chuyển giữa thay vì từng khung hình riêng lẻ.

Bốn bước: đặt trạng thái, kiểm soát thời gian với page.clock, mô phỏng các cài đặt như giảm chuyển động, xác nhận bằng kiểm tra DOM và ảnh chụp màn hình
Thời gian cố định và cài đặt cố định giúp giao diện người dùng hoạt hình có thể kiểm tra được.

Kiểm soát thời gian

API đồng hồ của Playwright cho phép thử nghiệm cài đặt đồng hồ giả, sau đó tạm dừng, tua đi nhanh hoặc chạy thời gian trong một khoảng thời gian đã đặt. Nó bao gồm setTimeout, setInterval, requestAnimationFrame và hiệu suất, do đó, chẳng hạn, bạn có thể tua nhanh qua độ trễ tải và kiểm tra xem trạng thái thành công có xuất hiện hay không.

Mô phỏng cài đặt người dùng

page.emulateMedia() có thể đặt lessMotion thành "giảm" và colorScheme thành "tối" hoặc "sáng". Chạy các luồng phím với chuyển động giảm để xác nhận rằng không có gì quan trọng phụ thuộc vào hoạt ảnh và trong cả hai chủ đề để phát hiện các vấn đề về độ tương phản.

Ảnh chụp màn hình ổn định

Kiểm tra Playwright có thể so sánh ảnh chụp màn hình với mong đợi (trang).toHaveScreenshot() và các tùy chọn ảnh chụp màn hình bao gồm hoạt ảnh: "đã tắt", điều này dừng hoạt ảnh và chuyển tiếp của CSS để chụp. Sử dụng so sánh trực quan cho trạng thái kết thúc và xác nhận hành vi hoặc DOM hoặc khả năng truy cập.

Kiểm tra các thành phần dựa trên canvas

Hoạt ảnh canvas, chẳng hạn như hoạt ảnh được vẽ bởi thời gian chạy Lottie, Rive hoặc ExodeUI, không hiển thị trong DOM. Kiểm tra đầu vào mà mã của bạn gửi và các sự kiện mà nó nhận được, giữ các phần tử thực sự có thể truy cập được dọc theo khung vẽ và sử dụng ảnh chụp màn hình để kiểm tra trực quan sau khi kiểm soát được thời gian.

Đoạn mã triển khai thực tế

Triển khai component tương tác
import { test, expect } from '@playwright/test';

test('save button shows success, also with reduced motion', async ({ page }) => {
  await page.clock.install();                         // fake timers + rAF
  await page.emulateMedia({ reducedMotion: 'reduce' }); // test the calm path
  await page.goto('/settings');

  await page.getByRole('button', { name: 'Save' }).click();
  await expect(page.getByRole('status')).toHaveText('Saving…');

  await page.clock.runFor(2000);                      // skip the wait deterministically
  await expect(page.getByRole('status')).toHaveText('Saved');

  await expect(page).toHaveScreenshot('saved.png', { animations: 'disabled' });
});

Nguyên tắc chính cần nhớ

  • Kiểm soát thời gian bằng page.clock (bộ hẹn giờ, requestAnimationFrame, hiệu suất)
  • Mô phỏng giảmMotion và colorScheme với page.emulateMedia
  • Khẳng định về trạng thái và văn bản có thể truy cập, không phải pixel hoạt ảnh ở giữa
  • Ảnh chụp màn hình có hình động: "bị vô hiệu hóa"
  • Kiểm tra đường chuyển động giảm như trường hợp hạng nhất

Câu hỏi thường gặp

Nguồn

  1. Clock — Tài liệu Playwright
  2. Page.emulateMedia and screenshot options — Tài liệu Playwright
  3. Visual comparisons — Tài liệu Playwright

Hướng dẫn và ví dụ liên quan

Các thành phần được xây dựng xung quanh các trạng thái có thể kiểm tra được

Các thành phần ExodeUI được điều khiển bởi các đầu vào được đặt tên, giúp dễ dàng kiểm tra trạng thái của chúng từ mã của bạn.

Đọc hướng dẫn React
Dùng thử miễn phí