diff --git a/changedetectionio/tests/test_live_preview.py b/changedetectionio/tests/test_live_preview.py
new file mode 100644
index 00000000..dd6c3d95
--- /dev/null
+++ b/changedetectionio/tests/test_live_preview.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+
+from flask import url_for
+from changedetectionio.tests.util import live_server_setup, wait_for_all_checks, extract_UUID_from_client
+
+
+def set_response():
+
+ data = f"""
+
Awesome, you made it
+yeah the socks request worked
+something to ignore
+something to trigger
+
+
+ """
+
+ with open("test-datastore/endpoint-content.txt", "w") as f:
+ f.write(data)
+
+def test_content_filter_live_preview(client, live_server, measure_memory_usage):
+ live_server_setup(live_server)
+ set_response()
+
+ test_url = url_for('test_endpoint', _external=True)
+
+ res = client.post(
+ url_for("form_quick_watch_add"),
+ data={"url": test_url, "tags": ''},
+ follow_redirects=True
+ )
+ uuid = extract_UUID_from_client(client)
+ res = client.post(
+ url_for("edit_page", uuid=uuid),
+ data={
+ "include_filters": "",
+ "fetch_backend": 'html_requests',
+ "ignore_text": "something to ignore",
+ "trigger_text": "something to trigger",
+ "url": test_url,
+ },
+ follow_redirects=True
+ )
+ assert b"Updated watch." in res.data
+ wait_for_all_checks(client)
+
+ # The endpoint is a POST and accepts the form values to override the watch preview
+ import json
+
+ # DEFAULT OUTPUT WITHOUT ANYTHING UPDATED/CHANGED - SHOULD SEE THE WATCH DEFAULTS
+ res = client.post(
+ url_for("watch_get_preview_rendered", uuid=uuid)
+ )
+ default_return = json.loads(res.data.decode('utf-8'))
+ assert default_return.get('after_filter')
+ assert default_return.get('before_filter')
+ assert default_return.get('ignore_line_numbers') == [3] # "something to ignore" line 3
+ assert default_return.get('trigger_line_numbers') == [4] # "something to trigger" line 4
+
+ # SEND AN UPDATE AND WE SHOULD SEE THE OUTPUT CHANGE SO WE KNOW TO HIGHLIGHT NEW STUFF
+ res = client.post(
+ url_for("watch_get_preview_rendered", uuid=uuid),
+ data={
+ "include_filters": "",
+ "fetch_backend": 'html_requests',
+ "ignore_text": "sOckS", # Also be sure case insensitive works
+ "trigger_text": "AweSOme",
+ "url": test_url,
+ },
+ )
+ reply = json.loads(res.data.decode('utf-8'))
+ assert reply.get('after_filter')
+ assert reply.get('before_filter')
+ assert reply.get('ignore_line_numbers') == [2] # Ignored - "socks" on line 2
+ assert reply.get('trigger_line_numbers') == [1] # Triggers "Awesome" in line 1
+
+ res = client.get(url_for("form_delete", uuid="all"), follow_redirects=True)
+ assert b'Deleted' in res.data