{"id":16623,"date":"2019-11-14T19:22:28","date_gmt":"2019-11-14T19:22:28","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/blog\/?p=6623"},"modified":"2020-04-17T21:23:39","modified_gmt":"2020-04-17T21:23:39","slug":"test-dynamic-content","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/","title":{"rendered":"How Do You Test Dynamic Content?"},"content":{"rendered":"<p>Imagine this. You built a page with <a href=\"https:\/\/canvasjs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CanvasJS<\/a>, and you want to test the graphs. How do you create an automated test for the graphical representations? It\u2019s testing dynamic content, after all.<\/p>\n<p>This question haunts most test developers. In lots of cases, companies do lots of manual tests on the first release to make sure everything works. After that, it\u2019s a lot of manual spot testing without automation. Because, it\u2019s testing dynamic content, after all.<\/p>\n<p><!--more-->In reality, there are three approaches.<\/p>\n<ul>\n<li>Always do manual testing &#8211; that\u2019s the only way to validate behavior.<\/li>\n<li>Do spot testing &#8211; trading off coverage for the cost.<\/li>\n<li>Shy away from testing and hope things work.<\/li>\n<\/ul>\n<p>At the radical end of handling dynamic graphical content, some organizations decide that the job doesn\u2019t belong to the internal web development team. These organizations farm out the entire visualization process to a third-party graphing package. For example, the Federal Trade Commission concluded that their data is best visualized using an external solution focused on data graphics and analytics. As a result, they use the services of Tableau Software to create a visual representation of the FTC data.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6627 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-9.48.09-AM.png\" alt=\"\" width=\"1106\" height=\"872\" \/><\/p>\n<p>But, if you\u2019re building an app for which farming out data representation might expose customer or client data, you cannot give the data to a third party and hope for the best. You have to do the visualization and own the testing of the app.\u00a0 .<\/p>\n<h2 id=\"h.8kcpkp83h41q\">Dynamic Content Tests With Legacy Tools<\/h2>\n<p>In <a href=\"https:\/\/testautomationu.applitools.com\/modern-functional-testing\/chapter4.html\">Chapter 4<\/a>\u00a0of <a href=\"https:\/\/www.linkedin.com\/in\/rajaraodv\/\" target=\"_blank\" rel=\"noopener noreferrer\">Raja Rao\u2019s<\/a>\u00a0course, <a href=\"https:\/\/testautomationu.applitools.com\/modern-functional-testing\/\">Modern Functional Test Automation thorugh Visual AI<\/a>\u00a0on <a href=\"https:\/\/testautomationu.applitools.com\/\">Test Automation University<\/a>, Raja walks through an example graphing app built with Canvas and asks:<\/p>\n<p>\u201cHow would you test this page with dynamic content?\u201d<\/p>\n<p>He takes a bar chart example in an app using CanvasJS.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6616 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-3.35.49-PM.png\" alt=\"Screen Shot 2019 11 13 at 3.35.49 PM\" \/><\/p>\n<p>Next, Raja shows what happens when he adds a dataset to the bar chart:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6618 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-3.36.07-PM.png\" alt=\"Screen Shot 2019 11 13 at 3.36.07 PM\" \/><\/p>\n<p>What makes this problem notoriously difficult to test involves the visual nature of the behavior and the lack of handles in the DOM that correlate to the behavior. In fact, there are no links.<\/p>\n<p>Opening up the Inspector for this page shows a canvas link:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6617 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-3.40.14-PM.png\" alt=\"Screen Shot 2019 11 13 at 3.40.14 PM\" \/><\/p>\n<p>In more detail, it reads:<\/p>\n<pre>&lt;canvas id=\u201dcanvas\u201d style=\u201ddisplay: block; width: 1233px; height: 616px;\u201d width=\u201d2466\u201d height=\u201d1232\u201d class=\u201dchartsjs-render-monitor\u201d&gt; == $0<\/pre>\n<p>So, all it shows is the size of the Canvas render &#8211; not the internal content. How the heck do you test this dynamic content?<\/p>\n<p>With no DOM hooks, it\u2019s impossible to know that the code above behaves as expected.<\/p>\n<p>How would you handle this kind of test? When we ask, we find out that most people do is either test on occasion or not at all.\u00a0 \u00a0After all, if you\u2019re using a third-party package, like CanvasJS, why not just trust it and go?<\/p>\n<h2 id=\"h.akjj42phfr4i\">Testing Charts with Visual AI<\/h2>\n<p>As Raja points out, with Visual AI, you don\u2019t need hooks in the DOM to capture app behavior. All you need to do is trigger the behavior, then capture the results visually.<\/p>\n<p>Here is the test code he uses to manipulate the test chart:<\/p>\n<div class=\"oembed-gist\"><script src=\"https:\/\/gist.github.com\/batmi02\/064331586bd05939b875c203ca41e6ec.js\"><\/script><noscript>View the code on <a href=\"https:\/\/gist.github.com\/batmi02\/064331586bd05939b875c203ca41e6ec\">Gist<\/a>.<\/noscript><\/div>\n<p>Hopefully, each step in the code reads clearly for you:<\/p>\n<ul>\n<li>Open the app<\/li>\n<li>Capture the screen<\/li>\n<li>Click the add dataset button<\/li>\n<li>Wait to make sure the screen executes<\/li>\n<li>Capture the screen<\/li>\n<\/ul>\n<p>It seemed pretty straightforward to me when I went through it.<\/p>\n<p>When you run the code, Applitools captures the tests separately as part of the same batch test run:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-6620 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-4.26.12-PM.png\" alt=\"Screen Shot 2019 11 13 at 4.26.12 PM\" \/><\/p>\n<p>When you start running Applitools on these tests, the first runs get stored as the baseline expected images. You can continue to execute these tests on subsequent builds and have Applitools compare the new checkpoint against the baseline. Applitools will highlight any visual differences.<\/p>\n<h2 id=\"h.eku0wvbk2800\">Why Does Testing Dynamic Content Matter?<\/h2>\n<p>In the past, I have been responsible for apps that display lots of data &#8211; like the central controller for a bunch of networking equipment. Lots of data and visualization. Each time we thought about improving the visualization, it was a huge headache. Testing alone would swallow up the QA team in apoplectic fits.<\/p>\n<p>In looking at the world of visualization, there are network operations centers.<\/p>\n<p><img alt=\"\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6619 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-4.55.33-PM.png\" alt=\"\" width=\"589\" height=\"470\" \/><\/p>\n<p>There are financial applications.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6615 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-4.56.27-PM.png\" alt=\"Screen Shot 2019 11 13 at 4.56.27 PM\" width=\"651\" height=\"380\" \/><\/p>\n<p>There\u2019s even weather.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6621 aligncenter\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-9.55.15-AM.png\" alt=\"Screen Shot 2019 11 13 at 9.55.15 AM\" width=\"695\" height=\"581\" \/><\/p>\n<p>Whether you\u2019re handling inventory, forecasting the future, scheduling appointments or doing any number of things with your applications, your customers likely will benefit from data visualizations. Why let the question of test automation limit your decision of whether or not to deploy a great visualization?<\/p>\n<h2 id=\"h.44umx0tmf55f\">Conclusion<\/h2>\n<p>Everyone who deals with data needs to represent that data as more than a bunch of numbers. If you find yourself doing visual representations, you have a choice:<\/p>\n<ul>\n<li>Code, test, and pray<\/li>\n<li>Code, test, and spot check<\/li>\n<li>Test visually and automate tests of dynamic content.<\/li>\n<\/ul>\n<p>Now that you have a way to test this dynamic content, what&#8217;s stopping you?<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"h.7evpkgde0ubd\">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=\">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=\">\u00a0<\/a><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=\">Functional 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> &#8211;\u00a0Chapter 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> &#8211; Chapter 3 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=\">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=\">\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>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=\">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=\">\u00a0<\/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=\">free 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=\">Applitools Tutorials<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine this. You built a page with CanvasJS, and you want to test the graphs. How do you create an automated test for the graphical representations? It\u2019s testing dynamic content,&#8230;<\/p>\n","protected":false},"author":77,"featured_media":16622,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12271],"tags":[12691,10098,12688,10793,12690,10192,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>How Do You Test Dynamic Content? - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"Imagine this. You built a page with CanvasJS, and you want to test the graphs. How do you create an automated test for the graphical representations? It\u2019s testing dynamic content,...\" \/>\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\/test-dynamic-content\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Do You Test Dynamic Content?\" \/>\n<meta property=\"og:description\" content=\"Imagine this. You built a page with CanvasJS, and you want to test the graphs. How do you create an automated test for the graphical representations? It\u2019s\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-14T19:22:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-17T21:23:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"853\" \/>\n\t<meta property=\"og:image:height\" content=\"614\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/\"},\"author\":{\"name\":\"Michael Battat\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/410b5710e19f580ee19ef348537bc347\"},\"headline\":\"How Do You Test Dynamic Content?\",\"datePublished\":\"2019-11-14T19:22:28+00:00\",\"dateModified\":\"2020-04-17T21:23:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/\"},\"wordCount\":883,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png\",\"keywords\":[\"Developers\",\"Manual Testing\",\"Technical Leaders\",\"Test Automation University\",\"Test Engineers\",\"Visual AI\",\"Visual Testing Strategies\",\"Visual Testing Tools\"],\"articleSection\":[\"Getting Started\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/\",\"name\":\"How Do You Test Dynamic Content? - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png\",\"datePublished\":\"2019-11-14T19:22:28+00:00\",\"dateModified\":\"2020-04-17T21:23:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png\",\"width\":853,\"height\":614},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#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\":\"How Do You Test Dynamic Content?\"}]},{\"@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":"How Do You Test Dynamic Content? - AI-Powered End-to-End Testing | Applitools","description":"Imagine this. You built a page with CanvasJS, and you want to test the graphs. How do you create an automated test for the graphical representations? It\u2019s testing dynamic content,...","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\/test-dynamic-content\/","og_locale":"en_US","og_type":"article","og_title":"How Do You Test Dynamic Content?","og_description":"Imagine this. You built a page with CanvasJS, and you want to test the graphs. How do you create an automated test for the graphical representations? It\u2019s","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2019-11-14T19:22:28+00:00","article_modified_time":"2020-04-17T21:23:39+00:00","og_image":[{"width":853,"height":614,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png","type":"image\/png"}],"author":"Michael Battat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Michael Battat","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/"},"author":{"name":"Michael Battat","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/410b5710e19f580ee19ef348537bc347"},"headline":"How Do You Test Dynamic Content?","datePublished":"2019-11-14T19:22:28+00:00","dateModified":"2020-04-17T21:23:39+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/"},"wordCount":883,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png","keywords":["Developers","Manual Testing","Technical Leaders","Test Automation University","Test Engineers","Visual AI","Visual Testing Strategies","Visual Testing Tools"],"articleSection":["Getting Started"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/","name":"How Do You Test Dynamic Content? - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png","datePublished":"2019-11-14T19:22:28+00:00","dateModified":"2020-04-17T21:23:39+00:00","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2019\/11\/Screen-Shot-2019-11-13-at-2.44.26-PM.png","width":853,"height":614},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/test-dynamic-content\/#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":"How Do You Test Dynamic Content?"}]},{"@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\/16623"}],"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=16623"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/16623\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/16622"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=16623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=16623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=16623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}