Selamat datang di repositori untuk ekstensi AdBlock Plus!
Proyek utama di -host di GitLab dan, di samping antarmuka pengguna dan kode ekstensi web, ekstensi AdBlock Plus juga mencakup daftar filter statis, Eyeo's Web Extension Ad Blocking Toolkit (EWE) dan cuplikan EYEO.
AdBlock Plus adalah ekstensi gratis yang memungkinkan pengguna untuk menyesuaikan pengalaman web mereka. Pengguna dapat memblokir iklan yang mengganggu, menonaktifkan pelacakan dan banyak lagi. Ini tersedia untuk semua browser desktop utama dan untuk perangkat seluler.
Adblock Plus adalah proyek open source yang dilisensikan di bawah GPLV3 dan tunduk pada ketentuan penggunaannya. EYEO GMBH adalah perusahaan induk Adblock Plus.
Untuk berkontribusi pada proyek ini, Anda akan membutuhkan:
Node
harus dipasang dengan npm
. Jika tidak, Anda dapat mengunduh npm
di sini.
node-gyp
? Jika Anda menggunakan mesin Apple dengan Apple Silicon (ARM64 CPU), Anda mungkin mengalami kesalahan di mana node-gyp
gagal membangun selama npm install
. Dalam hal ini Anda perlu menjalankan arch -x86_64 zsh
sebelum perintah lain, dan pastikan Anda tidak menggunakan nvm
untuk menjalankan versi node.
Penyebab lain yang mungkin adalah bahwa node-gyp
tidak dapat menemukan biner online, kemudian mencoba membangun biner secara lokal dan gagal karena Python 3.12 yang dipasang, yang tidak berfungsi dengan beberapa versi node-gyp
. Itu bisa diselesaikan dengan memasang Python 3.11 secara lokal, dan pyenv
dapat digunakan untuk itu.
Penting: Di Windows, Anda memerlukan lingkungan Linux yang berjalan di WSL dan menjalankan perintah dari dalam bash.
Kiat : Jika Anda menginstal node
di Archlinux, harap ingat untuk menginstal npm
juga.
Setelah mengkloning repositori ini, buka foldernya dan jalankan npm install
.
Spesifikasi untuk Adblock Plus Elements dapat ditemukan di repositori spesifikasi EYEO.
Ini adalah halaman yang terutama berinteraksi dengan pengguna karena mereka terpapar melalui UI browser.
Ini adalah halaman yang didedikasikan untuk fitur tertentu dan dapat diakses melalui halaman UI.
Ini adalah halaman yang tidak dapat diakses melalui halaman UI. Mereka secara langsung atau tidak langsung dibuka oleh ekstensi dalam kondisi tertentu.
Ini adalah halaman yang merupakan bagian dari halaman lain. Mereka tidak dimaksudkan untuk ditampilkan sendiri.
Ini adalah bagian dari logika ekstensi yang berjalan bersama kode ekstensi lainnya dalam proses latar belakang ekstensi.
Jika Anda tidak ingin membangun seluruh ekstensi, Anda dapat membuka halaman UI di lingkungan pengujian menggunakan server web lokal. Ini dapat dilakukan dengan menjalankan npm start
, yang memungkinkan Anda untuk mengakses halaman HTML di bawah URL yang ditunjukkan di terminal, misalnya http://127.0.0.1:8080.
Berbagai aspek halaman dapat diuji dengan mengatur parameter dalam URL (lihat daftar parameter URL).
Catatan : Anda perlu membuat bundel untuk halaman UI yang ingin Anda uji.
Folder ./test/unit
berisi berbagai file uji unit mocha yang dapat dijalankan melalui npm run $ unit.legacy
. Untuk file .ts
kami memiliki tes unit jest yang dapat dijalankan melalui npm run $ unit.standard
. Itu dapat dijalankan bersama melalui npm test
.
Folder ./test/end-to-end/tests
berisi berbagai tes end-to-end. Tes ini dapat dieksekusi secara lokal, (dalam browser krom stabil, Firefox, dan Edge terbaru) atau mereka dapat dieksekusi menggunakan Lambdatest.
Untuk menjalankan tes ujung ke ujung secara lokal:
Contoh:
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
Untuk menjalankan tes ujung ke ujung menggunakan lambdatest:
npm run test:end-to-end all
atau npm run test:end-to-end-mv3 all
. Anda dapat mengganti all
tes dengan suite tes tertentu ( e2e
, integration
, smoke
).
Jika Anda hanya ingin menjalankan satu file uji, Anda dapat mengganti nilai all
properti di suite.js ke array yang hanya berisi jalur ke pengujian yang ingin Anda jalankan. Contoh:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
Allure Reporter digunakan untuk menampilkan hasil setelah eksekusi selesai. Laporan ini dapat dihasilkan dan dibuka dengan menggunakan npm run test:generate-and-open-report
.
Tangkapan layar dari tes yang gagal disimpan untuk test/end-to-end/screenshots
Tes kepatuhan dijalankan pada versi lokal testpages untuk memastikan kepatuhan antara AdBlock Plus dan solusi adblocking eyeo lainnya. Mereka menjalankan tes dari proyek TestPages menggunakan build lokal dari Adblock Plus Extension.
Prasyarat:
Untuk menjalankan tes:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
Variabel lingkungan opsional:
Anda dapat memasukkan semua file melalui npm run lint
atau hanya tipe file tertentu:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
CATATAN : Baik eslint
dan stylelint
dapat membantu memperbaiki masalah melalui --fix
Flag. Anda dapat mencoba contoh di bawah ini melalui NPX yang harus disertakan secara otomatis ketika Anda menginstal npm
.
npx stylelint --fix css/real-file-name.css
Proyek ini menggunakan Gitlab CI untuk menjalankan jaringan pipa yang berisi pekerjaan build dan uji.
Bangunan malam untuk cabang fitur dan rilis dapat ditemukan sebagai artefak dari halaman ini.
Pekerjaan pipa menggunakan pelari yang dikelola sendiri dari Google Cloud Platform (GCP). Pengaturan pelari didefinisikan dalam proyek DevOps Runner, dan status pelari dapat diperiksa di sini. Akses ke sumber daya GCP seperti konsol GCloud dapat diberikan oleh DevOps juga.
Salin file .env.defaults
di direktori root ke file .env
dan isi variabel yang sesuai. Langkah ini dapat dilewati, dan hanya diperlukan jika Anda ingin mengaktifkan pengiriman data CDP.
Untuk membangun ekstensi, Anda perlu memperbarui ketergantungannya terlebih dahulu. Anda kemudian dapat menjalankan perintah berikut untuk jenis build yang ingin Anda hasilkan:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
atau
npm run build:source
Target:
build:dev
: Membuat ekstensi yang tidak dikemas di Dist/Devenv/<Target>/ . Ini dapat dimuat di bawah chrome: // ekstensi/ di browser berbasis kromium, dan di bawah sekitar: debugging di firefox.
build:release
: Membuat File Bangun Ekstensi berikut di Dist/ Release/ yang dapat dipublikasikan ke berbagai toko ekstensi:
build:source
: Membuat file arsip sumber berikut di Dist/ Release/ yang dapat diberikan ke toko ekstensi untuk tujuan ulasan:
--config <*.js file path>
: Tentukan jalur ke file konfigurasi baru relatif terhadap adblockpluschrome/gulpfile.js (lihat contoh di adblockpluschrome/build/config/ ).
--manifest-path <*.json file path>
: Menentukan jalur ke file manifest.json baru relatif terhadap adblockpluschrome/gulpfile.js (lihat contoh dalam adblockpluschrome/build/tugas/manifest.js ).
--manifest-version 3
atau -m 3
: Hasilkan build yang kompatibel dengan WebExtensions Manifes Versi 3. Jika dihilangkan, itu akan menghasilkan build for manifest versi 2.
--partial true
: Jalankan build yang tidak akan membangun kembali ikon, aturan dan UI. Ini berguna jika perubahan baru Anda tidak menyentuh bagian ekstensi yang disebutkan di atas, dan Anda dapat memperoleh manfaat dari waktu pembangunan yang lebih cepat. Perhatikan bahwa Anda harus menjalankan build penuh sekali sebelum Anda dapat dengan berhasil menjalankan sebagian build.
Instal paket NPM yang diperlukan:
npm install
Rerun perintah di atas ketika dependensi mungkin telah berubah, misalnya setelah memeriksa revisi baru.
Berbagai file perlu dihasilkan sebelum menggunakan UI. Saat membangun UI untuk dimasukkan dalam ekstensi, ini dicapai dengan menggunakan npm run dist
.
Untuk penggunaan di lingkungan pengujian, jalankan skrip build:dev
untuk menghasilkan berbagai bundel untuk semua elemen UI.
Di luar itu, repositori ini berisi berbagai utilitas yang kami andalkan di seluruh proses pengembangan kami.
Kami menggunakan Sentry untuk melaporkan kesalahan. Untuk menginisialisasi selama build, seseorang harus lulus ADBLOCKPLUS_SENTRY_DSN
dan ADBLOCKPLUS_SENTRY_ENVIRONMENT
variabel dalam file .env
atau sebagai variabel lingkungan selama build (CI). Jika tidak diinisialisasi, peringatan konsol ditampilkan. Secara default ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. Email pengguna dipotong di sisi klien dan penggosok data di sisi server dikonfigurasi secara default.
Pelepasan ekstensi (sejak 3.11)
Pelepasan ekstensi (sebelum 3.11)
Proyek ini mengikuti proses gitlab yang khas: