QA Portal

เลือกโปรเจกต์ก่อน

หน้าสรุปจะแสดงสถิติของโปรเจกต์ที่เลือก · กลับไปที่ "โปรเจกต์" เพื่อเลือก

สรุปผล

การกระจายของผลทดสอบ

ไทม์ไลน์ผลทดสอบ

นับตาม “ทดสอบล่าสุด” · Rework = ผ่านหลังแก้ไข (มี Fix Severity)

ความคืบหน้ารายฟีเจอร์

เลือกโปรเจกต์ก่อน

หน้า Applications ใช้จัดการรายชื่อ application ภายในโปรเจกต์ที่เลือก

Applications

รายชื่อ application ที่อยู่ในโปรเจกต์ — สร้าง / แก้ไข / ตั้งค่าการเชื่อมต่อ (เช่น DB) ต่อ application ได้

เทสเคสต้องอยู่ภายในโปรเจกต์

เทสเคสทุกตัวผูกกับโปรเจกต์ · เลือกหรือสร้างโปรเจกต์ก่อนจึงเข้ามาดู / แก้ไขได้

เทสเคส

โปรเจกต์

เลือกโปรเจกต์เพื่อเริ่มทำงาน — แต่ละโปรเจกต์มีหน้าสรุปผล / เทสเคส / รัน / ข้อมูล / ตั้งค่าแยกกัน

ตั้งค่าเวิร์กสเปซ

จัดการชื่อ สมาชิก และการลบของเวิร์กสเปซนี้
ประเภท
UID เจ้าของ

สมาชิกของเวิร์กสเปซ

การเชิญที่นี่จะ apply ครอบคลุมทุกโปรเจกต์ในเวิร์กสเปซให้อัตโนมัติ — สิทธิ์เฉพาะโปรเจกต์ปรับได้แยกในแต่ละโปรเจกต์

ไม่มีการดำเนินการในโซนอันตรายสำหรับเวิร์กสเปซนี้

เลือกโปรเจกต์ก่อน

หน้าตั้งค่าใช้ปรับ Environment / DB / SMTP / Storage ของโปรเจกต์ที่เลือก

โปรเจกต์

สมาชิกของโปรเจกต์นี้ — owner ของโปรเจกต์เป็นผู้กำหนด role ของแต่ละคน · สมาชิกในเวิร์กสเปซที่ไม่ได้ถูกเพิ่มที่นี่จะมองไม่เห็นโปรเจกต์

action-role

Applications คือ surface ที่รันได้ใต้ project นี้ — เทสเคสทุกตัวต้องเลือก Application หนึ่งอัน · Domain เป็น free-form (เช่น Frontend / Backend / Batch / Database)

Google Drive

สร้าง OAuth Client ID (Web) ที่ Google Cloud Console · เปิด Drive API · scope drive.file

Microsoft OneDrive

ลงทะเบียน App ที่ Azure Portal · Redirect URI = origin ของหน้านี้ · scope Files.ReadWrite

พื้นที่ Cloud Storage ของโปรเจกต์นี้ — ไฟล์แนบในผลทดสอบ/อัพเดทการแก้ไข และเอกสาร wiki รวมอยู่ที่นี่ (รูปภาพฝังในเทสเคส/wiki ไม่นับ เพราะเก็บในเอกสารโดยตรง)

โควตารัน flow อัตโนมัติ

จำกัดจำนวนครั้งที่ "รัน flow" ได้ต่อเดือนสำหรับโปรเจกต์นี้ (กันค่าใช้จ่ายบานปลาย) — เว้นว่างหรือ 0 = ไม่จำกัด · ตัวนับรีเซ็ตต้นเดือน

ตั้งค่าการแจ้งเตือนทางอีเมลแบบอัตโนมัติของโปรเจกต์นี้ — ใช้ SMTP เดียวกับที่ตั้งค่าไว้ (รายโปรเจกต์ หรือ System SMTP)

ส่งสรุปผลการทดสอบของทั้งโปรเจกต์วันละครั้ง ไปยังรายชื่อด้านล่าง

รวบส่งเป็นรายชั่วโมง — แจ้งเฉพาะผู้ที่เกี่ยวข้องกับการ์ดนั้น

  • Developer จะได้รับเมลเมื่อ Tester บันทึกผลเทส หรือมีคอมเมนต์
  • Tester จะได้รับเมลเมื่อ Developer อัปเดตผลการแก้ไข หรือมีคอมเมนต์

รวบส่งเป็นรายชั่วโมง — แต่ละคนจะได้รับสรุปเฉพาะการ์ดที่ถูกมอบหมายให้ตนเอง

สำรองข้อมูล / Snapshot
สำรองทั้งโปรเจกต์

ดาวน์โหลด archive (.zip) รวม config, เทสเคส, applications, wiki, รูป และเอกสารแนบทั้งหมด — รูปอยู่ใน images/ เอกสาร wiki (Cloud Storage) อยู่ใน docs/ เปิดดูได้ทันที

กู้คืนจาก snapshot

เลือกไฟล์ archive (.zip) หรือ snapshot (.json) เพื่อกู้คืน — เทสเคส/แอปที่มี id เดียวกันจะถูกเขียนทับ, รายการที่เพิ่มมาหลัง snapshot จะไม่ถูกลบ

เขตอันตราย (Danger Zone)
ลบโปรเจกต์นี้

การลบจะทำให้เทสเคส, wiki, รูป, การตั้งค่าทั้งหมดหายถาวร ไม่สามารถกู้คืนได้

Device Agent

รัน automation บนมือถือ / แท็บเล็ต / emulator ในเครื่องตัวเอง

