RSS-Bridge / rss-bridge

The RSS feed for websites missing it
https://rss-bridge.org/bridge01/
The Unlicense
7.25k stars 1.03k forks source link

Automatic testing and enabling of working bridges #2377

Closed f0086 closed 1 year ago

f0086 commented 2 years ago

Because of the nature of the project, bridges will break for various reasons. Sites change, rate limits set in place, IPs get blocked, paywalls appear, HTML change slightly and so on. The issue tracker is full of broken bridges and IMHO the most important problem here. Wait for a user (Exceptions::buildPage()) is IMHO not the best option. Currently, the user is requested to open a Github issue, wait until @em92 will ping the author and wait until the author fixes the bug, then wait until the PR is merged and the updated image is pushed to Docker Hub.

I have a suggestion to improve that:

Automated tests for all bridges The easiest way to check if a bridge is working properly, is to check if getItems() results in no error and contain at least one element with attributes. If the bridge needs parameters, the example parameter can be used for the test. For better checks, the crawling page itself can be checked, if the needed elements exists. Most bridges use HTML selectors (->find()) for grab the content from the HTML page. This selectors can be used for automated checks.

Generate a list of "broken" bridges This automated tests can be executed in a regular interval and the result (a list of broken bridges) can be placed on a public place, so the instances can grab them and automatically disable that bridges. If we provide the Github username or an email of the authors of the bridges in the bridge itself, the author can be notified automatically. The inverse of that list can be used to generate the whitelist.default.txt file, which also increase the first impression after installing RSSBridge.

I think this will boost the overall user experience of RSSBridge, reduce the amount of issues in the issue tracker and speed up the interaction with the authors of the bridges.

dvikan commented 2 years ago

Relevant discussion here: https://github.com/RSS-Bridge/rss-bridge/pull/2288