مرحبًا بك في مستودع تمديد Adblock Plus!
يتم استضافة المشروع الرئيسي على GitLab ، بالإضافة إلى واجهة المستخدم ورمز تمديد الويب ، يتضمن امتداد AdBlock Plus أيضًا قوائم مرشح ثابت ومجموعة أدوات منع Eneo Extension Extension (EWE) ومقتطفات Eyeo.
AdBlock Plus هو امتداد مجاني يسمح للمستخدمين بتخصيص تجربة الويب الخاصة بهم. يمكن للمستخدمين منع الإعلانات المزعجة ، وتعطيل التتبع والمزيد. إنه متوفر لجميع متصفحات سطح المكتب الرئيسية والأجهزة المحمولة.
Adblock Plus هو مشروع مفتوح المصدر مرخص له بموجب GPLV3 ويخضع لشروط استخدامه. Eyeo GmbH هي الشركة الأم لـ Adblock Plus.
للمساهمة في هذا المشروع ، ستحتاج:
يجب أن تأتي Node
مثبتة مع npm
. إذا لم يحدث ذلك ، يمكنك تنزيل npm
هنا.
node-gyp
؟ إذا كنت تستخدم جهاز Apple مع Silicon Apple (ARM64 CPU) ، فقد تواجه خطأ فاشع فيه node-gyp
في البناء أثناء npm install
. في هذه الحالة ، تحتاج إلى تشغيل arch -x86_64 zsh
قبل أي أوامر أخرى ، وتأكد من أنك لا تستخدم nvm
لتشغيل إصدار العقدة.
سبب آخر محتمل هو أن node-gyp
لا يمكن أن تجد الثنائي عبر الإنترنت ، ثم يحاول بناء الثنائي محليًا ويفشل بسبب تثبيت Python 3.12 ، والذي لا يعمل مع بعض إصدارات node-gyp
. يمكن حل ذلك عن طريق تثبيت Python 3.11 محليًا ، ويمكن استخدام pyenv
لذلك.
هام: على Windows ، تحتاج إلى بيئة Linux تعمل على WSL وتشغيل الأوامر من داخل Bash.
نصيحة : إذا كنت تقوم بتثبيت node
في Archlinux ، فيرجى تذكر تثبيت npm
أيضًا.
بعد استنساخ هذا المستودع ، افتح مجلده وقم بتشغيل npm install
.
يمكن العثور على مواصفات عناصر AdBlock Plus في مستودع Spec SPEC.
هذه صفحات يتفاعل معها في المقام الأول لأنهم يتعرضون لهم عبر واجهة المستخدم للمستعرض.
هذه صفحات مخصصة لميزة محددة ويمكن الوصول إليها عبر صفحات واجهة المستخدم.
هذه صفحات لا يمكن الوصول إليها عبر صفحات واجهة المستخدم. يتم فتحها بشكل مباشر أو غير مباشر بواسطة التمديد في ظل ظروف معينة.
هذه صفحات جزء من صفحة أخرى. ليس من المفترض أن تظهر بمفردهم.
هذه أجزاء من منطق الامتداد والتي تعمل جنبًا إلى جنب مع رمز الامتداد الآخر في عملية خلفية الامتداد.
إذا كنت لا ترغب في إنشاء الامتداد بأكمله ، فيمكنك فتح صفحات واجهة المستخدم في بيئة اختبار باستخدام خادم ويب محلي. يمكن القيام بذلك عن طريق تشغيل npm start
، والذي يتيح لك الوصول إلى صفحات HTML تحت عنوان URL الموضح في المحطة ، على سبيل المثال http://127.0.0.1:8080.
يمكن اختبار جوانب مختلفة من الصفحات عن طريق تعيين المعلمات في عنوان URL (انظر قائمة معلمات عنوان URL).
ملاحظة : تحتاج إلى إنشاء حزم لصفحة (صفحات) واجهة المستخدم التي تريد اختبارها.
npm run $ unit.legacy
المجلد ./test/unit
بالنسبة لملفات .ts
، لدينا اختبارات وحدة Jest التي يمكن تشغيلها عبر npm run $ unit.standard
. يمكن تشغيل هذه معًا عبر npm test
.
يحتوي المجلد ./test/end-to-end/tests
يمكن تنفيذ هذه الاختبارات محليًا ، (في أحدث متصفحات Chrome و Firefox و Edge) أو يمكن تنفيذها باستخدام Lambdatest.
لتشغيل الاختبارات من طرف إلى طرف محليًا:
مثال:
cp .env.e2e.template .env.e2e
npm run build:release {chrome | firefox} -- --manifest-version {2 | 3}
MANIFEST_VERSION={2 | 3} BROWSER={chrome | firefox | edge} npm run test:end-to-end-local all
لتشغيل الاختبارات من طرف إلى طرف باستخدام Lambdatest:
npm run test:end-to-end all
npm run test:end-to-end-mv3 all
. يمكنك استبدال all
الاختبارات بمجموعة اختبار محددة ( e2e
، integration
، smoke
).
إذا كنت ترغب فقط في تنفيذ ملف اختبار واحد ، فيمكنك استبدال قيمة all
Property في Suites.js إلى صفيف يحتوي فقط على المسار إلى الاختبار (الاختبارات) التي تريد تشغيلها. مثال:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
يتم استخدام مراسل جذب لعرض النتائج بعد الانتهاء من التنفيذ. يمكن إنشاء التقرير وفتحه باستخدام npm run test:generate-and-open-report
.
يتم حفظ لقطات الشاشة من الاختبارات الفاشلة test/end-to-end/screenshots
يتم تشغيل اختبارات الامتثال على نسخة محلية من TestPages لضمان الامتثال بين Adblock Plus وحلول Eyeo Adblocking الأخرى. يقومون بتشغيل الاختبارات من مشروع TestPages باستخدام بناء محلي لتمديد AdBlock Plus.
المتطلبات الأساسية:
لتشغيل الاختبارات:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
متغيرات البيئة الاختيارية:
يمكنك الترسيخ جميع الملفات عبر npm run lint
أو Lint فقط أنواع الملفات المحددة:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
ملاحظة : يمكن لكل من eslint
و stylelint
المساعدة في إصلاح المشكلات عبر --fix
Flag. يمكنك تجربة المثال أدناه عبر NPX والتي يجب تضمينها تلقائيًا عند تثبيت npm
.
npx stylelint --fix css/real-file-name.css
يستخدم المشروع Gitlab CI لتشغيل خطوط الأنابيب التي تحتوي على وظائف بناء واختبار.
يمكن العثور على بنية ليلية لفروع الميزة والإصدار كقنين من هذه الصفحة.
تستخدم وظائف خطوط الأنابيب المتسابقين الذين يتم إدارتهم ذاتيًا من منصة Google Cloud (GCP). يتم تعريف إعداد العداء في مشروع DevOps Runner ، ويمكن فحص حالة العداء هنا. يمكن أن تمنح DevOps الوصول إلى موارد GCP مثل GCLoud Console.
انسخ ملف .env.defaults
في دليل الجذر إلى ملف .env
وملء المتغيرات وفقًا لذلك. يمكن تخطي هذه الخطوة ، وهي مطلوبة فقط إذا كنت ترغب في تمكين إرسال بيانات CDP.
من أجل إنشاء الامتداد ، تحتاج إلى تحديث تبعياته أولاً. يمكنك بعد ذلك تشغيل الأمر التالي لنوع الإنشاء الذي ترغب في إنشاؤه:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
أو
npm run build:source
الأهداف:
build:dev
: إنشاء امتداد غير معبأ في dist/devenv/<varge>/ . يمكن تحميله تحت Chrome: // extensions/ في المتصفحات القائمة على الكروم ، وتحت : تصحيح الأخطاء في Firefox.
build:release
: إنشاء ملفات بناء الامتداد التالية في dist/ release/ التي يمكن نشرها إلى متاجر الإرشاد المختلفة:
build:source
: ينشئ ملف أرشيف المصدر التالي في DIST/ REFIGE/ يمكن توفيره إلى متاجر الامتداد لأغراض المراجعة:
--- Config < --config <*.js file path>
--manifest-path <*.json file path>
: حدد مسارًا إلى ملف MISSEST.JSON جديد بالنسبة إلى AdBlockPlusChrome/gulpfile.js (انظر أمثلة في adblockpluschrome/build/tasks/manceest.js ).
--manifest-version 3
أو -m 3
: إنشاء بناء متوافق مع الإصدار البيني Webextensions 3. إذا تم حذفه ، فسيقوم بإنشاء بناء للبيانات 2.
--partial true
: قم بتشغيل بناء لن يعيد بناء الرموز والقواعد وواجهة المستخدم. يعد هذا مفيدًا إذا لم تلمس التغييرات الجديدة أيًا من الأجزاء المذكورة في التمديد ، ويمكنك الاستفادة من وقت البناء الأسرع. لاحظ أنه يجب أن يكون لديك تشغيل كامل مرة واحدة قبل أن تتمكن من تشغيل بناء جزئي.
تثبيت حزم NPM المطلوبة:
npm install
أعد تشغيل الأوامر المذكورة أعلاه عندما تكون التبعيات قد تغيرت ، على سبيل المثال بعد التحقق من مراجعة جديدة.
يجب إنشاء الملفات المختلفة قبل استخدام واجهة المستخدم. عند إنشاء واجهة المستخدم لإدراجها في الامتداد ، يتم تحقيق ذلك باستخدام npm run dist
.
للاستخدام في بيئة الاختبار ، قم بتشغيل build:dev
Script لإنشاء الحزم المختلفة لجميع عناصر واجهة المستخدم.
علاوة على ذلك ، يحتوي هذا المستودع على مختلف المرافق التي نعتمد عليها عبر عملية التطوير الخاصة بنا.
نستخدم Sentry للإبلاغ عن الأخطاء. من أجل تهيئته أثناء الإنشاء ، يجب على أحدهم اجتياز متغيرات ADBLOCKPLUS_SENTRY_DSN
و ADBLOCKPLUS_SENTRY_ENVIRONMENT
في إما ملف .env
أو كمتغير للبيئة أثناء (CI). إذا لم يتم تهيئته ، يتم عرض تحذير وحدة التحكم. بشكل افتراضي ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. يتم قطع رسائل البريد الإلكتروني للمستخدم على جانب العميل ويتم تكوين تنظيف البيانات على جانب الخادم افتراضيًا.
إصدارات التمديد (منذ 3.11)
إصدارات التمديد (قبل 3.11)
يتبع هذا المشروع عملية gitlab النموذجية: