الاختبار
الإعداد
افحص تغييرك على جهازك قبل أن ترسله.
قبل أن تبدأ
رابط إلى قبل أن تبدأ-
أكمل الإعداد. اختبارات Go تقدّم تطبيق الويب المبني، فابنِه أولًا.
-
ثبّت متصفح الاختبار مرة واحدة:
Terminal window npx --prefix app/frontend playwright install chromium
شغّل الفحوص اليومية
رابط إلى شغّل الفحوص اليومية-
ابنِ شيفرة Go وافحصها بـ vet:
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، ومعها تشغيل واحد بكاشف التسابق (go test -race ./...).
شغّل الاختبارات الشاملة
رابط إلى شغّل الاختبارات الشاملةالاختبارات الشاملة (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 | بجانب الملف الذي يختبره |
| اختبار وحدة للويب | بجانب ملفه، باسم name.test.ts |
| اختبار شامل | app/tests/<module>/ |
لا تتصل بخدمة خارجية حقيقية أبدًا. أضف بديلًا وهميًا تحت app/tests/fakes. الاختبار الذي ينجح على جهازك فقط اختبار معطوب.
إذا لم ينجح الأمر
رابط إلى إذا لم ينجح الأمرالعَرَض. يفشل أحد فحوص البنية. السبب. الرسالة تسمّي الملف والقاعدة التي خرقتها. الحل. انقل الشيفرة، أو مرّر بيانات بسيطة من الوحدة الأعلى. انظر الوحدات.
العَرَض. لا تبدأ الاختبارات الشاملة.
السبب. متصفح الاختبار غير مثبّت.
الحل. شغّل سطر playwright install المذكور أعلاه.
العَرَض. تفشل اختبارات Go لغياب صفحات.
السبب. تطبيق الويب غير مبني.
الحل. شغّل npm --prefix app/frontend run build.
للخبراء
رابط إلى للخبراءوسوم البناء
الاختبار الذي له وسم يُتخطّى في go test ./... العادي. مرّر -tags <tag> لتشغيله.
| الوسم | يحوي |
|---|---|
structure |
قواعد الطبقات وتنظيم الملفات وموضع SQL والتعليقات في tools/structurecheck |
measure |
فحوص توقيت التنزيل |
lab |
اختبارات أمام تطبيقات حقيقية في مختبر اختبار. تقرأ HOLYARRS_LAB_* وتُتخطّى إذا لم تكن مضبوطة |
labms, livesubs |
تشغيلات المختبر لخوادم الوسائط ومواقع الترجمات الحية |
التشغيلات الطويلة وتشغيلات الأعطال
يشغّل 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 |
الملف الذي تكتب فيه تشغيلات الأعطال جدولها |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
يفعّلان قياس الوقت من العطل إلى تسجيل الدخول ويسمّيان ملف ناتجه |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
يفعّلان تشغيلات الذاكرة ويسمّيان ملف ناتجها |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
عدد الجولات والبذرة لحلقة الأعطال في app/backend/internal/mediafiles/dbtests (crash_test.go)، وهي تُتخطّى مع -short |
الخوادم البديلة والمتغيرات
تشغّل الاختبارات الشاملة خوادم بديلة لبرامج التنزيل والمصادر وخادم البيانات الوصفية، فلا يصل أي اختبار إلى خدمة حقيقية. تضبط الاختبارات متغيرات مثل HOLYARRS_TMDB_URL وHOLYARRS_MUSICBRAINZ_URL وHOLYARRS_PLEX_URL وHOLYARRS_QBITTORRENT_URL لتوجّه البرنامج إليها. التثبيت الحقيقي لا يحتاج إليها أبدًا.
لعقد API اختباراته الخاصة. يفشل TestOpenAPIGenerated إذا انحرف openapi.json عن المسارات، وتفشل لقطة جدول المسارات في tools/structurecheck/testdata عند أي مسار أُضيف أو أُزيل أو نُقل.
صفحات ذات صلة
رابط إلى صفحات ذات صلةHolyArrs مجاني. إذا وفّر عليك وقتًا، امنحه نجمة على GitHub أو ادعمه ماليًا أو ادعُني إلى فنجان قهوة.