Bỏ qua để đến nội dung

Kiểm thử

Cài đặt

Kiểm tra thay đổi của bạn trên máy trước khi gửi.

  • 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
  1. Build và vet mã Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Chạy các bài kiểm thử Go:

    Terminal window
    go test ./...
  3. Kiểm tra và thử ứng dụng web:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. 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-end

Cá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:

Terminal window
npm --prefix app/frontend run e2e -- --project=movies

Lầ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.

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.

Triệ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.

Build 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.

Terminal window
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrs
HOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrs
HOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrs
go 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.

HolyArrs 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ê.