0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng Dẫn Chạy Kiểm Thử Nhiều Môi Trường Với Playwright

Đăng vào 3 tuần trước

• 3 phút đọc

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:

  1. dotenv: Thư viện để đọc các biến môi trường từ file .env.
  2. 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

    Copy
    ops_url="https://operation-portal-dev.playwright.io"
    ops_username="test_dev"
    ops_password="pass_dev"
  • .env.qa

    Copy
    ops_url="https://operation-portal-qa.playwright.io"
    ops_username="test_qa"
    ops_password="pass_qa"
  • .env.local

    Copy
    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.tsenv.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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
cross-env test_env=dev npx playwright test

Để chạy với môi trường qa:

bash Copy
cross-env test_env=qa npx playwright test

Để chạy với môi trường mặc định (qa):

bash Copy
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 Copy
sudo npm install --global cross-env

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào