Cypress can capture screenshots of an Angular app, but cy.screenshot() does not compare them with an approved baseline. To catch unintended visual changes, drive the app into a repeatable state, capture it with Cypress, and add a visual-testing plugin or hosted service to compare the result and review differences.
What visual testing catches—and what Cypress does not do by itself
A functional test can confirm that a todo item has a completed class without confirming that its text is visibly struck through. A visual comparison checks the rendered result against an approved image baseline, exposing issues such as unexpected layout shifts, colors, fonts, icons, SVG or canvas rendering, and overlapping elements that individual CSS assertions may miss. Cypress’s visual-testing guide describes this distinction.
Cypress provides cy.screenshot() and can automatically save screenshots when tests fail under cypress run. Those features capture images; they do not perform baseline comparison. For visual regression checks, add a comparison plugin or a visual-testing service. The selected tool determines the comparison command, baseline storage, and approval workflow. Cypress’s screenshot and video guide documents screenshot capture.
Choose local baselines or a hosted review workflow
The main decision is whether your team wants to own baseline images and rendering consistency, or use a service to manage comparisons and review. Cypress describes open-source plugins as free and hosted services as subscription-based; check each provider’s current terms and plans before adopting it.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
| Decision | Local/open-source plugin | Hosted service |
|---|---|---|
| Cost | Cypress describes open-source plugins as free. | Paid subscription model; consult the provider for current plans. |
| Baselines | Typically image files stored with code and managed by the team. | Typically managed by the service. |
| Review | Team reviews local or CI diff artifacts. | Web dashboards and pull-request integrations are common. |
| Browser and viewport coverage | Usually one configured environment per run. | Services may render across browsers and viewport widths. |
| Rendering consistency | Team maintains consistency, for example with a pinned browser and shared Docker image. | Service infrastructure can provide a managed rendering environment. |
| Data and control | Baseline files and comparisons remain in the team’s infrastructure. | Check what snapshots or DOM data the provider uploads and review its current data terms; this comparison is not established by the Cypress guide. |
Cypress lists maintained local options including Cypress Image Diff, Cypress Image Snapshot, Cypress Visual Regression, and Visual Regression Diff. It also presents Pixeleye as a self-hostable review platform with a Cypress integration. Plugin compatibility changes, so check the current project and Cypress plugin directory before choosing a package.
The official Cypress guide names hosted integrations including Applitools Eyes, Argos, Chromatic, Happo, LambdaTest SmartUI, Percy, Sauce Labs Visual, SmartBear VisualTest, and Wopee.io. Providers differ in capabilities; the guide describes options such as AI-assisted comparison, component snapshots, cross-browser rendering, region masking, DOM capture, dashboards, and approval workflows. Verify current features and pricing on the provider’s own documentation.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Before selecting a tool, decide who owns baseline approval, which browsers and viewport widths matter, how CI will present diffs, and what snapshot data may leave your infrastructure. No one comparison model fits every team.
Set up an Angular component for a stable visual check
Component testing can limit a visual check to one controlled piece of UI instead of navigating through the whole application. Cypress’s Angular harness renders a component in the browser through cy.mount(). Give it fixed inputs and dependencies, assert that it rendered, then call the screenshot comparison command provided by your chosen plugin or service.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
As currently documented, Cypress’s Angular component-testing harness supports Angular ^21.0.0 and ^22.0.0. It requires @angular-devkit/build-angular, including for projects built with @angular/build. From Cypress 16.0.0, cypress/angular supports zoneless testing without extra configuration; the documentation says zoneless is the default in Angular 21 and 22. These version details can change: confirm compatibility in the Angular component testing documentation for your installed versions.
The following illustrates the shape of a test, not a plugin-specific snapshot command. Adapt the component imports, providers, and fixture data to your app, and replace the marked line with the comparison API documented by your selected tool.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
import { TodoItemComponent } from './todo-item.component';
describe('TodoItemComponent visual state', () => {
it('renders a completed todo consistently', () => {
cy.mount(TodoItemComponent, {
componentProperties: {
todo: { id: 1, title: 'Review release notes', completed: true },
},
});
cy.get('[data-cy="todo-item"]')
.should('be.visible')
.and('have.class', 'completed');
// Replace with the chosen plugin/service comparison command.
// Example shape only: cy.visualSnapshot('completed-todo');
});
});
For an end-to-end visual check, use the same principle: navigate to a meaningful app state with Cypress commands, wait for its expected content, capture it, and compare it to an approved baseline. When a change is intentional, review the diff and approve the new appearance as the future baseline.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Make snapshots repeatable
Visual comparisons are useful only when differences indicate a product change rather than noise from data or rendering. Cypress’s guidance is direct: “Take a snapshot only after you confirm the page is done changing.” It also recommends generating and comparing screenshots in the same environment with a fixed viewport. See the Cypress visual-testing guide.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
- Wait for the intended state. Assert that expected content has appeared before capturing. Avoid capturing during rendering, data loading, or animation. Cypress notes that action-command animation settings do not guarantee unrelated animations elsewhere on the page have finished.
- Fix the rendering environment. Use the same environment to create and compare local baselines. Set a fixed viewport and pin browser versions where practical. Operating system, browser version, display scaling, and fonts can all create pixel differences unrelated to your code.
- Control time and data. Use
cy.clock()for date- or countdown-dependent content. Use fixtures andcy.intercept()to make API responses repeatable. - Mask narrowly. For ads, animated media, or other third-party content you cannot control, mask a small region if the selected tool supports it. Avoid raising a whole-page comparison threshold to hide one unstable area.
- Choose the right capture scope. Prefer element-level comparisons when they make ownership and review clearer; use full-page snapshots when page-level layout is the behavior under test. Capture meaningful states rather than adding a snapshot to every test.
- Keep checks complementary. Use visual checks alongside functional tests and accessibility checks, not in place of either.
Or skip the browser setup
For a screenshot capture without installing browser automation, ScreenshotNeo provides a one-request API. This captures an image; it does not replace the baseline-comparison and approval workflow described above. See the ScreenshotNeo API documentation for parameters and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://angular.dev -o shot.webp
ScreenshotNeo accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be disabled. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for AI agents. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to try 1,000 screenshots a month with no card.
Common setup problems
- The test passes but no visual regressions are reported. Cypress’s built-in screenshot command only captures an image. Add a plugin or service that compares against a baseline, and use its documented comparison command.
- The baseline changes on every run. Check for late-loading content, uncontrolled API responses, current-time text, animation, changing third-party media, or differences in browser, OS, fonts, viewport, and display scale. Control the source of variation or mask a small region.
- The capture happens too early. Wait for a stable application state and assert on the relevant content before snapshotting. A fixed delay alone may be unreliable when response times vary.
- Angular component mounting fails. Verify the Angular and Cypress versions against the current harness documentation and confirm that
@angular-devkit/build-angularis installed, including when using@angular/build. - Many unrelated pixels differ in CI. Compare in the same rendering environment used to create the baseline; pin the browser and viewport, and align fonts and display settings where practical.
- A visual check is being used to claim accessibility compliance. Image comparison can reveal appearance changes, but it is not an accessibility audit. Use accessibility checks for criteria such as text contrast against defined standards.
Visual regression is not an accessibility audit
A baseline diff tells you whether the rendered appearance changed; it does not establish that the new or existing interface meets accessibility criteria. For example, a screenshot comparison is not a substitute for checking text contrast against defined standards. Keep accessibility testing as a separate part of the test strategy.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

