<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Arnav Mahajan</title>
    <description>The latest articles on DEV Community by Arnav Mahajan (@arnav1712).</description>
    <link>https://dev.to/arnav1712</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F250251%2Fe2f18b2c-8469-4505-9561-24b656a265dd.jpg</url>
      <title>DEV Community: Arnav Mahajan</title>
      <link>https://dev.to/arnav1712</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arnav1712"/>
    <language>en</language>
    <item>
      <title>Microsoft Edge 79: What's new in the Chromium-based Edge?</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Tue, 21 Jan 2020 06:47:53 +0000</pubDate>
      <link>https://dev.to/arnav1712/microsoft-edge-79-what-s-new-in-the-chromium-based-edge-20g8</link>
      <guid>https://dev.to/arnav1712/microsoft-edge-79-what-s-new-in-the-chromium-based-edge-20g8</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eHG0g8ny--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2020/01/Blog_inside%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eHG0g8ny--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2020/01/Blog_inside%402x.png" class="kg-image" alt="New Chromium-based Edge browser"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Microsoft rolled out the latest version of its Edge browser, Edge 79, on January 15, 2020. This update, codenamed ‘Project Anaheim’, is a landmark shift for Microsoft, from the EdgeHTML engine to the Chromium engine.&lt;/p&gt;
&lt;p&gt;Switching to Chromium puts Microsoft Edge on par with Google Chrome in terms of functionality, so user adoption and market share are expected to increase. Users who switch to or update the Edge browser are going to expect seamless, bug-free experiences on every website they access. Web developers need to test their websites for compatibility on Edge 79—among other things.&lt;/p&gt;
&lt;p&gt;BrowserStack has partnered with Microsoft to give you &lt;a href="https://www.browserstack.com/test-on-microsoft-edge-browser" title="Free unlimited testing on Microsoft Edge"&gt;unlimited access&lt;/a&gt; to Edge for Live testing. If you want to run automated tests,you can leverage &lt;a href="https://www.browserstack.com/automate" title="Automated Selenium testing on 2000+ browsers and devices"&gt;BrowserStack Automate&lt;/a&gt; to run all your Selenium test cases on the Edge browser—on multiple devices—at the same time.&lt;/p&gt;

&lt;h3 id="so-why-has-microsoft-decided-to-switch-to-chromium"&gt;So why has Microsoft decided to switch to Chromium?&lt;/h3&gt;
&lt;p&gt;Microsoft has stated multiple reasons for making the switch from EdgeHTML to Chromium:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Greater reach&lt;/strong&gt;: Microsoft can now leverage Chromium’s cross-platform technology—and make Edge available to all supported versions of Windows and other desktop platforms like macOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better alignment: &lt;/strong&gt;This will help both Microsoft and Edge align better with web standards—and other Chromium-based browsers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fewer bugs: &lt;/strong&gt;Due to Chrome’s immense popularity, some web developers simply chose not to validate websites on the EdgeHTML codebase. This created occasional compatibility issues for Edge users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster releases: &lt;/strong&gt;Because EdgeHTML shipped on the same schedule as the Windows operating system, Microsoft’s ability to update the Edge browser was slowed down. This, in turn, caused platform fragmentation and exposed compatibility gaps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increased OS contribution: &lt;/strong&gt;By switching to the Chromium project, Microsoft can contribute new capabilities to the Chromium open source project, for the benefit of all browsers, users and developers. This will, ultimately, help other browsers support Windows capabilities (like touch and ARM processors) better.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Partnering opportunities: &lt;/strong&gt;This switch will give Microsoft a ‘welcome opportunity’ to partner with the global Chromium community in terms of battery life, touch, accessibility, security, and other areas of mutual interest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration with Google: &lt;/strong&gt;Microsoft intends to work directly with Google to improve the Chromium engine.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how-does-this-benefit-my-end-user"&gt;How does this benefit my end-user?&lt;/h3&gt;
&lt;p&gt;Along with upgraded performance, support for the latest rendering capabilities, powerful developer tools, and best-in-class compatibility with extensions, this new update to the Microsoft Edge browser gives users (among other benefits):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New privacy-enhancing features like tracking prevention, which is ‘On’ by default&lt;/li&gt;
&lt;li&gt;‘Collections’, to allow users to easily collect and organize web content—and export into Word/Excel files. This will ultimately help users with content creation or decision-making&lt;/li&gt;
&lt;li&gt;A new ‘InPrivate’ mode across the entire web experience. This means online searches and browsers will not be attributed to the user&lt;/li&gt;
&lt;li&gt;‘Smartscreen and tracking prevention’ to prevent users from phishing schemes, malicious software, and malware like cryptojacking&lt;/li&gt;
&lt;li&gt;Keyboard shortcuts to mute tabs on Mac devices&lt;/li&gt;
&lt;li&gt;Dark themes for the search box, Microsoft news feeds and other top websites&lt;/li&gt;
&lt;li&gt;Bug fixes for UI/UX issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="why-is-this-update-so-crucial-to-test"&gt;Why is this update so crucial to test?&lt;/h3&gt;
&lt;p&gt;The new Edge 79 is new and uncharted territory. There are several new factors at play—the Chromium project, the V8 JavaScript engine, and the Blink rendering engine. This version is completely different and utterly unrelated to any existing version of Microsoft Edge.&lt;/p&gt;
&lt;h3 id="wait-what-s-a-browser-engine"&gt;Wait, what’s a browser engine?&lt;/h3&gt;
&lt;p&gt;A ‘browser engine’, to put it simply, takes in HTML code and puts out a visual representation of the code.&lt;/p&gt;
&lt;p&gt;When you ask your browser to pull up a website, here’s what happens: The browser requests data from the webserver. It then uses a browser engine to:&lt;/p&gt;
&lt;p&gt;1. Process the HTML data (received from the webserver),&lt;/p&gt;
&lt;p&gt;2. Calculate graphical coordinates,&lt;/p&gt;
&lt;p&gt;3. Display it visually.&lt;/p&gt;
&lt;p&gt;Apart from rendering and layout, the browser engine even handles security policy implementations, data submissions and the like. Among others, the most popular browser engines in use today include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blink, used by Google Chrome&lt;/li&gt;
&lt;li&gt;Gecko, used by Mozilla Firefox&lt;/li&gt;
&lt;li&gt;WebKit, used by Apple’s Safari&lt;/li&gt;
&lt;li&gt;Trident, used by Internet Explorer&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="does-the-browser-engine-handle-javascript-as-well"&gt;Does the browser engine handle JavaScript as well?&lt;/h3&gt;
&lt;p&gt;No. Browser engines only interpret HTML and CSS code. You will require a separate JavaScript engine to compile any JavaScript code for your browser.&lt;/p&gt;
&lt;p&gt;Some notable JavaScript engines include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;V8, used to power Google Chrome&lt;/li&gt;
&lt;li&gt;Spidermonkey, used by Mozilla Firefox&lt;/li&gt;
&lt;li&gt;JavaScript Core, a.k.a Nitro, used by Apple’s Safari&lt;/li&gt;
&lt;li&gt;Chakra, used by older Microsoft Edge versions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="so-what-does-microsoft-edge-use"&gt;So what does Microsoft Edge use?&lt;/h3&gt;
&lt;p&gt;Microsoft, in true maverick fashion, built its Edge browser with its own EdgeHTML browser engine and Chakra JavaScript Engine. With the Edge 79 release, Microsoft is switching to Blink browser engine with V8 JavaScript engine.&lt;/p&gt;
&lt;p&gt;Both Blink and V8 are developed under Chromium—an open-source project with an open-source web browser of the same name&lt;em&gt;.&lt;/em&gt; &lt;strong&gt;Chromium—the open-source browser—is used by Google for its own Chrome browser. Now, Microsoft Edge will do the same&lt;/strong&gt;&lt;em&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="does-this-mean-edge-will-become-the-same-as-chrome"&gt;Does this mean Edge will become the same as Chrome?&lt;/h3&gt;
&lt;p&gt;No. They’ll become similar in terms of underlying rendering performance and OS compatibility‚ but to an end-user, the experience will remain &lt;em&gt;markedly &lt;/em&gt;different. This is to reflect the &lt;em&gt;vendors'&lt;/em&gt; (Google's and Microsoft's) own development and design&lt;em&gt; &lt;/em&gt;philosophies.&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;"Despite the same underlying (and open-source) browser engine, the end-user experience turns out to be very different on Chrome and UC Browser. This is because Chrome focuses on delivering performance and integrating with Google’s ecosystem. On the other hand, UC Browser focuses on efficiency through page compression and lower data consumption."&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;                             &lt;em&gt;(Source: &lt;/em&gt;&lt;a href="https://browserstack.com%0A/blog/cross-browser-testing-for-compatibility/"&gt;&lt;em&gt;Why is cross-browser compatibility an issue in 2020&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sharing the same underlying browser (Chromium) won’t change what&lt;em&gt; &lt;/em&gt;Google and Microsoft&lt;em&gt; &lt;/em&gt;decide to deliver through their &lt;em&gt;proprietary &lt;/em&gt;browsers. Google’s Chrome will continue to favor performance and ease-of-integration with the rest of Google’s ecosystem. And with the switch to Chromium, Microsoft Edge will become more agile.&lt;/p&gt;
&lt;p&gt;But whether it can catch up to Chrome’s market share remains to be seen.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To automate your Selenium test scripts to run on Edge 79 (in different devices), try &lt;a rel="“nofollow”" href="%E2%80%9Chttps://www.browserstack.com/automate%E2%80%9D" title="Automated Selenium testing on 2000+ browsers and devices"&gt;BrowserStack Automate&lt;/a&gt;. To test your website interactively on a real device, try &lt;a rel="“nofollow”" href="%E2%80%9Chttps://www.browserstack.com/live%E2%80%9D" title="Interactive testing on 2000+ browsers and devices"&gt;BrowserStack Live&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended reading&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://browserstack.com/blog/cross-browser-testing-for-compatibility/?utm_source=referral&amp;amp;utm_medium=dev.to&amp;amp;utm_campaign=fragmentation"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3av9bKQG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2020/02/Blog-Banner%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="resources"&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://blogs.windows.com/msedgedev/2019/11/04/edge-chromium-release-candidate-get-ready/%E2%80%9D"&gt;Microsoft blog: How to prepare for Chromium Edge browser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://blogs.windows.com/windowsexperience/2019/11/04/introducing-the-new-microsoft-edge-and-bing/%E2%80%9D"&gt;Introducing the new Microsoft Edge and Bing &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://thirdpartysource.microsoft.com/%E2%80%9D"&gt;Third party open source code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://github.com/MicrosoftEdge/MSEdge%E2%80%9D"&gt;MS Edge and Chromium Open Source: The intent and ReadMe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://en.wikipedia.org/wiki/Browser_engine%E2%80%9D"&gt;What are browser engines?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://www.html5rocks.com/en/tutorials/internals/howbrowserswork/%E2%80%9D"&gt;How browsers work: Behind the scenes of modern browsers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://medium.com/@jonbiro/browser-engines-chromium-v8-blink-gecko-webkit-98d6b0490968%E2%80%9D"&gt;Browser engines…Chromium, V8, Blink, Gecko, WebKit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey%E2%80%9D"&gt;Mozilla uses the Spidermonkey JavaScript engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="%E2%80%9Chttps://www.prnewswire.com/news-releases/apple-releases-safari-5-95817479.html%E2%80%9D"&gt;Apple uses the Nitro, a.k.a JavaScriptCore engine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;                

</description>
      <category>edge</category>
      <category>microsoft</category>
      <category>chromium</category>
      <category>features</category>
    </item>
    <item>
      <title>Testing for Fragmentation: Why do you need cross-browser testing for compatibility?</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Mon, 06 Jan 2020 06:33:54 +0000</pubDate>
      <link>https://dev.to/arnav1712/testing-for-fragmentation-why-do-you-need-cross-browser-testing-for-compatibility-5654</link>
      <guid>https://dev.to/arnav1712/testing-for-fragmentation-why-do-you-need-cross-browser-testing-for-compatibility-5654</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T5to8MAm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/fragmentation_5%402x--1-.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T5to8MAm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/fragmentation_5%402x--1-.png" class="kg-image" alt="Cross-browser testing for compatibility"&gt;&lt;/a&gt;                    &lt;/p&gt;

&lt;p&gt;It takes a look at the market data on devices, platforms, browsers, etc. in use today, how this diversity comes into play during software development and testing—and what 2 million+ developers on BrowserStack do to account for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this post, we look at browser internals, the differences among browsers, and the need for cross-browser testing.&lt;/strong&gt;&lt;/p&gt;



&lt;blockquote&gt;&lt;em&gt;“Has anyone spent several hours to get the UI of their application render correctly in all browsers? How do you tackle the frustration when simple styles tend to work in one browser but not others… and by the end of the day you invent a hack to handle it (in some cases that too does not happen), only after wasting your time?”&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;That was posted on Stack Overflow &lt;a rel="nofollow" href="https://stackoverflow.com/questions/320575/silly-and-frustrating-cross-browser-ui-issues" title="Post in Stack Overflow"&gt;11 years ago&lt;/a&gt;. And it hasn't become less tedious with time. Cross-browser testing still is the bane of every front-end developer and QA engineer on the planet.&lt;/p&gt;

&lt;p&gt; &lt;br&gt;The reason is &lt;em&gt;browser fragmentation, and the only way to cope is by testing for &lt;strong&gt;cross-browser compatibility. &lt;/strong&gt;&lt;/em&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="why-is-browser-compatibility-an-issue-in-2020-"&gt;Why is browser compatibility an issue in 2020...&lt;/h2&gt;
&lt;p&gt;...despite W3C’s homogenizing open standards? Or despite the fact that most of the browsers have adopted Chromium/Blink as their go-to browser engine? &lt;br&gt;&lt;/p&gt;
&lt;p&gt;The answer is in the question itself: those standards are &lt;em&gt;open &lt;/em&gt;to interpretation&lt;em&gt;. &lt;/em&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Browsers with the largest market shares are developed by different vendors. Each of these vendors have different design and development philosophies. This influences how they go about adding features, implementing support for new web technologies, and ultimately, the end-user experience of browsers. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Consider this: Despite the same underlying (and open-source) browser engine, the end-user experience turns out to be very different on Chrome and UC Browser. This is because Chrome focuses on delivering performance and integrating with Google’s ecosystem. On the other hand, UC Browser focuses on efficiency through page compression and lower data consumption.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Even the open-source browser projects are not afraid to “&lt;em&gt;break things&lt;/em&gt; &lt;em&gt;to make things.” &lt;/em&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“Chromium’s mission is to advance the web, and in some cases, we find it beneficial to make a breaking change in order to do that.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;—Blink principles of web compatibility&lt;br&gt;&lt;/p&gt;
&lt;p&gt;For the average web developer, that one ‘breaking change’ could mean hours of debugging. You may decide not to use a new, radical browser tech in your website UI, but you will have to account for those changes while developing anyway. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;For there are layers to a browser, and each of them affects the Quality of Experience (QoE) you deliver to the end-user. Let’s take a look:&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Browser engine&lt;/strong&gt;: Not to be confused with &lt;em&gt;JavaScript engine &lt;/em&gt;(which is another core component), the browser engine takes in HTML, reads and renders it. Blink, Gecko, and WebKit are examples of browser engines. While open-source, these engines are different in their operation—even the operating systems they support. iOS, for instance, will only run WebKit browsers. So Chrome on Android and Chrome on iOS are going to be different &lt;em&gt;at the very core. &lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Vendors often add unique features to their browsers. Consider Apple’s Safari, which has &lt;em&gt;Intelligent Tracking Prevention. &lt;/em&gt;It’s&lt;em&gt; &lt;/em&gt;a machine-learning algorithm that understands the difference between first-and-third party cookies. Based on the cookies’ purpose [for instance, saving session details vs cross-site tracking for ad targeting purposes], ITP deletes them at various intervals from users’ devices. Even today, ITP continues to trouble online publishers who monetise their site content through behaviourally-targeted ads.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support for popular web technology: &lt;/strong&gt;Which web technology to support + when and how best to implement it—these decisions are made by popular opinion within the browser’s contributor community.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update frequency: &lt;/strong&gt;The speed with which contributing engineers release new features or security patches &lt;a href="https://www.computerworld.com/article/3284365/browser-updates-heres-how-often-chrome-firefox-edge-and-safari-get-refreshed.html"&gt;&lt;em&gt;is different for each browser&lt;/em&gt;&lt;/a&gt;. Chrome gets updated every 6-8 weeks; Safari, once or twice a year. So if two or more browsers &lt;em&gt;were &lt;/em&gt;to pick up ‘adding support for resolution feature’, it may take a while to be universally available.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="okay-browsers-are-different-why-should-i-care"&gt;Okay. Browsers are different. Why should I care?&lt;/h2&gt;
&lt;p&gt;Now, individually, the differences are minuscule and unlikely to affect a large percentage of your site’s traffic. But your site experience depends on how well you accounted for all the differences in browser layers. The probability of an unexpected UI bug is &lt;em&gt;high.&lt;/em&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The more you scale/expand your reach to new markets, the larger will be the impact of unexpected UI breaks in production. And this affects not just the bottom line, but the audience sentiment as well. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;A website/web app has to &lt;em&gt;work flawlessly for its audience&lt;/em&gt; regardless of the browser they are on. Lack of browser compatibility can have serious consequences, as was the case with:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Safari ITP impacted the retention of the &lt;a rel="nofollow" href="https://helpx.adobe.com/analytics/kb/adobe-analytics-anditp.html#Fallbackandimplications" title="Adobe Analytics and Safari ITP"&gt;Adobe Experience Cloud’s opt-out cookie&lt;/a&gt;. Apple automatically deleted the cookie that was set to prevent reporting on data, effectively opting the user back into tracking.&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Bootstrap, a ground-breaking front-end development framework that saves countless hours of developers’ time, had to create a whole &lt;a rel="nofollow" href="https://getbootstrap.com/docs/4.1/browser-bugs/" title="Wall of browser bugs"&gt;wall of outstanding browser bugs&lt;/a&gt;; in the hopes that browser vendors will pick up and resolve these issues in the near future.&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;A simple &lt;a rel="nofollow" href="https://www.express.co.uk/life-style/science-technology/1205254/Google-Chrome-Update-Break-Stop-Working-White-Screen" title="Chrome update affects users"&gt;November 2019 Chrome update&lt;/a&gt;, supposed to make the browser become more resource-efficient, ended up wreaking havoc—especially for those running Chrome on a Windows Server (in an enterprise network setup).&lt;/p&gt;


&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
&lt;blockquote&gt;“&lt;em&gt;Employees are being left gawping at blank screens as Chrome suspends their browser throughout the day. According to system administrators speaking to ZDNet, hundreds and thousands of employees couldn't use Chrome to access the internet following the update&lt;/em&gt;.” &lt;/blockquote&gt;

