Dynamic Content
Timestamps, ads, carousels, avatars, live counters, animated banners - anything that renders differently on every visit will produce a diff on every session, drowning out the changes you actually care about.
The fix is to exclude those elements from the comparison. The ignored region is not compared, so the rest of the page still gets full coverage.
Ignoring elements in the suite
In the suite settings, add entries to the Ignore list using XPath or CSS selectors pointing at the dynamic elements:
//div[@id='live-chat']
//*[@data-testid='ad-slot']
.cookie-banner
Suite-level entries apply to every snapshot. To ignore an element on a single view only, add the override on that snapshot instead of the suite.
Ignoring elements in scriptless captures
The bdy tests capture command takes the same selectors with --ignore (prefixed with CSS= or XPATH=), optionally scoped to a domain:
bashbdy tests capture --sitemap https://example.com/sitemap.xml \ --ignore "CSS=.ad-banner" "XPATH=//div[@id='popup']" "example.com::CSS=.cookie-notice"$$
Ignoring elements in E2E snapshots
When you take snapshots from E2E frameworks (Playwright, Puppeteer, and others), pass cssIgnores or xpathIgnores to takeSnap() to exclude dynamic elements on that snapshot only:
javascriptawait visualTestPlugin.takeSnap(page, "dashboard", { fullPage: true, cssIgnores: [".timestamp", ".live-counter"], xpathIgnores: ["//*[@data-testid='ad-slot']"], });
Use suite-level Ignore for selectors that apply to every snapshot; use cssIgnores / xpathIgnores when only one view has unstable content.
Animations
For animated fragments (auto-playing videos, CSS animations, spinners), you have two options:
- ignore the animated element like any other dynamic content, or
- if the animation settles after load, add a Delay or Wait for selector so the capture happens after it finishes - see Lazy loading
As a last resort, Post page capture JS in the suite settings can disable animations or hide elements programmatically before the comparison.
Last modified on Jul 17, 2026