diff --git a/changedetectionio/content_fetchers/base.py b/changedetectionio/content_fetchers/base.py index c764f77e..a482fbdc 100644 --- a/changedetectionio/content_fetchers/base.py +++ b/changedetectionio/content_fetchers/base.py @@ -87,7 +87,7 @@ class Fetcher(): pass @abstractmethod - def quit(self): + def quit(self, watch=None): return @abstractmethod diff --git a/changedetectionio/content_fetchers/requests.py b/changedetectionio/content_fetchers/requests.py index 2519aa95..fe66d869 100644 --- a/changedetectionio/content_fetchers/requests.py +++ b/changedetectionio/content_fetchers/requests.py @@ -96,3 +96,17 @@ class fetcher(Fetcher): self.raw_content = r.content + + def quit(self, watch=None): + + # In case they switched to `requests` fetcher from something else + # Then the screenshot could be old, in any case, it's not used here. + # REMOVE_REQUESTS_OLD_SCREENSHOTS - Mainly used for testing + if strtobool(os.getenv("REMOVE_REQUESTS_OLD_SCREENSHOTS", 'true')): + screenshot = watch.get_screenshot() + if screenshot: + try: + os.unlink(screenshot) + except Exception as e: + logger.warning(f"Failed to unlink screenshot: {screenshot} - {e}") + diff --git a/changedetectionio/content_fetchers/webdriver_selenium.py b/changedetectionio/content_fetchers/webdriver_selenium.py index 1cd2c6e5..71c5df03 100644 --- a/changedetectionio/content_fetchers/webdriver_selenium.py +++ b/changedetectionio/content_fetchers/webdriver_selenium.py @@ -113,7 +113,7 @@ class fetcher(Fetcher): self.quit() return True - def quit(self): + def quit(self, watch=None): if self.driver: try: self.driver.quit() diff --git a/changedetectionio/processors/__init__.py b/changedetectionio/processors/__init__.py index adf08a18..1dd703ba 100644 --- a/changedetectionio/processors/__init__.py +++ b/changedetectionio/processors/__init__.py @@ -159,7 +159,7 @@ class difference_detection_processor(): ) #@todo .quit here could go on close object, so we can run JS if change-detected - self.fetcher.quit() + self.fetcher.quit(watch=self.watch) # After init, call run_changedetection() which will do the actual change-detection diff --git a/changedetectionio/run_basic_tests.sh b/changedetectionio/run_basic_tests.sh index 38bcd603..7e13b766 100755 --- a/changedetectionio/run_basic_tests.sh +++ b/changedetectionio/run_basic_tests.sh @@ -14,7 +14,8 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) find tests/test_*py -type f|while read test_name do echo "TEST RUNNING $test_name" - pytest $test_name + # REMOVE_REQUESTS_OLD_SCREENSHOTS disabled so that we can write a screenshot and send it in test_notifications.py without a real browser + REMOVE_REQUESTS_OLD_SCREENSHOTS=false pytest $test_name done echo "RUNNING WITH BASE_URL SET" @@ -22,7 +23,7 @@ echo "RUNNING WITH BASE_URL SET" # Now re-run some tests with BASE_URL enabled # Re #65 - Ability to include a link back to the installation, in the notification. export BASE_URL="https://really-unique-domain.io" -pytest tests/test_notification.py +REMOVE_REQUESTS_OLD_SCREENSHOTS=false pytest tests/test_notification.py # Re-run with HIDE_REFERER set - could affect login @@ -32,7 +33,7 @@ pytest tests/test_access_control.py # Re-run a few tests that will trigger brotli based storage export SNAPSHOT_BROTLI_COMPRESSION_THRESHOLD=5 pytest tests/test_access_control.py -pytest tests/test_notification.py +REMOVE_REQUESTS_OLD_SCREENSHOTS=false pytest tests/test_notification.py pytest tests/test_backend.py pytest tests/test_rss.py pytest tests/test_unique_lines.py