Urgent.News

What's breaking now, across thousands of outlets.

Tech

Your Tests Find Bugs. Why Is Shipping Still Slow?

A CI build goes red at 4:47 p.m. The failing step is click Save . The screenshot shows a modal. The error message says the element wasn't clickable. Was the button covered by a loading spinner? Did the API reject the request? Did the browser render something differently? Nobody knows yet. The test took 40 seconds to run. Figuring out what happened might take the rest of the afternoon. This is the…

When a continuous integration (CI) build fails during a test, the failing step often shows a modal error message indicating that the element was not clickable. However, the root cause of the failure may not be immediately clear. It could be due to a loading spinner covering the button, an API rejection, or a difference in how the browser rendered something.

The debugging process can take a significant amount of time, often more than the time spent writing the test itself. This is a problem that receives little attention in the development process. The focus tends to be on comparing frameworks and building test coverage, rather than making it easier to ship changes without guessing.

The primary goal should be to facilitate smoother software delivery, not just to have more automated tests. When evaluating test automation tools, it is essential to consider how they assist in identifying failures and communicating them to the team. A useful comparison would highlight which framework provides better traceability, isolation, and multi-browser testing capabilities compared to the other.

A test that fails quickly but requires extensive detective work every time it fails is not cost-effective. Additionally, API tests can generate as much noise as browser tests, even without involving a browser. For instance, adding an optional field like preferredLanguage to an API endpoint may cause tests to fail if they compare the entire response to a saved JSON object instead of checking only the relevant changes.

Similarly, partial updates can lead to test failures if the test relies on specific fields being unchanged while others are updated. A good test should verify the system's promises rather than focusing on incidental implementation details. Visual testing can also introduce unnecessary work. For example, changing spacing inside a navigation menu may result in multiple screenshots failing across different viewport sizes, many of which are duplicates of the same harmless adjustment.

This leads to unnecessary effort in approving screenshots, which can mask real regressions. Therefore, evaluating the noise created by visual testing tools, their baseline review process, and their handling of responsive breakpoints is crucial. Instead of merely counting the differences detected by the tool, the focus should be on making meaningful changes obvious.

In the case of browser tests, a useful approach is to ensure that a failed run contains enough information for someone unfamiliar with the issue to investigate. This includes the failing step, browser and environment details, timestamp, relevant console errors, network activity, and video or trace recordings for better understanding of timing-related problems.

Collecting the right artifacts at the moment of failure is essential, although it comes with security trade-offs, such as handling sensitive data safely. The ultimate goal is to streamline the debugging process and minimize the need for manual intervention after a test failure.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Building a dual-view Shopify lookbook from the Born Agency case

Campaign imagery can define the identity of a streetwear, eyewear, beauty, accessories, or camera brand. A standard four-column Shopify grid can flatten that identity.

  • Monochrome base of carbon black with electric lime and magenta gradients guide user experience.
  • Viewfinders with uppercase labels encourage user engagement and deep content interaction.

More from Monday 9 November →