{"id":16664,"date":"2019-11-22T19:36:50","date_gmt":"2019-11-22T19:36:50","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/blog\/?p=6664"},"modified":"2020-04-17T21:23:40","modified_gmt":"2020-04-17T21:23:40","slug":"testing-iframes-visual-ai","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/","title":{"rendered":"Testing iFrames With Visual AI"},"content":{"rendered":"<p>As you know, I\u2019m taking <a href=\"https:\/\/www.linkedin.com\/in\/rajaraodv\/\" target=\"_blank\" rel=\"noopener noreferrer\">Raja Rao\u2019s<\/a>\u00a0Test Automation University Course, <a href=\"https:\/\/testautomationu.applitools.com\/modern-functional-testing\/index.html\">Modern Functional Test Automation through Visual AI<\/a>. Today we\u2019ll discuss testing iFrames.<\/p>\n<p>In <a href=\"https:\/\/testautomationu.applitools.com\/modern-functional-testing\/chapter5.html\">Chapter 5<\/a>, Raja refers to iFrames as a necessary evil. Actually, they\u2019re really useful. \u00a0You likely know that you can use iFrames to embed lots of functionality into your page. If you don\u2019t know anything about iFrames, learn a little. There\u2019s <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/HTML\/Multimedia_and_embedding\/Other_embedding_technologies\" target=\"_blank\" rel=\"noopener noreferrer\">this page from the Mozilla Developer\u2019s Network<\/a>. Or, you can look into a company like Elfsight that provides <a href=\"https:\/\/elfsight.com\/iframe-widgets\/\" target=\"_blank\" rel=\"noopener noreferrer\">iFrame widgets<\/a>\u00a0you can install to add interactivity to a web page. \u00a0In some cases, you might use iFrames for <a href=\"https:\/\/www.bounteous.com\/insights\/2015\/10\/21\/google-analytics-iframes-form-submissions\/\" target=\"_blank\" rel=\"noopener noreferrer\">tracking and analytics<\/a>.<\/p>\n<p><!--more-->Actually, tracking and analytics make up many reasons why you might install iFrames. While they can look seamless on your app, they can call external functions &#8211; including third-party tracking tools. But, you can embed almost any functionality using iFrames.<\/p>\n<p>Like, say, a Google Map.<\/p>\n<h2>A Quick Google Map Example<\/h2>\n<p>The code to embed a Google Map is an iFrame:<\/p>\n<div class=\"oembed-gist\"><script src=\"https:\/\/gist.github.com\/batmi02\/4ef44418060732f9ec50705453986d3c.js\"><\/script><noscript>View the code on <a href=\"https:\/\/gist.github.com\/batmi02\/4ef44418060732f9ec50705453986d3c\">Gist<\/a>.<\/noscript><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6670 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.32.17-AM.png\" alt=\"\" width=\"597\" height=\"434\" \/><\/p>\n<p>Yup, this code will embed a Google Map of Alice Springs, Northern Territory, Australia. Someplace I\u2019ve always wanted to visit. I haven\u2019t made it, yet.<\/p>\n<p>You can use the tracking pieces to know where your customers go on your web app. In fact, some of these tracking iFrames are zero pixel iFrames, meaning they are invisible on your page. \u00a0The existence of zero pixel iFrames cannot be detected in your end-user and integration testing. They will exist in your DOM, but end users won\u2019t know about their existence.<\/p>\n<p>What matters, then, are the pages that include iFrames for extended functionality. \u00a0They are embedded in your web app &#8211; sometimes nested. How do you test an iFrame?<\/p>\n<h2 id=\"h.43wbxvga90fu\">Possible iFrame Errors<\/h2>\n<p>iFrames can be built to the size of the user\u2019s screen, or any subset of your app page. As I mentioned, some are one or zero pixels high. The challenge comes around building interactive iFrames.<\/p>\n<p>When you test iFrames designed for users interaction, the iFrame can behave as if is part of your app. Buttons and functionality inside the iFrame will need to be tested. \u00a0These iFrames have their own contents, buttons, and scrolling regions. \u00a0They have their own behaviors that need to be tested.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6663 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-10.34.55-AM.png\" alt=\"Screen Shot 2019 11 22 at 10.34.55 AM\" \/><\/p>\n<p>You will want to test the data and functionality in your iFrames. You will want to ensure that buttons behave as expected, scrolling regions scroll, and expected information gets presented to the user. These behaviors get complicated by how you define your iframe and ensure its boundaries. For some designs, the behavior works fine on a mobile device but gets lost on a desktop or laptop scree. In other designs, the mobile device behavior might not be acceptable.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6662 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-10.35.28-AM.png\" alt=\"Screen Shot 2019 11 22 at 10.35.28 AM\" \/><\/p>\n<p>In this example, Raja points out design considerations that your developers may not have considered when designing your app. The big problems occur with testing iframes sized smaller than their contents &#8211; which results in scroll bars on the iFrame to access all the content. Or not &#8211; some iFrame implementations are fixed with no scroll bars. How do you test the iFrame?<\/p>\n<h2 id=\"h.1re21qjxszh5\">Testing iFrames with Selenium<\/h2>\n<p>Raja imagines a test of a table in a nested iFrame. As the page is resized, the top-level iFrame resizes, and the content in the nested iFrame gets hidden. Depending on the design approach, this hidden data may not become visible unless the user scrolls the data manually. And, in some cases, there may not be scroll bars &#8211; meaning a user must manually resize the page to see the data.<\/p>\n<p>Raja walks into the legacy approach to testing iFrames &#8211; using Selenium to apply a test behavior and then measure the response of the page. There are several complications he exposes.<\/p>\n<h3>Nested iFrame Navigation<\/h3>\n<p>The first is the challenge of navigating iFrames &#8211; especially if you have nested them. Each time you navigate in an iFrame, you must change the context of the iFrame you\u2019re inspecting. You have to remember your context. And, you have to extract your context to go back to the page outside the iFrame.<\/p>\n<p>In the code that follows, Raja shows the redudnant code you need to add to navigate the different nested iFrames. First, you go to the main page context. Next, you go to the top iFrame. Finally, you select one of the four embedded iFrames. Now, you can begin your tests.<\/p>\n<div class=\"oembed-gist\"><script src=\"https:\/\/gist.github.com\/batmi02\/68aaa1ea8569c8c0b005f127f4aaad9f.js\"><\/script><noscript>View the code on <a href=\"https:\/\/gist.github.com\/batmi02\/68aaa1ea8569c8c0b005f127f4aaad9f\">Gist<\/a>.<\/noscript><\/div>\n<p>Here is a highlight of the code used to change context:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6660\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-10.55.14-AM.png\" alt=\"Screen Shot 2019 11 22 at 10.55.14 AM\" \/><\/p>\n<p>This is a lot of redundant code needed to navigate around to each iFrame.<\/p>\n<h3>Hidden Content<\/h3>\n<p>Another complication involves the hidden parts of frames. When pages resize and frame content gets hidden, the user may not know the content exists, or its values.. Hidden content can create problems in testing, because the test may not uncover the error.<\/p>\n<p>And, thus, the issue of scroll bars. If a scroll bar does not exist, can the user see data that does not show up on the page? How does a tester use an automated tool to expose this behavior?<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"h.i218cldkb6i0\">Selenium Testing iFrame Application Versions<\/h2>\n<p>Selenium can accomplish iFrame resizing and scrolling, but the efforts to do these tasks depend very much on the test engineer. Also, there are dependencies on the version of the application itself. But, validation and assertion technologies limit traditional functional test approaches.<\/p>\n<p>For example, a tester may get a version of the app with scroll bars in a nested iFrame. The engineer might choose not to exercise the scroll bars, and leave that task to the user later. Instead of testing the existence of scroll bars, the tester might simply use text locators to validate that the content exists in the DOM.<\/p>\n<p>If a later version of the app leaves out the scroll bars, then the locators still find the appropriate content, but the user has a much more difficult time accessing the content.\u00a0 Depending on how you structure your Selenium tests, you might miss this change and pass the test. In fact, all functional testing that uses DOM checking will generally miss the user problem this type of issue poses.<\/p>\n<p>Also, things like nested iFrames cause context problems for both applying an action and asserting an outcome. \u00a0Each time a sub iFrame requires an action, Selenium must first switch context to the main iFrame, then the sub iFrame in question.<\/p>\n<p>Raja describes these types of issues with iFrames as generally problematic for legacy functional tests.<\/p>\n<h2 id=\"h.wugaut5sdmmg\">Testing iFrames with Visual AI<\/h2>\n<p>Because Visual AI uses image comparison to determine the rendered output, the existence of scroll bars does not require any kind of action or assertion. \u00a0Instead, if the scroll bars are otherwise invisible, selecting the iFrame should highlight the scroll bars.<\/p>\n<p>In fact, much of iFrame testing with visual AI simply requires taking an action, and then a snapshot of the page. Scroll bars, iFrame contents, and iFrame formatting all can be checked by taking an action along with a snapshot.<\/p>\n<p>Here is a picture of the code from the course.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6661\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-10.56.51-AM.png\" alt=\"Screen Shot 2019 11 22 at 10.56.51 AM\" \/><\/p>\n<p>Complicated assertions become simple implementations of:<\/p>\n<p>eyes.checkWindow(\u201ciFrame\u201d);<\/p>\n<p>Subsequent tests of iFrames can compare visual behavior of the page with its predecessors. Visual AI captures missing scroll bars and other changes in iFrame contents, format, and behavior. You can approve intended behavior changes with a \u201cThumbs-up\u201d, andy can call out unintended behavior changes (like missing scroll bars and hidden data) with a \u201cThumbs-down\u201d and a snapshot of both the behavior and the related code.<\/p>\n<p>Because visual assertions replace calls to locators, test engineers have an easier time writing and maintaining test code.<\/p>\n<h2 id=\"h.59m1pkbckwmt\">Conclusion<\/h2>\n<p>This chapter makes the point that, once again, tasks that can make the life of a test engineer exceedingly difficult with legacy functional tests turn into simple problems for Visual AI. \u00a0In this case, you don\u2019t have to instrument every iFrame behavior. Simply use Visual AI and let the visual differences guide your testing.<\/p>\n<p>In all honesty, your mileage may vary with this chapter. I know that some applications make heavy use of iFrames for user interaction, while others only depend on iFrames for user tracking. So, depending on the technology you deploy in your applications, you may or may not benefit from this particular value of Visual AI. But, the point Raja makes is that this is yet another task made easier with Visual AI.<\/p>\n<h2 id=\"h.e0n3pljfw8o9\">For More Information<\/h2>\n<ul>\n<li>Sign up for<a href=\"https:\/\/testautomationu.applitools.com\/login.html?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tau&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0<\/a><a href=\"https:\/\/testautomationu.applitools.com\/login.html?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tau&amp;utm_campaign=&amp;utm_subgroup=\">Test Automation University<\/a><\/li>\n<li>Read all about<a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-test-myopia?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=blog&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0Functional Test Myopia<\/a><\/li>\n<li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/modern-functional-testing?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=blog&amp;utm_campaign=&amp;utm_subgroup=\">Modernize Your Functional Testing<\/a>&#8211; Chapter 1 of Raja\u2019s course.<\/li>\n<li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/advanced-tools-for-testing-tables?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=blog&amp;utm_campaign=&amp;utm_subgroup=\">Advanced Tools for Testing Tables<\/a>\u00a0&#8211; Chapter 2 of Raja\u2019s course.<\/li>\n<li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/data-driven-testing-visual-ai\">Data-Driven Testing with Visual AI<\/a>\u00a0&#8211; Chapter 3 of Raja\u2019s course.<\/li>\n<li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\">How Do you Test Dynamic Content?<\/a>\u00a0&#8211; Chapter 4 of Raja\u2019s course.<\/li>\n<li>Visit the<a href=\"https:\/\/testautomationu.applitools.com\/automated-visual-testing-a-fast-path-to-test-automation-success\/index.html?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tau&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0<\/a><a href=\"https:\/\/testautomationu.applitools.com\/automated-visual-testing-a-fast-path-to-test-automation-success\/index.html?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tau&amp;utm_campaign=&amp;utm_subgroup=\">Automated Visual Testing Course<\/a>\u00a0on<a href=\"https:\/\/testautomationu.applitools.com\/login.html?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tau&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0Test Automation University<\/a><\/li>\n<li>Blog:<a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testing-visual-assertions?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=blog&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0<\/a><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testing-visual-assertions?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=blog&amp;utm_campaign=&amp;utm_subgroup=\">How Do I Validate Visually?<\/a><\/li>\n<li>Sign up for a<a href=\"https:\/\/app14743.cloudwayssites.com\/free?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=free-account&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0free Applitools account<\/a><\/li>\n<li><a href=\"https:\/\/app14743.cloudwayssites.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 an Applitools Demo<\/a><\/li>\n<li>Visit the<a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tutorial&amp;utm_campaign=&amp;utm_subgroup=\">\u00a0<\/a><a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=tutorial&amp;utm_campaign=&amp;utm_subgroup=\">Applitools Tutorials<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you know, I\u2019m taking Raja Rao\u2019s\u00a0Test Automation University Course, Modern Functional Test Automation through Visual AI. Today we\u2019ll discuss testing iFrames. In Chapter 5, Raja refers to iFrames as&#8230;<\/p>\n","protected":false},"author":77,"featured_media":16668,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12271],"tags":[10061,12688,10793,12690,12686,10262],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Testing iFrames With Visual AI - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"When testing iFrames, legacy functional testing can leave you with lots of navigation and contextual assertions. Why not test visually with Applitoools?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Testing iFrames With Visual AI\" \/>\n<meta property=\"og:description\" content=\"As you know, I\u2019m taking Raja Rao\u2019s\u00a0Test Automation University Course, Modern Functional Test Automation through Visual AI. Today we\u2019ll discuss testing\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-22T19:36:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-17T21:23:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1427\" \/>\n\t<meta property=\"og:image:height\" content=\"827\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\"},\"author\":{\"name\":\"Michael Battat\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/410b5710e19f580ee19ef348537bc347\"},\"headline\":\"Testing iFrames With Visual AI\",\"datePublished\":\"2019-11-22T19:36:50+00:00\",\"dateModified\":\"2020-04-17T21:23:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\"},\"wordCount\":1511,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png\",\"keywords\":[\"Functional Testing\",\"Technical Leaders\",\"Test Automation University\",\"Test Engineers\",\"Visual Testing Strategies\",\"Visual Testing Tools\"],\"articleSection\":[\"Getting Started\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\",\"name\":\"Testing iFrames With Visual AI - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png\",\"datePublished\":\"2019-11-22T19:36:50+00:00\",\"dateModified\":\"2020-04-17T21:23:40+00:00\",\"description\":\"When testing iFrames, legacy functional testing can leave you with lots of navigation and contextual assertions. Why not test visually with Applitoools?\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png\",\"width\":1427,\"height\":827},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/getting-started\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Testing iFrames With Visual AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"name\":\"Applitools Visual AI\",\"description\":\"Applitools delivers full end-to-end test automation with AI infused at every step.\",\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/410b5710e19f580ee19ef348537bc347\",\"name\":\"Michael Battat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.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:\/\/app14743.cloudwayssites.com\/blog\/author\/michaelbattat\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Testing iFrames With Visual AI - AI-Powered End-to-End Testing | Applitools","description":"When testing iFrames, legacy functional testing can leave you with lots of navigation and contextual assertions. Why not test visually with Applitoools?","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:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/","og_locale":"en_US","og_type":"article","og_title":"Testing iFrames With Visual AI","og_description":"As you know, I\u2019m taking Raja Rao\u2019s\u00a0Test Automation University Course, Modern Functional Test Automation through Visual AI. Today we\u2019ll discuss testing","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2019-11-22T19:36:50+00:00","article_modified_time":"2020-04-17T21:23:40+00:00","og_image":[{"width":1427,"height":827,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png","type":"image\/png"}],"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:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/"},"author":{"name":"Michael Battat","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/410b5710e19f580ee19ef348537bc347"},"headline":"Testing iFrames With Visual AI","datePublished":"2019-11-22T19:36:50+00:00","dateModified":"2020-04-17T21:23:40+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/"},"wordCount":1511,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png","keywords":["Functional Testing","Technical Leaders","Test Automation University","Test Engineers","Visual Testing Strategies","Visual Testing Tools"],"articleSection":["Getting Started"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/","name":"Testing iFrames With Visual AI - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png","datePublished":"2019-11-22T19:36:50+00:00","dateModified":"2020-04-17T21:23:40+00:00","description":"When testing iFrames, legacy functional testing can leave you with lots of navigation and contextual assertions. Why not test visually with Applitoools?","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-22-at-11.28.43-AM.png","width":1427,"height":827},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/testing-iframes-visual-ai\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Getting Started","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/getting-started\/"},{"@type":"ListItem","position":3,"name":"Testing iFrames With Visual AI"}]},{"@type":"WebSite","@id":"https:\/\/app14743.cloudwayssites.com\/#website","url":"https:\/\/app14743.cloudwayssites.com\/","name":"Applitools Visual AI","description":"Applitools delivers full end-to-end test automation with AI infused at every step.","publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/app14743.cloudwayssites.com\/#organization","name":"Applitools","url":"https:\/\/app14743.cloudwayssites.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/410b5710e19f580ee19ef348537bc347","name":"Michael Battat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.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:\/\/app14743.cloudwayssites.com\/blog\/author\/michaelbattat\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/16664"}],"collection":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/users\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=16664"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/16664\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/16668"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=16664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=16664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=16664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}