Kiểm thử
Cài đặt
Kiểm tra thay đổi của bạn trên máy trước khi gửi.
Trước khi bắt đầu
Liên kết tới Trước khi bắt đầu-
Hoàn tất Thiết lập. Các bài kiểm thử Go phục vụ ứng dụng web đã build, nên hãy build nó trước.
-
Cài trình duyệt kiểm thử một lần:
Terminal window npx --prefix app/frontend playwright install chromium
Chạy các bước kiểm tra hằng ngày
Liên kết tới Chạy các bước kiểm tra hằng ngày-
Build và vet mã Go:
Terminal window go build ./...go vet ./... -
Chạy các bài kiểm thử Go:
Terminal window go test ./... -
Kiểm tra và thử ứng dụng web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Chạy các quy tắc về tầng và cách bố trí tệp:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Bạn sẽ không thấy lỗi nào. CI chạy đúng các lệnh này, các lệnh Go chạy trên amd64 và arm64, cộng thêm một lần chạy với bộ dò race (go test -race ./...).
Chạy các bài kiểm thử end-to-end
Liên kết tới Chạy các bài kiểm thử end-to-endCác bài kiểm thử end-to-end điều khiển một trình duyệt thật chạy với một chương trình thật. Chạy project của phần bạn đã đụng đến:
npm --prefix app/frontend run e2e -- --project=moviesLần chạy tự khởi động một HolyArrs riêng với một thư mục cấu hình mới. Project setup tạo chủ sở hữu trước, và hầu hết các project khác chờ nó. Hãy chạy bộ đầy đủ không kèm --project trước khi phát hành.
Lựa chọn
Liên kết tới Lựa chọnNên chạy những project nào
Liên kết tới Nên chạy những project nào| Bạn đã thay đổi | Chạy |
|---|---|
| Phim lẻ | movies |
| Phim bộ | shows |
| Yêu cầu | requests, lists, reports |
| Tải xuống | sources, downloaders, downloads |
| Đăng nhập và người dùng | accounts, kid |
| Tình trạng và lịch chạy | schedules, controls |
| Bố cục trang | desktop, phone, a11y |
Các project được đặt tên trong app/frontend/playwright.config.ts. Một project phụ thuộc vào project khác sẽ chạy project kia trước.
Bài kiểm thử mới đặt ở đâu
Liên kết tới Bài kiểm thử mới đặt ở đâu| Loại | Vị trí |
|---|---|
| Go | Cạnh tệp mà nó kiểm thử |
| Unit của web | Cạnh tệp của nó, dưới dạng name.test.ts |
| End-to-end | app/tests/<module>/ |
Không bao giờ gọi một dịch vụ thật bên ngoài. Hãy thêm một bản thay thế trong app/tests/fakes. Một bài kiểm thử chỉ đạt trên máy của bạn là bài kiểm thử hỏng.
Nếu không hoạt động
Liên kết tới Nếu không hoạt độngTriệu chứng. Một bước kiểm tra cấu trúc thất bại. Nguyên nhân. Thông báo nêu tên tệp và quy tắc bạn đã vi phạm. Cách khắc phục. Chuyển mã đi chỗ khác, hoặc truyền dữ liệu thuần từ module cao hơn xuống. Xem Module.
Triệu chứng. Các bài kiểm thử end-to-end không khởi động được.
Nguyên nhân. Trình duyệt kiểm thử chưa được cài.
Cách khắc phục. Chạy dòng playwright install ở trên.
Triệu chứng. Các bài kiểm thử Go thất bại vì thiếu trang.
Nguyên nhân. Ứng dụng web chưa được build.
Cách khắc phục. Chạy npm --prefix app/frontend run build.
Dành cho người dùng nâng cao
Liên kết tới Dành cho người dùng nâng caoBuild tag
Một bài kiểm thử có tag sẽ bị bỏ qua khi chạy go test ./... thông thường. Truyền -tags <tag> để chạy nó.
| Tag | Chứa |
|---|---|
structure |
Các quy tắc về tầng, bố cục tệp, vị trí SQL và chú thích trong tools/structurecheck |
measure |
Các bước kiểm tra thời gian tải xuống |
lab |
Các bài kiểm thử với ứng dụng thật trong một lab thử nghiệm. Chúng đọc HOLYARRS_LAB_* và bỏ qua khi các biến đó chưa đặt |
labms, livesubs |
Các lần chạy lab cho máy chủ media và các trang phụ đề thật |
Các lần chạy dài và chạy lỗi
CI chạy những lần này thêm vào các bài kiểm thử thường. Hãy chạy chúng trước khi phát hành.
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| Biến | Tác dụng |
|---|---|
HOLYARRS_FAULT_OUT |
Tệp mà các lần chạy lỗi ghi bảng kết quả vào |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Bật việc đo thời gian từ lúc sự cố đến lúc đăng nhập được và đặt tên tệp đầu ra |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Bật các lần chạy bộ nhớ và đặt tên tệp đầu ra |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Số vòng và seed cho vòng lặp sự cố trong app/backend/internal/mediafiles/dbtests (crash_test.go), bị bỏ qua khi dùng -short |
Máy chủ thay thế và các biến
Các bài kiểm thử end-to-end khởi động các máy chủ thay thế cho trình tải xuống, các Nguồn và máy chủ metadata, nên không bài kiểm thử nào chạm đến dịch vụ thật. Các bài kiểm thử đặt những biến như HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL và HOLYARRS_QBITTORRENT_URL để trỏ chương trình vào chúng. Một bản cài thật không bao giờ cần đến chúng.
Hợp đồng API có các bài kiểm thử riêng. TestOpenAPIGenerated thất bại khi openapi.json lệch khỏi các route, và ảnh chụp bảng route trong tools/structurecheck/testdata thất bại với mọi route được thêm, xóa hay di chuyển.
Liên quan
Liên kết tới Liên quanHolyArrs miễn phí. Nếu nó giúp bạn tiết kiệm thời gian, hãy gắn sao trên GitHub, tài trợ dự án hoặc mời tôi một ly cà phê.