การทดสอบ
ตั้งค่า
ตรวจการแก้ของคุณบนเครื่องก่อนส่ง
ก่อนเริ่ม
ลิงก์ไปยัง ก่อนเริ่ม-
ทำการตั้งค่าเริ่มต้นให้เสร็จ เทสต์ Go ใช้เว็บแอปที่สร้างแล้ว จึงต้องสร้างก่อน
-
ติดตั้งเบราว์เซอร์สำหรับทดสอบครั้งเดียว:
Terminal window npx --prefix app/frontend playwright install chromium
รันการตรวจสอบประจำวัน
ลิงก์ไปยัง รันการตรวจสอบประจำวัน-
สร้างและ vet โค้ด Go:
Terminal window go build ./...go vet ./... -
รันเทสต์ Go:
Terminal window go test ./... -
ตรวจและทดสอบเว็บแอป:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
รันกฎของลำดับชั้นและโครงสร้างไฟล์:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
ต้องไม่เห็นความล้มเหลวใด ๆ CI รันคำสั่งชุดเดียวกัน โดยฝั่ง Go รันบน amd64 และ arm64 และมีอีกหนึ่งรอบที่เปิด race detector (go test -race ./...)
รันเทสต์ end-to-end
ลิงก์ไปยัง รันเทสต์ end-to-endเทสต์ end-to-end ควบคุมเบราว์เซอร์จริงที่ต่อกับโปรแกรมจริง รันโปรเจกต์ของส่วนที่คุณแตะ:
npm --prefix app/frontend run e2e -- --project=moviesการรันจะเริ่ม HolyArrs ของตัวเองบนโฟลเดอร์คอนฟิกใหม่ โปรเจกต์ setup สร้างเจ้าของก่อน และโปรเจกต์อื่นส่วนใหญ่รอให้โปรเจกต์นี้เสร็จก่อน ก่อนออกเวอร์ชันให้รันชุดเต็มโดยไม่ใส่ --project
ตัวเลือก
ลิงก์ไปยัง ตัวเลือกควรรันโปรเจกต์ไหน
ลิงก์ไปยัง ควรรันโปรเจกต์ไหน| คุณแก้ | รัน |
|---|---|
| ภาพยนตร์ | movies |
| ซีรีส์ | shows |
| คำขอ | requests, lists, reports |
| การดาวน์โหลด | sources, downloaders, downloads |
| การล็อกอินและผู้ใช้ | accounts, kid |
| สุขภาพระบบและตารางเวลา | schedules, controls |
| เลย์เอาต์ของหน้า | desktop, phone, a11y |
ชื่อโปรเจกต์อยู่ใน app/frontend/playwright.config.ts โปรเจกต์ที่พึ่งโปรเจกต์อื่นจะรันโปรเจกต์นั้นก่อน
เทสต์ใหม่ไปอยู่ที่ไหน
ลิงก์ไปยัง เทสต์ใหม่ไปอยู่ที่ไหน| ชนิด | ที่อยู่ |
|---|---|
| Go | ข้างไฟล์ที่ทดสอบ |
| Web unit | ข้างไฟล์ของมัน ตั้งชื่อ name.test.ts |
| End-to-end | app/tests/<module>/ |
ห้ามเรียกบริการภายนอกจริง ให้เพิ่มตัวจำลองไว้ใต้ app/tests/fakes เทสต์ที่ผ่านเฉพาะบนเครื่องของคุณถือว่าเสีย
ถ้าไม่ทำงาน
ลิงก์ไปยัง ถ้าไม่ทำงานอาการ. การตรวจสอบโครงสร้างล้มเหลว สาเหตุ. ข้อความจะบอกชื่อไฟล์และกฎที่คุณทำผิด วิธีแก้. ย้ายโค้ด หรือส่งข้อมูลธรรมดาลงมาจากโมดูลชั้นบน ดูโมดูล
อาการ. เทสต์ end-to-end เริ่มไม่ได้
สาเหตุ. ยังไม่ได้ติดตั้งเบราว์เซอร์สำหรับทดสอบ
วิธีแก้. รันบรรทัด playwright install ข้างบน
อาการ. เทสต์ Go ล้มเหลวเพราะไม่มีหน้าเว็บ
สาเหตุ. ยังไม่ได้สร้างเว็บแอป
วิธีแก้. รัน npm --prefix app/frontend run build
สำหรับผู้เชี่ยวชาญ
ลิงก์ไปยัง สำหรับผู้เชี่ยวชาญBuild tag
เทสต์ที่มีแท็กจะถูกข้ามเมื่อรัน go test ./... ธรรมดา ใส่ -tags <tag> เพื่อรัน
| แท็ก | ครอบคลุม |
|---|---|
structure |
กฎของลำดับชั้น โครงสร้างไฟล์ ที่อยู่ของ SQL และคอมเมนต์ใน tools/structurecheck |
measure |
การตรวจเวลาของการดาวน์โหลด |
lab |
เทสต์กับแอปจริงในแล็บทดสอบ อ่าน HOLYARRS_LAB_* และข้ามเมื่อไม่ได้ตั้งค่า |
labms, livesubs |
การรันในแล็บสำหรับมีเดียเซิร์ฟเวอร์และเว็บคำบรรยายจริง |
การรันยาวและการรัน fault
CI รันชุดนี้เพิ่มจากเทสต์ธรรมดา ให้รันก่อนออกเวอร์ชัน
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrsHOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrsHOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrsgo test -count=1 -run '^TestDownloaderConformance$' ./app/backend/internal/downloads| ตัวแปร | ทำอะไร |
|---|---|
HOLYARRS_FAULT_OUT |
ไฟล์ที่การรัน fault เขียนตารางผลลัพธ์ลงไป |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
เปิดการจับเวลาตั้งแต่แครชจนถึงล็อกอินได้ และตั้งชื่อไฟล์ผลลัพธ์ |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
เปิดการรันวัดหน่วยความจำ และตั้งชื่อไฟล์ผลลัพธ์ |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
จำนวนรอบและ seed ของลูปแครชใน app/backend/internal/mediafiles/dbtests (crash_test.go) ซึ่งจะถูกข้ามเมื่อใช้ -short |
เซิร์ฟเวอร์จำลองและตัวแปร
เทสต์ end-to-end เริ่มเซิร์ฟเวอร์จำลองสำหรับตัวดาวน์โหลด แหล่งค้นหา และเซิร์ฟเวอร์ metadata เทสต์จึงไม่แตะบริการจริงเลย เทสต์ตั้งตัวแปรเช่น HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL และ HOLYARRS_QBITTORRENT_URL เพื่อให้โปรแกรมชี้ไปที่เซิร์ฟเวอร์จำลอง การติดตั้งจริงไม่เคยต้องใช้ตัวแปรเหล่านี้
API contract มีเทสต์ของตัวเอง TestOpenAPIGenerated ล้มเหลวเมื่อ openapi.json ไม่ตรงกับเส้นทาง และ snapshot ของตารางเส้นทางใน tools/structurecheck/testdata ล้มเหลวเมื่อมีเส้นทางที่เพิ่ม ลบ หรือย้าย
หน้าที่เกี่ยวข้อง
ลิงก์ไปยัง หน้าที่เกี่ยวข้องHolyArrs ใช้ได้ฟรี ถ้าช่วยประหยัดเวลาคุณได้ กดดาวบน GitHub, สนับสนุนโปรเจกต์ หรือ เลี้ยงกาแฟผู้พัฒนา