- vừa được xem lúc

Bài 2. Cài đặt Playwright

0 0 11

Người đăng: Thuong Hoang

Theo Viblo Asia

Hi, chào các bạn hôm nay mình sẽ hướng dẫn cài đặt playwright tạo project automation test cho playwright nhé Tạo folder automation-test-with-playwright

sau đó mở folder bằng Visual Studio Code

sau đó vào Termial=> chọn New Termial

Gõ : npm init playwright@latest => nhấn Enter chọn như hình bên dưới

sau khi cài đặt bạn sẽ thấy có các thư mục sau:

Thư mục quan trọng nhất là thư mục tests => Thư mục này sẽ lưu trữ test case chạy

Thư mục tests-examples => Thư mục này chứa các test case ví dụ => Bạn có thể xóa thư mục này đi

Thư mục node_modules => chứa thư viện của node

vì ko sử dụng tests-examples => do vậy mình sẽ xóa thư mục này đi

Thư mục test => có file example.spec.ts

import { test, expect } from '@playwright/test'; test('has title', async ({ page }) => { await page.goto('https://playwright.dev/'); // Expect a title "to contain" a substring. await expect(page).toHaveTitle(/Playwright/);
}); test('get started link', async ({ page }) => { await page.goto('https://playwright.dev/'); // Click the get started link. await page.getByRole('link', { name: 'Get started' }).click(); // Expects page to have a heading with the name of Installation. await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
}); 

FIle này có 2 test case test case 1 là có title là "has title" test case 2 là có title là "get started link"

Cùng cấp với folder tests có file package.json, playwright.config.ts

package.json => lưu trữ các thư viện sử dụng cho project => sau này các bạn cài thêm thư viện thì sẽ thấy trong package.json sẽ có thông tin thư viện đó

playwright.config.ts=> lưu trữ cấu hình của project

import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ testDir: './tests', fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: 'html', use: { // baseURL: 'http://127.0.0.1:3000', trace: 'on-first-retry', }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, }, ],
});

Trong đó :

  • testDir => chỉ thư mục test

  • fullyParallel : True => cho phép chạy nhiều test case cùng lúc, False sẽ chạy test case 1 cách lần lượt

  • retries : cho phép retry khi failed ( cấu hình chạy lại 1 lần khi faile thì bạn có thể cấu hình như sau: retries: 1 hoặc retries: process.env.CI ? 2 : 1)

  • reporter: định dạng sẽ xuất ra report ( playwright hỗ trợ nhiều định dạng như csv, list, xml, json, junit, alure-report ... )

  • use : là thông số cấu hình chung sử dụng

    - baseURL => sử dụng để cấu hình host của trình duyệt cần pải test khi cấu hình baseURL: 'http://127.0.0.1:3000', => trong test case khi viết await page.goto('/'); thì playwright tự hiểu sẽ chuyển tới trang http://127.0.0.1:3000
    
  • projects => cấu hình sử dụng để chạy test case bạn có thể thấy ở ví dụ trên bạn có thể chạy test case với các trình duyệt chromium, firefox và webkit

Thực hiện chạy test case:

  • bạn có thể vào terminal gõ:npx playwright test

có 2 test case nhưng sẽ được thực thi trên 3 trình duyệt là chromium, firefox và webkit

  • nếu chỉ muốn chạy với chromium gõ: npx playwright test --project=chromium ( Lưu ý : chromium tương ứng với config có name là chromium => trong file playwright.config.ts

Giờ bạn có thể show report bằng cách gõ: npx playwright show-report

bạn có thể dùng UI để chạy test:

vào terminal gõ: npx playwright test --ui

bài hôm nay kết thúc ở đây hi vọng gặp các bạn ở các bài tiếp theo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt đơn giản automating publishing Flutter app lên Google Play bằng Github Actions

Introduction. Mỗi developer hay gặp phải các công việc lặp đi lặp lại gây ra sự nhàm chán.

0 0 45

- vừa được xem lúc

AI

Image Classification of Stroke Blood Clot Origin. Your work will enable healthcare providers to better identify the origins of blood clots in deadly strokes, making it easier for physicians to prescri

0 0 28

- vừa được xem lúc

Hướng dẫn cào dữ liệu từ nguồn trên web với Puppeteer

Hôm trước có dịp đi xe bus trong lúc chờ tàu điện Nhổn ga Hà Nội, trên xe mình gặp một ông cụ khoảng 70 tuổi tóc bạc trắng đang cúi gằm mặt vào 1 quyển sổ toàn những con số 2 chữ số rồi các ô đánh dấu

0 0 27

- vừa được xem lúc

Tự động hóa - IoT Tích hợp để đưa hệ thống điều khiển lên mây

Lại là IoT. Đầu tiên mình khẳng đinh rằng đây không phải là một bài viết thuần về IoT.

0 0 19

- vừa được xem lúc

Mình đã vừa khai bút đầu xuân và đi countdown đón giao thừa như thế nào

Trước tiên tại thời khắc chuyển giao năm cũ sang năm mới, qua một năm con Hổ đầy khó khăn từ các biến động kinh tế, tài chính và chính trị toàn cầu. Chúc anh em Viblo bước sang năm Quý Mão có một sức

0 0 18

- vừa được xem lúc

Phân tích CVE-2020-10644 - Inductive Automation Ignition RCE

Vào một buổi chiều, em teammate @lengocanh có rủ mình phân tích một vài CVE của Inductive Automation Ignition. Ở đây mình chọn một CVE phân tích khá đơn giản là CVE-2020-10644 để khởi đầu chuỗi series

0 0 23