Добро пожаловать в репозиторий для расширения Adblock Plus!
Основной проект размещен на Gitlab, и, в дополнение к пользовательскому интерфейсу и коду расширения Web, расширение AdBlock Plus также включает в себя статические списки фильтров, инструментарий для блокировки рекламы Eyeo Extension (EWE) и фрагменты Eypo.
Adblock Plus - это бесплатное расширение, которое позволяет пользователям настраивать свой веб -опыт. Пользователи могут блокировать раздражающую рекламу, отключить отслеживание и многое другое. Он доступен для всех основных настольных браузеров и для мобильных устройств.
Adblock Plus является проектом с открытым исходным кодом, лицензированным в соответствии с GPLV3 и подлежит его условиям использования. Eye Gmbh является материнской компанией Adblock Plus.
Чтобы внести свой вклад в этот проект, вам понадобится:
Node
должен быть установлен с npm
. Если это не так, вы можете скачать npm
здесь.
node-gyp
? Если вы используете Apple Machine с Apple Silicon (процессор ARM64), вы можете столкнуться с ошибкой, когда 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 Eyeo.
Это страницы, с которыми пользователи в основном взаимодействуют, потому что они подвергаются им воздействию через пользовательский интерфейс браузера.
Это страницы, которые посвящены определенной функции и могут быть доступны через страницы пользовательского интерфейса.
Это страницы, к которым нельзя получить доступ через страницы пользовательского интерфейса. Они либо прямо, либо косвенно открываются расширением при определенных условиях.
Это страницы, которые являются частью другой страницы. Они не предназначены для того, чтобы показать самостоятельно.
Это части логики расширения, которые работают вместе с другим кодом расширения в фоновом процессе расширения.
Если вы не хотите создавать все расширение, вы можете открыть страницы пользовательского интерфейса в тестовой среде, используя локальный веб -сервер. Это может быть сделано путем запуска npm start
, что позволяет получить доступ к HTML -страницам под URL, показанным в терминале, например, http://127.0.0.1:8080.
Различные аспекты страниц могут быть проверены путем установки параметров в URL (см. Список параметров URL).
Примечание . Вам нужно создать пакеты для страниц (ы) пользовательского интерфейса, которые вы хотите проверить.
Папка ./test/unit
содержит различные файлы модульных тестов мокко, которые можно запустить через npm run $ unit.legacy
. Для файлов .ts
у нас есть Jest Unit Tests, которые можно запустить через 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 npm run test:end-to-end-mv3 all
Вы можете заменить all
тесты на конкретный набор для испытаний ( e2e
, integration
, smoke
).
Если вы хотите выполнить только один тестовый файл, вы можете заменить значение свойства all
в Suites.js на массив, содержащий только путь к тестам, который вы хотите запустить. Пример:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
Allure Reporter используется для отображения результатов после завершения выполнения. Отчет может быть сгенерирован и открыт с использованием npm run test:generate-and-open-report
Команда.
Скриншоты испытаний с неудачами сохраняются для test/end-to-end/screenshots
Тесты по соответствию выполняются на локальной версии тестовых страниц, чтобы обеспечить соответствие между Adblock Plus и другими решениями Adblocking Adblocking Eye. Они запускают тесты из проекта тестовых страниц, используя локальную сборку расширения 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
. Вы можете попробовать пример ниже через NPX, который должен быть автоматически включен при установке npm
.
npx stylelint --fix css/real-file-name.css
Проект использует Gitlab CI для запуска трубопроводов, которые содержат рабочие задания по сборке и тестированию.
Ночные сборки для филиалов и выпуска могут быть найдены в качестве артефактов с этой страницы.
Задачи трубопровода используют самоуправляемых бегунов с Google Cloud Platform (GCP). Настройка бегуна определена в проекте Devops Runner, и статус бегуна можно проверить здесь. Доступ к ресурсам GCP, таким как консоль GCLOUD, также может быть предоставлен DevOps.
Скопируйте файл .env.defaults
в корневом каталоге в файл .env
и соответствующим образом заполните переменные. Этот шаг можно пропустить, и требуется только в том случае, если вы хотите включить отправку данных CDP.
Чтобы создать расширение, вам нужно сначала обновить его зависимости. Затем вы можете запустить следующую команду для типа сборки, которую вы хотите сгенерировать:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
или
npm run build:source
Цели:
build:dev
: создает распаковнутое расширение в Dist/Devenv/<Target>/ . Он может быть загружен в браузерах Chrome: // расширения/ в браузерах на основе хрома и под : отладкой в Firefox.
build:release
: создает следующие файлы сборки расширения в Dist/ Release/ которые могут быть опубликованы в различных магазинах расширения:
build:source
: создает следующий файл архива источника в Dist/ Release/ который может быть предоставлен в магазинах расширения для целей рассмотрения:
--config <*.js file path>
: Укажите путь к новому файлу конфигурации по сравнению с AdBlockpluschrome/Gulpfile.js (см. Примеры в Adblockpluschrome/build/config/ ).
--manifest-path <*.json file path>
: укажите путь к новому файлу manifest.json относительно adblockpluschrome/glpfile.js (см. Примеры в Adblockpluschrome/Build/Tasks/manifest.js ).
--manifest-version 3
или -m 3
: Создайте сборку, совместимую с манифестной версией 3. Если будет опущен, он будет создавать сборку для манифестной версии 2.
--partial true
: запустите сборку, которая не будет перестроить значки, правила и пользовательский интерфейс. Это полезно, если ваши новые изменения не затрагивают ни одну из представленных частей расширения, и вы можете извлечь выгоду из более быстрого времени настройки. Обратите внимание, что вы должны пробежать полную сборку, когда вы сможете успешно запустить частичную сборку.
Установите необходимые пакеты NPM:
npm install
Повторить вышеупомянутые команды, когда зависимости могли измениться, например, после проверки новой пересмотра.
Различные файлы должны быть сгенерированы перед использованием пользовательского интерфейса. При создании пользовательского интерфейса для включения в расширение это достигается с использованием npm run dist
.
Для использования в тестовой среде запустите сценарий build:dev
чтобы создать различные пучки для всех элементов пользовательского интерфейса.
Кроме того, этот репозиторий содержит различные коммунальные услуги, на которые мы полагаемся на нашем процессе разработки.
Мы используем Sentry, чтобы сообщить об ошибках. Чтобы инициализировать его во время сборки, необходимо передать переменные ADBLOCKPLUS_SENTRY_DSN
и ADBLOCKPLUS_SENTRY_ENVIRONMENT
в .env
. Если не инициализировано, отображается предупреждение о консоли. По умолчанию ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. Пользовательские электронные письма вырезаны на стороне клиента, а очистка данных на стороне сервера настроена по умолчанию.
Выбросы расширения (с 3,11)
Выбросы расширения (до 3.11)
Этот проект следует за типичным процессом Gitlab: