{"id":16352,"date":"2019-10-22T19:11:43","date_gmt":"2019-10-22T19:11:43","guid":{"rendered":"https:\/\/applitools.com\/blog\/?p=6352"},"modified":"2022-03-22T09:00:45","modified_gmt":"2022-03-22T16:00:45","slug":"functional-test-myopia","status":"publish","type":"post","link":"https:\/\/applitools.com\/blog\/functional-test-myopia\/","title":{"rendered":"Functional Test Myopia"},"content":{"rendered":"<p>Myopia means nearsightedness. If you write functional tests, you likely suffer from functional test myopia. You focus on your expected outcome and your test coverage. But you miss the big picture.<\/p>\n<p>We all know the joke about one night with a guy on his knees under a streetlamp. As he\u2019s fumbling around, a passerby notices him.<\/p>\n<p>\u201cSir,\u201d says the passerby, \u201cWhat are you doing down there?\u201d<\/p>\n<p>\u201cI\u2019m looking for my wallet,\u201d replies the guy.<\/p>\n<p>\u201cWhere did you lose it?\u201d asks the passerby.<\/p>\n<p>\u201cDown there, I think,\u201d says the guy, pointing to a place down the darkened street.<\/p>\n<p>\u201cWhy are you looking here, then?\u201d wonders the passerby.<\/p>\n<p>\u201cAh,\u201d says the guy, \u201cI can see here.\u201d<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6347 aligncenter\" src=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/1-x59cvjb_mojtouxmkbihsq.jpeg\" alt=\"1 x59cvjb mojtouxmkbihsq\" \/><\/p>\n<p style=\"text-align: center;\">Source: <a href=\"http:\/\/first-the-trousers.com\/hello-world\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/first-the-trousers.com\/hello-world\/<\/a><\/p>\n<p>This is the case for <a href=\"https:\/\/applitools.com\/functional-testing\/\">functional testing<\/a> of your web app. You test what you expect to see. But your functional tests can\u2019t see beyond their code to the daylight of the rendered browser.<\/p>\n<h2 id=\"h.fvzcrd5745at\">What Are Your Goals For Web App Testing?<\/h2>\n<p>Let me start by asking you &#8211; what goals do you set for your web app testing?<\/p>\n<p>Have you ever wondered, if you\u2019re building a web app, why do you bother using a browser to test the app? If you\u2019re testing whether the app responds correctly to inputs and selectors, why not test using <a href=\"https:\/\/en.wikipedia.org\/wiki\/CURL\" target=\"_blank\" rel=\"noopener noreferrer\">curl<\/a>\u00a0or a text-based browser like <a href=\"https:\/\/www.vice.com\/en_us\/article\/qvmpk3\/browsh-modern-text-only-web-browser\" target=\"_blank\" rel=\"noopener noreferrer\">Browsh<\/a>?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6356 aligncenter\" src=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/giphy.gif\" alt=\"\" width=\"480\" height=\"296\" \/><\/p>\n<p>I\u2019m being ironic. You know that the browser renders your app, and you want to make sure your app renders correctly.<\/p>\n<p>But think about it: a text-based browser that converts web pages into something out of Minecraft will still pass a functional test &#8212; even if those pages are not rendered properly. That shows how limited traditional functional testing tools are.<\/p>\n<p>I ask this question not to trip you up, but to help clarify your expectations.<\/p>\n<p>In my experience, functional testers look for proper functionality for proper data input, handling data input exception cases, handling workflow exceptions, and handling server exceptions.<\/p>\n<p>Whatever your goals, when you test your applications, you expect to see the application behave as expected when handling both normal and exception cases. You hope to cover as much of the app code as possible, and you want to validate that the app works as designed.<\/p>\n<h2 id=\"h.difp6kmt69yb\">Why Functional Test Automation can fail<\/h2>\n<p>Functional testing myopia results from the code-based nature of functional testing. \u00a0To drive web app activity, most engineers use appropriate technology, such as <a href=\"https:\/\/www.seleniumhq.org\/projects\/webdriver\/\" target=\"_blank\" rel=\"noopener noreferrer\">Selenium WebDriver<\/a>. Selenium suits this need quite well. Other tools, like <a href=\"https:\/\/www.cypress.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Cypress<\/a>, can drive the application.<\/p>\n<p>Similarly, a code-based tool evaluates the application response in HTML. <a href=\"https:\/\/testng.org\/doc\/\" target=\"_blank\" rel=\"noopener noreferrer\">TestNG<\/a>, <a href=\"https:\/\/www.blazemeter.com\/blog\/how-to-run-a-selenium-test-with-junit\/\" target=\"_blank\" rel=\"noopener noreferrer\">JUnit<\/a>, Cypress, or some other tool inspects the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Document_Object_Model\" target=\"_blank\" rel=\"noopener noreferrer\">DOM<\/a>\u00a0for an exact or relative <a href=\"https:\/\/automationpanda.com\/2019\/01\/15\/web-element-locators-for-test-automation\/\" target=\"_blank\" rel=\"noopener noreferrer\">locator<\/a>\u00a0that matches the coder\u2019s intended response and validates that:<\/p>\n<ul>\n<li>The response text field exists<\/li>\n<li>The text in that field matches expectations<\/li>\n<\/ul>\n<p>Potentially, a functional test might validate the entire DOM for the response page resulting from a given test action. Practically, only the expected response gets checked.<\/p>\n<p>Just like the person on his or her knees under the streetlamp, functional testing validates the conditions the test can check. \u00a0And, herein lies myopia. Even if the code could validate the entire DOM response, the code cannot validate the rendered page. Functional testing tests pre-rendered code.<\/p>\n<p>The difference between functional test and user experience explains functional test myopia. Our best web browser automation code only checks for a tiny portion of page attributes and does not match the full visual experience that a human user has.<\/p>\n<p>Alone, functional tests miss things like:<\/p>\n<ul>\n<li>Overlapping text<\/li>\n<li>Overlapping action buttons<\/li>\n<li>Action buttons colored the same as the surrounding text<\/li>\n<li>User regions or action areas too small for a user to see them<\/li>\n<li>Invisible or off-page HTML elements that a user wouldn\u2019t see<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6349 aligncenter\" src=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/pasted-image-0-11.png\" alt=\"pasted image 0 11\" width=\"658\" height=\"299\" \/><\/p>\n<h2 id=\"h.be0n49s8tpj2\">How Do You Know Your App Renders Correctly?<\/h2>\n<p>Can you tell whether your application appears the way your customers expected or the way your designers intended? How do you validate app rendering?<\/p>\n<p>Many app developers leaned on manual testing for validation purposes. One of my good friends has made a career as a manual QA tester. His job &#8211; run an app through its paces as a real user might, and validate the app behavior.<\/p>\n<p>Manual testing can uncover visual bugs missed by functional test myopia. But manual testing suffers from three downsides:<\/p>\n<ul>\n<li>Speed &#8211; you might have several apps, with dozens of responsive pages to test on several screen sizes, with every daily build. Even if a tester can check a page thoroughly in a couple of minutes, those add up to delays in your release cycle.<\/li>\n<li>Evaluation Inconsistency &#8211; Manual testers can easily miss small issues that might affect users or indicate a problem<\/li>\n<li>Coverage Inconsistency &#8211; Test coverage by manual testers depends on their ability to follow steps and evaluate responses &#8211; which vary from tester to tester.<\/li>\n<\/ul>\n<p>Test engineers who consider automation for rendered applications seek the automation equivalent of manual testers.\u00a0They seek a tool that can inspect the visual output and make judgments on whether or not the rendered page matches expectations. They seek a <a href=\"https:\/\/applitools.com\/blog\/visual-testing\/\">visual testing<\/a> strategy that can help speed the testing process and validate visual behavior through visual test automation.<\/p>\n<p>Conversely, test engineers don\u2019t want a bot that doesn\u2019t care if web pages are rendered Minecraft-style by Browsh.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6350 aligncenter\" src=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/pasted-image-0-12.png\" alt=\"pasted image 0 12\" width=\"616\" height=\"411\" \/><\/p>\n<p style=\"text-align: center;\">Source: <a href=\"https:\/\/pxhere.com\/en\/photo\/536919\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/pxhere.com\/en\/photo\/536919<\/a><\/p>\n<h2 id=\"h.7s6sl5kkd7wu\">Legacy Visual Testing Technologies<\/h2>\n<p>Given the number of visual <em>development<\/em>\u00a0tools available, one might think that visual <em>testing<\/em> tools match the development tools in scope and availability. Unfortunately, no. While one can develop a single app to run on mobile native and desktop browsers, from screen sizes ranging from five-inch LCD to 4K display, the two most commonly-used visual testing technologies remain pixel diffing and DOM diffing. And they both have issues.<\/p>\n<p>DOM diff comparisons don\u2019t actually compare the visual output. DOM diffs:<\/p>\n<ul>\n<li>Identify web page regions through the DOM.<\/li>\n<li>Can expose changes in the layout when the regions differ<\/li>\n<li>Indicate potential differences when a given region indicates a content or CSS change<\/li>\n<li>Remain blind to a range of visual changes, such as different underlying content with the same identifier.<\/li>\n<\/ul>\n<p>Pixel diffing uses pixel comparisons to determine whether or not page content has changed. But pixel rendering can vary with the browser version, operating system, and graphics cards. Screen anti-aliasing settings and image rendering algorithms can result in pixel differences. While pixel diffs can identify valid visual differences they can also identify insignificant visual differences that a real user could not distinguish. As a result, pixel diffs suffer from false positives &#8211; reported differences that require you to investigate only to conclude they\u2019re not different. In other words, a waste of time.<\/p>\n<h2 id=\"h.jagzq2iwdasi\">AI and visual Testing<\/h2>\n<p>Over the past decade, visual testing advanced from stand-alone tools to integrated visual testing tools. Some of these tools can be obtained through open source. Others are commercial tools that leverage new technologies.<\/p>\n<p>The most promising approach uses computer vision technology &#8211; visual AI, the technology underlying Applitools Eyes &#8211; to distinguish visual changes between versions of a rendered page. Visual AI uses the same computer vision technology found in self-driving car development to replace pixel diffing.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6351 aligncenter\" src=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/pasted-image-0-13.jpg\" alt=\"pasted image 0 13\" width=\"879\" height=\"478\" \/><\/p>\n<p style=\"text-align: center;\">Source: <a href=\"https:\/\/www.teslarati.com\/wp-content\/uploads\/2017\/07\/Traffic-light-computer-vision-lvl5.jpg\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.teslarati.com\/wp-content\/uploads\/2017\/07\/Traffic-light-computer-vision-lvl5.jpg<\/a><\/p>\n<p>However, instead of comparing pixels, Visual AI perceives distinct visual elements &#8212; buttons, text fields, etc. &#8212; and can compare their presentation as a human might see them. As a result, Visual AI more closely \u201csees\u201d a web page with the same richness that a human user does. For this reason, Visual AI provides a much higher level of accuracy in test validation.<\/p>\n<p>Here\u2019s an example of Visual AI in action:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6346 aligncenter\" src=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/pasted-image-0-9.png\" alt=\"pasted image 0 9\" \/><\/p>\n<p>As a Visual AI tool, Applitools Eyes has been used by a large number of companies to add visual test automation to their web app testing. As a result, these companies have not only expanded beyond functional test myopia, but they now have the ability to rapidly accept or reject visual changes in their applications with visual validation workflow.<\/p>\n<h2 id=\"h.4m52j6r5lema\">Broaden Your Vision<\/h2>\n<p>Whether you code web apps or write test automation code, you want to find and fix issues as early as possible. Visual validation tools let you bring visual testing into your development process so that you can automate behavior and rendering testing earlier in your development process. \u00a0You can use visual validation to see what you\u2019re doing and what your customers will experience.<\/p>\n<p>Don\u2019t get stuck in functional test myopia.<\/p>\n<h2 id=\"h.a53twg5t3vyy\">For More Information<\/h2>\n<p>Get a <a href=\"http:\/\/www.applitools.com\/free?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=free-account&amp;utm_campaign=&amp;utm_subgroup=\">free Applitools account<\/a>.<\/p>\n<p><a href=\"https:\/\/applitools.com\/request-demo?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=request-a-demo&amp;utm_campaign=&amp;utm_subgroup=\">Request a demo<\/a> of Applitools Eyes.<\/p>\n<p>Check out <a href=\"https:\/\/applitools.com\/tutorials?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tutorial&amp;utm_campaign=&amp;utm_subgroup=\">the Applitools tutorials<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Functional testing myopia results from the code-based nature of functional testing. \u00a0How can you tell that your app appears the way your customers expect?<\/p>\n","protected":false},"author":77,"featured_media":16354,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12271],"tags":[12691,13489,12688,12690,12686,10262],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Functional Test Myopia - Automated Visual Testing | Applitools<\/title>\n<meta name=\"description\" content=\"Functional testing myopia results from the code-based nature of functional testing. \u00a0Can you tell that your app appears the way your customers expect?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Functional Test Myopia\" \/>\n<meta property=\"og:description\" content=\"Functional testing myopia results from the code-based nature of functional testing. \u00a0How can you tell that your app appears the way your customers expect?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\" \/>\n<meta property=\"og:site_name\" content=\"Automated Visual Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-22T19:11:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-22T16:00:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/shutterstock_1336539950-edited.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1590\" \/>\n\t<meta property=\"og:image:height\" content=\"1060\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Michael Battat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Battat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\"},\"author\":{\"name\":\"Michael Battat\",\"@id\":\"https:\/\/applitools.com\/#\/schema\/person\/b437278e58a40abd251bfb74ab7b8382\"},\"headline\":\"Functional Test Myopia\",\"datePublished\":\"2019-10-22T19:11:43+00:00\",\"dateModified\":\"2022-03-22T16:00:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\"},\"wordCount\":1433,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/applitools.com\/#organization\"},\"keywords\":[\"Developers\",\"Functional Test\",\"Technical Leaders\",\"Test Engineers\",\"Visual Testing Strategies\",\"Visual Testing Tools\"],\"articleSection\":[\"Getting Started\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/applitools.com\/blog\/functional-test-myopia\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\",\"url\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\",\"name\":\"Functional Test Myopia - Automated Visual Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/applitools.com\/#website\"},\"datePublished\":\"2019-10-22T19:11:43+00:00\",\"dateModified\":\"2022-03-22T16:00:45+00:00\",\"description\":\"Functional testing myopia results from the code-based nature of functional testing. \u00a0Can you tell that your app appears the way your customers expect?\",\"breadcrumb\":{\"@id\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/applitools.com\/blog\/functional-test-myopia\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/applitools.com\/blog\/functional-test-myopia\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/applitools.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started\",\"item\":\"https:\/\/applitools.com\/blog\/category\/getting-started\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Functional Test Myopia\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/applitools.com\/#website\",\"url\":\"https:\/\/applitools.com\/\",\"name\":\"Automated Visual Testing | Applitools\",\"description\":\"Applitools delivers the next generation of test automation powered by AI assisted computer vision technology known as Visual AI.\",\"publisher\":{\"@id\":\"https:\/\/applitools.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/applitools.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/applitools.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/applitools.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/applitools.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1\",\"contentUrl\":\"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/applitools.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/applitools.com\/#\/schema\/person\/b437278e58a40abd251bfb74ab7b8382\",\"name\":\"Michael Battat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/applitools.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b1216c259c20b8394687b91ff06f1af2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b1216c259c20b8394687b91ff06f1af2?s=96&d=mm&r=g\",\"caption\":\"Michael Battat\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/mdbattat\/\"],\"url\":\"https:\/\/applitools.com\/blog\/author\/michaelbattat\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Functional Test Myopia - Automated Visual Testing | Applitools","description":"Functional testing myopia results from the code-based nature of functional testing. \u00a0Can you tell that your app appears the way your customers expect?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/applitools.com\/blog\/functional-test-myopia\/","og_locale":"en_US","og_type":"article","og_title":"Functional Test Myopia","og_description":"Functional testing myopia results from the code-based nature of functional testing. \u00a0How can you tell that your app appears the way your customers expect?","og_url":"https:\/\/applitools.com\/blog\/functional-test-myopia\/","og_site_name":"Automated Visual Testing | Applitools","article_published_time":"2019-10-22T19:11:43+00:00","article_modified_time":"2022-03-22T16:00:45+00:00","og_image":[{"width":1590,"height":1060,"url":"https:\/\/applitools.com\/wp-content\/uploads\/2019\/10\/shutterstock_1336539950-edited.jpg","type":"image\/jpeg"}],"author":"Michael Battat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Michael Battat","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/applitools.com\/blog\/functional-test-myopia\/#article","isPartOf":{"@id":"https:\/\/applitools.com\/blog\/functional-test-myopia\/"},"author":{"name":"Michael Battat","@id":"https:\/\/applitools.com\/#\/schema\/person\/b437278e58a40abd251bfb74ab7b8382"},"headline":"Functional Test Myopia","datePublished":"2019-10-22T19:11:43+00:00","dateModified":"2022-03-22T16:00:45+00:00","mainEntityOfPage":{"@id":"https:\/\/applitools.com\/blog\/functional-test-myopia\/"},"wordCount":1433,"commentCount":0,"publisher":{"@id":"https:\/\/applitools.com\/#organization"},"keywords":["Developers","Functional Test","Technical Leaders","Test Engineers","Visual Testing Strategies","Visual Testing Tools"],"articleSection":["Getting Started"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/applitools.com\/blog\/functional-test-myopia\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/applitools.com\/blog\/functional-test-myopia\/","url":"https:\/\/applitools.com\/blog\/functional-test-myopia\/","name":"Functional Test Myopia - Automated Visual Testing | Applitools","isPartOf":{"@id":"https:\/\/applitools.com\/#website"},"datePublished":"2019-10-22T19:11:43+00:00","dateModified":"2022-03-22T16:00:45+00:00","description":"Functional testing myopia results from the code-based nature of functional testing. \u00a0Can you tell that your app appears the way your customers expect?","breadcrumb":{"@id":"https:\/\/applitools.com\/blog\/functional-test-myopia\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/applitools.com\/blog\/functional-test-myopia\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/applitools.com\/blog\/functional-test-myopia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/applitools.com\/"},{"@type":"ListItem","position":2,"name":"Getting Started","item":"https:\/\/applitools.com\/blog\/category\/getting-started\/"},{"@type":"ListItem","position":3,"name":"Functional Test Myopia"}]},{"@type":"WebSite","@id":"https:\/\/applitools.com\/#website","url":"https:\/\/applitools.com\/","name":"Automated Visual Testing | Applitools","description":"Applitools delivers the next generation of test automation powered by AI assisted computer vision technology known as Visual AI.","publisher":{"@id":"https:\/\/applitools.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/applitools.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/applitools.com\/#organization","name":"Applitools","url":"https:\/\/applitools.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/applitools.com\/#\/schema\/logo\/image\/","url":"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1","contentUrl":"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/applitools.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/applitools.com\/#\/schema\/person\/b437278e58a40abd251bfb74ab7b8382","name":"Michael Battat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/applitools.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b1216c259c20b8394687b91ff06f1af2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b1216c259c20b8394687b91ff06f1af2?s=96&d=mm&r=g","caption":"Michael Battat"},"sameAs":["https:\/\/www.linkedin.com\/in\/mdbattat\/"],"url":"https:\/\/applitools.com\/blog\/author\/michaelbattat\/"}]}},"_links":{"self":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/posts\/16352"}],"collection":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/users\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/comments?post=16352"}],"version-history":[{"count":5,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/posts\/16352\/revisions"}],"predecessor-version":[{"id":35677,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/posts\/16352\/revisions\/35677"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/media\/16354"}],"wp:attachment":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/media?parent=16352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/categories?post=16352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/tags?post=16352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}