From 345e9ed503ba4978457b6f80829c4d84dee0dfe4 Mon Sep 17 00:00:00 2001 From: Raffael Meyer <14891507+barredterra@users.noreply.github.com> Date: Fri, 16 Jan 2026 00:33:25 +0100 Subject: [PATCH] feat(version): add HTML diff view for multiline field changes (#35837) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- frappe/core/doctype/version/test_version.py | 129 +++++++++++++++++- frappe/core/doctype/version/version.js | 31 +++-- frappe/core/doctype/version/version.py | 53 +++++++ frappe/core/doctype/version/version_view.html | 63 +++++++++ frappe/public/scss/common/css_variables.scss | 5 +- frappe/public/scss/desk/dark.scss | 1 + 6 files changed, 268 insertions(+), 14 deletions(-) diff --git a/frappe/core/doctype/version/test_version.py b/frappe/core/doctype/version/test_version.py index b99dc6f046..e7f8829ef6 100644 --- a/frappe/core/doctype/version/test_version.py +++ b/frappe/core/doctype/version/test_version.py @@ -3,12 +3,137 @@ import copy import frappe -from frappe.core.doctype.version.version import get_diff -from frappe.tests import IntegrationTestCase +from frappe.core.doctype.version.version import ( + _as_string, + _generate_html_diff, + _should_generate_html_diff, + get_diff, +) +from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.tests.utils import make_test_objects +class TestHTMLDiff(UnitTestCase): + def test_generate_html_diff_produces_table(self): + """Test HTML diff generates a table with content.""" + result = _generate_html_diff("line1\nline2", "line1\nmodified") + + self.assertIsNotNone(result) + self.assertIn("
| {{ frappe.meta.get_label(doc.ref_doctype, item[0]) }} | {{ getEscapedValue(item[1]) }} | {{ getEscapedValue(item[2]) }} |