&lt;p&gt;Outside of your dev environment, not everyone has caught on to the latest versions of Chrome and macOS. Plenty of users are on browsers other than Chrome—or versions of popular browsers older than the latest releases. You can chalk it up to familiarity and/or resistance to change (along with &lt;a rel="nofollow" href="https://teamtreehouse.com/community/why-do-people-stay-with-old-browsers" title="Why do people stick with old Browsers? "&gt;other reasons&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;There’s only one way to minimize browser errors: by testing continuously for cross-browser compatibility.&lt;/p&gt;
&lt;h2 id="continuous-testing-for-cross-browser-compatibility"&gt;Continuous testing for cross-browser compatibility&lt;/h2&gt;
&lt;p&gt;It’s definitely not enough to test on whichever browser you’re developing on and release it into the wild. To deliver quality at speed, you have to&lt;em&gt; test smarter&lt;/em&gt;. And to do this, you’ll need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;A list of relevant browsers which will give you over 80% coverage in the market(s) of your choice—updated at regular intervals.&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Thorough risk analysis to figure out the features most likely to break, and on which browsers and devices. &lt;a rel="nofollow" href="https://browserstack.com/blog/risk-based-testing/" title="Risk based testing"&gt;This post&lt;/a&gt; by Hylke de Jong, an Automation Testing Engineer at Wehkamp.nl, details why you should be testing on devices with high risk—even if they aren’t used by a significant percentage of your traffic.&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;A solid delivery pipeline that lets your engineers continuously test and debug every unit, build, and end-to-end user-flow across each relevant browser/device.&lt;/p&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remember this: Cross-browser compatibility isn’t about how many people can enjoy the entire site/app experience. &lt;em&gt;It’s about minimizing the number of people who can’t. &lt;/em&gt;For those who have a reputation to maintain, the stakes are even higher. For them, cross-browser compatibility becomes a matter of delivering &lt;em&gt;quality, consistently. &lt;/em&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;One of them is Nicolás Bevacqua, a JS consultant and Blink contributor. He states that he cares about cross-browser compatibility because: &lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“..the fact that people were seldom using anything other than Chrome (to access my blog) gave me a good cover story for not pouring any effort into resolving long-standing (albeit minor) CSS rendering issues in Firefox and Safari. However, &lt;strong&gt;20% of visitors were getting a less than ideal experience, which ultimately wasn’t something I could scoff at.&lt;/strong&gt; &lt;/em&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;It didn’t speak well of me to have these blatant rendering bugs lying around in my blog when visited through popular non-Chrome browsers. It wasn’t tidy.”&lt;/em&gt;&lt;br&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Recommended reading&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://browserstack.com/blog/cross-browser-testing-for-compatibility/?utm_source=referral&amp;amp;utm_medium=dev.to&amp;amp;utm_campaign=fragmentation"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3av9bKQG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2020/02/Blog-Banner%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>crossbrowsertesting</category>
      <category>compatibilitytesting</category>
      <category>softwaretesting</category>
    </item>
    <item>
      <title>Testing for Fragmentation: A risk-based approach for targeted, effective testing</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Mon, 06 Jan 2020 06:19:36 +0000</pubDate>
      <link>https://dev.to/arnav1712/testing-for-fragmentation-a-risk-based-approach-for-targeted-effective-testing-37ki</link>
      <guid>https://dev.to/arnav1712/testing-for-fragmentation-a-risk-based-approach-for-targeted-effective-testing-37ki</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FVSVvDFV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/fragmentation_4%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FVSVvDFV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/fragmentation_4%402x.png" class="kg-image" alt="Risk based testing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whenever the subject of fragmentation comes up in the context of mobile app testing, the focus is mainly on knowing what to test, and where. While the former pivots on knowing your app, its functionality, and expected behavior, the latter revolves around market research and insights about the devices your customers commonly use. But exhaustively testing every part of your app on every possible device is not exactly feasible. It would require tremendous effort and time. But there is a workaround for such a situation - a risk-based approach to testing.&lt;/p&gt;

&lt;p&gt;Consider the right parameters&lt;br&gt;
Risk-based testing is a method in which you focus on, and give priority to, the parts of your app and/or the devices that have the highest risk associated with them. Generally, people tend to think that this applies to the most used parts of your app and the most used devices. While this is not entirely wrong, there are more nuances to consider. For starters, how do we quantify risk? The generic formula to calculate risk is:&lt;/p&gt;

&lt;p&gt;Risk = Probability * Impact&lt;/p&gt;

&lt;p&gt;The formula is quite straightforward. The amount of risk is based on two variables. Probability is basically how likely it is that something is going to happen. The second variable is impact, or how bad is it when something breaks. Let’s look at an example to see how this works out in practice.&lt;/p&gt;

&lt;p&gt;Screen resolution is a good metric to differentiate mobile devices by. In the case of iPhones, most are rather similar in size and resolution. But the iPhone SE stands out, with its modest 640 x 1136 pixels size. It’s an older phone and so general usage numbers are usually low. When only going by that parameter, the iPhone SE isn’t a highly relevant target device for our testing.&lt;/p&gt;

&lt;p&gt;However, it is important to factor in the phone’s fairly low screen resolution; especially the low 640 pixels width. This is one of the main reasons why most UI-related aspects break regularly on this device. There simply isn’t enough room to display everything, causing buttons or elements to disappear or overlap, thus limiting user interaction with those key elements.&lt;/p&gt;

&lt;p&gt;So, the probability of things breaking on the iPhone SE is quite high. The impact, of course, depends on what functionalities are being rendered unusable. Suppose two buttons overlap, and both usually can’t be tapped, it is a serious issue. The iPhone SE, in this case, has a high risk of potential bugs. This makes the iPhone SE an interesting, and important, device to run tests on.&lt;/p&gt;

&lt;p&gt;Think beyond devices&lt;br&gt;
When only looking at devices, we tend to make generalized assumptions - that all functionality is important, and every test should be run on all of them. But assumptions are detrimental, especially when the context is (containing) risk. To figure out which functionality within your app should receive more attention, the risk-based approach outlined above can be used.&lt;/p&gt;

&lt;p&gt;For instance, we run a webshop and one of the most important parts of our customer journey is the checkout. The reason is simple: if customers can’t pay, we won’t make any money - there’s your high impact. Probability is an interesting part of the equation in this case; ideally, the probability of our checkout page glitching is low given its importance and the focus it gets. However, we built a hybrid app, meaning roughly 90% is native iOS, but the rest uses our mobile website in a WebView. The checkout is part of this 10%. This means that we suddenly have three more variables to take into account - native iOS, WebView, and the mobile website; all with their own set of quirks and focus areas. So the probability of checkout-related issues just went up, making the checkout a high-risk area of our app, and as such, a very interesting target for testing.&lt;/p&gt;

&lt;p&gt;This works both ways. Parts with lower risk can either be skipped or put in a different (lower priority) test suite.&lt;/p&gt;

&lt;p&gt;This also really helps with insight into why you do certain things. People outside of quality assurance are quick to point towards areas they think are important and should be tested. They mean well, but many times, this is based on gut feeling. With the risk formula, you can logically explain your approach. More importantly, you can recognize when there is negligible added value in additional testing.&lt;/p&gt;

&lt;p&gt;Fragmentation in release versions&lt;br&gt;
In general, people think that fragmentation is only on the device/browser/OS level, but it can also happen between different builds of the same app. Not all users update automatically. You could force them to update, but that’s a rather heavy measure to take. Customers generally don’t like being forced to do something. A forced update will immediately reflect in your App Store/Play store reviews; usually not in a good way.&lt;/p&gt;

&lt;p&gt;This implies that, at any given point in time, you might have multiple versions of your app running in production. All with their own set of features, functionalities, and bug (fixes). This adds an extra layer of complexity to the already complex puzzle that is fragmentation testing.&lt;/p&gt;

&lt;p&gt;This is also where monitoring comes in. Sure, you can run your tests in production, but then you’re still constrained by the devices you choose to run your tests on. Monitoring gives you a test pool with unlimited devices and OS versions. Obviously, I can't stress enough on the importance of having a robust monitoring and altering process in place, to detect major issues in time. Though it is a comprehensive task, once set up correctly, it gives you access to a very interesting set of data.&lt;/p&gt;

&lt;p&gt;For instance, we can see which build has a high crash rate. But more importantly, it also gives you more detailed information about the device, OS, app version and which class caused the crash. That last part is especially crucial as it brings an immediate focus on the potential source of a bug. You can also extrapolate trends from this information. For instance, is there a device that is over-represented in the crash data or is there a build that stands out with more crashes than others? This is very valuable information to adapt your test strategy and approach.&lt;/p&gt;

&lt;p&gt;Use crash data as valuable test input&lt;br&gt;
This idea of testing based on risk is a good way of making informed decisions for device selection and functionality to test. If you supplement this selection with the crash data of your app, what you get is a remarkably targeted, efficient test suite.&lt;/p&gt;

&lt;p&gt;It’s important to understand that this is an extension of your test strategy. Of course, you start with testing the most used devices and most used/important functionality. But once you’ve covered that, it’s a really nice addition that can give you a lot of pointers for high-risk parts of your app.&lt;/p&gt;

&lt;p&gt;And this also works the other way around. If there are parts of the app or devices that never show failed tests or crashes, remove them from the test suite. A lot of testers freak out at the thought, but it’s the most sensible thing to do. A test that keeps running green over and over and over again looks nice in the dashboards, but overall it doesn’t add much value. And since we’ve almost always short on time, this is one shortcut that is definitely worth taking.&lt;/p&gt;

&lt;p&gt;Recommended reading:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://browserstack.com/blog/compatibility-across-the-globe/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XFa6l_k6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://browserstack.wpengine.com/wp-content/uploads/2019/12/Screenshot-2019-12-26-at-4.08.42-PM.png"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>compatibilitytesting</category>
      <category>softwaretesting</category>
      <category>fragmentation</category>
      <category>riskbasedtesting</category>
    </item>
    <item>
      <title>Testing for Fragmentation: Is your UX tested for Global Compatibility?</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Thu, 12 Dec 2019 06:14:14 +0000</pubDate>
      <link>https://dev.to/arnav1712/testing-for-fragmentation-achieving-compatibility-across-the-globe-1lm5</link>
      <guid>https://dev.to/arnav1712/testing-for-fragmentation-achieving-compatibility-across-the-globe-1lm5</guid>
      <description>&lt;br&gt;
                    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HdbHGM79--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/Fragmentation---Featured-image%402x.png" class="kg-image" alt="Banner: Fragmentation by Country"&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;“Testing for Fragmentation” is a blog series. It takes a look at the market data on devices, platforms, browsers, etc. in use today, how this diversity comes into play during software development and testing—and what 2 million+ developers on BrowserStack do to account for it.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;In this post, we look at how Fragmentation varies across the globe and key statistics you should keep in mind if you have a presence in these markets.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The growth mantra of online businesses is scale—reach more users, fast. However, as you scale across countries, it’s important to ensure that your app/website is compatible with your users’ devices and browsers. &lt;br&gt;&lt;br&gt;Compatibility is to online businesses what distribution is to brick and mortar ones. You might have the best product in the world, but it counts for nothing if your customers don’t have the experience you designed for them. &lt;br&gt;&lt;br&gt;For instance, being compatible with the top 20 devices will help you cover 70% of the US audience. In India, not only will the devices be different, the coverage provided will be less than 35%. Similarly, if your mobile website doesn’t load properly in Opera browser, you would have ignored almost half of the Nigerian market! &lt;br&gt;&lt;br&gt;Clearly, what works in one market won’t necessarily work for another. So, in this blog post, we will outline country-specific fragmentation nuances that you need to consider if you have a presence in these markets. Or plan to, in the future. We have tried to cover at least one country in each continent.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;After reading this piece, you should know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How the &lt;strong&gt;fragmentation landscape&lt;/strong&gt; changes in each country&lt;/li&gt;
&lt;li&gt;What the are &lt;strong&gt;factors&lt;/strong&gt; that lead to this&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key browsers&lt;/strong&gt; to test on&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Major device manufacturers&lt;/strong&gt; dominant in each country
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="united-states"&gt;United States&lt;/h2&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dQdsvsr9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/USA%402x-1.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in USA"&gt;&lt;p&gt;A strong market share of Apple devices in the US makes testing on iPhones and iPads (both new and old) a no-brainer. It’s a common myth that iPhones are not affected by fragmentation. However, if you do a risk-based analysis, testing on older iPhones is critical. They have significant traffic (over 40% of iOS traffic) and the probability of UI breaks is higher.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Another set of devices to consider is tablets. The market share of tablets, in terms of traffic, is over 5%. Testing on the most popular Apple and Samsung tablets should be enough to cover a decent majority.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Things get more interesting when we come to desktops. For accessing the internet, the usage of desktops in the US is still more than mobile.&lt;strong&gt; The problem it creates is that the browser market is more fragmented.&lt;/strong&gt; &lt;br&gt;&lt;/p&gt;
&lt;p&gt;You can safely release your websites only if you have tested them extensively across Edge, Firefox, and IE apart from the usual Chrome and Safari. This is mainly because each one of them has over 5% traffic coming through them. &lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="germany"&gt;Germany&lt;/h2&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uJPcXY6x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/Germany%402x.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in Germany"&gt;&lt;p&gt;&lt;strong&gt;The usage pattern of devices and browsers doesn’t vary much across western Europe. While device fragmentation isn’t as high as Asia, a stronger market presence of Android devices makes things difficult for testers&lt;/strong&gt;. The three leaders in Android—Samsung, Huawei, and One Plus—run their own custom OSes, thereby increasing the combinations to test on.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;For desktop browsers, testing on Chrome, Firefox and Safari is a must. However, IE and Edge have over 5% traffic each and testing on these two browsers can optimize the experience for a lot of your users. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Tablets, too, perform well in Germany and contribute to around 4% of the traffic. Most of this is from Apple and Samsung tablets, so adding them to your test suite will improve coverage. &lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="india"&gt;India&lt;/h2&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pTXfOj6t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/India%402x-2.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in India"&gt;&lt;p&gt;Very few markets are as dynamic and as complex as India; as expected, fragmentation here is colossal. While the new devices and browsers are allowing millions of people to access the internet, testing across these devices becomes a nightmare. &lt;strong&gt;The Indian market is so fragmented that testing on the top 20 devices accounts for less than one-third of the user base. &lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Besides new and upcoming brands and models, there are established names like Samsung J series, Xiaomi Redmi series, as well as the multitude of Oppo and Vivo devices to test on. Android has a staggering 93% market share in India, and a new OS for affordable phones, KaiOS, beats iOS in terms of the traffic.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The same holds true for browsers. &lt;strong&gt;If your traffic comes from India, UC Browser and Opera must feature in your test suite. They account for over one-fourth of the traffic in mobile browsers. &lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A lot of first-time internet users in India leapfrogged desktops and are using mobile phones directly. Given this, and the fact that over 75% of traffic comes from phones in India, testing on mobile browsers is as important as desktop browsers. &lt;br&gt;&lt;/p&gt;
&lt;h2 id="australia"&gt;Australia&lt;/h2&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sa4bLHup--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/Australia%402x-1.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in Australia"&gt;&lt;p&gt;The fragmentation landscape in Australia is very similar to that in the US. A large bulk of the traffic comes from Apple and Samsung Galaxy devices, with Apple having around 57% market share. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;In terms of browsers, the must-test browsers are Chrome, Safari, Firefox, IE and Edge, each bringing more than 5% of the total traffic.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Australian market has over 8% traffic from tablets, one of the highest in the world.&lt;/strong&gt; If you have traffic from this region, testing on tablets is strongly recommended.&lt;br&gt;&lt;/p&gt;
&lt;h2 id="nigeria"&gt;Nigeria&lt;/h2&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZPopayL2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/Nigeria%402x-1.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in Nigeria"&gt;&lt;p&gt;&lt;strong&gt;Much like Asia, the African continent is also a highly fragmented market.&lt;/strong&gt; Mobile forms more than 70% share of the traffic and Android devices own 76% of the market. Interestingly, Windows phones have a larger market share in Nigeria than any other country. However, in the larger picture, it is only about 1% of the traffic.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Here, too, testing on the top 20 devices will give you less than 40% coverage. &lt;strong&gt;In addition, you will have to test on unique phones such as the Tecno Spark and Infinix Hot series of devices.&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The most interesting behavior is exhibited in terms of mobile browsers. In Nigeria,&lt;strong&gt; Opera leads the market, surpassing even Chrome and Safari.&lt;/strong&gt; This is primarily because Opera helps users in saving data costs. Chrome is catching up fast, but Opera still leads the market. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;For desktop browsers, Chrome, Safari, and Firefox lead traffic. &lt;br&gt;&lt;/p&gt;
&lt;h2 id="brazil"&gt;Brazil&lt;/h2&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AxWa6Ii5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/Brazil%402x-1.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in Brazil"&gt;&lt;p&gt;&lt;br&gt;The extent of fragmentation in the Brazilian market is high, thanks to a higher market share of Android devices (around 75%). Here, too, the devices you need to test on are different from the other parts of the world. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Smartphone penetration  is less than 50% in Brazil and new users prefer affordable smartphones. &lt;strong&gt;Therefore,&lt;/strong&gt; &lt;strong&gt;Samsung J series and Motorola G series devices rule the market, along with a few old-generation iPhones.&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interestingly, over 70% of internet traffic in Brazil comes from desktops.&lt;/strong&gt; While this is declining, it will be a while before the scales tip. Testing for desktop browsers thoroughly is a must for this market. Even though Chrome owns more than 80% of this space, testing on Firefox, IE, Opera, and Safari shouldn’t be missed.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Russia&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q6X2Y5Xx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/12/Russia%402x-1.png" class="kg-image" alt="Fragmentation in OS, browsers, and devices in Russia"&gt;&lt;p&gt;Russia is also a highly fragmented market with the top 20 devices giving just over 45% coverage. The key devices you need to test on are older iPhones, Samsung J and A series, and Xiaomi Redmi series devices.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;In terms of browsers, &lt;strong&gt;Yandex is the 2nd most popular browser in Russia and testing on it is a must if you have Russian customers.&lt;/strong&gt; Opera also garners over 5% of Russian traffic and should ideally be a part of the test suite.&lt;br&gt;&lt;/p&gt;
&lt;h2 id="being-prepared"&gt;Being prepared&lt;br&gt;
&lt;/h2&gt;
&lt;p&gt;Every country has its own set of differences in terms of the devices or browsers that people use to access the internet. The best way to prepare is to be cognizant of the differences that exist and account for them while building your test suite.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;These differences might seem daunting at first, but looking at them together for your entire traffic will make decisions much easier. You can never test on all devices, but by knowing the key trends across the globe, you can minimize a huge portion of risk by testing for those variables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended reading&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://browserstack.com/blog/cross-browser-testing-for-compatibility/?utm_source=referral&amp;amp;utm_medium=dev.to&amp;amp;utm_campaign=fragmentation"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3av9bKQG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2020/02/Blog-Banner%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>softwaretesting</category>
      <category>compatibility</category>
      <category>fragmentation</category>
    </item>
    <item>
      <title>Open Source Spotlight: Sulu with Daniel Rotter</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Tue, 03 Dec 2019 07:48:44 +0000</pubDate>
      <link>https://dev.to/arnav1712/open-source-spotlight-sulu-with-daniel-rotter-4e41</link>
      <guid>https://dev.to/arnav1712/open-source-spotlight-sulu-with-daniel-rotter-4e41</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HBsBh4p5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/11/Open-Source_sulu%401x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HBsBh4p5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/11/Open-Source_sulu%401x.png" class="kg-image" alt="Daniel Rotter, creator of Sulu—the Symfony CMS"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Featured in this edition of Spotlight is Daniel Rotter (a.k.a. danrot), creator of Sulu—the Symfony CMS. Sulu helps content teams deliver complex sites and great user experiences.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Daniel is a former lecturer who now lives in Altach, Austria. He is an active member of the local developer community, and organizes local meetups and conferences.&lt;/strong&gt;&lt;/p&gt;

&lt;h3 id="whatseededtheideaforsulu"&gt;What seeded the idea for Sulu?&lt;/h3&gt;

&lt;p&gt;While using Symfony for our projects at work, we realized there was no CMS completely based on the Symfony framework. This complete lack of options gave us the assurance that a potential market existed.&lt;/p&gt;
&lt;p&gt;We decided to make the new CMS easy for anyone to use and provide clear documentation. &lt;/p&gt;
&lt;p&gt;Our years of experience from developing client projects at MASSIVE ART gave us a head start. Today, we can say that Sulu is a success—proven by the many developers using Sulu worldwide. &lt;/p&gt;

&lt;h3 id="whatdoyouhaveinmindfortheshorttermandlongtermfutureofsulu"&gt;What do you have in mind for the short-term and long-term future of Sulu?&lt;/h3&gt;
&lt;p&gt;We released Sulu 2.0 very recently. We switched our complete frontend stack of administration from jQuery, AuraJS and Backbone to a modern React application. &lt;/p&gt;
&lt;p&gt;We put a lot of effort into this, and now we have a full-blown data management solution which isn't restricted to CMS. Backend developers can build custom entities with business logic, and can configure afterwards how the administration interface should look like on the server side. &lt;/p&gt;
&lt;p&gt;That's based on a lesson we learnt from the Sulu 1.x series, which was that backend developers don't like to touch any frontend code at all. This meant users didn't get the most out of their Sulu installations, because they tried to avoid creating their own entities (allowing them to be edited meant they had to write JavaScript code).&lt;/p&gt;
&lt;p&gt;In the short-term, we are trying to fix bugs that might have appeared in Sulu 2.0, although it already feels stable because we used it in quite a few projects internally before release. Then, we will add a few more content-related features, like allowing users to nest content blocks in forms.&lt;/p&gt;
&lt;p&gt;Long-term, we already have a few plans on what we want to do in the 3.0 release, which will be mainly about server-side, since we've put a lot of effort in the frontend part in Sulu 2.0. We think it makes sense—for a project of our size—to concentrate on only one end for each major release. &lt;/p&gt;
&lt;p&gt;In 3.0, we want to improve a lot of our content storage mechanisms, and try to apply more Domain Driven Design principles in the general architecture of our server-side code.&lt;/p&gt;


&lt;h3 id="howwouldyoudescribeyourproblemsolvingprocess"&gt;How would you describe your problem-solving process?&lt;/h3&gt;
&lt;p&gt;Usually, I try to get a good understanding of the problem and split it into smaller sub-problems. &lt;/p&gt;
&lt;p&gt;These sub-problems are easier to fix. Once I have solved one of them, I will commit my code, so I can start with a fresh mind again. This way, I know that everything I have done so far works as intended, and I don't have to keep track of all the changes that are not committed yet. &lt;/p&gt;
&lt;p&gt;Having a lot of uncommitted changes in git is something that clutters my mind, which might be related to me being a minimalist (which is probably why I use software like ArchLinux and Neovim).&lt;br&gt;&lt;/p&gt;

&lt;h3 id="whatistheonethingnewdevelopersneedtolearn"&gt;What is the one thing new developers need to learn?&lt;/h3&gt;
&lt;p&gt;In my opinion, the most important thing is to not only know the different concepts, but to know when it's the best time to apply them. &lt;/p&gt;
&lt;p&gt;At Sulu, we always have to distinguish between our core product and client projects with different priorities. In client projects, it is more important to meet deadline and budget criteria, while on our product it is more important to deliver quality (otherwise it will cause you headaches for years). &lt;/p&gt;
&lt;p&gt;For our product, it is also very important to have a lot of extension points, because people want to integrate their own functionality without touching your code. This is not a real requirement in a client project, since you are in full control of your entire code anyway. You usually don't need your code to be extensible, because if needed you can just change the code itself. This will result in easier understanding of the code.&lt;br&gt;&lt;/p&gt;

&lt;h3 id="whatweresomeobstaclesyoufacedwhilecodingforsulu"&gt;What were some obstacles you faced while coding for Sulu?&lt;/h3&gt;
&lt;p&gt;I think developing Sulu 2.0 was one of the biggest obstacles I've faced so far. The problem was that we had no choice but to replace the full frontend stack. &lt;/p&gt;
&lt;p&gt;In a client project, I would have decided to start by using the new framework—in our case, React—in just a few places, and try to convert other parts over time. However, this does not work for an open source project. If we had released a new version of our CMS, where you would need to use two different frontend stacks to extend anything, then I'm sure this would be a very negative argument in every technical evaluation. &lt;/p&gt;
&lt;p&gt;So, we decided to go for the full rewrite, and of course it took us longer than we anticipated. However, I am really happy with the final result, and I am glad that we chose that path.&lt;br&gt;&lt;/p&gt;

&lt;h3 id="howimportantistestingforyourprojectwhattoolsdoyouusetotest"&gt;How important is testing for your project? What tools do you use to test?&lt;/h3&gt;
&lt;p&gt;Testing has a very high priority in our project. &lt;/p&gt;
&lt;p&gt;We use all kind of automated testing tools, like &lt;a rel="nofollow" href="https://phpunit.de/" title="PHPUnit"&gt;PHPUnit&lt;/a&gt; and &lt;a rel="nofollow" href="https://jestjs.io/" title="Jest"&gt;Jest&lt;/a&gt; for all kinds of automated tests. We use static code analyzers like &lt;a rel="nofollow" href="https://github.com/phpstan/phpstan" title="PHPStan"&gt;PHPStan&lt;/a&gt; and &lt;a rel="nofollow" href="https://flow.org/" title="Flow"&gt;Flow&lt;/a&gt; to avoid errors early. We use linters like &lt;a rel="nofollow" href="https://eslint.org/" title="ESLint"&gt;ESLint&lt;/a&gt; to catch a lot of errors that are easily overseen by a human in a code review.&lt;/p&gt;

&lt;p&gt;This results in shorter review cycles, because a lot of errors, namely code smells, are already solved before a reviewer gets to look at the code. And shorter review cycles also result in a shorter time-to-market.&lt;/p&gt;
&lt;p&gt;Since we do a lot of JavaScript development, it is also important to test our application on different browsers. BrowserStack is our tool of choice here, because it is a lot easier than handling loads of virtual machines containing the browsers you need on your own.&lt;/p&gt;


&lt;h3 id="whatdoyouthinkisthebestwayfordeveloperstonetworkwhatsocialmedianetworksdoyoufrequent"&gt;What do you think is the best way for developers to network? What social media networks do you frequent?&lt;/h3&gt;
&lt;p&gt;My absolute favourite way to network is through real-world events (meet-ups and conferences). It is a lot nicer to get in contact with people in person, rather than over the internet. Nevertheless, I still get my quota of technical news from the people I follow on Twitter. It feels to me like most developers are active on Twitter, but not so much on Facebook, LinkedIn, or the like.&lt;br&gt;&lt;/p&gt;

&lt;h3 id="whatdoyouwishmorepeoplewouldaskyouabout"&gt;What do you wish more people would ask you about?&lt;/h3&gt;
&lt;p&gt;That's an interesting question. I think I would love to talk to more people about our Sulu 2.0 release, because that's something I am really excited about. Otherwise, I don't care a lot about what people ask me, I am glad if I can be of any help to anybody :-)&lt;br&gt;&lt;/p&gt;

&lt;h3 id="whatareyourproductivityhacks"&gt;What are your productivity hacks?&lt;/h3&gt;
&lt;p&gt;Keep it minimal! I love doing stuff on the console, including using Neovim. I feel a lot faster on the console than clicking through dialogs. &lt;/p&gt;
&lt;p&gt;Also, splitting a problem into smaller problems is a technique I love, because it is easier to get into my desirable flow state where I am undistracted.&lt;/p&gt;


&lt;p&gt;&lt;a rel="nofollow" href="https://www.browserstack.com/blog/tag/open-source-spotlight/" title="More from Browserstack's OpenSource Spotlight"&gt;&lt;em&gt;Check out More like this on Browserstack's OpenSource Spotlight&lt;/em&gt;.&lt;/a&gt;&lt;/p&gt;
                

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>cms</category>
      <category>sulu</category>
    </item>
    <item>
      <title>What is Fragmentation?</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Wed, 13 Nov 2019 13:28:50 +0000</pubDate>
      <link>https://dev.to/arnav1712/what-is-fragmentation-32ef</link>
      <guid>https://dev.to/arnav1712/what-is-fragmentation-32ef</guid>
      <description>&lt;p&gt;&lt;a href="https://bit.ly/2X9HKHL"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zPxcakKy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2019/11/Infographic_Fragmentation-01--2-.png" class="kg-image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you've seen the extent of fragmentation in devices, platforms, browsers, and screen resolutions, learn how to take them into account while creating your own cross-device test strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended reading&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://browserstack.com/blog/cross-browser-testing-for-compatibility/?utm_source=referral&amp;amp;utm_medium=dev.to&amp;amp;utm_campaign=fragmentation"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3av9bKQG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.browserstack.com/blog/content/images/2020/02/Blog-Banner%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devicefragmentation</category>
      <category>fragmentationinos</category>
      <category>testing</category>
      <category>softwaretesting</category>
    </item>
    <item>
      <title>Testing for Fragmentation: Understanding Browser, OS and Device Fragmentation</title>
      <dc:creator>Arnav Mahajan</dc:creator>
      <pubDate>Wed, 30 Oct 2019 08:03:25 +0000</pubDate>
      <link>https://dev.to/arnav1712/testing-for-fragmentation-understanding-browser-and-device-fragmentation-3bfh</link>
      <guid>https://dev.to/arnav1712/testing-for-fragmentation-understanding-browser-and-device-fragmentation-3bfh</guid>
      <description>&lt;p&gt;“Testing for Fragmentation” is a blog series. It takes a look at the market data on devices, platforms, browsers, etc. in use today, how this diversity comes into play during software development and testing—and what 2 million+ developers on BrowserStack do to account for it.&lt;/p&gt;

&lt;p&gt;In this post, we’ll deconstruct fragmentation as it exists, and what that means for application quality.&lt;/p&gt;

&lt;p&gt;More than 4 billion people access the web through combinations of:&lt;/p&gt;

&lt;p&gt;9000+ distinct devices, shipped with&lt;br&gt;
21 different operating systems (vendor + version), along with&lt;br&gt;
8 major browser engines that power hundreds of browsers.&lt;br&gt;
Combined, they make at least 63,000 possible browser-platform-device combinations. And those are the ones we know of, at this time.&lt;/p&gt;

&lt;p&gt;That’s the scale of fragmentation.&lt;/p&gt;

&lt;p&gt;What exactly is fragmentation, really?&lt;br&gt;
The sum total of differences—between devices, platforms, browsers, variables like network providers and more.&lt;/p&gt;

&lt;p&gt;Why is fragmentation a problem?&lt;br&gt;
Because the differences between devices, platforms, browsers, and more cannot be abstracted by a single, universally interoperable framework.&lt;/p&gt;

&lt;p&gt;So when it comes to software development:&lt;/p&gt;

&lt;p&gt;“Fragmentation is the inability to "write once and run anywhere”.&lt;/p&gt;

&lt;p&gt;—Damith C. Rajapakse&lt;br&gt;
(Prof. of Software Engineering, National University of Singapore)&lt;br&gt;
Since your website or app can’t have universal interoperability on every possible combination of device, operating system, and browser in the market, you have to settle for its watered-down counterpart, compatibility.&lt;/p&gt;

&lt;p&gt;To achieve compatibility, you have to test every bit of code across browsers, platforms, and devices. Or you have to keep your developers busy with an endless barrage of cross-browser and cross-platform bugs that creep into the builds (or worse, production).&lt;/p&gt;

&lt;p&gt;So we do compatibility testing?&lt;/p&gt;

&lt;p&gt;Early and continuously, because the market evolves fast. The browsers, platforms, and devices your application works on today will lose their market share with each new:&lt;/p&gt;

&lt;p&gt;Platform update: macOS pushes platform updates once a year. Windows 10 editions hit the market sporadically.&lt;br&gt;
Browser update: Chrome releases major browser updates every six weeks or so.&lt;br&gt;
Device launch: Number of devices in the market grows by 20%, every year. Some of them will be used by your customers to access your site.&lt;br&gt;
Which combinations do I test on?&lt;/p&gt;

&lt;p&gt;For an existing website or app, you’ll start with analytics. But that’ll give you an implicitly biased answer. Your website/app only gets traffic from devices/platforms and browsers it supports in the first place.&lt;/p&gt;

&lt;p&gt;To figure out the variety of combinations of devices/platforms and browsers you must support (to keep the lights on at work, or expand your reach).&lt;/p&gt;

&lt;p&gt;“Since it is the diversity that drives fragmentation, a closer look at diversity may provide us with clues as to how to deal with fragmentation.”&lt;/p&gt;

&lt;p&gt;—Damith C. Rajapakse&lt;br&gt;
In that spirit, here is a look at the depth of fragmentation—in devices, platforms, browsers, and screen resolutions. These are the first four components you’ll account for during your development and testing.&lt;/p&gt;

&lt;p&gt;Device type&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FDevice-Type%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FDevice-Type%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In 2019, global web traffic is split cleanly between mobile, desktop, and tablet.&lt;/p&gt;

&lt;p&gt;No surprises there. But even if your website’s (or app’s) traffic patterns don’t match this split, the graph is still relevant. That’s because it quantifies a behavioral shift: The Mobile Tipping Point.&lt;/p&gt;

&lt;p&gt;“The Mobile Tipping Point is the point at which consumers spend longer online per day on their mobiles than all other devices combined.”&lt;br&gt;
An average person on the internet spends about ~7 hours online—split equally between desktop and mobile. And so you have to test on both desktop and mobile.&lt;/p&gt;

&lt;p&gt;Is that enough? Not really. You see, there’s a multiplier effect. Fragmentation becomes a bigger problem not just with every new mobile or desktop device—but also with the operating system they come equipped with. And fragmentation within operating systems is staggering.&lt;/p&gt;

&lt;p&gt;Operating system (OS)&lt;/p&gt;

&lt;p&gt;We would split the operating system fragmentation by device type. But in web development, desktop OS will be of concern when you’re looking at how many browsers a desktop platform supports. So let’s jump directly to the bigger problem, that of mobile OS fragmentation.&lt;/p&gt;

&lt;p&gt;To understand this, we’ll have to start with mobile device manufacturers.&lt;/p&gt;

&lt;p&gt;There are 6 mobile device vendors with a global market share of ~77%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FDevice-Manufacturers%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FDevice-Manufacturers%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This graph will look very different for your traffic, or when filtered by countries. However, in most countries, you’ll notice a common thread: Android-powered smartphones are gaining the upper hand over Apple iPhones.&lt;/p&gt;

&lt;p&gt;At the time of writing this, 40% of all web traffic comes from devices powered by Android.&lt;/p&gt;

&lt;p&gt;That’s 1.7 billion online users across the world. That wouldn't be a huge deal, if the Android fragmentation weren't a triple-layered problem:&lt;/p&gt;

&lt;p&gt;There are 6 different stock Android (the core open-source platform) versions in the market:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;There are 6 different stock Android (the core open-source platform) versions in the market:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FAndroid-OS-Version%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FAndroid-OS-Version%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stock Android—all 6 versions of it—only powers Google Pixel (and some LG) smartphones. Most device manufacturers create custom platforms out of stock Android for their devices.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the moment, some of the more recognizable Android-based operating systems are:&lt;/p&gt;

&lt;p&gt;One UI by Samsung (for Galaxy series)&lt;br&gt;
OxygenOS by One Plus&lt;br&gt;
MIUI by Xiaomi (a popular smartphone manufacturer in APAC)&lt;br&gt;
Huawei EMUI&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manufacturers who power their devices with Android-based operating systems don’t update them consistently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So at any given point in time, an Android app that wants to be globally accessible has to maintain compatibility with:&lt;/p&gt;

&lt;p&gt;4-5 different versions of core Android, along with&lt;br&gt;
8-10 custom-Android implementations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FiOS-Versions%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FiOS-Versions%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Compared to iOS, where your app has to be compatible with 2 major iOS versions in a given year, accounting for fragmentation on Android is difficult.&lt;/p&gt;

&lt;p&gt;The two factors—device and operating systems—are important when we speak of native applications. For the web, you have to throw browsers into the mix.&lt;/p&gt;

&lt;p&gt;Browser&lt;/p&gt;

&lt;p&gt;There are 6 dominant browser families in the world. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FBrowsers%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FBrowsers%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The W3C (World Wide Web Consortium) laid out a set of standards in an attempt to ‘homogenize’ how browsers render pages. So why does your web app not render the same across them all?&lt;/p&gt;

&lt;p&gt;They have different rendering engines. Safari and Opera are built on WebKit, but Chrome uses Blink, Firefox uses Gecko, and so on. These affect what your web pages look like on the client-side (to the users).&lt;br&gt;
Browser vendors don’t really implement W3C standards in the exact same way.  Imagine a race: W3C laid out the track and set the rules, but browsers get to the finish line by finding their own shortcuts.&lt;/p&gt;

&lt;p&gt;And so it falls on developers to test across browsers. But nailing the right ones is difficult. Consider the chart below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FBrowsers2%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FBrowsers2%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two key takeaways from this data:&lt;/p&gt;

&lt;p&gt;Each browser family has multiple versions in the market, and these versions have their own (significant) market shares. Just look at Chrome and Safari.&lt;br&gt;
A browser version will behave differently on desktop and mobile.&lt;br&gt;
For instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome 76 on desktop vs Android. HTTP Live Streaming (HLS) works on all versions of Chrome for Android, but not on Chrome for desktop.&lt;/li&gt;
&lt;li&gt;Any version of Safari on macOS vs iOS. PNG favicons work perfectly on all versions of Safari on macOS, but not on any version of Safari for iOS.
Now that you have context on browsers, platforms, and device types, here’s the final piece of the ideal coverage puzzle, particularly for web developers across the world.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Screen resolution&lt;br&gt;
Here are the most popular screen resolutions across the world:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FResolution%402x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2019%2F10%2FResolution%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To cover 80% of the global online traffic, you will need to test on 10 different screen resolutions.&lt;/p&gt;

&lt;p&gt;Takeaway&lt;br&gt;
For 70-80% global coverage, your website/app needs to be work across:&lt;/p&gt;

&lt;p&gt;3 device types—mobile, desktop, and tablet&lt;br&gt;
2 iOS versions&lt;br&gt;
5 stock Android versions&lt;br&gt;
8-10 custom implementations of stock Android versions&lt;br&gt;
6 browser families&lt;br&gt;
Popular browser versions within each browser family&lt;br&gt;
10 screen resolutions&lt;br&gt;
If you multiply them, and leave room for healthy skepticism (not all browsers work on all operating systems), the number of possible combinations racks up to—pretty discouraging.&lt;/p&gt;

&lt;p&gt;And testing on them all will give you 80% global coverage for a brief few weeks.&lt;/p&gt;

&lt;p&gt;As you’re reading this, the market is evolving. Within the month, Chrome 77’s market share will increase. More Android smartphone manufacturers will have released platform updates and moved to a Pie-based implementation. iOS 13 jumped from 5% to 50% market share while we were writing this post.&lt;/p&gt;

&lt;p&gt;The only way to keep up with this market is through early, continuous compatibility testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended reading&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://browserstack.com/blog/cross-browser-testing-for-compatibility/?utm_source=referral&amp;amp;utm_medium=dev.to&amp;amp;utm_campaign=fragmentation"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.browserstack.com%2Fblog%2Fcontent%2Fimages%2F2020%2F02%2FBlog-Banner%402x.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;github.com/damithc, Damith C. Rajapakse, professor of Software Engineering at National University of Singapore.&lt;/li&gt;
&lt;li&gt;blog.globalwebindex.com, Device landscape.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.thenextweb.com" rel="noopener noreferrer"&gt;www.thenextweb.com&lt;/a&gt;, Android Phone brands ranked by update frequency.&lt;/li&gt;
&lt;li&gt;Statcounter.com, Deviceatlas.com; Global device, platform, browser, and screen resolution data.&lt;/li&gt;
&lt;li&gt;Statista.com, Number of users online in 2019.&lt;/li&gt;
&lt;li&gt;CanIuse.com, Browser version market share.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post was originally post on: &lt;a href="https://www.browserstack.com/blog/testing-for-fragmentation-understanding-browser-and-device-fragmentation/" rel="noopener noreferrer"&gt;https://www.browserstack.com/blog/testing-for-fragmentation-understanding-browser-and-device-fragmentation/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>automatedtesting</category>
      <category>devicefragmentation</category>
      <category>fragmentationinos</category>
    </item>
  </channel>
</rss>
