Skip to main content

5. Nâng cao

Chụp màn hình

Chụp màn hình để lưu giữ lại

import { test, expect } from '@playwright/test';

test.beforeEach(async ({ page }) => {
await page.goto('https://aptech-tester.web.app/login');
});

test('Screenshot - Capture', async ({ page }) => {
await page.locator('#login-form_username').fill('admin');
await page.locator('#login-form_password').fill('');
await page.locator('button:has-text("Đăng nhập")').click();
await page.waitForTimeout(500);

// Chụp màn hình để lưu giữ lại
await page.screenshot({ path: './tests/screen-shots/TC-LOGIN-REQUIRED-PASSWORD.png', clip: { x: 0, y: 0, height: 1080, width: 1920 } });
});

Chụp màn hình để so sánh

import { test, expect } from '@playwright/test';
test('TC1: Screenshot - Compare', async ({ page }) => {
await page.locator('#login-form_username').fill('admin');
await page.locator('#login-form_password').fill('');
await page.locator('button:has-text("Đăng nhập")').click();
await page.waitForTimeout(500);

// Kiểm tra theo ảnh chụp
// So sánh ảnh chụp với ảnh đã lưu trước đó
const screenshot = await page.screenshot({ clip: { x: 0, y: 0, height: 1080, width: 1920 } });

// Kiểm tra ảnh chụp có khớp với ảnh đã lưu trước đó không?
expect(screenshot).toMatchSnapshot({
name: './tests/screen-shots/TC-LOGIN-REQUIRED-PASSWORD.png',
});
});

Đọc dữ liệu từ file csv

Cấu trúc file csv

"username","password"
"admin","Tester@123"
"admin1","Tester@123"
"admin2","Tester@123"
"admin3","Tester@123"
"admin4","Tester@123"
"admin5","Tester@123"
"admin6","Tester@123"
"admin7","Tester@123"

Cài đặt thư viện

Tại của sổ termial cài thư viện csv-parse:

npm install csv-parse --save

Ví dụ

import
const { test, expect } = require('@playwright/test');

import fs from 'fs';
import path from 'path';
import { parse } from 'csv-parse/sync';
// Đọc file csv
const records = parse(fs.readFileSync(path.join(__dirname, 'accounts.csv')), {
columns: true, // Tự động đọc header
delimiter: ',', // Dấu phân cách
skip_empty_lines: true, // Bỏ qua dòng trống
});
test.beforeEach(async ({ page }) => {
// Go to https://aptech-tester.web.app/login
await page.goto('https://aptech-tester.web.app/login');
});
// Lặp qua từng dòng khi đọc được
let index = 0;
for (const record of records) {
index++;

const testcaseName = 'TC-LOGIN-CHECK: Check login result of account ' + index + ': ' + record.username + '/' + record.password;

test(testcaseName, async ({ page }) => {
// Click input[type="text"]
await page.locator('input[type="text"]').click();
// Fill input[type="text"]
await page.locator('input[type="text"]').fill(record.username);
// Click input[type="password"]
await page.locator('input[type="password"]').click();
// Fill input[type="password"]
await page.locator('input[type="password"]').fill(record.password);
// Click button:has-text("Login")
await page.locator('button:has-text("Đăng nhập")').click();

await expect(page).toHaveURL('https://aptech-tester.web.app/home');
});
}