Device Agent คืออะไร

อยากรัน automation node กลุ่ม "อุปกรณ์" (mobile) บน มือถือ / แท็บเล็ต / emulator ในเครื่องตัวเอง โดยไม่ผ่าน Cloud Run? ติดตั้ง "Device Agent" โปรแกรมเล็ก ๆ ในเครื่องที่ต่ออุปกรณ์ — ไม่ต้องโคลนโปรเจกต์ทั้งก้อน

ทำไมต้องมีตัวรันในเครื่อง: เบราว์เซอร์/คลาวด์แตะ USB/adb ของเครื่องคุณไม่ได้ (กำแพงความปลอดภัย) อุปกรณ์จริงจึงต้องมีตัวกลางในเครื่องเสมอ ยกเว้นใช้ cloud device farm · ต้องมี Appium + adb ในเครื่องด้วย

ติดตั้ง & รัน

วิธีที่ 1 — รันด้วย npx (ต้องมี Node.js)
npx qa-portal-device-agent
วิธีที่ 2 — ดาวน์โหลดไฟล์เดียว (ไม่ต้องมี Node.js)

ดาวน์โหลดตรงจาก server ของเรา (Firebase Storage) · ยังต้องติดตั้ง Appium + adb แยก · ไฟล์อัปเดตทุกครั้งที่ทีมออก release (workflow "Release Device Agent")

macOS: เปิด .dmg แล้วลาก QA Portal Device Agent ไปโฟลเดอร์ Applications → ดับเบิลคลิกเปิด (จะเด้ง Terminal แสดง URL). ครั้งแรกถ้า Gatekeeper เตือน "ตรวจสอบผู้พัฒนาไม่ได้" ให้ไป System Settings → Privacy & Security กด Open Anyway 1 ครั้ง (แอปเซ็นแบบ ad-hoc — ปลอดภัยแต่ไม่ได้ notarize)

เชื่อมกับพอร์ทัล

  1. เมื่อ agent รันจะได้ URL http://localhost:4000 และ เปิดหน้า dashboard ในเบราว์เซอร์อัตโนมัติ (ดูสถานะ adb/อุปกรณ์/Appium สด ๆ + ขั้นตอนติดตั้ง)
  2. นำไปตั้งที่ Admin Portal → Backend / Runner ช่อง Backend URL (แอดมินตั้งให้ทั้งระบบ)
  3. เปิดเทสเคส → Automation → เพิ่ม node กลุ่ม "อุปกรณ์" → แท็บ อุปกรณ์ จะเขียวเมื่อพร้อม + มี Device Inspector ในแท็บนั้น

ถ้าใช้ในทีม ให้เปิด tunnel (Cloudflare/Tailscale) ครอบ agent แทน localhost

ตั้งค่า

รูปลักษณ์

เลือกธีมที่สบายตาที่สุดสำหรับการใช้งานยาว ๆ

สลับระหว่าง สว่าง (สาคูป่า) และ มืด (ไพน์ค่ำคืน)

ผู้ช่วย QA

ตัวการ์ตูนผู้ช่วยที่มุมจอ — ตอบคำถาม FAQ และแนะนำการใช้งานแต่ละหน้า (ลากย้ายตำแหน่งได้)

ปุ่มไมค์ในตัวผู้ช่วยใช้ปิด/เปิด “การชวนคุยอัตโนมัติ” เมื่อเปลี่ยนหน้า · การตั้งค่าทั้งหมดจำเฉพาะเครื่อง/เบราว์เซอร์นี้

บัญชีผู้ใช้

ระบบใช้ Firebase Authentication — config ถูก inject อัตโนมัติโดย Firebase Hosting ที่ /__/firebase/init.json

ตั้งค่า Runner Endpoint

ตั้ง runner แยกตาม ชนิดของ application (อ้างอิงจาก domain ในหน้าตั้งค่าแอป) · เวลารัน automation ระบบจะเลือกเลนให้ตรงงานเอง · เลนที่ ปิด/เว้นว่าง จะกลับไปใช้ Backend ของระบบ (ตั้งโดยแอดมิน) แทน

API Tokens (ของบัญชีคุณ)

สร้าง token ของบัญชีตัวเองสำหรับให้ CI / สคริปต์ภายนอกเข้าใช้ REST API · เก็บใน Firestore แบบ hash เท่านั้น (ไม่เก็บข้อความล้วน) — ดังนั้น จะเห็น token จริงเพียง ครั้งเดียวตอนสร้าง ถ้าทำหายต้อง revoke แล้วสร้างใหม่

วิธีใช้กับ CI / สคริปต์
curl -H "Authorization: Bearer qa_xxxxxxxx..." \
  https://your-backend/api/v1/runner/capabilities

สามารถ revoke token ได้ตลอดที่หน้านี้ — ผลใช้ภายในไม่กี่วินาที (Firestore real-time)

คู่มือการใช้งาน

วิธีใช้งาน QA Portal — โปรเจกต์ เทสเคส Applications Dashboard และอื่น ๆ

กำลังโหลด…

แจ้งปัญหา / เสนอฟีเจอร์

ส่งคำขอฟีเจอร์ใหม่หรือรายงานบัคของ QA Portal — ทีมผู้ดูแลจะเห็นและติดตามผ่าน Admin Portal

ส่งเรื่องใหม่

เรื่องที่ฉันส่ง

ติดตามสถานะของเรื่องที่คุณเคยส่ง

กำลังโหลด…

Admin Portal

เฉพาะผู้ดูแลระบบ — config ระดับ system ที่ส่งผลกับทุกเวิร์กสเปซ