{"id":51735,"date":"2023-09-11T12:59:03","date_gmt":"2023-09-11T19:59:03","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/?p=51735"},"modified":"2023-09-13T06:46:21","modified_gmt":"2023-09-13T13:46:21","slug":"functional-testings-new-friend-applitools-execution-cloud","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/","title":{"rendered":"Functional Testing&#8217;s New Friend: Applitools Execution Cloud"},"content":{"rendered":"\n<p>In the fast-paced and competitive landscape of software development, ensuring the quality of applications is of utmost importance. Functional testing plays a vital role in verifying the robustness and reliability of software products. With the increasing complexity of applications with a long list of use cases and the need for faster release cycles, organizations are challenged to conduct thorough <a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_testing\">functional testing<\/a> across different platforms, devices, and screen resolutions.&nbsp;<\/p>\n\n\n\n<p>This path to a better quality of software products is where Applitools, a leading provider of functional testing solutions, becomes a must-have tool with its innovative offering, the Execution Cloud.<\/p>\n\n\n\n<p>Applitools&#8217; Execution Cloud is a game-changing platform that revolutionizes functional testing practices. By harnessing the power of cloud computing, the Execution Cloud eliminates the need for resource-heavy local infrastructure, providing organizations with enhanced efficiency, scalability, and reliability in their testing efforts. The cloud-based architecture integrates with existing testing frameworks and tools, empowering development teams to execute tests across various environments effortlessly.<\/p>\n\n\n\n<p>This article explores how the Execution Cloud and its self-healing capabilities can be used to run our functional test coverage. We demonstrate this cloud platform&#8217;s features, like auto-fixing selectors caused by a change in the production code.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-why-execution-cloud\">Why Execution Cloud<\/h2>\n\n\n\n<p>As <a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/ai-self-healing-test-cloud\/\">discussed<\/a>, the Applitools Execution Cloud is a great tool to enhance any team&#8217;s quality pipeline.<\/p>\n\n\n\n<p>One of the main features of this cloud platform is that it can &#8220;self-heal&#8221; our tests using AI. For example, if, during refactoring or debugging, one of the web elements had its selectors changed and we forgot to update related test coverage, the Execution Cloud would automatically fix our tests. This cloud platform would use one of the previous runs to deduce another relevant selector and let our tests continue running.&nbsp;<\/p>\n\n\n\n<p>This self-healing capability of the Execution Cloud allows us to focus on actual production issues without getting distracted by outdated tests.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-functional-testing-and-execution-cloud\">Functional Testing and Execution Cloud<\/h3>\n\n\n\n<p>It&#8217;s fair to say that Applitools has been one of the leading innovators and pioneers in visual testing with its <a href=\"https:\/\/app14743.cloudwayssites.com\/solutions\/visual-testing\/\">Eyes platform<\/a>. However, with the Execution Cloud in place, Applitools offers its users broader, more scalable test capabilities. This cloud platform lets us focus on all types of functional testing, including non-Visual testing.<\/p>\n\n\n\n<p>One of the best features of the Execution Cloud is that it&#8217;s effortless to integrate into any test case with just one line. There is also no requirement to use the Applitools Eyes framework. In other words, we can run any functional test without creating screenshots for visual validation while utilizing the self-healing capability of the Execution Cloud.<\/p>\n\n\n\n<p> <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/app14743.cloudwayssites.com\/resources\/webinars\/ai-self-healing-test-execution-cloud\/\" target=\"_blank\" rel=\"noreferrer noopener\">Adam Carmi, Applitools CTO, demos the Applitools Execution Cloud and explores how self-healing works under the hood in this on-demand session.<\/a><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-writing-test-suite\">Writing Test Suite<\/h2>\n\n\n\n<p>As we mentioned earlier, the Execution Cloud can be integrated with most test cases we already have in place! The only consideration is at the time of writing this post, the current version of the Execution Cloud only supports Selenium WebDriver across all languages (Java, JavaScript, Python, C#, and Ruby), WebdriverIO, and any other WebDriver-based framework. However, more test frameworks will be supported in the near future.<\/p>\n\n\n\n<p>Fortunately, Selenium is a highly used testing framework, giving us plenty of room to demonstrate the power of the Execution Cloud and functional testing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-setting-up-demo-app\">Setting Up Demo App<\/h3>\n\n\n\n<p>Our demo application will be a documentation site built using the <a href=\"https:\/\/vercel.com\/templates\/next.js\/documentation-starter-kit\">Vercel Documentation template<\/a>. It\u2019s a simple app that uses <a href=\"https:\/\/nextjs.org\/\">Next.js<\/a>, a React framework created by Vercel, a cloud platform that lets us deploy web apps quickly and easily.<\/p>\n\n\n\n<p>To note, all the code for our version of the application is available <a href=\"https:\/\/github.com\/dmitryvinn\/docs-demo-app\">here<\/a>.<\/p>\n\n\n\n<p>First, we need to clone the demo app\u2019s repository:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">git clone <a href=\"mailto:git@github.com\">git@github.com<\/a>:dmitryvinn\/docs-demo-app.git<\/code><\/pre>\n\n\n\n<p>We will need Node.js of version 10.13 to work with this demo app, which can be installed by following the steps <a href=\"https:\/\/nodejs.org\/en\/\">here<\/a>.<\/p>\n\n\n\n<p>After we set up Node.js, we should open a terminal and run the following command to install the necessary dependencies:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">npm install<\/code><\/pre>\n\n\n\n<p>The next step is to navigate into the project\u2019s directory and start the app locally:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">cd docs-demo-app\n\nnpm run dev<\/code><\/pre>\n\n\n\n<p>Now our demo app is accessible at \u2018<a href=\"http:\/\/localhost:3000\/\">http:\/\/localhost:3000\/<\/a>\u2019 and ready to be tested.<\/p>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/IBHuTV54BPoGD5yJXO-cgHDKCa9Pi65ZxrQFOtrzDIozPQZnZdj3Rz5sPDb4ZlmaZe6VDrlvKMOLhDXALtFXhIE-GJzRkWG4aK9UZ5CrA3-OaHBNpU3xzbTB43INpgTCHmRRm47gHeXUKykHGKKP9u4\" alt=\"\"\/><\/figure>\n\n\n\n<p><em>Docs Demo App&nbsp;<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-deploying-demo-app\">Deploying Demo App<\/h3>\n\n\n\n<p>While the Execution Cloud allows us to run the tests against a <a href=\"https:\/\/app14743.cloudwayssites.com\/docs\/topics\/execution-cloud\/setup.html\">local deployment<\/a>, we will simulate the production use case by running our demo app on Vercel. The steps for deploying a basic app are very well outlined <a href=\"https:\/\/vercel.com\/new\">here<\/a>, so we won\u2019t spend time reviewing them.&nbsp;<\/p>\n\n\n\n<p>After we deploy our demo app, it will appear as running on the Vercel Dashboard:<\/p>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/NE_Yua5mpk2XCvptMp-UsZ0Llpo0oNJOfqCGJWerI37uisBQPTSc0CNGzeBI32UbOg-sSVsardGCdCQL5GPWNgwIdKbeTNYR0RXefucXc6UsjlLaIq0KiuK8_OL8K4Q_DaNL3AU5L0Vo72Bv-Tn3fbY\" alt=\"\"\/><\/figure>\n\n\n\n<p><em>Demo App Deployed on Vercel<\/em><\/p>\n\n\n\n<p>Now, we can write our tests for a production URL of our demo application available at `https:\/\/docs-demo-app.vercel.app\/`.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-setting-up-test-automation\">Setting Up Test Automation<\/h3>\n\n\n\n<p>Execution Cloud offers great flexibility when it comes to working with our tests. Rather than re-writing our test suites to run against this self-healing cloud platform, we simply need to update a few lines of code in the setup part of our tests, and we can use the Execution Cloud.&nbsp;<\/p>\n\n\n\n<p>For our article, our test case will validate navigating to a specific page and pressing a counter button.&nbsp;<\/p>\n\n\n\n<p>To make our work even more effortless, Applitools offers a great set of quickstart examples that were recently updated to support the Execution Cloud. We will start with one of these samples using <a href=\"https:\/\/app14743.cloudwayssites.com\/tutorials\/quickstart\/web\/selenium\/javascript\/jest\">JavaScript with Selenium WebDriver and Jest<\/a> as our baseline.<\/p>\n\n\n\n<p>We can use any Integrated Development Environment (IDE) to write tests like <a href=\"https:\/\/www.jetbrains.com\/idea\/download\/?section=mac\">IntelliJ IDEA<\/a> or <a href=\"https:\/\/code.visualstudio.com\/\">Visual Studio Code<\/a>. Since we use <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\">JavaScript<\/a> as our programming language, we will rely on <a href=\"https:\/\/www.npmjs.com\/\">NPM<\/a> for the build system and our test runner.<\/p>\n\n\n\n<p>Our tests will use <a href=\"https:\/\/jestjs.io\/\">Jest<\/a> as its primary testing framework, so we must add a particular configuration file called `<a href=\"https:\/\/jestjs.io\/docs\/configuration\">jest.config.js<\/a>`. We can copy-paste a basic setup from <a href=\"https:\/\/github.com\/dmitryvinn\/applitools-execution-cloud-non-eyes-example\/blob\/main\/jest.config.js\">here<\/a>, but in its shortest form, the required configurations are the following.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">module.exports = {\n\n&nbsp;&nbsp;&nbsp;&nbsp;clearMocks: true,\n\n&nbsp;&nbsp;&nbsp;&nbsp;coverageProvider: \"v8\",\n\n&nbsp;&nbsp;};<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Our tests will require a `package.json` file which should include Jest, Selenium WebDriver, and Applitools packages. Our dependencies\u2019 part of the `package.json` file should eventually look like the one below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">\"dependencies\": {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"@applitools\/eyes-selenium\": \"^4.66.0\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"jest\": \"^29.5.0\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"selenium-webdriver\": \"^4.9.2\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;},<\/code><\/pre>\n\n\n\n<p>After we install the above dependencies, we are ready to write and execute our tests.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-writing-the-tests\">Writing the Tests<\/h3>\n\n\n\n<p>Since we are running a purely functional Applitools test with its Eyes disabled (meaning we do not have a visual component), we will need to initialize the test and have a proper wrap-up for it.<\/p>\n\n\n\n<p>In `<a href=\"https:\/\/github.com\/dmitryvinn\/applitools-execution-cloud-non-eyes-example\/blob\/main\/test\/todo-app.test.js#L23\">beforeAll()<\/a>`, we can set our test batching and naming along with configuring an Applitools API key.<\/p>\n\n\n\n<p>To enable Execution Cloud for our tests, we need to ensure that we activate this cloud platform on the account level. After that\u2019s done, in our tests&#8217; setup, we will need to initialize the WebDriver using the following code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">let url = await Eyes.getExecutionCloudUrl();\n\ndriver = new Builder().usingServer(url).withCapabilities(capabilities).build();<\/code><\/pre>\n\n\n\n<p>For our test case, we will open a demo app, navigate to another page, press a counter button, and validate that the click incremented the value of clicks by one.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">describe('Documentation Demo App', () =&gt; {\n\n\u2026\n\n&nbsp;&nbsp;&nbsp;&nbsp;test('should navigate to another page and increment its counter', async () =&gt; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Arrange - go to the home page\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await driver.get('https:\/\/docs-demo-app.vercel.app\/');\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Act - go to another page and click a counter button\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await driver.findElement(By.xpath(\"\/\/*[text() = 'Another Page']\")).click();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await driver.findElement(By.className('button-counter')).click();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Assert - validate that the counter was clicked\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const finalClickCount = await driver.findElement(By.className('button-counter')).getText();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await expect(finalClickCount).toContain('Clicked 1 times');\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n\u2026<\/code><\/pre>\n\n\n\n<p>Another critical aspect of running our test is that it&#8217;s a non-Eyes test. Since we are not taking screenshots, we need to tell the Execution Cloud when a test begins and ends.&nbsp;<\/p>\n\n\n\n<p>To start the test, we should add the following snippet inside the `<a href=\"https:\/\/github.com\/dmitryvinn\/applitools-execution-cloud-non-eyes-example\/blob\/main\/test\/todo-app.test.js#L40\">beforeEach()<\/a>` that will name the test and assign it to a proper test batch:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">await driver.executeScript(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'applitools:startTest',\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'testName': expect.getState().currentTestName,\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'appName': APP_NAME,\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'batch': { \"id\": batch.getId() }\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<\/code><\/pre>\n\n\n\n<p>Lastly, we need to tell our automation when the test is done and what were its results. We will add the following code that sets the status of our test in the `<a href=\"https:\/\/github.com\/dmitryvinn\/applitools-execution-cloud-non-eyes-example\/blob\/main\/test\/todo-app.test.js#L74\">afterEach()<\/a>` hook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">await driver.executeScript('applitools:endTest',&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 'status': testStatus })<\/code><\/pre>\n\n\n\n<p>Now, our test is ready to be run on the Execution Cloud.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-running-test\">Running test<\/h3>\n\n\n\n<p>To run our test, we need to set the Applitools API key. We can do it in a terminal or have it set as a global variable:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">export APPLITOOLS_API_KEY=[API_KEY]<\/code><\/pre>\n\n\n\n<p>In the above command, we need to replace [API_KEY] with the API key for our account. The key can be found in the Applitools Dashboard, as shown in <a href=\"https:\/\/help.applitools.com\/hc\/en-us\/articles\/360006914732-The-runner-API-key\">this FAQ article<\/a>.<\/p>\n\n\n\n<p>Now, we need to navigate to the location where our tests are located and run the following npm test command in the terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">npm test<\/code><\/pre>\n\n\n\n<p>It will trigger the test suite that can be seen on the Applitools Dashboard:<\/p>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/UZ5_tEhIO57gNFxvgqOj6sipG68JFW7Outq_4xwiIZFgrvXWwIAJy-pv0QbkxcgO2oo5TDM7XmrXa26ZTkWSJOhTbapHjoKdBG16xnBW4CFo5dx1ovJHB8y1GwEEpvxGO2Vqof0pkdeA6M3omEUPylc\" alt=\"\"\/><\/figure>\n\n\n\n<p><em>Applitools Dashboard with Execution Cloud enabled<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Execution Cloud in Action<\/h2>\n\n\n\n<p>It&#8217;s a well-known fact that apps go through a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Systems_development_life_cycle\">lifecycle<\/a>. They get created, get bugs, change, and ultimately shut down. This ever-changing lifecycle of any app is what causes our tests to break. Whether it&#8217;s due to a bug or an accidental regression, it&#8217;s widespread for a test to fail after a change in an app.<\/p>\n\n\n\n<p>Let&#8217;s say a developer working on a counter button component changes its class name to `button-count` from the original `button-counter`. There could be many reasons this change could happen, but nevertheless, these modifications to the production code are extremely common.&nbsp;<\/p>\n\n\n\n<p>What&#8217;s even more common is that the developer who made the change might forget or not find all the tests using the original class name, `button-counter`, to validate this component. As a result, these outdated tests would start failing, distracting us from investigating real production issues, which could significantly impact our users.<\/p>\n\n\n\n<p>Execution Cloud and its self-healing capabilities were built specifically to address this problem. This cloud platform would be able to &#8220;self-heal&#8221; our tests that were previously running against a class name `button-counter`, and rather than failing these tests, the Execution Cloud would find another selector that hasn&#8217;t changed. With this highly scalable solution, our test coverage would remain the same and let us focus on correcting issues that are actually causing a regression in production.<\/p>\n\n\n\n<p>Although we are running non-Eyes tests, the Applitools Dashboard still allows us to see several valuable materials, like a video recording of our test or to export WebDriver commands!\u00a0<\/p>\n\n\n\n<p><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Want to see more? <a href=\"\/platform\/execution-cloud\/trial-request\/\">Request a free trial of Applitools Execution Cloud<\/a>. <\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Whether you are a small startup that prioritizes quick iterations, or a large organization that focuses on scale, <a href=\"https:\/\/app14743.cloudwayssites.com\/platform\/execution-cloud\/\">Applitools Execution Cloud<\/a> is a perfect choice for any scenario. It offers a reliable way for tests to become what they should be &#8211; the first line of defense in ensuring the best customer experience for our users.<\/p>\n\n\n\n<p>With the self-healing capabilities of the Execution Cloud, we get to focus on real production issues that actively affect our customers. With this cloud platform, we are moving towards a space where tests don&#8217;t become something we accept as constantly failing or a detriment to our <a href=\"https:\/\/en.wikipedia.org\/wiki\/Velocity_(software_development)\">developer velocity<\/a>. Instead, we treat our test coverage as a trusted companion that raises problems before our users do.&nbsp;<\/p>\n\n\n\n<p>With these functionalities, Applitools and its Execution Cloud quickly become a must-have for any developer workflow that can supercharge the productivity and efficiency of every engineering team.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.<\/p>\n","protected":false},"author":102,"featured_media":50008,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10558],"tags":[16620,16890,10061,16882,16891],"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>Functional Testing&#039;s New Friend: Applitools Execution Cloud - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.\" \/>\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\/functional-testings-new-friend-applitools-execution-cloud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Functional Testing&#039;s New Friend: Applitools Execution Cloud\" \/>\n<meta property=\"og:description\" content=\"Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-11T19:59:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-13T13:46:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"952\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dmitry Vinnik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dmitry Vinnik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/\"},\"author\":{\"name\":\"Dmitry Vinnik\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/301992443be308a1324ea761e5977770\"},\"headline\":\"Functional Testing&#8217;s New Friend: Applitools Execution Cloud\",\"datePublished\":\"2023-09-11T19:59:03+00:00\",\"dateModified\":\"2023-09-13T13:46:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/\"},\"wordCount\":1797,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png\",\"keywords\":[\"element locators\",\"Execution Cloud\",\"Functional Testing\",\"locators\",\"self-healing\"],\"articleSection\":[\"Product\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/\",\"name\":\"Functional Testing's New Friend: Applitools Execution Cloud - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png\",\"datePublished\":\"2023-09-11T19:59:03+00:00\",\"dateModified\":\"2023-09-13T13:46:21+00:00\",\"description\":\"Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png\",\"width\":2000,\"height\":952,\"caption\":\"Execution Cloud main image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/product\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Functional Testing&#8217;s New Friend: Applitools Execution Cloud\"}]},{\"@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\/301992443be308a1324ea761e5977770\",\"name\":\"Dmitry Vinnik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/09738f15846edb09e70bd59cf41f030e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/09738f15846edb09e70bd59cf41f030e?s=96&d=mm&r=g\",\"caption\":\"Dmitry Vinnik\"},\"description\":\"Dmitry is a Developer Advocacy Consultant at Proactive DevRel. His goal is to help developers be more productive through open source. Dmitry continues being a developer-first, so he applies the same mindset and passion when working on open source projects, creating new educational content, or giving conference talks. Dmitry has a background in medicine and bioinformatics, but these days he is more interested in understanding developer wellness and work-life balance.\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/dmitryvinnik\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Functional Testing's New Friend: Applitools Execution Cloud - AI-Powered End-to-End Testing | Applitools","description":"Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.","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\/functional-testings-new-friend-applitools-execution-cloud\/","og_locale":"en_US","og_type":"article","og_title":"Functional Testing's New Friend: Applitools Execution Cloud","og_description":"Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2023-09-11T19:59:03+00:00","article_modified_time":"2023-09-13T13:46:21+00:00","og_image":[{"width":2000,"height":952,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png","type":"image\/png"}],"author":"Dmitry Vinnik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Dmitry Vinnik","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/"},"author":{"name":"Dmitry Vinnik","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/301992443be308a1324ea761e5977770"},"headline":"Functional Testing&#8217;s New Friend: Applitools Execution Cloud","datePublished":"2023-09-11T19:59:03+00:00","dateModified":"2023-09-13T13:46:21+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/"},"wordCount":1797,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png","keywords":["element locators","Execution Cloud","Functional Testing","locators","self-healing"],"articleSection":["Product"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/","name":"Functional Testing's New Friend: Applitools Execution Cloud - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png","datePublished":"2023-09-11T19:59:03+00:00","dateModified":"2023-09-13T13:46:21+00:00","description":"Dmitry Vinnik explores how the Execution Cloud and its self-healing capabilities can be used to run functional test coverage.","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2023\/05\/EC-Dash-1.png","width":2000,"height":952,"caption":"Execution Cloud main image"},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/functional-testings-new-friend-applitools-execution-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Product","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/product\/"},{"@type":"ListItem","position":3,"name":"Functional Testing&#8217;s New Friend: Applitools Execution Cloud"}]},{"@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\/301992443be308a1324ea761e5977770","name":"Dmitry Vinnik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/09738f15846edb09e70bd59cf41f030e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09738f15846edb09e70bd59cf41f030e?s=96&d=mm&r=g","caption":"Dmitry Vinnik"},"description":"Dmitry is a Developer Advocacy Consultant at Proactive DevRel. His goal is to help developers be more productive through open source. Dmitry continues being a developer-first, so he applies the same mindset and passion when working on open source projects, creating new educational content, or giving conference talks. Dmitry has a background in medicine and bioinformatics, but these days he is more interested in understanding developer wellness and work-life balance.","url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/dmitryvinnik\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/51735"}],"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\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=51735"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/51735\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/50008"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=51735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=51735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=51735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}