<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Visual Diffing</title><link>https://sourceforge.net/p/lastest/wiki/Visual%2520Diffing/</link><description>Recent changes to Visual Diffing</description><atom:link href="https://sourceforge.net/p/lastest/wiki/Visual%20Diffing/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 06 May 2026 09:06:54 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/lastest/wiki/Visual%20Diffing/feed" rel="self" type="application/rss+xml"/><item><title>Visual Diffing modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Visual%2520Diffing/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -66,13 +66,22 @@

 ---

-## Ignore Regions
+## Ignore Regions (per-step)

 Mask dynamic areas from comparison:

 - Draw ignore regions directly on the screenshot
-- Regions are excluded from diff calculation
+- Regions are now scoped **per step** (per-screenshot), not per-test -- a region you draw on the "Dashboard" screenshot won't bleed into the "Settings" screenshot of the same test
+- Excluded from diff calculation
 - Useful for timestamps, ads, counters, avatars, etc.
 - Configurable mask styles: solid-color or placeholder-text
+
+&amp;gt; Migration note: existing per-test ignore regions are migrated to a `step_label` of `null` (apply-to-all). New regions are bound to the screenshot they were drawn on.
+
+---
+
+## DOM-Based Diff Fallback
+
+When the pixel diff is inconclusive (e.g. very small differences clustered around inserted/removed nodes), Lastest can run a structural DOM diff in addition to the pixel comparison. The DOM diff is computed from the captured DOM snapshot at screenshot time and surfaces the affected node tree alongside the visual diff. Toggle in **Settings &amp;gt; Diff Sensitivity**.

 ---

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:54 -0000</pubDate><guid>https://sourceforge.nete18110e260357f8ffe90bdac4976135a961fa5a0</guid></item><item><title>Visual Diffing modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Visual%2520Diffing/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,6 +1,6 @@
 # Visual Diffing

-Lastest2 offers three comparison engines and extensive configuration for reducing false positives.
+Lastest offers three comparison engines and extensive configuration for reducing false positives.

 ---

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:52 -0000</pubDate><guid>https://sourceforge.net9e62c015590957430b7d85a41046b2907832ec8a</guid></item><item><title>Visual Diffing modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Visual%2520Diffing/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-visual-diffing"&gt;Visual Diffing&lt;/h1&gt;
&lt;p&gt;Lastest2 offers three comparison engines and extensive configuration for reducing false positives.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-diff-engines"&gt;Diff Engines&lt;/h2&gt;
&lt;h3 id="h-pixelmatch-default"&gt;pixelmatch (default)&lt;/h3&gt;
&lt;p&gt;Pixel-perfect comparison. Fast and deterministic. Best for most use cases.&lt;/p&gt;
&lt;h3 id="h-ssim-structural-similarity-index"&gt;SSIM (Structural Similarity Index)&lt;/h3&gt;
&lt;p&gt;Measures structural similarity between images. More tolerant of minor rendering differences while catching meaningful layout changes.&lt;/p&gt;
&lt;h3 id="h-butteraugli"&gt;Butteraugli&lt;/h3&gt;
&lt;p&gt;Human-perception-aligned comparison. Models how the human visual system perceives differences. Best for catching changes that users would actually notice.&lt;/p&gt;
&lt;p&gt;Configure the default engine in &lt;strong&gt;Settings &amp;gt; Diff Sensitivity&lt;/strong&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-text-region-aware-diffing"&gt;Text-Region-Aware Diffing&lt;/h2&gt;
&lt;p&gt;OCR-based two-pass comparison with separate thresholds for text vs non-text regions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;First pass&lt;/strong&gt;: OCR detects text regions in the screenshot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Second pass&lt;/strong&gt;: Text regions are compared with a more tolerant threshold (cross-OS font rendering varies)&lt;/li&gt;
&lt;li&gt;Non-text regions use the standard threshold&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This dramatically reduces false positives from dynamic text and font rendering differences across operating systems.&lt;/p&gt;
&lt;p&gt;Enable in &lt;strong&gt;Settings &amp;gt; Diff Sensitivity&lt;/strong&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-diff-sensitivity-configuration"&gt;Diff Sensitivity Configuration&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Diff engine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;pixelmatch, SSIM, or Butteraugli&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Text-region-aware&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enable OCR-based two-pass comparison&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pixel threshold&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Number of different pixels to trigger a change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Percentage threshold&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Percentage of different pixels to trigger a change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Classification&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unchanged / Flaky / Changed thresholds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr/&gt;
&lt;h2 id="h-diff-classifications"&gt;Diff Classifications&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Classification&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unchanged&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No meaningful difference detected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flaky&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minor differences within the flaky threshold (likely noise)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Changed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Meaningful visual difference that needs review&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr/&gt;
&lt;h2 id="h-ai-diff-analysis"&gt;AI Diff Analysis&lt;/h2&gt;
&lt;p&gt;When configured, AI can automatically classify visual diffs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Insignificant&lt;/strong&gt; -- rendering noise, minor font differences&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meaningful&lt;/strong&gt; -- actual UI changes that need review&lt;/li&gt;
&lt;li&gt;With confidence scores and change category labels&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Configure a separate AI provider for diff analysis in &lt;a href="./Settings%20&amp;gt;%20AI"&gt;AI Configuration&lt;/a&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-ignore-regions"&gt;Ignore Regions&lt;/h2&gt;
&lt;p&gt;Mask dynamic areas from comparison:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Draw ignore regions directly on the screenshot&lt;/li&gt;
&lt;li&gt;Regions are excluded from diff calculation&lt;/li&gt;
&lt;li&gt;Useful for timestamps, ads, counters, avatars, etc.&lt;/li&gt;
&lt;li&gt;Configurable mask styles: solid-color or placeholder-text&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-planned-screenshots"&gt;Planned Screenshots&lt;/h2&gt;
&lt;p&gt;Compare test results against design files:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upload a design file (Figma export, PNG, etc.)&lt;/li&gt;
&lt;li&gt;Run the test&lt;/li&gt;
&lt;li&gt;See a separate planned vs actual diff alongside the baseline diff&lt;/li&gt;
&lt;/ol&gt;
&lt;hr/&gt;
&lt;h2 id="h-page-shift-detection"&gt;Page Shift Detection&lt;/h2&gt;
&lt;p&gt;Detect vertical content shifts (inserted/deleted rows):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fuzzy row matching identifies shifted content&lt;/li&gt;
&lt;li&gt;Distinguishes between actual changes and simple insertions/deletions&lt;/li&gt;
&lt;li&gt;Avoids flagging every pixel below an inserted row as "changed"&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-diff-engine-benchmarks"&gt;Diff Engine Benchmarks&lt;/h2&gt;
&lt;p&gt;Built-in benchmark framework to compare all three engines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Synthetic test scenarios with known differences&lt;/li&gt;
&lt;li&gt;Timing and accuracy metrics&lt;/li&gt;
&lt;li&gt;Helps you choose the best engine for your use case&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:51 -0000</pubDate><guid>https://sourceforge.net7f7dc78ef4b9e21fcdb6cff03890aaff606a324a</guid></item></channel></rss>