🗂️ แนวทางการจัดการโปรเจกต์และ QA ของ iBrowe คู่มือนี้สรุปแนวปฏิบัติที่ดีที่สุดสำหรับการจัดการ Issue, Milestone, QA และกระบวนการ Release ในการพัฒนา iBrowe โดยดัดแปลงจากโปรโตคอลภายในของ Brave และปรับให้เข้ากับวิธีทำงานของ iBrowe

📝 ข้อกำหนดสำหรับ Issue งานทุกชิ้น ต้องมี GitHub Issue ยกเว้นในกรณีต่อไปนี้:

  • อัปเดตเฉพาะเอกสาร (Documentation-only updates)
  • การแก้ไขไฟล์ .github/CODEOWNERS

ถ้างานของคุณไม่อยู่ในข้อยกเว้นเหล่านี้ ต้องสร้าง Issue ก่อนจะส่ง PR

🎯 Priority Labels (ป้ายบอกลำดับความสำคัญ) ใช้จัดลำดับงานตามความสำคัญ:

  • priority/P1 → Bug สำคัญมาก อาจต้องออก Hotfix
  • priority/P2 → ปัญหารุนแรง อาจต้องยกขึ้น Release Channel ที่สูงขึ้น
  • priority/P3 → Feature หรือ Bugfix ปกติ รวมอยู่ใน Release ตามรอบ
  • priority/P4 → งานที่วางแผนไว้ใน Backlog
  • priority/P5 → ยังไม่มีกำหนดการ ไม่มี Timeline ตอนนี้ ห้ามปรับลด Priority ของ Issue ของคนอื่น โดยไม่หารือกับทีมก่อน

🛳️ การจัดการ Milestone & Release

  • ทุก Release Milestone จะถูกกำหนดตาม Branch (เช่น 1.13.x, 1.13.x Release #2)
  • QA จะต้องตรวจสอบและอนุมัติ Release ใน Slack ช่อง #release
  • คำอธิบาย Milestone ต้องใส่ลิงก์ไปยัง Milestone ก่อนหน้า
  • Issue จะถูกกำหนดเข้า Milestone หลัง Merge แล้ว ยกเว้นเป็น Release Blocking เช่น Security bug หรือปัญหาใหญ่

Pull Request Milestones

  • PR ต้องระบุ Milestone ให้ตรงกับ Branch ที่จะ Merge เข้าไป
  • ถ้าเป็น Branch main ให้ใช้เวอร์ชันที่ระบุใน src/ibrowe/package.json

📌 นโยบาย Uplift โดยปกติ PR ทุกอันจะเข้า Branch main ก่อน ถ้าต้องการ Uplift ไปยัง Dev/Beta/Release ต้องทำตามนี้:

  • สร้าง PR ไปยัง Version Branch ที่ต้องการ (เช่น 1.13.x)
  • ใส่ลิงก์ไปยัง Issue ต้นฉบับในเนื้อหา PR
  • ต้องได้รับอนุมัติจาก Uplift Approver

มีแค่ Uplift Approvers เท่านั้นที่สามารถอนุมัติ PR ไปยัง Versioned Branch ได้ ได้แก่:

  • @rebron
  • @kjozwiak
  • @Sri
  • @clifton

ต้องเช็คให้มั่นใจว่า Uplift ถูก Merge และแสดงใน Nightly แล้วก่อนถือว่างานเสร็จ

🗃️ Project Boards

  • Board ใช้ติดตามงานตาม Functional Area (เชื่อมกับ Pods โดยตรง)
  • อ้างอิง: iBrowe Projects

ระหว่างทำ Triage:

  • ย้าย Issue จากซ้าย ➜ ขวาตามความคืบหน้า
  • เคลียร์ Column “Untriaged Backlog” ให้หมด
  • ติดป้าย Priority (P1–P5) ให้ถูกต้อง

🧪 QA Guidelines QA Labels

  • ต้องระบุ Label QA/Yes หรือ QA/No ทุกครั้ง
  • ใช้ QA/No กรณี:
  • Issue เฉพาะ Internal/tooling
  • Meta Issue (Issue ที่เอาไว้รวมปัญหาเฉย ๆ)
  • งานที่ถูกทดสอบผ่าน Issue อื่นที่มี Test Plan ครอบคลุมแล้ว

Platform-specific Testing หากจำเป็นต้องทดสอบหลาย Platform ให้ใช้ Label เหล่านี้:

  • QA/Test-All-Platforms → ต้องทดสอบทุก OS
  • QA/Test-All-Device-Types → เช่น Phone, Tablet เป็นต้น

สำหรับยืนยันผลทดสอบบนแต่ละ Platform ให้ใช้:

  • QA/QA Pass-Win64
  • QA/QA Pass-macOS
  • QA/QA Pass-Linux

QA สามารถ Query หา Issue ที่ยังไม่มี Label เหล่านี้ด้วยคำสั่ง: is:issue is:closed milestone:“1.13.x Release #2” -label:“QA/No” -label:“QA/QA Pass-Win64”

📝 Release Notes Issue ทุกอันต้องมี Label อย่างใดอย่างหนึ่ง:

  • release-notes/include
  • release-notes/exclude

ตรวจสอบว่ามี Issue ไหนขาด Label เหล่านี้ได้ด้วย: is:issue milestone:“1.13.x - Beta” -label:“release-notes/include” -label:“release-notes/exclude”

Release Notes ควร:

  • ร่างตั้งแต่ช่วง Beta
  • บันทึกในไฟล์ CHANGELOG.md ที่ Root Directory
  • แนบลิงก์หรือคัดลอกเนื้อหาไปไว้ใน GitHub Release Entry

🧑‍🔬 การขอใช้ QA Resources

  • ใช้ QA Resources Project
  • สร้าง Issue ใหม่ที่: https://github.com/ibrowe/qa-resources/issues/new/choose
  • กำหนด Project เป็น: QA Work Priority List
  • ถ้าเรื่องด่วน ให้ใช้ Priority P1 และแจ้ง QA ที่ Slack ช่อง #testers

วงจร QA:

  • Requested ➜ Upcoming ➜ In Progress ➜ Completed

หมายเหตุ: Release ที่ถูกกำหนดตามตาราง จะอ้างอิง iBrowe Release Schedule และ QA จะทำ Triage และจัดลำดับ Hotfixes ผ่านระบบเดียวกันนี้

📎 ที่มา: ดัดแปลงจากเอกสารการจัดการ Engineering และ QA ภายในของ Brave และปรับโครงสร้างให้เหมาะกับกระบวนการทำงานของ iBrowe