BLOG

Cross-browser compatibility: why it matters and how to test for it

Cross-browser compatibility is vital but it requires complex test automation. Functionize Architect uses machine learning to give you unrivaled cross-browser test capabilities.

Cross-browser capability has become a “must-have” feature for new websites and applications. Clearly, this is a no-brainer. Working on more browsers means working with more customers, which means more revenue. Also, the term seems simple to define: a site or app that works on more than one browser.

However, that is not quite the case. Turns out there’s a lot more to cross-browser capability and the features that come with it. So, before we can discuss how to test for compatibility, we need to understand what cross-browser capability really means.

What is cross-browser compatibility?

Several definitions exist for cross-browser compatibility. Fortunately, these definitions all have a common theme.  Pulling them together, the most common definition is “the ability of a website, application, or script to support various web browsers identically.” But, is this really what cross-browser compatibility means? To see why this simple definition is not quite right, let’s explore what cross-browser compatibility is and is not.

Cross-browser compatibility does not mean a site or app that works identically on all browsers. Quite frankly, that is impossible. Working across multiple browsers means creating an equivalent user experience, not a perfect one. Stated another way, cross-browser means users can access identical experiences, but not necessarily in an identical way. The perfect example is a full site vs. a mobile site.

The impact of cross-browser capability cannot be overstated. The number of people and devices accessing the internet has exploded over the last decade.  Focusing on one browser alone could alienate a huge customer base. Of course, a site needs to work on the big three: IE (PC), Chrome (Android), and Safari (iOS). But what about potential customers on cheap and/or out-of-date devices? And how to create a product that works in a diverse web browsing environment?

With this in mind, let’s look at what it takes to be compatible across-browsers.

Why do cross-browser issues occur?

Expanding our definition above,, Wikipedia provides some other definitions of cross-browser capability (https://en.wikipedia.org/wiki/Cross-browser_compatibility ). This article also contains some interesting tidbits on why cross-browser compatibility is so elusive, including the infamous “browser wars.” The battle for web dominance in the 90s highlights the issues that still arise today.

For example, some of the common issues a developer can run into are things like:

  • Forced incompatibility — for example, U.S. military websites only worked on IE until very recently.
  • The sheer number of browsers across OSes.
  • Innate browser issues – bugs in the browser itself.
  • Leaping to mobile – smaller screens and fewer input devices create a completely new, and different, experience.

This short list emphasizes the scope and severity of the issues that can occur. Testing for cross-browser capabilities poses unique testing challenges. Remember, users need an equivalent experience, not an identical one. Consequently, does that mean an equivalent or a unique set of tests are needed?

Challenges of cross-browser testing

Furthermore, testers don’t just face the challenges above. As if testing for cross-browser capabilities wasn’t enough, yet more challenges stand in the way. One major challenge is computing power. That is to say, testers need machines to run each and every browser on various OS and browser versions. Not only that, throw mobile devices in the mix and you’ve got an awful lot of devices to buy.

And once testing finally begins, the volume of test iterations required boggles the mind. Think of a set of tests for every browser. Now, think of making one change to a website or app. And then realize every set of tests must be run once again. This challenge shows just how great the need is for a smart way to automate testing and record results. 

Cross-browser capabilities issues rear their heads in many ways, such as differing versions of JavaScript or differing mobile OS versions. As always, more capabilities means more issues, and more issues means more testing. What follows is an introduction to cross-browser testing.

How to test cross-browser compatibility for your site

To begin with, developers need to know what cross-compatible features are the most important to them. Some things to keep in mind include:

  • Does my product need to work on old or uncommon browsers? 
  • Does my product need to work on cheap and/or outdated devices? 
  • Have I included speech-to-text for accessibility?
  • What is an “acceptable” user experience? 
  • What is a “reasonable” number of browsers?

After features come test plans. Specifically, testers need to test core features across browsers and OSes. Testers must come up with a set of common tests that make sense for their product. More importantly, they need a smart way to execute these tests. That is to say, developers need a sound testing strategy.

Creating a cross-browser test strategy

Cross-browser compatibility needs testing early and often. Testing all features on all browsers all at once is sure to result in catastrophe. One strategy for avoiding this is shift-left testing

After creating a test orchestration framework and test plan, it is time for the testers to descend upon the code. They must run the same set of tests on every browser for every code change. Without automation, this is next to impossible. Unfortunately, with automation comes errors that can sneak in unnoticed. Basically, a powerful test recorder capable of self-healing is an absolute must.

Requirements for automation

Specifically, a test automation tool for cross-browser capability testing has two roles.

First and foremost, it must store the test results for every test, and log results over time. This will quickly provide results across-browsers and allow you to compare them. Furthermore, it will show the results of the tests for each version of the site. Testers will have a literal written record of the consequences of each change. Such questions as “did moving that box break the format of the text around it?” and “did changing from a drop-down menu a radial button block them from executing the items’ functions?” can be answered without burning hours of human time.

Second, it must be able to detect errors in the tests themselves. The complexity of website and app design leads to a large volume of (often repetitive) tests. The small test changes over time lead to many opportunities for errors to sneak in. For example, removing a button from one version without removing the associated test. Suddenly, the testing stops, and a human has to wade through the data to find out why. This is exacerbated in tools where each browser needs its own test to be written. Conversely, a self-healing test recorder can look back at previous results and learn for itself what went wrong. In this scenario, the testing either corrects itself or notifies a tester of exactly what and where the testing broke.

The need for machine learning

Machine learning is the tool that enables self-healing. The test automation tool needs to learn from its tests over time. Specifically, it must be able to search through its previous results, have some idea of what results should be coming, and take corrective action when they disagree.

How Functionize helps

Functionize Architect is one of the smartest test automation tools out there. Architect is more than just a test recorder. It is built on a strong machine learning framework. This allows it to offer advanced capabilities that transform how you do test automation. Firstly, tests created with Architect simply work in any browser without the need to be debugged. Secondly, dynamic healing ensures your tests evolve alongside your site. If it spots changes in the site code or UI, it simply updates the test and flags the change in the dashboard. Thirdly, it offers detailed visual testing abilities, allowing you to see how the site has evolved over time. Taken together, these make Architect the perfect solution for cross-browser testing.

 

For a demo of Architect, visit https://www.functionize.com/demo today.