Giới thiệu
Trong quá trình phát triển phần mềm, việc kiểm thử trên nhiều môi trường khác nhau là điều cần thiết để đảm bảo tính ổn định và hiệu suất của ứng dụng. Công ty chúng tôi thường sử dụng các môi trường như local, dev, qa, staging, và production để thực hiện các bài kiểm thử.
Mục tiêu bài viết
Bài viết này sẽ hướng dẫn bạn cách sử dụng Playwright để thực hiện kiểm thử trên nhiều môi trường khác nhau. Để dễ dàng quản lý, bạn sẽ được giới thiệu về cấu trúc dự án cùng với việc sử dụng các thư viện hỗ trợ.
Cấu trúc dự án
Để có thể chạy dự án với nhiều môi trường khác nhau, chúng ta cần cài đặt hai thư viện sau:
- dotenv: Thư viện để đọc các biến môi trường từ file
.env
. - cross-env: Thư viện giúp thiết lập biến môi trường trong quá trình chạy lệnh.
Cài đặt thư viện
Chạy các lệnh sau để cài đặt thư viện:
npm install dotenv --save
npm install --save-dev cross-env
Sau khi cài đặt xong, bạn có thể kiểm tra sự hiện diện của chúng trong file package.json
.
Tạo file cấu hình môi trường
Tạo các file .env
cho từng môi trường như sau:
-
.env.dev
ops_url="https://operation-portal-dev.playwright.io" ops_username="test_dev" ops_password="pass_dev"
-
.env.qa
ops_url="https://operation-portal-qa.playwright.io" ops_username="test_qa" ops_password="pass_qa"
-
.env.local
ops_url="https://operation-portal-local.playwright.io" ops_username="test_local" ops_password="pass_local"
Tạo thư mục utils
Trong thư mục utils
, bạn cần tạo hai file là globalSetup.ts
và env.ts
:
globalSetup.ts: Xử lý trường hợp không truyền biến môi trường và gán mặc định. Dưới đây là mã nguồn của file này:
typescript
import { FullConfig } from "@playwright/test";
import dotenv from "dotenv";
async function globalSetup(config: FullConfig) {
if (process.env.test_env) {
dotenv.config({
path: `env/.env.${process.env.test_env}`,
override: true
});
} else {
dotenv.config({
path: 'env/.env.qa',
override: true
});
}
}
export default globalSetup;
env.ts: Được sử dụng để tạo object thiết lập các tham số cho từng môi trường:
typescript
export default class ENV {
public static ops_url = process.env.ops_url;
public static ops_username = process.env.ops_username;
public static ops_password = process.env.ops_password;
}
Cấu hình Playwright
Trong file playwright.config.ts
, bạn thực hiện thiết lập cho globalSetup
như sau:
typescript
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
globalSetup: 'src/utils/globalSetup.ts',
testDir: './tests',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: 'html',
use: {
trace: 'on-first-retry',
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
],
});
Viết kiểm thử kiểm tra biến môi trường
Tạo một file getenv.spec.ts
với nội dung kiểm tra các biến môi trường:
typescript
import { test, expect } from '@playwright/test';
import ENV from '../src/utils/env';
test('Kiểm tra biến môi trường', async ({ page }) => {
console.log("======= URL: ", ENV.ops_url);
console.log("======= Tên đăng nhập: ", ENV.ops_username);
console.log("======= Mật khẩu: ", ENV.ops_password);
});
Chạy kiểm thử trên môi trường cụ thể
Để chạy kiểm thử với môi trường dev, bạn sử dụng lệnh sau trong terminal:
bash
cross-env test_env=dev npx playwright test
Để chạy với môi trường qa:
bash
cross-env test_env=qa npx playwright test
Để chạy với môi trường mặc định (qa):
bash
npx playwright test
Lưu ý
Nếu bạn gặp lỗi khi chạy lệnh cross-env test_env=qa npx playwright test
, hãy thực hiện cài đặt cross-env
bằng lệnh:
bash
sudo npm install --global cross-env
source: viblo