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');
});
}