Bienvenue dans le référentiel pour l'extension AdBlock Plus!
Le projet principal est hébergé sur GitLab et, en plus de l'interface utilisateur et du code d'extension Web, l'extension AdBlock Plus comprend également des listes de filtres statiques, la boîte à outils de blocage de l'annonce Web EYEO (EWE) et les extraits d'Eyeo.
AdBlock Plus est une extension gratuite qui permet aux utilisateurs de personnaliser leur expérience Web. Les utilisateurs peuvent bloquer les publicités ennuyeuses, désactiver le suivi et bien plus encore. Il est disponible pour tous les principaux navigateurs de bureau et pour les appareils mobiles.
AdBlock Plus est un projet open source sous licence GPLV3 et soumis à ses conditions d'utilisation. Eyeo GmbH est la société mère d'AdBlock Plus.
Pour contribuer à ce projet, vous aurez besoin:
Node
doit être installé avec npm
. Si ce n'est pas le cas, vous pouvez télécharger npm
ici.
node-gyp
? Si vous utilisez une machine Apple avec Apple Silicon (CPU ARM64), vous pouvez rencontrer une erreur où node-gyp
ne parvient pas à construire pendant npm install
. Dans ce cas, vous devez exécuter arch -x86_64 zsh
avant d'autres commandes, et assurez-vous que vous n'utilisez pas nvm
pour exécuter la version nœud.
Une autre cause possible est que node-gyp
ne peut pas trouver le binaire en ligne, puis essaie de construire le binaire localement et échoue en raison de l'installation de Python 3.12, ce qui ne fonctionne pas avec certaines versions de node-gyp
. Cela pourrait être résolu en installant Python 3.11 localement, et pyenv
pourrait être utilisé pour cela.
Important: sur Windows, vous avez besoin d'un environnement Linux fonctionnant sur WSL et exécutez les commandes à partir de BASH.
Astuce : Si vous installez node
dans Archlinux, n'oubliez pas d'installer également npm
.
Après le clonage de ce référentiel, ouvrez son dossier et exécutez npm install
.
Des spécifications pour les éléments AdBlock Plus peuvent être trouvées dans le référentiel de spécifications d'EyeO.
Ce sont des pages avec lesquelles les utilisateurs interagissent principalement car ils sont exposés à leur via l'interface utilisateur du navigateur.
Ce sont des pages dédiées à une fonctionnalité spécifique et qui sont accessibles via des pages d'interface utilisateur.
Ce sont des pages qui ne sont pas accessibles via des pages d'interface utilisateur. Ils sont ouverts directement ou indirectement par l'extension dans certaines conditions.
Ce sont des pages qui font partie d'une autre page. Ils ne sont pas censés être montrés seuls.
Ce sont des parties de la logique d'extension qui s'exécutent à côté de l'autre code d'extension dans le processus d'arrière-plan de l'extension.
Si vous ne souhaitez pas créer l'intégralité de l'extension, vous pouvez ouvrir des pages d'interface utilisateur dans un environnement de test à l'aide d'un serveur Web local. Cela peut être fait en exécutant npm start
, qui vous permet d'accéder aux pages HTML sous l'URL indiquée dans le terminal, par exemple http://127.0.0.1:8080.
Divers aspects des pages peuvent être testés en définissant des paramètres dans l'URL (voir la liste des paramètres de l'URL).
Remarque : vous devez créer les faisceaux de la page d'interface utilisateur que vous souhaitez tester.
Le dossier ./test/unit
contient divers fichiers de tests unitaires Mocha qui peuvent être exécutés via npm run $ unit.legacy
. Pour les fichiers .ts
, nous avons des tests d'unité de plaisanterie qui peuvent être exécutés via npm run $ unit.standard
. Ceux-ci peuvent être exécutés ensemble via npm test
.
Le dossier ./test/end-to-end/tests
contient divers tests de fin à fin. Ces tests peuvent être exécutés localement (dans les derniers navigateurs stables chrome, firefox et bord) ou ils peuvent être exécutés à l'aide de Lambdatest.
Pour exécuter les tests de bout en bout localement:
Exemple:
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
Pour exécuter les tests de bout en bout à l'aide de lambdatest:
npm run test:end-to-end all
ou npm run test:end-to-end-mv3 all
. Vous pouvez remplacer all
les tests par une suite de tests spécifique ( e2e
, integration
, smoke
).
Si vous souhaitez uniquement exécuter un seul fichier de test, vous pouvez remplacer la valeur de la propriété all
dans Suites.js à un tableau contenant uniquement le chemin d'accès aux tests que vous souhaitez exécuter. Exemple:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
Allure Reporter est utilisé pour afficher les résultats une fois l'exécution terminée. Le rapport peut être généré et ouvert à l'aide de la commande npm run test:generate-and-open-report
.
Des captures d'écran des tests d'échec sont enregistrées pour test/end-to-end/screenshots
Les tests de conformité s'exécutent sur une version locale de pages de test pour assurer la conformité entre AdBlock Plus et d'autres solutions EYEO Adblocking. Ils exécutent les tests à partir du projet TestPages à l'aide d'une construction locale de l'extension AdBlock Plus.
Prérequis:
Pour exécuter les tests:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
Variables d'environnement facultatives:
Vous pouvez peluchez tous les fichiers via npm run lint
ou Lint uniquement des types de fichiers spécifiques:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
Remarque : eslint
et stylelint
peuvent aider à résoudre les problèmes via --fix
Flag. Vous pouvez essayer l'exemple ci-dessous via NPX qui doit être automatiquement inclus lorsque vous installez npm
.
npx stylelint --fix css/real-file-name.css
Le projet utilise Gitlab CI pour exécuter des pipelines contenant des travaux de construction et de test.
Les constructions nocturnes pour les branches de fonctionnalités et de version peuvent être trouvées en tant qu'artefacts de cette page.
Les travaux de pipeline utilisent des coureurs autogérés de Google Cloud Platform (GCP). La configuration du coureur est définie dans le projet DevOps Runner, et l'état du coureur peut être vérifié ici. L'accès aux ressources GCP comme la console Gcloud peut également être accordé par DevOps.
Copiez le fichier .env.defaults
dans le répertoire racine dans un fichier .env
et remplissez les variables en conséquence. Cette étape peut être ignorée et n'est requise que si vous souhaitez activer l'envoi de données CDP.
Afin de créer l'extension, vous avez besoin pour mettre à jour d'abord ses dépendances. Vous pouvez ensuite exécuter la commande suivante pour le type de build que vous souhaitez générer:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
ou
npm run build:source
Cibles:
build:dev
: Crée une extension déballée dans DIST / DEVENV / <ABIBLE> / . Il peut être chargé sous chrome: // extensions / dans des navigateurs à base de chrome, et sous : débogage dans Firefox.
build:release
: Crée les fichiers de build d'extension suivants dans DIST / Release / qui peuvent être publiés dans les différents magasins d'extension:
build:source
: Crée le fichier d'archive source suivant dans DIST / Release / qui peut être fourni aux magasins d'extension à des fins de révision:
--config <*.js file path>
: Spécifiez un chemin d'accès à un nouveau fichier de configuration par rapport à AdBlockPluschrome / Gulpfile.js (voir Exemples dans AdBlockPlusChrome / Build / Config / ).
--manifest-path <*.json file path>
: Spécifiez un chemin vers un nouveau fichier manifeste.json par rapport à AdBlockPlusChrome / Gulpfile.js (voir Exemples dans AdBlockPlusChrome / Build / Tasks / Manifest.js ).
--manifest-version 3
ou -m 3
: Générez une version compatible avec WeBExtensions Manifest Version 3. S'il est omis, il générera une version pour Manifest Version 2.
--partial true
: exécutez une version qui ne reconstruisera pas les icônes, les règles et l'interface utilisateur. Ceci est utile si vos nouvelles modifications ne touchent aucune des parties de l'extension, et vous pouvez bénéficier du temps de construction plus rapide. Notez que vous devez avoir une construction complète une fois avant de pouvoir exécuter avec succès une version partielle.
Installez les packages NPM requis:
npm install
Rerruez les commandes ci-dessus lorsque les dépendances peuvent avoir changé, par exemple après avoir vérifié une nouvelle révision.
Divers fichiers doivent être générés avant d'utiliser l'interface utilisateur. Lors de la construction de l'interface utilisateur pour l'inclusion dans l'extension, ceci est réalisé en utilisant npm run dist
.
Pour l'utilisation dans l'environnement de test, exécutez le script build:dev
pour générer les différents faisceaux pour tous les éléments d'interface utilisateur.
Au-delà de cela, ce référentiel contient divers services publics sur lesquels nous comptons dans notre processus de développement.
Nous utilisons Sentry pour signaler les erreurs. Afin de l'initialiser pendant la construction, il faut passer ADBLOCKPLUS_SENTRY_DSN
et ADBLOCKPLUS_SENTRY_ENVIRONMENT
dans le fichier .env
ou en tant que variable d'environnement pendant la version (CI). Si elle n'est pas initialisée, un avertissement de console est affiché. Par défaut ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. Les e-mails utilisateur sont coupés du côté client et le nettoyage des données du côté serveur est configuré par défaut.
Sormes d'extension (depuis 3.11)
Délaies d'extension (avant 3.11)
Ce projet suit le processus typique de GitLab: