Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

In Cypress, branch on page state only when that state is stable and reliably known. A one-time check of a DOM that is still changing can send the test down the wrong path; adding a fixed wait does not make that decision deterministic. Prefer controlling the scenario before visiting the page or reading the value from a stable application contract.

Why conditional tests become flaky

Conditional testing means choosing what to do next based on a condition: if X is true, do Y; otherwise, do Z. The difficult part is not JavaScript’s if syntax. It is knowing whether the condition you observed will remain true while the test runs.

A page can continue changing after its load event because of network responses, timers, intervals, messages, and other asynchronous work. A DOM check is only a snapshot. If the application can still render or alter the relevant state, the same test may make a different decision on another run. Cypress’s conditional testing guide says DOM-based branching is safe only when the application state has settled and cannot change. A server-rendered page with no asynchronous DOM changes may meet that standard; a client-rendered page does not meet it just because the page-load event fired.

Cypress puts the underlying issue plainly: “If you cannot accurately know the state of your application then no matter what programming idioms you have available – you cannot write 100% deterministic tests.”

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • 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.

Choose the state before the test branches

Make the scenario deterministic

If a test needs campaign A, configure the application to serve campaign A rather than inspect a random assignment and decide afterward what to assert. Cypress’s guide illustrates requesting a known campaign through a query parameter. The same principle applies to feature flags, onboarding flows, account types, and other conditional UI: provide a test-controlled input, fixture, or scenario that selects the intended behavior.

This approach makes the expected result part of the test setup. It also lets separate tests cover separate scenarios without making each run depend on whatever state happened to be assigned.

Read an explicit source of truth

When the application chooses the state, read it from a source whose meaning and timing are defined. Cypress documents examples such as asking the server, checking a session cookie, or querying a DOM attribute that is guaranteed to be present and consistently reflects the state. An attribute is useful only if the application provides that guarantee; a value that may be missing or updated later is not a stable contract.

Make the source and its contract clear to future maintainers. A test that reads an explicit campaign value is easier to reason about than one that infers assignment from incidental text or layout.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 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.

When a conditional DOM check is appropriate

A synchronous DOM check can be appropriate when the action that creates the alternatives also creates them synchronously, and the application guarantees the DOM will not change before the check. Cypress demonstrates this pattern after a click that immediately appends either an input or a textarea:

cy.get('button').click()

cy.get('body').then(($body) => {
  if ($body.find('input').length) {
    cy.get('input').type('value')
  } else {
    cy.get('textarea').type('value')
  }
})

The important property is the application behavior, not the use of .then(): the example assumes the click synchronously creates one of the elements. If rendering is asynchronous, the callback may inspect the body before either target exists and take the wrong branch. A synchronous query inside .then() does not wait for a future render.

Checking for text

A condition such as “does the body contain this message?” has the same limitation as checking whether an element exists. It is safe for choosing a branch only if the page is guaranteed to have finished rendering that text and cannot change the relevant state afterward. Otherwise, control the scenario or obtain the underlying value from a stable server, session, storage, or documented DOM contract.

Handle optional work and early termination correctly

Cypress does not have a special passing result for “passed, but stopped early.” Decide what outcome you mean before writing the branch:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • 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.
  • Optional work: Put the commands that should run only when the condition is true inside that .then() branch. They will not be enqueued when the condition is false.
  • Failure: Throwing an error ends the test as failed. Use this when the condition violates an expectation, not as a way to recover from an absent element.
  • Skip: Calling Mocha’s this.skip() at runtime marks the test skipped. Use a regular function () {} callback so this is bound:
it('runs only when the scenario applies', function () {
  if (!scenarioApplies) {
    this.skip()
  }

  // Assertions for the applicable scenario
})

Returning from a callback does not cancel commands that were already queued elsewhere. Structure optional commands inside the branch rather than enqueueing them first and expecting a later return to remove them. Cypress’s FAQ distinguishes passing, failing, and pending or skipped tests.

Why a failed Cypress command is not a fallback branch

Cypress commands are queued for later execution; they are not Promises that can be awaited. A failed command stops the remaining commands and fails the test. Attaching a normal .catch() to a failed Cypress query to try an alternative selector is not a supported recovery pattern. The Cypress introduction explains the command model, and the conditional testing guide explicitly rejects a missing-element .catch() fallback.

Choose the path using controlled state or a reliable source before issuing commands that depend on it. Do not treat a command failure as proof that a stable alternate state exists.

Compare strategies by reliability

Strategy Determinism When it fits Primary risk
Set a test-controlled parameter or fixture High when the application honors the input consistently The test can select the desired scenario before visiting the page Requires application or server support
Read a server, session, or guaranteed DOM value Depends on a defined, stable contract The application has already selected a state that the test must verify The value may be stale, absent, or change if the contract is not guaranteed
Inspect the DOM once and branch Reliable only after state has settled and cannot change The relevant UI change is synchronous and bounded Asynchronous rendering can make the snapshot misleading
Wait a fixed duration, then inspect Not established by the wait itself Generally avoid using a delay as proof of settled state Can add runtime while still failing to account for later changes

For maintainability, keep tests independent and control state where possible. Cypress’s test isolation guidance covers isolated tests, while its best practices recommend resilient data-* selectors rather than selectors coupled to CSS or JavaScript implementation details.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • 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
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting conditional tests

The test sometimes chooses the wrong branch

The condition may be reading a transient DOM state. Replace the snapshot decision with a test-controlled scenario or a stable source such as a server response, session cookie, or guaranteed state attribute. Confirm that the state contract cannot change between observation and the commands that follow.

The element is missing, then appears later

A synchronous body query can run before asynchronous rendering completes. Do not interpret that empty snapshot as proof that the element will never appear. Arrange known state or use a stable interface to determine which behavior is expected before choosing commands.

A fixed wait appears to help but failures remain

A delay only postpones the snapshot; it does not establish that all future changes are impossible. Cypress warns that arbitrary waits can still leave flakiness risk. Prefer a controlled input or an explicit readiness/state contract.

A catch block does not run after a failed query

That is not the Cypress command recovery model. A failed command fails the test; a Promise-style .catch() fallback is unsupported. Make the decision before issuing the command that can fail.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 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.

The test should stop without failing

Place optional remaining commands inside the applicable branch if the test should simply avoid that work. Use runtime this.skip() only when the result should be reported as skipped, and use a regular function callback. Throw an error only when the condition should fail the test.

ScreenshotNeo for screenshot-based checks

For a screenshot of a page used in a test workflow, ScreenshotNeo is a website screenshot API and MCP server for developers. Its API can capture a URL as an image or PDF; it is separate from Cypress’s test runner and does not change how Cypress conditional assertions should be designed. See ScreenshotNeo.

Or skip the browser setup

One GET request returns a screenshot. The call below captures https://stripe.com; replace that target URL with the page you need and provide your API key. See the ScreenshotNeo API documentation for request options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -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 turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents and MCP clients. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Sign up for 1,000 free screenshots a month, with no card required.

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.