¡Bienvenido al repositorio de la extensión AdBlock Plus!
El proyecto principal se aloja en GitLab y, además de la interfaz de usuario y el código de extensión web, la extensión AdBlock Plus también incluye listas de filtros estáticos, el kit de herramientas de bloqueo de anuncios de extensión web de Eyeo (EWE) y los fragmentos de Eyeoo.
AdBlock Plus es una extensión gratuita que permite a los usuarios personalizar su experiencia web. Los usuarios pueden bloquear anuncios molestos, deshabilitar el seguimiento y mucho más. Está disponible para todos los principales navegadores de escritorio y para dispositivos móviles.
AdBlock Plus es un proyecto de código abierto con licencia bajo GPLV3 y está sujeto a sus términos de uso. Eyeoo GmbH es la empresa matriz de AdBlock Plus.
Para contribuir a este proyecto, necesitará:
Node
debe venir instalado con npm
. Si no es así, puede descargar npm
aquí.
node-gyp
? Si está utilizando una máquina Apple con Apple Silicon (CPU ARM64), puede encontrar un error en el que node-gyp
no se puede construir durante npm install
. En ese caso, debe ejecutar arch -x86_64 zsh
antes de cualquier otro comando, y asegúrese de no estar usando nvm
para ejecutar la versión de nodo.
Otra posible causa es que node-gyp
no puede encontrar el binario en línea, luego intenta construir el binario localmente y falla debido a que la instalación de Python 3.12, que no funciona, funciona con algunas versiones de node-gyp
. Eso podría resolverse instalando Python 3.11 localmente, y pyenv
podría usarse para eso.
Importante: en Windows, necesita un entorno de Linux que se ejecuta en WSL y ejecute los comandos desde Bash.
Consejo : Si está instalando node
en Archlinux, recuerde también instalar npm
.
Después de clonar este repositorio, abra su carpeta y ejecute npm install
.
Las especificaciones para los elementos AdBlock Plus se pueden encontrar en el repositorio de especificaciones de EyeO.
Estas son páginas con las que los usuarios interactúan principalmente porque están expuestos a ellas a través de la interfaz de usuario del navegador.
Estas son páginas que están dedicadas a una característica específica y se puede acceder a través de páginas de interfaz de usuario.
Estas son páginas a las que no se puede acceder a través de páginas de interfaz de usuario. La extensión se abren directa o indirectamente bajo ciertas condiciones.
Estas son páginas que forman parte de otra página. No están destinados a ser mostrados por su cuenta.
Estas son partes de la lógica de extensión que se ejecutan junto con el otro código de extensión en el proceso de fondo de la extensión.
Si no desea construir toda la extensión, puede abrir páginas de interfaz de usuario en un entorno de prueba utilizando un servidor web local. Esto se puede hacer ejecutando npm start
, que le permite acceder a las páginas HTML bajo la URL que se muestra en el terminal, por ejemplo, http://127.0.0.1:8080.
Se pueden probar varios aspectos de las páginas estableciendo parámetros en la URL (consulte la lista de parámetros de URL).
Nota : Debe crear los paquetes para las páginas de interfaz de usuario que desea probar.
La carpeta ./test/unit
contiene varios archivos de prueba de unidades Mocha que se pueden ejecutar a través de npm run $ unit.legacy
. Para los archivos .ts
tenemos pruebas unitarias de Jest que se pueden ejecutar a través de npm run $ unit.standard
. Esos se pueden ejecutar juntos a través de npm test
.
La carpeta ./test/end-to-end/tests
contiene varias pruebas de extremo a fin. Estas pruebas se pueden ejecutar localmente (en los últimos navegadores estables de Chrome, Firefox y Edge) o se pueden ejecutar con LambDatest.
Para ejecutar las pruebas de extremo a extremo localmente:
Ejemplo:
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
Para ejecutar las pruebas de extremo a extremo usando LambDatest:
npm run test:end-to-end all
o npm run test:end-to-end-mv3 all
. Puede reemplazar all
las pruebas con un conjunto de pruebas específico ( e2e
, integration
, smoke
).
Si solo desea ejecutar un solo archivo de prueba, puede reemplazar el valor de all
las propiedades en suites.js a una matriz que contiene solo la ruta a las pruebas que desea ejecutar. Ejemplo:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
Allure Reporter se usa para mostrar los resultados después de que se haya completado la ejecución. El informe se puede generar y abrir utilizando la npm run test:generate-and-open-report
.
Las capturas de pantalla de las pruebas de falla se guardan para test/end-to-end/screenshots
Las pruebas de cumplimiento se ejecutan en una versión local de Test Page para asegurar el cumplimiento entre AdBlock Plus y otras soluciones de Bloking de EYEO. Ejecutaron las pruebas del proyecto TestPages utilizando una compilación local de la extensión AdBlock Plus.
Prerrequisitos:
Para ejecutar las pruebas:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
Variables de entorno opcional:
Puede vincular todos los archivos a través de npm run lint
o Lint SOLO tipos de archivos específicos:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
Nota : Tanto eslint
como stylelint
pueden ayudar a solucionar problemas a través de la bandera --fix
. Puede probar el ejemplo a continuación a través de NPX, que debe incluirse automáticamente cuando instala npm
.
npx stylelint --fix css/real-file-name.css
El proyecto utiliza GitLab CI para ejecutar tuberías que contienen trabajos de compilación y prueba.
Las compilaciones nocturnas para las ramas de características y lanzamientos se pueden encontrar como artefactos de esta página.
Los trabajos de tuberías utilizan corredores autogestionados de Google Cloud Platform (GCP). La configuración del corredor se define en el proyecto DevOps Runner, y el estado del corredor se puede verificar aquí. DevOps también puede otorgar el acceso a los recursos de GCP como la consola GCLOUD.
Copie el archivo .env.defaults
en el directorio raíz a un archivo .env
y complete las variables en consecuencia. Este paso se puede omitir y solo se requiere si desea habilitar el envío de datos de CDP.
Para construir la extensión, primero debe actualizar sus dependencias. Luego puede ejecutar el siguiente comando para el tipo de compilación que desea generar:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
o
npm run build:source
Objetivos:
build:dev
: Crea la extensión desempaquetada en Dist/Devenv/<gast>/ . Se puede cargar bajo Chrome: // Extensiones/ en navegadores basados en cromo, y debajo de: depuración en Firefox.
build:release
: Crea los siguientes archivos de compilación de extensión en Dist/ Release/ que se pueden publicar en las diversas tiendas de extensión:
build:source
: Crea el siguiente archivo de archivo de origen en Dist/ Release/ que se puede proporcionar a las tiendas de extensión para fines de revisión:
--config <*.js file path>
: especifique una ruta a un nuevo archivo de configuración relativo a AdBlockPlusChrome/GulpFile.js (consulte Ejemplos en AdBlockPlusChrome/Build/Config/ ).
--manifest-path <*.json file path>
: especifique una ruta a un nuevo archivo manifest.json en relación con AdBlockPlusChrome/gulpfile.js (consulte los ejemplos en AdBlockPlusChrome/Build/Tasks/Manifest.js ).
--manifest-version 3
o -m 3
: Genere una compatibilidad compatible con WeBextensions Manifest Versión 3. Si se omite, generará una compilación para la versión 2 de manifiesto.
--partial true
: ejecute una construcción que no reconstruya los iconos, las reglas y la interfaz de usuario. Esto es útil si sus nuevos cambios no tocan ninguna de las partes bigorionadas de la extensión, y puede beneficiarse del tiempo de construcción más rápido. Tenga en cuenta que debe ejecutar una construcción completa una vez antes de poder ejecutar con éxito una compilación parcial.
Instale los paquetes NPM requeridos:
npm install
Vuelva a ejecutar los comandos anteriores cuando las dependencias podrían haber cambiado, por ejemplo, después de ver una nueva revisión.
Se deben generar varios archivos antes de usar la interfaz de usuario. Al construir la interfaz de usuario para su inclusión en la extensión, esto se logra utilizando npm run dist
.
Para el uso en el entorno de prueba, ejecute el script build:dev
para generar los diversos paquetes para todos los elementos de la interfaz de usuario.
Más allá de eso, este repositorio contiene varias utilidades en las que confiamos en nuestro proceso de desarrollo.
Usamos Sentry para informar los errores. Para inicializarlo durante la compilación, uno tiene que pasar ADBLOCKPLUS_SENTRY_DSN
y ADBLOCKPLUS_SENTRY_ENVIRONMENT
Variables en el archivo .env
o como la variable de entorno durante la compilación (CI). Si no se inicializa, se muestra la advertencia de consola. Por defecto, ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. Los correos electrónicos de los usuarios se cortan en el lado del cliente y el fregado de datos en el lado del servidor está configurado de forma predeterminada.
Lanzamientos de extensión (desde 3.11)
Lanzamientos de extensión (antes del 3.11)
Este proyecto sigue el típico proceso GitLab: