CupCode.cc
Section 04 · Module 01 · Lesson 01 · ~20–24 นาที

ติดตั้งและเริ่มต้น Playwright

บทนี้จะพาคุณติดตั้ง Playwright แบบเข้าใจว่าแต่ละขั้นทำไปเพื่ออะไร ไม่ใช่แค่กดตามคำสั่งให้ผ่าน เพราะถ้ารู้โครงสร้างตั้งแต่ต้น คุณจะอ่าน config และแก้โปรเจกต์จริงได้ง่ายขึ้นมาก

เวลาเรียน: 20–24 นาที ต้องรู้มาก่อน: Node.js และ npm ติดตั้งแล้วในเครื่อง (v18+) และมีพื้นฐาน testing จาก Section 1-3 รูปแบบ: อ่าน + setup walkthrough + แบบฝึกสั้น

จบบทนี้แล้วคุณจะ...

  • ติดตั้ง Playwright ทั้งในโปรเจกต์ใหม่และโปรเจกต์ที่มีอยู่แล้วได้
  • อ่านโครงสร้างไฟล์เริ่มต้นของ Playwright project ได้อย่างเข้าใจมากขึ้น
  • รู้ว่าค่าไหนใน playwright.config.ts สำคัญกับการเริ่มทำงานจริง
  • ใช้คำสั่งหลักในการรัน test, ดู report และเริ่ม debug ได้
  • เข้าใจว่าอะไรคือ setup ขั้นต่ำที่ควรพร้อมก่อนเริ่มเขียน test
1 · ก่อนติดตั้ง เราควรรู้อะไร

Playwright ไม่ได้เป็นแค่ตัว “กด browser” แต่มันคือ test runner + browser automation + tooling ครบชุด

เหตุผลที่หลายทีมเลือก Playwright:

  • มี auto-waiting ช่วยลดการเขียน wait แบบเดาสุ่ม
  • รองรับหลาย browser ในเครื่องมือเดียว
  • มี reporter, trace viewer, screenshot และ debugging tools มาให้พร้อม
  • syntax อ่านง่าย และเหมาะกับทั้งผู้เริ่มต้นและทีมที่ทำ CI จริงจัง

ถ้าคุณเคยใช้ Selenium หรือ Cypress มาก่อน สิ่งที่ Playwright ทำให้ทีมง่ายขึ้นบ่อย ๆ คือเรื่องความเสถียรและ DX ระหว่างเขียน test

2 · วิธีติดตั้งแบบเริ่มต้นเร็ว

เหมาะกับคนที่ยังไม่มีโปรเจกต์ Playwright เลย

mkdir my-playwright-project
cd my-playwright-project
npm init playwright@latest

ระหว่างติดตั้ง คำสั่ง npm init playwright@latest จะถามหลายคำถาม เช่น:

คำถาม แนะนำเลือก
TypeScript หรือ JavaScript? TypeScript
ชื่อ test folder? tests
Add GitHub Actions workflow? false ในช่วงเริ่มต้น
Install Playwright browsers? true

เหตุผลของคำแนะนำชุดนี้:

  • TypeScript ช่วยให้ autocomplete และ refactor ง่ายขึ้น
  • tests เป็นชื่อมาตรฐานที่คนในทีมมักคาดไว้
  • ยังไม่ต้องเพิ่ม GitHub Actions ถ้าคุณกำลังโฟกัสที่การรันบนเครื่องก่อน
  • ควรติดตั้ง browser engines ตั้งแต่แรก เพื่อไม่ให้มาสะดุดตอน run test

หลังติดตั้งเสร็จ Playwright จะดาวน์โหลด browser engines อย่าง Chromium, Firefox และ WebKit ให้อัตโนมัติ

ติดตั้งในโปรเจกต์ที่มีอยู่แล้ว

npm install -D @playwright/test
npx playwright install

ถ้าโปรเจกต์มี web app อยู่แล้ว วิธีนี้มักเหมาะกว่า เพราะคุณแค่เติม test stack เข้าไป ไม่ได้สร้าง template ใหม่ทั้งโปรเจกต์

3 · โครงสร้างไฟล์ที่ได้มาหมายถึงอะไร

อย่าเพิ่งข้าม เพราะไฟล์เริ่มต้นพวกนี้จะอยู่กับคุณตลอดคอร์ส

my-playwright-project/
├── node_modules/
├── tests/
│   └── example.spec.ts
├── tests-examples/
│   └── demo-todo-app.spec.ts
├── playwright.config.ts
├── package.json
└── package-lock.json
ไฟล์/โฟลเดอร์ หน้าที่
tests/ โฟลเดอร์เก็บ test files ทั้งหมด
playwright.config.ts กำหนด browser, timeout, base URL, reporter และ behavior การรัน
package.json เก็บ dependencies และ scripts
tests-examples/ ตัวอย่าง test ที่ Playwright ใส่มาให้ดูแนวทาง

ข้อแนะนำสำหรับมือใหม่:

  • อย่ารีบลบ example.spec.ts จนกว่าจะรันผ่านครั้งแรก
  • tests-examples/ มีไว้ให้ดูแนวทาง ไม่จำเป็นต้องเก็บไว้ถ้าเริ่มรำคาญ
  • playwright.config.ts คือไฟล์ที่คุณจะกลับมาแก้บ่อยที่สุด
4 · อ่าน `playwright.config.ts` ให้เป็น

ตอนเริ่มต้นยังไม่ต้องจำทุกค่า แต่ควรรู้ว่าค่าไหนเปลี่ยนพฤติกรรมการรัน test

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://localhost:3000',
    trace: 'on-first-retry',
  },
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },
  ],
});

ค่าที่ควรรู้ก่อน:

  • testDir บอกว่า Playwright จะไปหา test ไฟล์ที่ไหน
  • retries สำคัญมากใน CI เพราะช่วย rerun เมื่อ fail ชั่วคราว
  • baseURL ทำให้คุณเขียน page.goto('/') ได้ง่ายขึ้น
  • projects ใช้กำหนด browser หรือ device ที่ต้องการรัน
  • trace ช่วยให้ debug test fail ได้ง่ายขึ้นมาก

ถ้าเพิ่งเริ่ม ใช้หลักง่าย ๆ คือ:

  • ตั้ง baseURL ให้ตรงกับแอปที่คุณจะทดสอบ
  • เปิด reporter: 'html' ไว้ก่อน
  • อย่ารีบเพิ่ม browser/project เยอะเกินไปในวันแรก
5 · คำสั่งที่ควรใช้เป็น

แค่ 4 คำสั่งนี้ก็พาเริ่มทำงานได้ค่อนข้างครบแล้ว

รัน test ทั้งหมด:

npx playwright test

รันเฉพาะไฟล์:

npx playwright test tests/example.spec.ts

รันด้วย UI mode:

npx playwright test --ui

ดู HTML report:

npx playwright show-report

แนวทางใช้ในชีวิตจริง:

  • ระหว่างพัฒนาใช้ --ui หรือรันเฉพาะไฟล์ จะเร็วกว่า
  • ก่อน push หรือก่อนสรุปงาน ค่อยรันทั้ง suite
  • ถ้า fail แล้วงง ให้เปิด report หรือ trace แทนการเดาสาเหตุ
6 · VS Code Extension ช่วยอะไร

ไม่จำเป็นต้องใช้ แต่ช่วยให้เริ่มต้นและ debug สะดวกขึ้นมาก

ติดตั้ง extension ชื่อ Playwright Test for VS Code จาก Microsoft:

  • รัน test จาก editor ได้เลย
  • ดู test results แบบ real-time
  • debug ด้วย breakpoints
  • pick locator จากหน้าเว็บจริง

extension นี้มีประโยชน์มากตอน:

  • อยาก rerun แค่ test เดียว
  • อยากใช้ breakpoints
  • อยากดู locator หรือ error ใกล้กับ code เลย
Practice

แบบฝึก: อ่านโปรเจกต์เริ่มต้นให้ออก

ดูโครงสร้างไฟล์ด้านล่าง แล้วอธิบายหน้าที่ของแต่ละส่วน:

e-commerce-tests/
├── tests/
│   ├── cart.spec.ts
│   ├── checkout.spec.ts
│   └── login.spec.ts
├── playwright.config.ts
├── package.json
└── .github/
    └── workflows/
        └── playwright.yml
  1. โฟลเดอร์ tests/ รับผิดชอบอะไร

    ดูคำตอบแนะนำ

    เป็นที่เก็บ test files แยกตาม feature หรือ flow เช่น cart, checkout, login เพื่อให้ค้นหาและรันเฉพาะส่วนได้ง่าย

  2. ไฟล์ playwright.config.ts สำคัญอย่างไร

    ดูคำตอบแนะนำ

    เป็นศูนย์กลางการตั้งค่าการรัน test เช่น browser, timeout, base URL, reporter และ behavior ใน CI ถ้า config ผิด การรันทั้งโปรเจกต์จะมีปัญหาทันที

  3. package.json เกี่ยวอะไรกับ Playwright

    ดูคำตอบแนะนำ

    ใช้เก็บ dependencies และ scripts ของโปรเจกต์ รวมถึง @playwright/test และคำสั่งรันที่ทีมอาจเพิ่มไว้ เช่น npm run test:e2e

  4. ไฟล์ .github/workflows/playwright.yml มีไว้ทำอะไร

    ดูคำตอบแนะนำ

    ใช้รัน Playwright tests อัตโนมัติบน GitHub Actions ซึ่งช่วยให้ทีมเช็ก regression ทุกครั้งที่ push หรือเปิด pull request

สิ่งที่ต้องเอาติดตัวไปจากบทนี้

  • npm init playwright@latest คือทางลัดที่ดีสำหรับการเริ่มโปรเจกต์ใหม่
  • playwright.config.ts เป็นไฟล์สำคัญที่สุดที่ควรอ่านให้เข้าใจตั้งแต่ต้น
  • เริ่มจาก config เรียบง่ายก่อน แล้วค่อยขยายไปเรื่อง CI, parallel และหลาย browser
  • คำสั่ง npx playwright test, --ui และ show-report คือชุดพื้นฐานที่ควรใช้คล่อง
  • ถ้ารู้โครงสร้างโปรเจกต์ตั้งแต่วันแรก การเรียนบทถัดไปจะง่ายขึ้นมาก