Trong quá trình viết test, đôi khi chúng ta cần đánh dấu 1 test vì một nguyên nhân nào đó bất khả kháng 😅
fail, fixme, only và skip
// test này expect là sẽ phải fail, nếu fail thật thì test là pass; nếu nó mà pass thì test này lại thành fail
test.fail(true, 'BUG-123: kết quả đang sai');
// test này có ý nghĩa đánh dấu là "hãy fix tôi"
test.fixme(process.platform === 'linux', 'Chưa hỗ trợ Linux');
// trong 1 file có 10 test, nếu 1 test đánh dấu là only thì chỉ chạy test đó
test.only('Tôi đang tập trung vào test này thôi');
// test này bị skip ở report
test.skip('Tính năng không có trên WebKit');*** Test Cases ***
Ví Dụ Điều Khiển Test
[Tags] bug-123
Skip If '${PLATFORM}' == 'linux' Chưa hỗ trợ Linux
# Robot Framework không có expected-fail annotation giống test.fail.
# Có thể dùng tag để quản lý bug, nhưng không nên đảo PASS/FAIL thủ công.test.fail() đánh dấu rằng test được kỳ vọng sẽ fail; nếu lại pass thì kết quả bị coi là bất thường. fixme và skip đều không chạy test, nhưng fixme truyền đạt rằng test/tính năng cần được sửa.
slow và setTimeout
// tăng timeout mặc định cho test này x3 default (default ở trong file config)
test.slow("đây là 1 test chậm");
// cách này thì set thủ công timeOut cho test đó
test('import dữ liệu lớn', async ({ page }) => {
test.setTimeout(90_000);
// ...
});*** Test Cases ***
Import Dữ Liệu Lớn
[Timeout] 90 seconds
Log Bắt đầu importstep làm report dễ đọc
Trong 1 test, bạn có thể tạo các step để cho dễ đọc, ví dụ như sau
import { test, expect } from '@playwright/test';
test('Quy trình mua hàng cơ bản', async ({ page }) => {
// Bước 1: Đăng nhập
await test.step('Đăng nhập vào hệ thống', async () => {
await page.goto('https://example.com');
await page.fill('#username', 'user123');
await page.fill('#password', 'password123');
await page.click('#login-button');
await expect(page).toHaveURL('https://example.com');
});
// Bước 2: Thêm sản phẩm vào giỏ
await test.step('Thêm sản phẩm vào giỏ hàng', async () => {
await page.click('.product-item >> text=Mua ngay');
await expect(page.locator('.cart-count')).toHaveText('1');
});
});
Đăng Nhập
Input Text id=email an@example.com
Click Button Đăng nhập
# User keyword tự nhiên tạo một tầng trong log.html.



