Thai Test Data

Docs

Install library แล้วเรียกใช้ใน test script ได้เลย ได้ data แบบเดียวกับหน้า Generator รองรับ Playwright, Cypress, Jest และ Vitest

Installation

npm install thai-test-data

Usage with Playwright

ใส่ seed เพื่อให้ได้ data ชุดเดิมทุกครั้งที่ run เวลา test fail จะ reproduce และ debug ได้ง่าย

import { test, expect } from "@playwright/test";
import { createThaiData } from "thai-test-data";

const td = createThaiData({ seed: 42 });

test("สมัครสมาชิกด้วยข้อมูลที่ถูกต้อง", async ({ page }) => {
  const user = td.person();
  await page.goto("/register");
  await page.fill("#citizenId", user.citizenId);
  await page.fill("#phone", user.phone);
  await page.fill("#address", user.address.fullAddress);
  await page.click("button[type=submit]");
  await expect(page.getByText("สมัครสำเร็จ")).toBeVisible();
});

test("ปฏิเสธเลขบัตรที่ผิด", async ({ page }) => {
  await page.goto("/register");
  await page.fill("#citizenId", td.invalidCitizenId());
  await page.click("button[type=submit]");
  await expect(page.getByText("เลขบัตรประชาชนไม่ถูกต้อง")).toBeVisible();
});

API Reference

td.citizenId(firstDigit?)เลขบัตรประชาชนที่ valid กำหนด first digit 1-8 ได้
td.invalidCitizenId(kind?)เลขบัตรที่ผิด สำหรับ negative test: "checksum" | "short" | "long" | "letters"
td.juristicId()เลขผู้เสียภาษีนิติบุคคล
td.invalidJuristicId(kind?)เลขนิติบุคคลที่ผิด ใช้ kind แบบเดียวกัน
td.phone(prefixes?)เบอร์มือถือ 10 หลัก จำกัดเลขขึ้นต้นได้ เช่น ["08"]
td.invalidPhone(kind?)เบอร์ที่ผิด: "prefix" | "short" | "long" | "letters"
td.name("male" | "female")ชื่อ-นามสกุลไทยและอังกฤษ
td.address(options?)ที่อยู่ครบ 77 จังหวัด 7,436 ตำบล รหัสไปรษณีย์ตรงกัน กรองได้ เช่น { province: "เชียงใหม่" } หรือ { bangkok: false }
td.postalCode(options?)รหัสไปรษณีย์ที่มีใช้จริง filter จังหวัดได้เหมือน address()
td.invalidPostalCode(kind?)รหัสไปรษณีย์ที่ผิด: "unknown" | "short" | "long" | "letters"
lookupPostalCode(code)ดูว่ารหัสนี้เป็นของตำบล อำเภอ จังหวัดไหน
td.birthDate(min, max)วันเกิดตามช่วงอายุ
td.person()ข้อมูลบุคคลครบชุด
td.many(n, fn)generate หลายรายการ คืนเป็น array
td.unique(n, fn)เหมือน many แต่ไม่มีค่าซ้ำ เช่น td.unique(30000, td.phone)
isValidThaiId(value)validate เลข 13 หลัก
isValidPostalCode(code)เช็กว่ารหัสไปรษณีย์มีใช้จริง