AdBlock Plus Extensionのリポジトリへようこそ!
メインプロジェクトはGitLabでホストされており、ユーザーインターフェイスとWeb拡張機能コードに加えて、Adblock Plus拡張機能には静的フィルターリスト、EyoのWeb拡張広告ブロッキングツールキット(EWE)、Eyoのスニペットも含まれています。
Adblock Plusは、ユーザーがWebエクスペリエンスをカスタマイズできる無料の拡張機能です。ユーザーは、迷惑な広告をブロックしたり、追跡などを無効にしたりできます。すべての主要なデスクトップブラウザーとモバイルデバイスで利用できます。
Adblock Plusは、GPLV3の下でライセンスされ、その利用規約の対象となるオープンソースプロジェクトです。 Eyo GmbHは、Adblock Plusの親会社です。
このプロジェクトに貢献するには、次のことが必要です。
Node
npm
でインストールされているはずです。そうでない場合は、ここからnpm
をダウンロードできます。
node-gyp
エラー? Apple Silicon(ARM64 CPU)を備えたAppleマシンを使用している場合、 node-gyp
npm install
中にビルドに失敗するエラーが発生する可能性があります。その場合、他のコマンドの前にarch -x86_64 zsh
を実行し、 nvm
を使用してノードバージョンを実行していないことを確認する必要があります。
別の考えられる原因は、 node-gyp
オンラインでバイナリを見つけることができないことです。その後、Python 3.12がインストールされているためにバイナリを局所的に構築しようとし、 node-gyp
の一部のバージョンで動作しないために失敗します。これは、Python 3.11をローカルにインストールすることで解決でき、 pyenv
を使用できます。
重要: Windowsでは、WSLで実行されているLinux環境が必要で、Bash内からコマンドを実行する必要があります。
ヒント:Archlinuxにnode
をインストールしている場合は、 npm
もインストールすることを忘れないでください。
このリポジトリをクローニングした後、フォルダーを開き、 npm install
実行します。
Adblock Plus Elementsの仕様は、EyeoのSPECリポジトリにあります。
これらは、ユーザーがブラウザのUIを介して公開されるため、主に対話するページです。
これらは、特定の機能専用で、UIページからアクセスできるページです。
これらは、UIページでアクセスできないページです。それらは、特定の条件下で拡張によって直接的または間接的に開かれます。
これらは、別のページの一部であるページです。それらは自分で示されることを意図していません。
これらは、拡張機能のバックグラウンドプロセスで他の拡張機能コードと一緒に実行されている拡張ロジックの一部です。
拡張機能全体を構築したくない場合は、ローカルWebサーバーを使用してテスト環境でUIページを開くことができます。これは、 npm start
を実行することで実行できます。これにより、ターミナル(http://127.0.0.1:8080)に示されているURLの下のHTMLページにアクセスできます。
ページのさまざまな側面は、URLにパラメーターを設定することでテストできます(URLパラメーターのリストを参照)。
注:テストするUIページのバンドルを作成する必要があります。
./test/unit
フォルダーにはnpm run $ unit.legacy
を介して実行できるさまざまなMochaユニットテストファイルが含まれています。 .ts
ファイルの場合、 npm run $ unit.standard
を介して実行できるJESTユニットテストがあります。これらはnpm test
で一緒に実行できます。
./test/end-to-end/tests
フォルダーには、さまざまなエンドツーエンドテストが含まれています。これらのテストは、ローカルで実行することができます(最新の安定したクロム、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
)に置き換えることができます。
単一のテストファイルのみを実行する場合は、suites.jsのall
プロパティの値を、実行するテストへのパスのみを含む配列に置き換えることができます。例:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
Allure Reporterは、実行が完了した後に結果を表示するために使用されます。レポートはnpm run test:generate-and-open-report
コマンドを使用して生成および開くことができます。
失敗したテストのスクリーンショットはtest/end-to-end/screenshots
に保存されます
コンプライアンステストは、Adblock Plusとその他のEyo Adblockingソリューションのコンプライアンスを保証するために、テストページのローカルバージョンで実行されます。 AdBlock Plus Extensionのローカルビルドを使用して、TestPagesプロジェクトからテストを実行します。
前提条件:
テストを実行するには:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
オプションの環境変数:
npm run lint
、特定のファイルのみタイプのみを使用できます。
npm run eslint
npm run $ lint.css
npm run $ lint.locale
注: eslint
とstylelint
の両方は、 --fix
フラグを介して問題を修正するのに役立ちます。 npm
をインストールするときに自動的に含める必要があるNPXを介して以下の例を試すことができます。
npx stylelint --fix css/real-file-name.css
このプロジェクトでは、GitLab CIを使用して、ビルドおよびテストジョブを含むパイプラインを実行します。
機能およびリリースブランチ用の毎晩のビルドは、このページのアーティファクトとして見つけることができます。
パイプラインジョブは、Google Cloud Platform(GCP)の自己管理ランナーを使用しています。ランナーのセットアップは、DevOpsランナープロジェクトで定義されており、ランナーのステータスをここで確認できます。 GCLoudコンソールなどのGCPリソースへのアクセスは、DevOpsによっても付与できます。
ルートディレクトリ内の.env.defaults
ファイルを.env
ファイルにコピーし、それに応じて変数に入力します。この手順はスキップでき、CDPデータの送信を有効にする場合にのみ必要です。
拡張機能を構築するには、最初にその依存関係を更新する必要があります。次に、次のようなコマンドを実行できます。
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
または
npm run build:source
ターゲット:
build:dev
: DIST/DEVENV/<TARGEN>/に未梱包の拡張機能を作成します。 Chrome:// Extensions/ in Chromiumベースのブラウザの下に、およびFirefoxでのデバッグの下にロードできます。
build:release
: DIST/リリース/で次の拡張機能ビルドファイルを作成します。
build:source
:レビュー目的で拡張ストアに提供できるDIST/リリース/で次のソースアーカイブファイルを作成します。
--config <*.js file path>
: adblockpluschrome/gulpfile.jsに関連する新しい構成ファイルへのパスを指定します( adblockpluschrome/build/config/の例を参照)。
--manifest-path <*.json file path>
: adblockpluschrome/gulpfile.jsに関連する新しいmanifest.jsonファイルへのパスを指定します( adblockpluschrome/build/tasks/manifest.jsの例を参照)。
--manifest-version 3
または-m 3
: WebExtensions Manifestバージョン3と互換性のあるビルドを生成します。省略すると、マニフェストバージョン2用のビルドが生成されます。
--partial true
:アイコン、ルール、UIを再構築しないビルドを実行します。これは、新しい変更が拡張機能の修正された部分のいずれにも触れない場合に役立ち、より速いビルド時間から利益を得ることができます。部分的なビルドを成功させる前に、完全なビルドを1回実行する必要があることに注意してください。
必要なNPMパッケージをインストールします。
npm install
たとえば、新しい改訂をチェックした後、依存関係が変更された場合に上記のコマンドを再実行します。
UIを使用する前に、さまざまなファイルを生成する必要があります。拡張に含めるためにUIを構築するとき、これはnpm run dist
を使用して達成されます。
テスト環境で使用するには、 build:dev
スクリプトを実行して、すべてのUI要素のさまざまなバンドルを生成します。
それを超えて、このリポジトリには、開発プロセス全体に依存しているさまざまなユーティリティが含まれています。
セントリーを使用してエラーを報告します。ビルド中に初期化するには、 ADBLOCKPLUS_SENTRY_DSN
およびADBLOCKPLUS_SENTRY_ENVIRONMENT
変数を.env
ファイルまたは(CI)ビルド中に環境変数として渡す必要があります。初期化されていない場合、コンソール警告が表示されます。デフォルトでは、 ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
。ユーザーの電子メールはクライアント側でカットされ、サーバー側でスクラブするデータはデフォルトで構成されています。
拡張リリース(3.11以降)
拡張リリース(3.11以前)
このプロジェクトは、典型的なgitlabプロセスに従います。