ป้ายกำกับ: Environment Variables

Playwright: EnvironmentPlaywright: Environment

ในฐานะ System Specialist และ Senior Database Architect เมื่อเราพูดถึงการทำ Automation Test ด้วย Playwright สิ่งที่สำคัญที่สุดในการออกแบบระบบคือความสามารถในการแยกสภาพแวดล้อม (Environment Separation) ออกจากโค้ดหลัก การ Hardcode ข้อมูลสำคัญ เช่น API Tokens, Base URLs หรือ Credentials ลงไปในสคริปต์ทดสอบโดยตรง ไม่เพียงแต่เป็นช่องโหว่ด้านความปลอดภัย แต่ยังทำให้การย้าย Test Suite จาก Development ไป Staging หรือ Production เป็นเรื่องที่ซับซ้อนและเสี่ยงต่อข้อผิดพลาดอย่างยิ่ง

แนวทางปฏิบัติที่ดีที่สุดคือการหลีกเลี่ยงการพึ่งพาไฟล์ `.env` ในระดับแอปพลิเคชัน เนื่องจากไฟล์เหล่านี้มักถูกจัดการด้วยระบบปฏิบัติการและอาจขาดความน่าเชื่อถือในการจัดการข้อมูลที่ซับซ้อนและมีโครงสร้างหลายมิติ เราจึงเสนอให้ใช้ฐานข้อมูล PostgreSQL ที่มีความน่าเชื่อถือสูงในการจัดเก็บค่า Configuration เหล่านี้ เพื่อให้สามารถเรียกใช้งานได้อย่างยืดหยุ่น ปลอดภัย และรองรับการเปลี่ยนแปลงของ Environment ได้อย่างสมบูรณ์แบบ

💾 การออกแบบโครงสร้างข้อมูลสำหรับ Environment Variables ใน PostgreSQL

แทนที่จะใช้ไฟล์ภายนอก เราจะสร้างตารางหลักเพื่อเก็บค่า Configuration ของแต่ละ Environment โดยการใช้ประเภทข้อมูล JSONB ของ PostgreSQL ซึ่งเป็นประเภทข้อมูลที่เหมาะสมอย่างยิ่งในการจัดเก็บ Key-Value Pairs ที่หลากหลาย (เช่น `base_url`, `user_name`, `api_key`) ภายใต้ Record เดียวกันได้อย่างมีประสิทธิภาพและสามารถ Query ข้อมูลเฉพาะส่วนได้ง่าย

SQL

SQL

CREATE TABLE environment_configs ('environment_id' SERIAL PRIMARY KEY,'env_name' VARCHAR(50) UNIQUE NOT NULL,'config_data JSONB NOT NULL,'created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP);

🚀 การบันทึกข้อมูล Environment

เราสามารถบันทึกค่า Configuration ของแต่ละ Environment ได้อย่างชัดเจน โดยกำหนดให้ `env_name` เป็นตัวระบุหลัก (Unique Identifier) เพื่อป้องกันการชนกันของข้อมูล:

SQL

SQL

INSERT INTO environment_configs (env_name, config_data) VALUES'('development', '{"base_url": "http://dev.api.com", "api_key": "dev-key-123", "timeout": 10}'),'('staging', '{"base_url": "https://staging.api.com", "api_key": "stage-key-456", "timeout": 20}'),'('production', '{"base_url": "https://api.com", "api_key": "prod-key-789", "timeout": 30}');

⚙️ การเรียกใช้ Configuration ใน Playwright Test

เมื่อ Playwright Test Suite ทำงาน ระบบควรรับค่า Environment ที่ต้องการรัน (เช่น ‘staging’) เข้ามาเป็น Parameter จากภายนอก (เช่น Command Line Arguments) จากนั้นจึงใช้คำสั่ง SQL เพื่อดึงข้อมูลที่เกี่ยวข้องออกมา:

SQL

SQL

SELECT config_data->>'base_url', config_data->>'api_key' FROM environment_configs WHERE env_name = 'staging';

การใช้ตัวดำเนินการ `->>` ช่วยให้เราสามารถดึงค่าที่เป็น String ออกมาจาก JSONB ได้โดยตรง ทำให้โค้ด Playwright สามารถรับค่าเหล่านี้ไปใช้งานในการกำหนด `baseURL` หรือการตั้งค่า Header สำหรับ API Calls ได้ทันที การออกแบบนี้ทำให้ Test Suite มีความยืดหยุ่นสูง สามารถสลับ Environment ได้เพียงแค่เปลี่ยนค่า `env_name` โดยไม่ต้องแก้ไขโค้ดใดๆ เลย

✅ บทสรุป: ประโยชน์ของการใช้ PostgreSQL ใน Automation Testing

การใช้ PostgreSQL ร่วมกับประเภทข้อมูล JSONB ไม่เพียงแต่แก้ปัญหาการจัดการ Environment Variables ที่ยุ่งยากเท่านั้น แต่ยังเพิ่มความปลอดภัยและความน่าเชื่อถือให้กับ Test Automation Framework ของคุณได้อย่างมหาศาล ข้อดีที่ได้รับคือ:

  • Security: ข้อมูล Credentials ถูกเก็บในระบบที่เข้ารหัสและมีการควบคุมสิทธิ์การเข้าถึง (ACL) ที่เข้มงวดกว่าไฟล์ภายนอก
  • Scalability: รองรับการเพิ่ม Environment ใหม่ๆ ได้อย่างง่ายดาย เพียงแค่เพิ่ม Record ใหม่เท่านั้น
  • Reliability: การทำงานทั้งหมดอยู่ภายใต้ Transactional ACID Properties ของฐานข้อมูล ทำให้มั่นใจได้ว่าข้อมูล Configuration มีความสอดคล้องและถูกต้องเสมอ

ด้วยแนวทางนี้ Playwright Test Suite ของคุณจะมีความเป็นมืออาชีพ (Enterprise-grade) และพร้อมสำหรับการใช้งานในสภาพแวดล้อมระดับองค์กรอย่างแท้จริง