playwright api testing

สำหรับใครที่ยังไม่รู้จัก Playwright ดีสามารถอ่านเพิ่มเติมได้ที่ มาลองเล่น Playwright End-to-End test หรือคร่าวๆเลย Playwright เป็น Web Automation Test Library ที่สามารถทดสอบได้ทั้ง Web Application และ Web API นั่นเอง

ข้อดีของการใช้ Playwright ทดสอบ API

  • เรียนรู้ ภาษาเดียว Framework เดียว สามารถทดสอบได้ทั้ง API และ UI
  • ในเทสข้อเดียวกัน เราสามารถเขียนให้ใช้ทั้ง API และ Web UI ในการทดสอบร่วมกันได้ ทำให้เราสามารถลดขั้นตอนต่างๆในการทดสอบ Web UI ให้ไวขึ้นได้เช่น การ Clean up data ผ่าน API ก่อนที่จะรันเทส หรือการเตรียม Data ผ่าน API ก่อนที่จะรันเทสนั่นเอง

เริ่มต้นการทดสอบ API

ก่อนอื่นต้องทำความรู้จักกับ request context กันก่อน โดยเจ้า request context นี้จะมีคำสั่งต่างๆในการยิง API ที่เราต้องการได้ โดยรอบรับ standard HTTP request ทั้งหมด เช่น GET, POST, PUT, PATCH และ DELETE ที่เราใช้ในการทดสอบ API นั่นเอง

โดยการจะเรียกใช้เจ้า request context นั้น เราไม่จำเป็นต้องทำอะไรเพิ่มเลย เพียงแค่ทำการ เพิ่ม request เข้ามาใน parameter ของ test case ก็พร้อมใช้งานแล้ว สะดวกฝุดๆ

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

test("should able to login via api", async ({ request }) => {
  // Add test steps
});

ลองยิง API ดู

โดย API ที่เราจะลองคือ Login API Swagger

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

test("should able to login via api", async ({ request }) => {
  const resp = await request.post(
    "https://api-web-demo.qahive.com/auth/login",
    {
      data: {
        email: "[email protected]",
        password: "Welcome1",
      },
    }
  );

  await expect(resp).toBeOK();
  expect((await resp.json()).access_token).not.toBeNull();
});

จากตัวอย่าง Code ด้านบน ในการทำการ login นั้นเราใช้คำสั่ง request.post โดยส่งคำสั่งไปที่ API Endpoint https://api-web-demo.qahive.com/auth/login และมีการส่ง Body ของ request คือ { email: “[email protected]”, password: “Welcome1” }

สำหรับการตรวจสอบ API response นั้น เราสามารถตรวจสอบค่าต่างๆได้เหมือนใช้งาน Postman เลย เช่น Status code ด้วยการใช้ expect function toBeOK ซึ่งเป็นการตรวจสอบว่า API ไม่เกิด Error ใดๆนั่นเอง อีกทั้งยังดึง response ผ่านคำสั่ง resp.json() และนำไปใช้งานต่อได้เช่นกัน

ใครสนใจอยากรู้ข้อมูลเพิ่มเติม สามารถตาม link นี้ได้เลย

สนใจเรียนรู้แบบเจาะลึก

Playwright Web Automated Test

เรียนรู้การทดสอบ Web Application ด้วย

Playwright และ TypeScript

Previous articleExecute Robot Framework แบบ Parallel ด้วย Pabot