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 alllambdatestを使用してエンドツーエンドテストを実行するには:
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 eslintnpm run $ lint.cssnpm 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プロセスに従います。