Bem -vindo ao repositório da extensão Adblock Plus!
O projeto principal é hospedado no GitLab e, além da interface do usuário e do código de extensão da Web, a extensão Adblock Plus também inclui listas de filtros estáticos, o kit de ferramentas de bloqueio de anúncios da Web Extension (EWE) e os trechos da Eyeo.
O Adblock Plus é uma extensão gratuita que permite aos usuários personalizar sua experiência na web. Os usuários podem bloquear anúncios irritantes, desativar o rastreamento e muito mais. Está disponível para todos os principais navegadores da área de trabalho e para dispositivos móveis.
O Adblock Plus é um projeto de código aberto licenciado no GPLV3 e sujeito aos seus Termos de Uso. Eyeo GmbH é a empresa controladora do Adblock Plus.
Para contribuir com este projeto, você precisará:
Node
deve vir instalado com npm
. Caso contrário, você pode baixar npm
aqui.
node-gyp
? Se você estiver usando uma máquina Apple com Apple Silicon (CPU ARM64), poderá encontrar um erro em que node-gyp
não construa durante npm install
. Nesse caso, você precisa executar arch -x86_64 zsh
antes de quaisquer outros comandos e verifique se não está usando nvm
para executar a versão do nó.
Outra causa possível é que node-gyp
não pode encontrar o binário on-line e, em seguida, tenta construir o binário localmente e falha por causa da instalação do Python 3.12, o que não funciona com algumas versões do node-gyp
. Isso pode ser resolvido com a instalação do Python 3.11 localmente, e pyenv
pode ser usado para isso.
IMPORTANTE: No Windows, você precisa de um ambiente Linux em execução no WSL e executar os comandos de dentro do Bash.
Dica : se você estiver instalando node
no Archlinux, lembre -se de instalar npm
também.
Depois de clonar este repositório, abra sua pasta e execute npm install
.
Especificações para o Adblock Plus Elementos podem ser encontrados no repositório de especificações da Eyeo.
São páginas com as quais os usuários interagem principalmente porque são expostos a eles através da interface do usuário do navegador.
Essas são páginas dedicadas a um recurso específico e podem ser acessadas via páginas da interface do usuário.
São páginas que não podem ser acessadas via páginas da interface do usuário. Eles são abertos direta ou indiretamente pela extensão sob certas condições.
Estas são páginas que fazem parte de outra página. Eles não devem ser mostrados por conta própria.
Essas são partes da lógica de extensão que estão sendo executadas ao lado do outro código de extensão no processo de fundo da extensão.
Se você não deseja criar toda a extensão, pode abrir as páginas da interface do usuário em um ambiente de teste usando um servidor da Web local. Isso pode ser feito executando npm start
, que permite acessar as páginas HTML no URL mostrado no terminal, por exemplo, http://127.0.0.1:8080.
Vários aspectos das páginas podem ser testados definindo parâmetros no URL (consulte a lista de parâmetros de URL).
NOTA : Você precisa criar os pacotes para as páginas da interface do usuário que deseja testar.
A pasta ./test/unit
contém vários arquivos de testes de unidade Mocha que podem ser executados via npm run $ unit.legacy
. Para arquivos .ts
, temos testes de unidade de brincadeira que podem ser executados via npm run $ unit.standard
. Eles podem ser executados juntos via npm test
.
A pasta ./test/end-to-end/tests
contém vários testes de ponta ao final. Esses testes podem ser executados localmente (no mais recente navegador estável, Firefox e Edge) ou podem ser executados usando o Lambdatest.
Para executar os testes de ponta a ponta localmente:
Exemplo:
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 executar os testes de ponta a ponta usando Lambdatest:
npm run test:end-to-end all
ou npm run test:end-to-end-mv3 all
. Você pode substituir all
os testes por um conjunto de testes específico ( e2e
, integration
, smoke
).
Se você deseja executar apenas um único arquivo de teste, poderá substituir o valor de all
a propriedade no Suites.js por uma matriz que contém apenas o caminho para os testes que deseja executar. Exemplo:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
O Allure Reporter é usado para exibir os resultados após a conclusão da execução. O relatório pode ser gerado e aberto usando o comando npm run test:generate-and-open-report
.
Capturas de tela dos testes de falha são salvas para test/end-to-end/screenshots
Os testes de conformidade são executados em uma versão local do TestPages para garantir a conformidade entre o Adblock Plus e outras soluções de bloqueio de anúncios. Eles executam os testes no projeto TestPages usando uma construção local da extensão Adblock Plus.
Pré -requisitos:
Para executar os testes:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
Variáveis de ambiente opcionais:
Você pode fins todos os arquivos via npm run lint
ou fiapos apenas tipos de arquivos específicos:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
Nota : eslint
e stylelint
podem ajudar a corrigir os problemas via --fix
Flag. Você pode experimentar o exemplo abaixo via NPX, que deve ser incluído automaticamente ao instalar npm
.
npx stylelint --fix css/real-file-name.css
O projeto usa o GitLab CI para executar pipelines que contêm trabalhos de construção e teste.
As compilações noturnas para ramificações de recursos e liberações podem ser encontradas como artefatos a partir desta página.
Os trabalhos de pipeline usam corredores auto-gerenciados da plataforma do Google Cloud (GCP). A configuração do corredor é definida no projeto DevOps Runner, e o status do corredor pode ser verificado aqui. O acesso a recursos do GCP como o console do Gcloud também pode ser concedido pelo DevOps.
Copie o arquivo .env.defaults
no diretório raiz para um arquivo .env
e preencha as variáveis de acordo. Esta etapa pode ser ignorada e só é necessária se você deseja ativar o envio de dados do CDP.
Para criar a extensão, você precisa primeiro atualizar suas dependências. Você pode executar o seguinte comando para o tipo de compilação que deseja gerar:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
ou
npm run build:source
Alvos:
build:dev
: cria extensão descompactada em dist/devenv/<get>/ . Ele pode ser carregado em Chrome: // Extensões/ nos navegadores à base de cromo e sob : Depuração no Firefox.
build:release
: Cria os seguintes arquivos de construção de extensão no Dist/ Release/ que podem ser publicados nas várias lojas de extensão:
build:source
: cria o seguinte arquivo de arquivo de origem no dist/ liberação/ que pode ser fornecido para lojas de extensão para fins de revisão:
--config <*.js file path>
: Especifique um caminho para um novo arquivo de configuração em relação a adblockpluschrome/gulpfile.js (consulte Exemplos no adblockpluschrome/build/config/ ).
--manifest-path <*.json file path>
: Especifique um caminho para um novo arquivo manifest.json em relação a adblockpluschrome/gulpfile.js (consulte exemplos em adblockpluschrome/build/tasks/manifest.js ).
--manifest-version 3
ou -m 3
: Gere uma compilação compatível com o manifesto da WebExtensões, versão 3. Se omitido, gerará uma construção para a versão 2 do manifesto.
--partial true
: Execute uma compilação que não reconstruirá os ícones, as regras e a interface do usuário. Isso é útil se suas novas alterações não tocarem em nenhuma das partes da extensão da extensão e você poderá se beneficiar do tempo de construção mais rápido. Observe que você deve ter uma construção completa uma vez antes de poder executar uma construção parcial com sucesso.
Instale os pacotes NPM necessários:
npm install
Executar novamente os comandos acima quando as dependências puderam ter mudado, por exemplo, depois de verificar uma nova revisão.
Vários arquivos precisam ser gerados antes de usar a interface do usuário. Ao construir a interface do usuário para inclusão na extensão, isso é alcançado usando npm run dist
.
Para uso no ambiente de teste, execute o script build:dev
para gerar os vários pacotes para todos os elementos da interface do usuário.
Além disso, esse repositório contém vários utilitários em que confiamos em nosso processo de desenvolvimento.
Usamos o Sentry para relatar os erros. Para inicializá -lo durante a compilação, é preciso passar ADBLOCKPLUS_SENTRY_DSN
e ADBLOCKPLUS_SENTRY_ENVIRONMENT
variáveis no arquivo .env
ou como variável de ambiente durante a construção (CI). Se não for inicializado, o aviso do console é mostrado. Por padrão, ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. Os e -mails do usuário são cortados no lado do cliente e a lavagem de dados no lado do servidor é configurada por padrão.
Lançamentos de extensão (desde 3.11)
Lançamentos de extensão (antes de 3.11)
Este projeto segue o processo típico do GitLab: