How to contribute
- Fork the repo and create a feature branch.
- Make your changes. For site integrations, follow the adding a site integration guide on the wiki.
- Run the tests (Playwright / Jest) and verify your changes manually.
- Commit, push to your fork, and open a pull request.
Important: target the staging branch with your pull request, not master. Version bumps, changelog entries and packaging are handled on staging before each release.
Adding a site integration
Integrations are built on a declarative DefaultEngine(config) pattern: you describe which URLs the engine applies to, where in the page the icon should be inserted, and how to extract the search term. A minimal engine is a few dozen lines. A new integration touches:
- A new engine file in
src/content/engines/integrations/ - Both browser manifests (content script list, matches, host permissions)
- The integrations list in
src/content/js/core.js - A site logo in
src/content/assets/images/integrations/ - Ideally, a Playwright spec in
tests/playwright/site.integrations.tests/
The full walkthrough — engine anatomy, SPA support, dynamic routing, layout tips and the PR checklist — lives on the wiki, which is the canonical contributor reference:
Read the integration guide on the wiki →
Testing
Playwright integration tests run against the real third-party sites with the built extension loaded:
npm i
grunt playwright
cd tests/playwright
npm i
npx playwright install --with-deps chromium
npx playwright test
Jest unit tests are minimal but quick:
npm i
npm run test
For manual debugging, enable Debug mode in the extension settings and watch the console for [ServarrExt …] logs. Details on the testing wiki page.
Issues & feature requests
- Report a bug — include the URL, browser, and console logs with debug enabled.
- Suggest a feature — new site integrations especially welcome.
Thanks
Big thanks to everyone who has contributed integrations, bug fixes and ideas — you're the signal boosters on the home page. Your work helps the whole community enjoy smoother Servarr searches.