{"id":61002,"date":"2025-07-21T14:12:29","date_gmt":"2025-07-21T18:12:29","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/?p=61002"},"modified":"2026-03-11T15:00:25","modified_gmt":"2026-03-11T19:00:25","slug":"handling-animations-and-loading-artifacts-in-visual-testing","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/","title":{"rendered":"Handling Animations and Loading Artifacts in Visual Testing"},"content":{"rendered":"\n<p>Have you ever encountered a situation where you try to take a screenshot, but instead of the beautifully well-crafted UI, all you\u2019ve got is an image of a spinner\/skeleton\/loading screen? Handling animations and loading artifacts in visual testing can be daunting.<\/p>\n\n\n\n<p>Don\u2019t worry &#8211; it can happen to anyone, and we\u2019re not here to judge you \ud83d\ude09<\/p>\n\n\n\n<p>One of the SDK engineers here at Applitools, Noam, breaks this down into a hands-on tutorial, hoping it will help you get a better understanding of the industry&#8217;s best practices around visual testing of rich and dynamic UI experiences.<\/p>\n\n\n\n<p>Let\u2019s dive right in!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-framework-native-solutions\"><strong>Framework Native Solutions<\/strong><\/h2>\n\n\n\n<p>Most frameworks already have different mechanisms to handle animations and loading artifacts. Keeping things simple is often the best way to achieve code stability and maintainability. Using your framework&#8217;s built-in tools would most often be the best approach.<\/p>\n\n\n\n<p>For example:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-playwright-js\">Playwright JS<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\/\/ Playwright: wait for spinner to be removed\nawait page.waitForSelector('.spinner', { state: 'detached' });\nawait eyes.check()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cypress\">Cypress<\/h3>\n\n\n\n<pre title=\"\" class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\/\/ Cypress: wait for spinner to not exist\ncy.get('.spinner').should('not.exist'); \ncy.eyesCheck()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-selenium-js\">Selenium JS<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\/\/ Selenium: wait for spinner to be invisible\nconst spinnerElements = await driver.findElements(By.css('.spinner'));\nif (spinnerElements.length) {\n  await driver.wait(until.elementIsNotVisible(spinnerElements[0]), 5000);\n}\nawait eyes.check()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-a-common-pitfall\"><strong>A Common Pitfall<\/strong><\/h2>\n\n\n\n<p>Even if the UI appears visually unchanged, frontend frameworks like React, Vue, and Angular may re-render elements under the hood. This can lead to <strong>stale element references<\/strong>, especially when capturing regions right after a DOM change.<\/p>\n\n\n\n<p>Consider the following example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">cy.get('.main').then($el =&gt; {\n  cy.get('.spinner').should('not.exist'); \/\/ spinner disappears after main was located\n\n  cy.eyesCheckWindow({\n    tag: 'main',\n    target: 'region',\n    element: $el, \/\/ stale reference if .main was replaced\n  });\n});<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>First, Cypress locates <code>.main<\/code><\/li>\n\n\n\n<li>Then, Cypress waits for the spinner to disappear<\/li>\n\n\n\n<li>This example would fail (even if the new element has the exact same properties) if the main element is replaced by another element<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-how-to-avoid-that\">How to avoid that?<\/h3>\n\n\n\n<p>When possible (e.g., Playwright), it&#8217;s preferred that you use <a href=\"https:\/\/playwright.dev\/docs\/api\/class-locator\" target=\"_blank\" rel=\"noreferrer noopener\">locators instead of selectors<\/a>. If you can&#8217;t, it&#8217;s better if you use selectors instead of DOM references (<code>element: \u2018.main\u2019<\/code>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-videos-css-animations-gifs\"><strong>Videos, CSS Animations, GIFs<\/strong><\/h2>\n\n\n\n<p>There are many techniques to eliminate other types of dynamic behaviour in web pages. Playwright, for example, provides a <a href=\"https:\/\/playwright.dev\/docs\/clock\" target=\"_blank\" rel=\"noreferrer noopener\">Clock API<\/a> that allows pausing JavaScript time-related events (including JS-driven animations). It\u2019s also possible to install custom CSS snippets to pause and reset CSS-related animations. Other JS specialized crafted snippets would be required for resetting GIFs, videos, and so on &#8211; you get the idea.<\/p>\n\n\n\n<p>This never-ending cat-and-mouse game can be prevented by using <a href=\"https:\/\/app14743.cloudwayssites.com\/platform\/ultrafast-grid\/\" target=\"_blank\" rel=\"noreferrer noopener\">Applitools Ultrafast Grid (UFG)<\/a>. Instead of rendering web pages on locally executed browsers, the UFG team maintains specialized logics and fine-tuned commands that ensure a stable and consistent rendering experience. While UFG offers more than just rendering stability, it&#8217;s worth noting that classic screenshots can still achieve stable results. UFG just makes it easier!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-algo-based-solutions\"><strong>Algo-Based Solutions<\/strong><\/h2>\n\n\n\n<p>If you intentionally want to capture dynamic content (e.g., animations, changes), a smarter strategy is to embrace that variability and use smart matching algorithms to compare just what you need, like those found in <a href=\"https:\/\/app14743.cloudwayssites.com\/platform\/eyes\/\" target=\"_blank\" rel=\"noreferrer noopener\">Applitools Eyes<\/a>. <\/p>\n\n\n\n<p>Any match level can be used for the entire screenshot or specific regions of the screen. Read more in the <a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials\/concepts\/best-practices\/match-levels\" target=\"_blank\" rel=\"noreferrer noopener\">Match Level Best Practices tutorial<\/a>. For example, algorithms like the Layout match level can drastically improve your experience with localization testing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-waitbeforecapture-setting\"><strong>The <code>waitBeforeCapture<\/code> Setting<\/strong><\/h2>\n\n\n\n<p>Performing wait operations can become more complicated when:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Testing with no-code visual testing SDKs (e.g <a href=\"https:\/\/www.npmjs.com\/package\/@applitools\/eyes-storybook\" target=\"_blank\" rel=\"noreferrer noopener\">eyes-storybook<\/a>)<\/li>\n\n\n\n<li>Testing with advanced Eyes features like <a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials\/sdks\/webdriverio\/check-settings#lazy-loading\" target=\"_blank\" rel=\"noreferrer noopener\">lazyLoading<\/a> and <a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials\/sdks\/cypress\/check-settings#layoutbreakpoints\" target=\"_blank\" rel=\"noreferrer noopener\">layoutBreakpoints<\/a><\/li>\n<\/ol>\n\n\n\n<p>The <code>waitBeforeCapture<\/code> setting was invented for these types of use cases (and a few others). <\/p>\n\n\n\n<p>This setting can receive three types of arguments:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Milliseconds<\/strong> &#8211; the simplest approach. While it\u2019s not always the most innovative or sophisticated pattern, in many cases, it \u201cdoes the trick.\u201d In general, waiting for explicit timeouts during tests is not recommended. However, when compared to clock manipulations and code injections, sometimes the simplicity and stability is worth the longer run-time.<\/li>\n\n\n\n<li><strong>Selector<\/strong> &#8211; when we\u2019re waiting for something to appear, most SDKs support passing a selector, and Applitools Eyes will automatically wait for an element that matches this selector to appear in the web page.<\/li>\n\n\n\n<li><strong>Custom function<\/strong> &#8211;&nbsp;see code example<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\/\/ eyes-storybook\n  waitBeforeCapture: async () =&gt; {\n    while (document.querySelector('.spinner')) {\n      await new Promise((resolve) =&gt; setTimeout(resolve, 100))\n    }\n    return true;\n  }\n\n\/\/ eyes-playwright\nawait eyes.check({\n  name: 'my-step',\n  async waitBeforeCapture() {\n    await page.locator('.spinner').waitFor({state: 'hidden'})\n  },\n})<\/code><\/pre>\n\n\n\n<p>The <code>waitBeforeCapture<\/code> setting can be defined in your <code>applitools.config<\/code> file, in your <code>eyes.check<\/code> settings, using the <code>Target<\/code> settings builder, and in other similar places. Please refer to the <a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials\" target=\"_blank\" rel=\"noreferrer noopener\">documentation of the specific SDK<\/a> you\u2019re using for concrete examples.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-storybook-play-functions\"><strong>Storybook Play Functions<\/strong><\/h2>\n\n\n\n<p>A nice <a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials\/sdks\/storybook\/quickstart\" target=\"_blank\" rel=\"noreferrer noopener\">eyes-storybook<\/a>-specific trick to achieve a desired rendering state would be a <a href=\"https:\/\/storybook.js.org\/docs\/writing-stories\/play-function\" target=\"_blank\" rel=\"noreferrer noopener\">Storybook Play Function<\/a>.<\/p>\n\n\n\n<p>Applitools Eyes will run your play functions and wait for them to finish before capturing anything on the screen. Use Play Functions to navigate the story to an interesting state and wait for the story to be stable inside the play function to help Eyes understand what the best time is to capture the screenshot.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-applitools-is-here-to-help\"><strong>Applitools is Here to Help<\/strong><\/h2>\n\n\n\n<p>We hope you\u2019ve found this article interesting, and maybe it solved some of the most common visual testing issues you may have encountered. Go ahead and <a href=\"https:\/\/auth.applitools.com\/users\/general-register?app=eyes\">try these examples out for free with Applitools Eyes<\/a>.<\/p>\n\n\n\n<p>However, if something isn\u2019t clear or if you\u2019d like advice regarding the best way to incorporate visual testing into your organization, please <a href=\"https:\/\/help.applitools.com\/hc\/en-us\/requests\/new\" target=\"_blank\" rel=\"noreferrer noopener\">don\u2019t hesitate to reach out to our experts<\/a>! Testing is our passion, and we\u2019re here to help.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-quick-answers\"><strong>Quick Answers<\/strong><\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1753119945614\"><strong class=\"schema-faq-question\">What are \u201cloading artifacts\u201d in visual testing, and how do I avoid flaky tests?<\/strong> <p class=\"schema-faq-answer\">Loading artifacts are transient UI elements, like spinners, skeleton cards, GIFs, that appear while data is fetched. If a screenshot is captured before they disappear, your baseline image won\u2019t match future renders, causing false failures (flaky tests).<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1753119211021\"><strong class=\"schema-faq-question\">Why do I get \u201cstale element reference\u201d errors after a React\/Vue\/Angular re\u2011render?<\/strong> <p class=\"schema-faq-answer\">Modern frameworks often replace DOM nodes even when the UI looks identical. If you save a DOM reference (e.g., <code>cy.get('.main')<\/code>) <strong>before<\/strong> waiting for the spinner to vanish, that reference may point to a removed element, causing stale errors. Capture by <strong>selector<\/strong> or <strong>locator<\/strong>, not by saved element handles, to avoid this.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1753119842604\"><strong class=\"schema-faq-question\">What is the waitBeforeCapture setting in Applitools, and what values can it accept?<\/strong> <p class=\"schema-faq-answer\"><code>waitBeforeCapture<\/code> delays the screenshot after the DOM is stable. It accepts:<br\/>\u2022 <strong>Milliseconds<\/strong> (e.g., <code>500<\/code>)<br\/>\u2022 <strong>CSS selector<\/strong> to wait for element presence\/absence<br\/>\u2022 <strong>Custom async function<\/strong> for complex logic (e.g., loop until <code>.spinner<\/code> hidden)<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1753119911220\"><strong class=\"schema-faq-question\">Can I use Storybook Play Functions to control the render state before visual testing?<\/strong> <p class=\"schema-faq-answer\">Yes. In <strong>eyes\u2011storybook<\/strong>, Applitools runs each story\u2019s Play Function and waits for it to finish\u2014perfect for clicking buttons, filling forms, or pausing animations before the snapshot.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1753119919171\"><strong class=\"schema-faq-question\"><br\/><strong>Is it better to fast-forward the JavaScript clock or add explicit waits for CSS animations?<\/strong><\/strong> <p class=\"schema-faq-answer\">Fast-forwarding the JS clock (e.g., <code>page.clock.fastForward(1000)<\/code> in Playwright) is usually more reliable and efficient than using hard timeouts. It advances timers without waiting in real time, making tests faster. However, it won\u2019t affect CSS-driven animations since those still require CSS overrides to pause or skip transitions. For full stability, combine clock control with style injections or use Applitools Ultrafast Grid, which auto-handles CSS animations under the hood.<\/p> <\/div> <\/div>\n\n\n\n<div class=\"wp-block-group pb-none pt-none\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<style>\n.schema-faq-section { \n  background: white;\n  margin: 1rem 0;\n  border: 2px solid rgba(0, 0, 0, 0.13);\n  border-radius: 10px;\n  box-shadow: 2px 2px 6px 2px rgba(0, 0, 0, 0.03);\n}\n.schema-faq-question{\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  transition: opacity ease 0.25s;\n  padding: 1rem;\n  color: var(--wp--preset--color--primary);\n  font-size: var(--wp--preset--font-size-large);\n}\n.schema-faq-question:hover {\n  color: var(--wp--preset--color--secondary);\n}\n.schema-faq-question:after{\n  width: 16px;\n  height: 20px;\n  display: inline-block;\n  margin-left: auto;\n  margin-right: 5px;\n  vertical-align: top;\n  color: inherit;\n  content: \"+\";\n}\n.schema-faq-question.expanded:after{\n  content: \"-\";\n}\n.schema-faq-question:hover{\n  opacity: 0.75;\n}\n.schema-faq-answer{\n  padding: 0 1rem 1rem 1rem;\n  display: none;\n}\n.schema-faq-answer.default{\n  display: block;\n}\n.editor-styles-wrapper .schema-faq-question {\n  cursor: text;\n}\n.editor-styles-wrapper .schema-faq-answer {\n  display: block; \n}\n<\/style>\n\n\n\n<script>\njQuery(function($){var yoast={accordion:function(){var isAnimating=!1;$(\".schema-faq-section\").find(\".schema-faq-question\").click(function(event){event.stopPropagation();if(isAnimating)return;isAnimating=!0;var answer=$(this).nextAll(\".schema-faq-answer\").eq(0);answer.slideToggle(250,function(){$(this).toggleClass(\"expanded\");$(this).prev(\".schema-faq-question\").toggleClass(\"expanded\");isAnimating=!1});$(\".schema-faq-answer\").not(answer).slideUp(\"fast\",function(){$(this).removeClass(\"expanded\");$(this).prev(\".schema-faq-question\").removeClass(\"expanded\")})})}};yoast.accordion()});\n<\/script>\n<\/div><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.<\/p>\n","protected":false},"author":116,"featured_media":61009,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10004,17299,16867,10558],"tags":[17268,10027,10050,10357,17290,17013,16608,10139,10268,17004],"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>Handling Animations and Loading Artifacts in Visual Testing - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.\" \/>\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\/handling-animations-and-loading-artifacts-in-visual-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Handling Animations and Loading Artifacts in Visual Testing\" \/>\n<meta property=\"og:description\" content=\"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-21T18:12:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T19:00:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Noam Gaash\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Noam Gaash\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/\"},\"author\":{\"name\":\"Noam Gaash\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/508cd6acb1ca2fe38237ee3650175683\"},\"headline\":\"Handling Animations and Loading Artifacts in Visual Testing\",\"datePublished\":\"2025-07-21T18:12:29+00:00\",\"dateModified\":\"2026-03-11T19:00:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/\"},\"wordCount\":1116,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png\",\"keywords\":[\"AI test automation\",\"Automated Visual Testing\",\"Cross-browser Testing\",\"Cypress\",\"dynamic content\",\"Eyes\",\"Playwright\",\"Selenium\",\"StoryBook\",\"test coverage\"],\"articleSection\":[\"Advanced Topics\",\"Customer News\",\"Learn\",\"Product\"],\"inLanguage\":\"en-US\"},{\"@type\":[\"WebPage\",\"FAQPage\"],\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/\",\"name\":\"Handling Animations and Loading Artifacts in Visual Testing - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png\",\"datePublished\":\"2025-07-21T18:12:29+00:00\",\"dateModified\":\"2026-03-11T19:00:25+00:00\",\"description\":\"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#breadcrumb\"},\"mainEntity\":[{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119945614\"},{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119211021\"},{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119842604\"},{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119911220\"},{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119919171\"}],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png\",\"width\":1536,\"height\":1024,\"caption\":\"Stylized screenshot with half greyed out and other half colorized to highlight dynamic content\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Topics\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Handling Animations and Loading Artifacts in Visual Testing\"}]},{\"@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\/508cd6acb1ca2fe38237ee3650175683\",\"name\":\"Noam Gaash\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a9793f8b4676e5d562dab22711b36795?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a9793f8b4676e5d562dab22711b36795?s=96&d=mm&r=g\",\"caption\":\"Noam Gaash\"},\"description\":\"Noam Gaash is a JavaScript SDK engineer at Applitools, passionate about web technologies, computer vision, and improving development workflows. He\u2019s an active open-source contributor and a strong believer in the power of technology to create positive social impact and bring people together. Outside of work, Noam enjoys dancing salsa with his girlfriend and spending time with his majestic cat, Spoty.\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/noam-gaash\/\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119945614\",\"position\":1,\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119945614\",\"name\":\"What are \u201cloading artifacts\u201d in visual testing, and how do I avoid flaky tests?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Loading artifacts are transient UI elements, like spinners, skeleton cards, GIFs, that appear while data is fetched. If a screenshot is captured before they disappear, your baseline image won\u2019t match future renders, causing false failures (flaky tests).\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119211021\",\"position\":2,\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119211021\",\"name\":\"Why do I get \u201cstale element reference\u201d errors after a React\/Vue\/Angular re\u2011render?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Modern frameworks often replace DOM nodes even when the UI looks identical. If you save a DOM reference (e.g., cy.get('.main')) <strong>before<\/strong> waiting for the spinner to vanish, that reference may point to a removed element, causing stale errors. Capture by <strong>selector<\/strong> or <strong>locator<\/strong>, not by saved element handles, to avoid this.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119842604\",\"position\":3,\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119842604\",\"name\":\"What is the waitBeforeCapture setting in Applitools, and what values can it accept?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"waitBeforeCapture delays the screenshot after the DOM is stable. It accepts:<br\/>\u2022 <strong>Milliseconds<\/strong> (e.g., 500)<br\/>\u2022 <strong>CSS selector<\/strong> to wait for element presence\/absence<br\/>\u2022 <strong>Custom async function<\/strong> for complex logic (e.g., loop until .spinner hidden)\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119911220\",\"position\":4,\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119911220\",\"name\":\"Can I use Storybook Play Functions to control the render state before visual testing?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. In <strong>eyes\u2011storybook<\/strong>, Applitools runs each story\u2019s Play Function and waits for it to finish\u2014perfect for clicking buttons, filling forms, or pausing animations before the snapshot.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119919171\",\"position\":5,\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119919171\",\"name\":\"Is it better to fast-forward the JavaScript clock or add explicit waits for CSS animations?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Fast-forwarding the JS clock (e.g., page.clock.fastForward(1000) in Playwright) is usually more reliable and efficient than using hard timeouts. It advances timers without waiting in real time, making tests faster. However, it won\u2019t affect CSS-driven animations since those still require CSS overrides to pause or skip transitions. For full stability, combine clock control with style injections or use Applitools Ultrafast Grid, which auto-handles CSS animations under the hood.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Handling Animations and Loading Artifacts in Visual Testing - AI-Powered End-to-End Testing | Applitools","description":"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.","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\/handling-animations-and-loading-artifacts-in-visual-testing\/","og_locale":"en_US","og_type":"article","og_title":"Handling Animations and Loading Artifacts in Visual Testing","og_description":"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2025-07-21T18:12:29+00:00","article_modified_time":"2026-03-11T19:00:25+00:00","og_image":[{"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png","width":1024,"height":683,"type":"image\/png"}],"author":"Noam Gaash","twitter_card":"summary_large_image","twitter_description":"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.","twitter_misc":{"Written by":"Noam Gaash","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/"},"author":{"name":"Noam Gaash","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/508cd6acb1ca2fe38237ee3650175683"},"headline":"Handling Animations and Loading Artifacts in Visual Testing","datePublished":"2025-07-21T18:12:29+00:00","dateModified":"2026-03-11T19:00:25+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/"},"wordCount":1116,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png","keywords":["AI test automation","Automated Visual Testing","Cross-browser Testing","Cypress","dynamic content","Eyes","Playwright","Selenium","StoryBook","test coverage"],"articleSection":["Advanced Topics","Customer News","Learn","Product"],"inLanguage":"en-US"},{"@type":["WebPage","FAQPage"],"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/","name":"Handling Animations and Loading Artifacts in Visual Testing - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png","datePublished":"2025-07-21T18:12:29+00:00","dateModified":"2026-03-11T19:00:25+00:00","description":"Master dynamic content visual testing with our hands-on tutorial. Learn to capture rich UI experiences effectively.","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#breadcrumb"},"mainEntity":[{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119945614"},{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119211021"},{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119842604"},{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119911220"},{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119919171"}],"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2025\/07\/Dynamic-content.png","width":1536,"height":1024,"caption":"Stylized screenshot with half greyed out and other half colorized to highlight dynamic content"},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Advanced Topics","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/"},{"@type":"ListItem","position":3,"name":"Handling Animations and Loading Artifacts in Visual Testing"}]},{"@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\/508cd6acb1ca2fe38237ee3650175683","name":"Noam Gaash","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a9793f8b4676e5d562dab22711b36795?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9793f8b4676e5d562dab22711b36795?s=96&d=mm&r=g","caption":"Noam Gaash"},"description":"Noam Gaash is a JavaScript SDK engineer at Applitools, passionate about web technologies, computer vision, and improving development workflows. He\u2019s an active open-source contributor and a strong believer in the power of technology to create positive social impact and bring people together. Outside of work, Noam enjoys dancing salsa with his girlfriend and spending time with his majestic cat, Spoty.","url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/noam-gaash\/"},{"@type":"Question","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119945614","position":1,"url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119945614","name":"What are \u201cloading artifacts\u201d in visual testing, and how do I avoid flaky tests?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Loading artifacts are transient UI elements, like spinners, skeleton cards, GIFs, that appear while data is fetched. If a screenshot is captured before they disappear, your baseline image won\u2019t match future renders, causing false failures (flaky tests).","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119211021","position":2,"url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119211021","name":"Why do I get \u201cstale element reference\u201d errors after a React\/Vue\/Angular re\u2011render?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Modern frameworks often replace DOM nodes even when the UI looks identical. If you save a DOM reference (e.g., cy.get('.main')) <strong>before<\/strong> waiting for the spinner to vanish, that reference may point to a removed element, causing stale errors. Capture by <strong>selector<\/strong> or <strong>locator<\/strong>, not by saved element handles, to avoid this.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119842604","position":3,"url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119842604","name":"What is the waitBeforeCapture setting in Applitools, and what values can it accept?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"waitBeforeCapture delays the screenshot after the DOM is stable. It accepts:<br\/>\u2022 <strong>Milliseconds<\/strong> (e.g., 500)<br\/>\u2022 <strong>CSS selector<\/strong> to wait for element presence\/absence<br\/>\u2022 <strong>Custom async function<\/strong> for complex logic (e.g., loop until .spinner hidden)","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119911220","position":4,"url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119911220","name":"Can I use Storybook Play Functions to control the render state before visual testing?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Yes. In <strong>eyes\u2011storybook<\/strong>, Applitools runs each story\u2019s Play Function and waits for it to finish\u2014perfect for clicking buttons, filling forms, or pausing animations before the snapshot.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119919171","position":5,"url":"https:\/\/app14743.cloudwayssites.com\/blog\/handling-animations-and-loading-artifacts-in-visual-testing\/#faq-question-1753119919171","name":"Is it better to fast-forward the JavaScript clock or add explicit waits for CSS animations?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Fast-forwarding the JS clock (e.g., page.clock.fastForward(1000) in Playwright) is usually more reliable and efficient than using hard timeouts. It advances timers without waiting in real time, making tests faster. However, it won\u2019t affect CSS-driven animations since those still require CSS overrides to pause or skip transitions. For full stability, combine clock control with style injections or use Applitools Ultrafast Grid, which auto-handles CSS animations under the hood.","inLanguage":"en-US"},"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/61002"}],"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\/116"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=61002"}],"version-history":[{"count":1,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/61002\/revisions"}],"predecessor-version":[{"id":62354,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/61002\/revisions\/62354"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/61009"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=61002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=61002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=61002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}