{"id":10069,"date":"2014-09-23T12:29:00","date_gmt":"2014-09-23T12:29:00","guid":{"rendered":"http:\/\/162.243.59.116\/2014\/09\/23\/7-steps-to-master-functional-testing\/"},"modified":"2022-04-22T08:04:39","modified_gmt":"2022-04-22T15:04:39","slug":"7-steps-to-master-functional-testing","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/","title":{"rendered":"7 Steps to Master Functional Testing"},"content":{"rendered":"<p>The DevOps movement details a fundamental shift of who is responsible for software testing, and how testing is carried out. Functional testing has become not only the responsibility of the QA team but also the developers.<\/p>\n<p>As the QA team now focuses on automation of tests, creating testing infrastructure, and empowering the organization to fast track bug repairs, developers, and especially front-end developers, are in charge of delivering the app to QA with quality gates in place.<\/p>\n<p><strong>This post details the 7 steps front-end developers should adopt to prepare themselves for functional testing.&nbsp;<\/strong><!--more--><\/p>\n<p><!-- more --><\/p>\n<p>If you a front-end developer and are shaking your head at the idea of taking on functional testing in addition to everything else you are already doing \u2013 we get it. You are busy focusing on your code, implementing new functionality and creating apps in a multi-everything environment. <strong>To take on new responsibilities is just going to slow everything down, isn\u2019t it?<\/strong><\/p>\n<p>Well, no.<\/p>\n<p>With the introduction of new testing methods, such as perceptual diffs for visual testing, and new ways to build browser grids without spending time on infrastructure (which is totally boring), functional testing is a much easier pill to swallow, and it\u2019s <a title=\"FEDs without Functional Testing = Bad Weekends\" href=\"http:\/\/blog.applitools.com\/front-end-developers-without-functional-testing\/\" target=\"_blank\" rel=\"noopener noreferrer\">benefits<\/a> outweigh any time you spend on it.<\/p>\n<p>So while you might be taking on new responsibilities, you are also increasing release frequency, and decreasing time spent on bugs and regression cycles \u2013 since you ship to QA a working product, tested and fully-functional.<\/p>\n<p><strong>You, the mighty FED, are the first line of defense for preventing bugs<\/strong>, which come back to haunt you anyway. When you integrate functional testing into your schedule, you are fast tracking new features because you know better than anyone how tests should run on features you just wrote, which means faster turnaround on releases, and ability to get more in on a release. When done wrong, these things waste more time \u2013 your time \u2013 a lot more than the addition of <a href=\"https:\/\/app14743.cloudwayssites.com\/functional-testing\/\">functional testing<\/a> will take from you.<\/p>\n<p>So now that I cleared the apprehension, here are 7 things you, the front-end developer, need to consider with functional testing:<\/p>\n<h4><strong>(1) Make sure you have a testing lab. <\/strong><\/h4>\n<p>You do not want to test on your local machine, as this will take the machine away from you. And managing any infrastructure is just a waste of your time.&nbsp;It should be a matter of adding your scripts to a test suite, pressing a \u201cgo\u201d button, and when it is done, reviewing the results.<\/p>\n<p>All organizations should have a testing lab, either in the cloud or locally.&nbsp;Ask your QA Automation team for access to the lab, and methods for using it.&nbsp; Or you can leverage cloud-based testing tools like <a href=\"https:\/\/saucelabs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">SauceLabs<\/a>, <a href=\"http:\/\/www.browserstack.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Browser Stack<\/a>, or <a href=\"https:\/\/www.rainforestqa.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rainforest QA<\/a> who provided the infrastructure for you.<\/p>\n<h4><strong>(2) Pseudo your tests as you code<\/strong>.<\/h4>\n<p>Timing is important and being on top of your test cases is critical. With functional testing you should <strong>create your test case when you create a feature<\/strong>.&nbsp;The definition of \u201cfeature\u201d can be subjective I know, but it usually relates to a ticket, or backlog item.While features are not tied to one function, they are (should be) clear to you. You wrote it!<\/p>\n<p>There are a few elements you need to note as you write the feature. What are the page objects related to this new feature? And what are the pages (URLS) associated with it? It\u2019s best to have a note-taking app open and jot down in pseudo the details of the test.&nbsp;You will not get the test written at this point, and 70% of this ritual is just so you remember what test cases you need to write. When it comes time to, you can then pound them out.<\/p>\n<h4><strong>(3) Segregate your tests into two types: user flows, and visual testing.<\/strong><\/h4>\n<p>The challenge with test automation tools like Selenium&nbsp;is that sometimes you need to know in advance what to test. Channel your telepathy skills. But even if you predict all tests, you can quickly spiral into a never-ending test case if you are not disciplined.<\/p>\n<p>You do not always need to test every detail for some functionality, but for others you do. It relates to your specific application, and what is most important to test in each release. For example new text in a title is not as critical as a new payment button and purchase flow.&nbsp;User flow tests should be more complex, and work on page objects and interactions with those objects. The entire test can be multi-page, and needs to emulate user actions.<\/p>\n<p>While visual testing is very simple to script, all it does is load a page, then snapshot that page. After you have the snapshots you will use a tool like Applitools Eyes to compare the screenshots in order to identify changes in the application from previous builds. It tests everything visually, so you don\u2019t need to predict the test in advance \u2013 it alerts you on major changes from previous release.<\/p>\n<p>So for each test know what type of test it is (OK you got me, there is a use case for using both tests together).<\/p>\n<h4><strong>(4) Run regression tests<\/strong>.<\/h4>\n<p>I know I know, you are thinking, \u201cI\u2019m just testing what is new\u201d.&nbsp; But what is new can very easily break what is old. True, before a release QA will run regression tests, but if there is a problem during their run, guess what, it\u2019s back in your lap anyway. And if that test is run on a weekend, you might be getting a call in the middle of the night. So, hey, it\u2019s a lot easier to just run the tests.<\/p>\n<p>There is a trick in your back pocket if you can get the team on board: Continuous Integration (CI) tools, such as Jenkins, that can run the regression tests for you. Instead of \u201crunning tests\u201d, you are releasing to staging.<\/p>\n<p>Someone else will write the regression tests, and it should only be a matter of introducing your new scripts into the suite, which includes the regression tests and hitting the \u201crun\u201d button.<\/p>\n<h4><strong>(5)&nbsp;Leverage tools specifically for Front-End functionality testing<\/strong>, such as \u201cWait\u201d Extensions for AJAX applications, <a href=\"https:\/\/github.com\/angular\/protractor\" target=\"_blank\" rel=\"noopener noreferrer\">Protractor<\/a> for Angular Applications, and <a href=\"https:\/\/github.com\/jnicklas\/capybara\" target=\"_blank\" rel=\"noopener noreferrer\">Capybara<\/a> for Ruby on Rails application.<\/h4>\n<p>There is so much available from the community, but you do need to be careful when you select open source tools. Pay attention to the committers devotion to the project, as many have come and gone, such as WaitForCondition.<\/p>\n<h4><strong>(6)&nbsp;Version, share, and plan your testing suite<\/strong>.<\/h4>\n<p>Almost all dev teams suffer from script sprawl. Scripts are coming from everywhere, and there is little time to prune old scripts and manage the suite. However, it is important. It should not be just the front-end developers\u2019 job, but everyone should be aware.<\/p>\n<p>Usually, QA will regularly review scripts. Your job, now that you are adding scripts, is to provide visibility into the tests you created, and ideas on what might be prune-able. There are advanced ways to do this automatically, but that is for another time. Without doing so, eventually failed scripts (caused by removed functionality, for example) will wreak havoc on test runs.<\/p>\n<h4><strong>(7)&nbsp;Be open-minded.<\/strong><\/h4>\n<p>There will be some storming and norming that goes on in the process of taking on functional testing. But the dust will settle, and once you are in a groove, you will forget it\u2019s even a new process.<\/p>\n<p>It\u2019s coming. Application quality is a responsibility moving closer and closer to those who built the application. <strong>Front-End developers will be an integral part of the testing process<\/strong>. But the good news is there are tools and processes that limit its impact. And eventually, make it hugely beneficial.<\/p>\n<p><span style=\"font-weight: 400;\">To read more about Applitools\u2019 visual UI testing and<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/downloads\/The_Rise_of_AVM_Applitools_June_18_2018.pdf\"> <span style=\"font-weight: 400;\">Application Visual Management<\/span><\/a><span style=\"font-weight: 400;\"> (AVM) solutions, check out the<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/resources\"> <span style=\"font-weight: 400;\">resources<\/span><\/a><span style=\"font-weight: 400;\"> section on the Applitools website. To get started with Applitools, request a<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/request-demo\"> <span style=\"font-weight: 400;\">demo<\/span><\/a><span style=\"font-weight: 400;\"> or<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/users\/register\"> <span style=\"font-weight: 400;\">sign up<\/span><\/a><span style=\"font-weight: 400;\"> for a free Applitools account.<\/span><\/p>\n<p><a href=\"https:\/\/app14743.cloudwayssites.com\/free_account_signup_lp\/\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-347 size-full\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2013\/11\/UI-perfect-white-banner.png\" alt=\"Release Apps with Flawless UI - with Applitools Eyes\" width=\"600\" height=\"90\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The DevOps movement details a fundamental shift of who is responsible for software testing, and how testing is carried out. Functional testing has become not only the responsibility of the&#8230;<\/p>\n","protected":false},"author":10,"featured_media":10413,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10004],"tags":[12691,10061,10139,12690,12686],"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>7 Steps to Master Functional Testing - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"The DevOps movement details a fundamental shift of who is responsible for software testing, and how testing is carried out. Functional testing has become not only the responsibility of the...\" \/>\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\/7-steps-to-master-functional-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"7 Steps to Master Functional Testing\" \/>\n<meta property=\"og:description\" content=\"The DevOps movement details a fundamental shift of who is responsible for software testing, and how testing is carried out. Functional testing has become\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2014-09-23T12:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-22T15:04:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"490\" \/>\n\t<meta property=\"og:image:height\" content=\"325\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chris Riley\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Riley\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/\"},\"author\":{\"name\":\"Chris Riley\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/d74f609ae0e74a5ca41ee8ba2c141020\"},\"headline\":\"7 Steps to Master Functional Testing\",\"datePublished\":\"2014-09-23T12:29:00+00:00\",\"dateModified\":\"2022-04-22T15:04:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/\"},\"wordCount\":1333,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg\",\"keywords\":[\"Developers\",\"Functional Testing\",\"Selenium\",\"Test Engineers\",\"Visual Testing Strategies\"],\"articleSection\":[\"Advanced Topics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/\",\"name\":\"7 Steps to Master Functional Testing - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg\",\"datePublished\":\"2014-09-23T12:29:00+00:00\",\"dateModified\":\"2022-04-22T15:04:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg\",\"width\":490,\"height\":325},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-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\":\"7 Steps to Master Functional 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\/d74f609ae0e74a5ca41ee8ba2c141020\",\"name\":\"Chris Riley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7777701f0b30e10e7722974e4ccd680b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7777701f0b30e10e7722974e4ccd680b?s=96&d=mm&r=g\",\"caption\":\"Chris Riley\"},\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/chris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"7 Steps to Master Functional Testing - AI-Powered End-to-End Testing | Applitools","description":"The DevOps movement details a fundamental shift of who is responsible for software testing, and how testing is carried out. Functional testing has become not only the responsibility of the...","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\/7-steps-to-master-functional-testing\/","og_locale":"en_US","og_type":"article","og_title":"7 Steps to Master Functional Testing","og_description":"The DevOps movement details a fundamental shift of who is responsible for software testing, and how testing is carried out. Functional testing has become","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2014-09-23T12:29:00+00:00","article_modified_time":"2022-04-22T15:04:39+00:00","og_image":[{"width":490,"height":325,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg","type":"image\/jpeg"}],"author":"Chris Riley","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chris Riley","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/"},"author":{"name":"Chris Riley","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/d74f609ae0e74a5ca41ee8ba2c141020"},"headline":"7 Steps to Master Functional Testing","datePublished":"2014-09-23T12:29:00+00:00","dateModified":"2022-04-22T15:04:39+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/"},"wordCount":1333,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg","keywords":["Developers","Functional Testing","Selenium","Test Engineers","Visual Testing Strategies"],"articleSection":["Advanced Topics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/","name":"7 Steps to Master Functional Testing - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg","datePublished":"2014-09-23T12:29:00+00:00","dateModified":"2022-04-22T15:04:39+00:00","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-testing\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/09\/facepalm.jpg","width":490,"height":325},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/7-steps-to-master-functional-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":"7 Steps to Master Functional 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\/d74f609ae0e74a5ca41ee8ba2c141020","name":"Chris Riley","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7777701f0b30e10e7722974e4ccd680b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7777701f0b30e10e7722974e4ccd680b?s=96&d=mm&r=g","caption":"Chris Riley"},"url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/chris\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/10069"}],"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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=10069"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/10069\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/10413"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=10069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=10069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=10069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}