Test  Viewpoint
Menu
  • Home
  • Basic Knowledge
  • Manual Testing
  • Test Automation
  • Blog
  • About Me
  • Contact
Menu
API Testing Với Playwright

API Testing Với Playwright

Posted on July 15, 2025April 21, 2025 by Test Viewpoint

Playwright không chỉ hỗ trợ kiểm thử giao diện người dùng (UI) mà còn cung cấp các công cụ mạnh mẽ để kiểm thử API. Bạn có thể sử dụng Playwright để gửi các yêu cầu HTTP (GET, POST, PUT, DELETE, v.v.) và kiểm tra phản hồi từ API.

Cách Thực Hiện API Testing Trong Playwright

Playwright cung cấp đối tượng request để thực hiện các yêu cầu HTTP. Bạn có thể sử dụng nó để gửi các yêu cầu API và kiểm tra phản hồi.

Ví dụ về gửi yêu cầu GET:

test("should get all clinics successfully", async ({ request }) => {
  const response = await request.get(`${SERVER_PORT}/api/get-all-clinics`, {
    params: { id: "ALL" },
  });
  let data = await response.json();
  expect(response.status()).toEqual(200);
  expect(data.clinics.length).toBeGreaterThanOrEqual(1);
});

Sử Dụng Request Context

Trong Playwright, Request Context là một cách để tạo một ngữ cảnh HTTP riêng biệt cho các yêu cầu API. Nó cho phép bạn cấu hình các thông số như baseURL, headers, và cookies để sử dụng trong các yêu cầu HTTP. Điều này rất hữu ích khi bạn cần thực hiện nhiều yêu cầu API với cùng một cấu hình.

test("Verify API with custom context", async ({ playwright }) => {
  const apiContext = await playwright.request.newContext({
    baseURL: "<https://jsonplaceholder.typicode.com>",
    extraHTTPHeaders: {
      Authorization: `Bearer YOUR_ACCESS_TOKEN`,
    },
  });

  const response = await apiContext.get("/posts/1");
  expect(response.status()).toBe(200);
  const responseBody = await response.json();
  expect(responseBody.id).toBe(1);
});

Gửi API Request Từ Kiểm Thử UI

Trong Playwright, bạn có thể kết hợp kiểm thử giao diện người dùng (UI) với các yêu cầu API để kiểm tra tích hợp giữa API và giao diện. Điều này rất hữu ích khi bạn cần chuẩn bị dữ liệu trước khi kiểm thử UI hoặc xác minh trạng thái sau khi thực hiện hành động trên giao diện.

test("Create data via API and verify on UI", async ({ page, request }) => {
  // Gửi yêu cầu API để tạo dữ liệu
  const response = await request.post("<https://jsonplaceholder.typicode.com/posts>", {
    data: {
      title: "Test Post",
      body: "This is a test post.",
      userId: 1,
    },
  });
  expect(response.status()).toBe(201);
  const postData = await response.json();

  // Điều hướng đến giao diện và kiểm tra dữ liệu
  await page.goto(`https://example.com/posts/${postData.id}`);
  await expect(page.locator("h1")).toHaveText("Test Post");
  await expect(page.locator("p")).toHaveText("This is a test post.");
});

Sử Dụng Lại Trạng Thái Xác Thực

Ứng dụng web sử dụng xác thực dựa trên cookie hoặc dựa trên mã thông báo, trong đó trạng thái đã xác thực được lưu trữ dưới dạng cookie. Playwright cung cấp phương thức apiRequestContext.storageState() có thể được sử dụng để truy xuất trạng thái lưu trữ từ ngữ cảnh đã xác thực và sau đó tạo ngữ cảnh mới với trạng thái đó.

Ví dụ: Lưu trạng thái sau khi đăng nhập

import { test } from "@playwright/test";

test("Save authentication state", async ({ page }) => {
const requestContext = await request.newContext({
  httpCredentials: {
    username: 'user',
    password: 'passwd'
  }
});
await requestContext.get(`https://api.example.com/login`);
// Lưu trạng thái xác thực vào file
await requestContext.storageState({ path: 'state.json' })
});

Ví dụ: Sử dụng trạng thái đã lưu

import { test } from "@playwright/test";

test.use({ storageState: "auth.json" });

test("Access dashboard with saved authentication state", async ({ page }) => {
  // Điều hướng đến trang dashboard
  await page.goto("<https://example.com/dashboard>");

  // Kiểm tra rằng người dùng đã đăng nhập
  await expect(page.locator("#welcome-message")).toHaveText("Welcome, Test User!");
});

Mình xin bài viết hôm nay tại đây. Để tìm hiểu nhiều hơn về API trong test automation với Playwright, bạn có thể truy cập trang tài liệu chính thức của Playwright tại đây nhé.

Happy testing.

Related

Category: Test Automation

Archives

  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023

Categories

  • Basic Knowledge
  • Manual Testing
  • Test Automation

About Me

Xin chào các bạn. Mình là một kỹ sư kiểm thử phần mềm. Ngành công nghệ thông tin nói chung và công việc kiểm thử phần mềm nói riêng luôn luôn đổi mới đòi hỏi phải học hỏi mỗi ngày. Với mình chia sẻ những gì học được là cách tốt nhất để mình học những điều mới. Hãy cùng mình tìm hiểu thông qua blog này nhé!

Newsletter

Nhận thông báo về bài viết mới nhất qua email

Popular Posts

About Me

Xin chào các bạn. Mình là một kỹ sư kiểm thử phần mềm. Ngành công nghệ thông tin nói chung và công việc kiểm thử phần mềm nói riêng luôn luôn đổi mới đòi hỏi phải học hỏi mỗi ngày. Với mình chia sẻ những gì học được là cách tốt nhất để mình học những điều mới. Hãy cùng mình tìm hiểu thông qua blog này nhé!

  • Facebook
  • Instagram
  • YouTube

Recent Posts

Newsletter

Nhận thông báo về bài viết mới nhất qua email

©2025 Test Viewpoint