{"id":46108,"date":"2023-01-23T10:03:39","date_gmt":"2023-01-23T18:03:39","guid":{"rendered":"https:\/\/applitools.com\/?post_type=ebook&#038;p=46108"},"modified":"2023-11-14T12:56:46","modified_gmt":"2023-11-14T20:56:46","slug":"best-practice-guide-automated-visual-testing","status":"publish","type":"ebook","link":"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/","title":{"rendered":"Best Practice Guide: Automated Visual Testing"},"content":{"rendered":"\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Many of the top high-performing companies in software, financial services, and healthcare verticals are using Applitools Eyes for their visual test automation needs. We\u2019ve talked with these companies to gain a better understanding of how they are using the product and to identify common practices that are working well for teams. This guide provides a set of best practices and our recommendations for implementing and maintaining automated visual tests with Applitools based on our customers\u2019 experiences.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">  <div id=\"marketoFormContainer\" class=\"block marketo-form theme- is-style-enhanced\">\n    <div>\n      <script>\n        if (typeof MktoForms2 !== 'undefined'){\n          \/\/ config section - customize for your org\n          var config = {\n            \/\/   instanceHost: \"\/\/app-lon06.marketo.com\",\n              instanceHost: \"\/\/go.applitools.com\",\n              munchkinId: \"687-TER-612\",\n              formidStack: [1900],\n              onFinalSuccess: function(vals, thankYouURL) {\n                \/\/ Segment Calls\n                if  (typeof analytics !== 'undefined') {\n                    analytics.identify(vals.Email, {\n                        'email': vals.Email,\n                        'company': vals.Company,\n                        'firstName': vals.FirstName,\n                        'lastName': vals.LastName,\n                        'title': vals.Person_Role__c,\n                        'country': vals.Self_Report_Country__c,\n                        'state': vals.Self_Report_State__c,\n                    });\n                    analytics.track('Marketo Form Submit', {\n                        'formType': 'EBook',\n                        'formUrl': vals.Web_Form_URL__c,\n                        'pageTitle': document.title,\n                    });\n                    analytics.group(vals.Company);\n                }\n\n                  \/* whatever you want to do after the final form is submitted *\/\n                                                                  location.href = \"https:\/\/applitools.com\/wp-content\/uploads\/2020\/05\/Automated_Visual_Testing_Best_Practices_Guide_2020_May_05-1.pdf\";\n                          return false;\n                                                      },\n              insertInsideSelector: \"#marketoFormContainer\"\n              \/* insertBeforeSelector : null *\/\n          }\n          \n          \/\/ utility fns\n          var injectMktoForm = function(parentEl, insertBeforeEl, instanceHost, munchkinId, formid, onReady) {\n              var formEl = document.createElement('FORM');\n              formEl.id = 'mktoForm_' + formid;\n              try {\n                parentEl.insertBefore(formEl, insertBeforeEl)\n              } catch (e) {\n                parentEl.appendChild(formEl)\n              }\n              MktoForms2.loadForm.apply(MktoForms2, Array.prototype.slice.apply(arguments, [2]));\n\n              MktoForms2.whenReady(function(form){\n                \/\/ check for consent field and move it to the end of the form\n                \/\/ something about progressive profiling makes it impossible to just move it there in marketo in the first place\n                \/\/ marketo is dumb and will sometimes output two labels with the same ID, so there's some janky selectors happening below\n                const $form = form.getFormElem();\n                const $sourceLabel = $form.find('.mktoLabel[for=\"Opt_In_Compliance__c\"]');\n                if (!$sourceLabel.length) return;\n                const $fieldRow = $sourceLabel.closest('.mktoFormRow');\n                const $targetLabel = $fieldRow.find('.mktoCheckboxList [for=\"Opt_In_Compliance__c\"]');\n                $targetLabel.html($sourceLabel.html());\n                $targetLabel.addClass('mktoLabel');\n                $sourceLabel.remove();                \n                $fieldRow.detach().insertAfter($form.find('.mktoFormRow').last());\n                \n                \/\/ kill any custom styles coming from marketo, mwhahaha \n                for (const sheet of document.styleSheets) {\n                  \/\/ find anonymous <style> sheets in the document\n                  if (sheet.ownerNode.nodeName !== 'STYLE') continue;\n                  \/\/ use a for loop here so we can break. forEach is cleaner but needs an exception to exit.\n                  for (let index = 0; index < sheet.rules.length; index++) {\n                    const rule = sheet.rules[index];\n                    \/\/ some rules like keyframes don't have selectorText, but rule.hasOwnProperty doesn't work so check for undefined\n                    if (typeof rule.selectorText === 'undefined') continue;\n                    \/\/ if we find a sheet with rules pertaining to marketo, disable the whole sheet and move on with life\n                    if (rule.selectorText.includes('mktoForm')) {\n                      sheet.disabled = true;\n                      break;\n                    }\n                  }                    \n                }\n\n                $('.mktoField[type=\"hidden\"]').closest('.mktoFormRow').addClass('is-type-hidden');\n              });\n          }\n\n          var ejectElement = function(formEl) {\n              formEl.parentNode.removeChild(formEl);\n          }\n\n          var arrayPushGet = function(ary, pushable) {\n              return ary[ary.push(pushable) - 1];\n          }\n\n          function isEmailGood(email) {\n              for (var i = 0; i < invalidDomains.length; i++) {\n                  var domain = invalidDomains[i];\n                  if (email.indexOf(domain) != -1) {\n                      return false;\n                  }\n              }\n              return true;\n          }\n\n          \/**\n            * Set variables needed for back link. Return form ids to formidStack and call \n            * nextForm function to render proper form.\n            **\/\n          var allIDs = config.formidStack,\n              prevValues = new Array();\n          function backClick(event) {\n              event.preventDefault();\n              button = document.getElementsByClassName(\"mktoButton\");\n              button[0].innerHTML = 'Please Wait';\n              button[0].disabled = true;\n\n              var pos = allIDs.indexOf(config.formidStack[0]);\n              if(pos >= 0) {\n                  config.formidStack.unshift(allIDs[pos-1]);\n                  config.formidStack.unshift(allIDs[pos-2]);\n              } else {\n                  config.formidStack.unshift(allIDs[allIDs.length-1]);\n                  config.formidStack.unshift(allIDs[allIDs.length-2]);\n              }\n              nextForm(prevValues);\n          }\n\n          \n          \/\/ allow runtime override of starting form ID\n          var startFormId = +document.location.hash.substring(1),\n              startFormIndex = Math.max(config.formidStack.indexOf(startFormId),0);\n\n          config.formidStack = config.formidStack.slice(startFormIndex);\n\n          \/\/ main work\n          var formParentEl = document.querySelector(config.insertInsideSelector) || document.body,\n              formEl = formParentEl.querySelector(config.insertBeforeSelector) || null,\n              formidInitialCount = config.formidStack.length,\n              formElStack = [],\n              formid;\n\n          var nextForm = function(values, thankYouURL) {\n              if (formid = config.formidStack.shift()) {\n                  injectMktoForm(formParentEl, formEl, config.instanceHost, config.munchkinId, formid,\n\n                      function(form) {\n\n                          if (formEl) {\n                              $('html, body').animate({\n                                  scrollTop: $('#marketoFormContainer').offset().top - $('#site-header').outerHeight()\n                              }, 500)\n\n                              \/\/ nothing to eject on initial run\n                              backID = 'id' + formid;\n                              ejectElement(formElStack.shift());\n                              if(values && values.Email) {\n                                form.addHiddenFields({\n                                  Email: values.Email\n                                });\n                              }\n                              if(prevValues[backID]) {\n                                form.vals(prevValues[backID]);\n                              }\n                          }\n\n                                                                              \n                          form.addHiddenFields({\n                              Web_Form_URL__c : window.location.protocol + '\/\/' + window.location.hostname + window.location.pathname\n                          });\n\n                          formEl = arrayPushGet(formElStack, form.getFormElem()[0]);\n                          formParentEl = formEl.parentNode;\n\n                          if(formidInitialCount > 1) {\n                              \/\/ Add the progress count\n                              var progressEl = document.createElement('div'),\n                                  currentPage = formidInitialCount-config.formidStack.length;\n                              if (progressEl) {\n                                  progressEl.textContent = 'Step '+(currentPage)+' of '+formidInitialCount;\n                                  progressEl.setAttribute('class','progress');\n                                  formEl.insertBefore(progressEl, formEl.firstChild);\n                              }\n                              \n                              \/\/ Add the back link on page 2 or greater\n                              if(currentPage >= 2) {\n                                  formEl.insertAdjacentHTML('beforeend', '<a href=\"\" id=\"form-back\">< Back<\/a>');\n                                  document.getElementById(\"form-back\").addEventListener(\"click\", function(event){\n                                      backClick(event);\n                                  });\n                              }\n                          }\n\n                          form.onValidate(function() {\n                              $('.mktoError2').remove();\n                              var email = form.vals().Email;\n                              if (email) {\n                                                                        if (!isEmailGood(email)) {\n                                          form.submittable(false);\n                                          var emailElem = form.getFormElem().find('[id^=\"Email\"]');\n                                          \n                                          if(emailElem.hasClass('mktoValid')) {\n                                              emailElem.removeClass('mktoValid').addClass('mktoInvalid');\n                                          }\n                                          emailElem.parent().append('<div class=\"mktoError2\">Must be a standard business email without special characters.<\/div>');\n                                          \/\/ form.showErrorMessage('Email invalid');\n                                          \n                                          return false;\n                                      } else {\n                                          form.submittable(true);\n                                      }\n                                                                }\n                          });\n\n                          form.onSubmit(function(){prevValues['id'+formid] = form.vals()});\n                          \n                          form.onSuccess(config.formidStack.length ? nextForm : config.onFinalSuccess);\n\n                      });\n\n                  \/\/ don't forward to ThankYouURL\n                  return false;\n              }\n          }\n\n          nextForm(); \/\/ first call will initialize\n\n\n            var invalidDomains = [\"@icloud\", \"@outlook\", \"@hotmail\", \"@yahoo\", \"@aol.com\", \"@0-mail.com\", \"@027168.com\", \"@0815.su\", \"@0sg.net\", \"@10mail.org\", \"@10minutemail.co.za\", \"@11mail.com\", \"@123.com\", \"@123box.net\", \"@123india.com\", \"@123mail.cl\", \"@123mail.org\", \"@123qwe.co.uk\", \"@126.com\", \"@139.com\", \"@150mail.com\", \"@150ml.com\", \"@15meg4free.com\", \"@163.com\", \"@16mail.com\", \"@188.com\", \"@189.cn\", \"@1ce.us\", \"@1chuan.com\", \"@1coolplace.com\", \"@1freeemail.com\", \"@1funplace.com\", \"@1internetdrive.com\", \"@1mail.ml\", \"@1mail.net\", \"@1me.net\", \"@1mum.com\", \"@1musicrow.com\", \"@1netdrive.com\", \"@1nsyncfan.com\", \"@1pad.de\", \"@1under.com\", \"@1webave.com\", \"@1webhighway.com\", \"@1zhuan.com\", \"@2-mail.com\", \"@20email.eu\", \"@20mail.in\", \"@20mail.it\", \"@212.com\", \"@21cn.com\", \"@24horas.com\", \"@2911.net\", \"@2980.com\", \"@2bmail.co.uk\", \"@2d2i.com\", \"@2die4.com\", \"@2trom.com\", \"@3000.it\", \"@30minutesmail.com\", \"@3126.com\", \"@321media.com\", \"@33mail.com\", \"@37.com\", \"@3ammagazine.com\", \"@3dmail.com\", \"@3email.com\", \"@3g.ua\", \"@3mail.ga\", \"@3xl.net\", \"@444.net\", \"@4email.com\", \"@4email.net\", \"@4mg.com\", \"@4newyork.com\", \"@4warding.net\", \"@4warding.org\", \"@4x4man.com\", \"@50mail.com\", \"@60minutemail.com\", \"@6ip.us\", \"@6mail.cf\", \"@6paq.com\", \"@74.ru\", \"@7mail.ga\", \"@7mail.ml\", \"@88.am\", \"@8848.net\", \"@8mail.ga\", \"@8mail.ml\", \"@97rock.com\", \"@99experts.com\", \"@a45.in\", \"@aaamail.zzn.com\", \"@aamail.net\", \"@aapt.net.au\", \"@aaronkwok.net\", \"@abbeyroadlondon.co.uk\", \"@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com\", \"@abcflash.net\", \"@abdulnour.com\", \"@aberystwyth.com\", \"@about.com\", \"@abusemail.de\", \"@abwesend.de\", \"@abyssmail.com\", \"@ac20mail.in\", \"@academycougars.com\", \"@acceso.or.cr\", \"@access4less.net\", \"@accessgcc.com\", \"@accountant.com\", \"@acdcfan.com\", \"@ace-of-base.com\", \"@acmemail.net\", \"@acninc.net\", \"@activist.com\", \"@adam.com.au\", \"@add3000.pp.ua\", \"@addcom.de\", \"@address.com\", \"@adelphia.net\", \"@adexec.com\", \"@adfarrow.com\", \"@adios.net\", \"@adoption.com\", \"@ados.fr\", \"@adrenalinefreak.com\", \"@advalvas.be\", \"@advantimo.com\", \"@aeiou.pt\", \"@aemail4u.com\", \"@aeneasmail.com\", \"@afreeinternet.com\", \"@africamail.com\", \"@africamel.net\", \"@ag.us.to\", \"@agoodmail.com\", \"@ahaa.dk\", \"@ahk.jp\", \"@aichi.com\", \"@aim.com\", \"@aircraftmail.com\", \"@airforce.net\", \"@airforceemail.com\", \"@airpost.net\", \"@ajacied.com\", \"@ajaxapp.net\", \"@ak47.hu\", \"@aknet.kg\", \"@albawaba.com\", \"@alex4all.com\", \"@alexandria.cc\", \"@algeria.com\", \"@alhilal.net\", \"@alibaba.com\", \"@alice.it\", \"@alive.cz\", \"@aliyun.com\", \"@allergist.com\", \"@allmail.net\", \"@alloymail.com\", \"@allracing.com\", \"@allsaintsfan.com\", \"@alpenjodel.de\", \"@alphafrau.de\", \"@alskens.dk\", \"@altavista.com\", \"@altavista.net\", \"@altavista.se\", \"@alternativagratis.com\", \"@alumni.com\", \"@alumnidirector.com\", \"@alvilag.hu\", \"@amail.com\", \"@amazonses.com\", \"@amele.com\", \"@america.hm\", \"@ameritech.net\", \"@amnetsal.com\", \"@amorki.pl\", \"@amrer.net\", \"@amuro.net\", \"@amuromail.com\", \"@ananzi.co.za\", \"@ancestry.com\", \"@andylau.net\", \"@anfmail.com\", \"@angelfire.com\", \"@angelic.com\", \"@animail.net\", \"@animalhouse.com\", \"@animalwoman.net\", \"@anjungcafe.com\", \"@annsmail.com\", \"@ano-mail.net\", \"@anonmails.de\", \"@anonymous.to\", \"@anote.com\", \"@another.com\", \"@anotherdomaincyka.tk\", \"@anotherwin95.com\", \"@anti-social.com\", \"@antisocial.com\", \"@antispam24.de\", \"@antongijsen.com\", \"@antwerpen.com\", \"@anymoment.com\", \"@anytimenow.com\", \"@aol.com\", \"@aon.at\", \"@apexmail.com\", \"@apmail.com\", \"@apollo.lv\", \"@aport.ru\", \"@aport2000.ru\", \"@appraiser.net\", \"@approvers.net\", \"@arabia.com\", \"@arabtop.net\", \"@archaeologist.com\", \"@arcor.de\", \"@arcotronics.bg\", \"@arcticmail.com\", \"@argentina.com\", \"@aristotle.org\", \"@army.net\", \"@armyspy.com\", \"@arnet.com.ar\", \"@art-en-ligne.pro\", \"@artlover.com\", \"@artlover.com.au\", \"@as-if.com\", \"@asdasd.nl\", \"@asean-mail.com\", \"@asheville.com\", \"@asia-links.com\", \"@asia-mail.com\", \"@asiafind.com\", \"@asianavenue.com\", \"@asiancityweb.com\", \"@asiansonly.net\", \"@asianwired.net\", \"@asiapoint.net\", \"@ass.pp.ua\", \"@assala.com\", \"@assamesemail.com\", \"@astroboymail.com\", \"@astrolover.com\", \"@astrosfan.com\", \"@astrosfan.net\", \"@asurfer.com\", \"@atheist.com\", \"@athenachu.net\", \"@atina.cl\", \"@atl.lv\", \"@atlaswebmail.com\", \"@atmc.net\", \"@atozasia.com\", \"@atrus.ru\", \"@att.net\", \"@attglobal.net\", \"@attymail.com\", \"@au.ru\", \"@auctioneer.net\", \"@ausi.com\", \"@aussiemail.com.au\", \"@austin.rr.com\", \"@australia.edu\", \"@australiamail.com\", \"@austrosearch.net\", \"@autoescuelanerja.com\", \"@autograf.pl\", \"@autorambler.ru\", \"@aver.com\", \"@avh.hu\", \"@avia-tonic.fr\", \"@awsom.net\", \"@axoskate.com\", \"@ayna.com\", \"@azazazatashkent.tk\", \"@azimiweb.com\", \"@azmeil.tk\", \"@bachelorboy.com\", \"@bachelorgal.com\", \"@backpackers.com\", \"@backstreet-boys.com\", \"@backstreetboysclub.com\", \"@bagherpour.com\", \"@baldmama.de\", \"@baldpapa.de\", \"@ballyfinance.com\", \"@bangkok.com\", \"@bangkok2000.com\", \"@bannertown.net\", \"@baptistmail.com\", \"@baptized.com\", \"@barcelona.com\", \"@bareed.ws\", \"@bartender.net\", \"@baseballmail.com\", \"@basketballmail.com\", \"@batuta.net\", \"@baudoinconsulting.com\", \"@bboy.zzn.com\", \"@bcvibes.com\", \"@beddly.com\", \"@beeebank.com\", \"@beenhad.com\", \"@beep.ru\", \"@beer.com\", \"@beethoven.com\", \"@belice.com\", \"@belizehome.com\", \"@bell.net\", \"@bellair.net\", \"@bellsouth.net\", \"@berlin.com\", \"@berlin.de\", \"@berlinexpo.de\", \"@bestmail.us\", \"@betriebsdirektor.de\", \"@bettergolf.net\", \"@bharatmail.com\", \"@big1.us\", \"@bigassweb.com\", \"@bigblue.net.au\", \"@bigboab.com\", \"@bigfoot.com\", \"@bigfoot.de\", \"@bigger.com\", \"@biggerbadder.com\", \"@bigmailbox.com\", \"@bigmir.net\", \"@bigpond.au\", \"@bigpond.com\", \"@bigpond.com.au\", \"@bigpond.net\", \"@bigpond.net.au\", \"@bigramp.com\", \"@bigstring.com\", \"@bikemechanics.com\", \"@bikeracer.com\", \"@bikeracers.net\", \"@bikerider.com\", \"@billsfan.com\", \"@billsfan.net\", \"@bimla.net\", \"@bin-wieder-da.de\", \"@bio-muesli.info\", \"@birdlover.com\", \"@birdowner.net\", \"@bisons.com\", \"@bitmail.com\", \"@bitpage.net\", \"@bizhosting.com\", \"@bk.ru\", \"@blackburnmail.com\", \"@blackplanet.com\", \"@blader.com\", \"@bladesmail.net\", \"@blazemail.com\", \"@bleib-bei-mir.de\", \"@blockfilter.com\", \"@blogmyway.org\", \"@bluebottle.com\", \"@bluehyppo.com\", \"@bluemail.ch\", \"@bluemail.dk\", \"@bluesfan.com\", \"@bluewin.ch\", \"@blueyonder.co.uk\", \"@blushmail.com\", \"@blutig.me\", \"@bmlsports.net\", \"@boardermail.com\", \"@boatracers.com\", \"@bodhi.lawlita.com\", \"@bol.com.br\", \"@bolando.com\", \"@bollywoodz.com\", \"@bolt.com\", \"@boltonfans.com\", \"@bombdiggity.com\", \"@bonbon.net\", \"@boom.com\", \"@bootmail.com\", \"@bootybay.de\", \"@bornnaked.com\", \"@bostonoffice.com\", \"@boun.cr\", \"@bounce.net\", \"@bounces.amazon.com\", \"@bouncr.com\", \"@box.az\", \"@box.ua\", \"@boxbg.com\", \"@boxemail.com\", \"@boxformail.in\", \"@boxfrog.com\", \"@boximail.com\", \"@boyzoneclub.com\", \"@bradfordfans.com\", \"@brasilia.net\", \"@brazilmail.com\", \"@brazilmail.com.br\", \"@breadtimes.press\", \"@breathe.com\", \"@brennendesreich.de\", \"@bresnan.net\", \"@brew-master.com\", \"@brew-meister.com\", \"@brfree.com.br\", \"@briefemail.com\", \"@bright.net\", \"@britneyclub.com\", \"@brittonsign.com\", \"@broadcast.net\", \"@brokenvalve.com\", \"@brusseler.com\", \"@bsdmail.com\", \"@btcmail.pw\", \"@btconnect.co.uk\", \"@btconnect.com\", \"@btinternet.com\", \"@btopenworld.co.uk\", \"@buerotiger.de\", \"@buffymail.com\", \"@bullsfan.com\", \"@bullsgame.com\", \"@bumerang.ro\", \"@bumpymail.com\", \"@bund.us\", \"@burnthespam.info\", \"@burstmail.info\", \"@buryfans.com\", \"@business-man.com\", \"@businessman.net\", \"@busta-rhymes.com\", \"@buyersusa.com\", \"@bvimailbox.com\", \"@byom.de\", \"@c2.hu\", \"@c2i.net\", \"@c3.hu\", \"@c4.com\", \"@c51vsgq.com\", \"@cabacabana.com\", \"@cable.comcast.com\", \"@cableone.net\", \"@caere.it\", \"@cairomail.com\", \"@calendar-server.bounces.google.com\", \"@calidifontain.be\", \"@californiamail.com\", \"@callnetuk.com\", \"@callsign.net\", \"@caltanet.it\", \"@camidge.com\", \"@canada-11.com\", \"@canada.com\", \"@canadianmail.com\", \"@canoemail.com\", \"@canwetalk.com\", \"@caramail.com\", \"@care2.com\", \"@careerbuildermail.com\", \"@carioca.net\", \"@cartelera.org\", \"@cartestraina.ro\", \"@casablancaresort.com\", \"@casema.nl\", \"@cash4u.com\", \"@cashette.com\", \"@casino.com\", \"@catcha.com\", \"@catchamail.com\", \"@catholic.org\", \"@catlover.com\", \"@cd2.com\", \"@celineclub.com\", \"@celtic.com\", \"@center-mail.de\", \"@centermail.at\", \"@centermail.de\", \"@centermail.info\", \"@centoper.it\", \"@centralpets.com\", \"@centrum.cz\", \"@centrum.sk\", \"@centurytel.net\", \"@certifiedmail.com\", \"@cfl.rr.com\", \"@cgac.es\", \"@cghost.s-a-d.de\", \"@chacuo.net\", \"@chaiyomail.com\", \"@chammy.info\", \"@chance2mail.com\", \"@chandrasekar.net\", \"@charmedmail.com\", \"@charter.net\", \"@chat.ru\", \"@chattown.com\", \"@chauhanweb.com\", \"@cheatmail.de\", \"@chechnya.conf.work\", \"@check.com\", \"@check1check.com\", \"@cheerful.com\", \"@chef.net\", \"@chek.com\", \"@chello.nl\", \"@chemist.com\", \"@chequemail.com\", \"@cheyenneweb.com\", \"@chez.com\", \"@chickmail.com\", \"@china.com\", \"@china.net.vg\", \"@chinamail.com\", \"@chirk.com\", \"@chocaholic.com.au\", \"@chong-mail.com\", \"@chong-mail.net\", \"@churchusa.com\", \"@cia-agent.com\", \"@cia.hu\", \"@ciaoweb.it\", \"@cicciociccio.com\", \"@cincinow.net\", \"@citiz.net\", \"@citlink.net\", \"@city-of-bath.org\", \"@city-of-birmingham.com\", \"@city-of-brighton.org\", \"@city-of-cambridge.com\", \"@city-of-coventry.com\", \"@city-of-edinburgh.com\", \"@city-of-lichfield.com\", \"@city-of-lincoln.com\", \"@city-of-liverpool.com\", \"@city-of-manchester.com\", \"@city-of-nottingham.com\", \"@city-of-oxford.com\", \"@city-of-swansea.com\", \"@city-of-westminster.com\", \"@city-of-westminster.net\", \"@city-of-york.net\", \"@cityofcardiff.net\", \"@cityoflondon.org\", \"@ckaazaza.tk\", \"@claramail.com\", \"@classicalfan.com\", \"@classicmail.co.za\", \"@clear.net.nz\", \"@clearwire.net\", \"@clerk.com\", \"@cliffhanger.com\", \"@clixser.com\", \"@close2you.net\", \"@clrmail.com\", \"@club4x4.net\", \"@clubalfa.com\", \"@clubbers.net\", \"@clubducati.com\", \"@clubhonda.net\", \"@clubmember.org\", \"@clubnetnoir.com\", \"@clubvdo.net\", \"@cluemail.com\", \"@cmail.net\", \"@cmpmail.com\", \"@cnnsimail.com\", \"@cntv.cn\", \"@codec.ro\", \"@coder.hu\", \"@coid.biz\", \"@coldmail.com\", \"@collectiblesuperstore.com\", \"@collector.org\", \"@collegeclub.com\", \"@collegemail.com\", \"@colleges.com\", \"@columbus.rr.com\", \"@columbusrr.com\", \"@columnist.com\", \"@comcast.net\", \"@comic.com\", \"@communityconnect.com\", \"@comporium.net\", \"@comprendemail.com\", \"@compuserve.com\", \"@computer-freak.com\", \"@computer4u.com\", \"@computermail.net\", \"@conexcol.com\", \"@conk.com\", \"@connect4free.net\", \"@connectbox.com\", \"@consultant.com\", \"@consumerriot.com\", \"@contractor.net\", \"@contrasto.cu.cc\", \"@cookiemonster.com\", \"@cool.br\", \"@coole-files.de\", \"@coolgoose.ca\", \"@coolgoose.com\", \"@coolkiwi.com\", \"@coollist.com\", \"@coolmail.com\", \"@coolmail.net\", \"@coolsend.com\", \"@coolsite.net\", \"@cooooool.com\", \"@cooperation.net\", \"@cooperationtogo.net\", \"@copacabana.com\", \"@copper.net\", \"@cornells.com\", \"@cornerpub.com\", \"@corporatedirtbag.com\", \"@correo.terra.com.gt\", \"@cortinet.com\", \"@cotas.net\", \"@counsellor.com\", \"@countrylover.com\", \"@cox.com\", \"@cox.net\", \"@coxinet.net\", \"@cracker.hu\", \"@crapmail.org\", \"@crazedanddazed.com\", \"@crazymailing.com\", \"@crazysexycool.com\", \"@cristianemail.com\", \"@critterpost.com\", \"@croeso.com\", \"@crosshairs.com\", \"@crosswinds.net\", \"@crwmail.com\", \"@cry4helponline.com\", \"@cs.com\", \"@csinibaba.hu\", \"@cuemail.com\", \"@curio-city.com\", \"@curryworld.de\", \"@cute-girl.com\", \"@cuteandcuddly.com\", \"@cutey.com\", \"@cww.de\", \"@cyber-africa.net\", \"@cyber-innovation.club\", \"@cyber-matrix.com\", \"@cyber-phone.eu\", \"@cyber-wizard.com\", \"@cyber4all.com\", \"@cyberbabies.com\", \"@cybercafemaui.com\", \"@cyberdude.com\", \"@cyberforeplay.net\", \"@cybergal.com\", \"@cybergrrl.com\", \"@cyberinbox.com\", \"@cyberleports.com\", \"@cybermail.net\", \"@cybernet.it\", \"@cyberservices.com\", \"@cyberspace-asia.com\", \"@cybertrains.org\", \"@cyclefanz.com\", \"@cynetcity.com\", \"@dabsol.net\", \"@dadacasa.com\", \"@daha.com\", \"@dailypioneer.com\", \"@dallasmail.com\", \"@dangerous-minds.com\", \"@dansegulvet.com\", \"@dasdasdascyka.tk\", \"@data54.com\", \"@davegracey.com\", \"@dawnsonmail.com\", \"@dawsonmail.com\", \"@dazedandconfused.com\", \"@dbzmail.com\", \"@dcemail.com\", \"@deadlymob.org\", \"@deagot.com\", \"@deal-maker.com\", \"@dearriba.com\", \"@death-star.com\", \"@deliveryman.com\", \"@deneg.net\", \"@depechemode.com\", \"@deseretmail.com\", \"@desertmail.com\", \"@desilota.com\", \"@deskpilot.com\", \"@destin.com\", \"@detik.com\", \"@deutschland-net.com\", \"@devotedcouples.com\", \"@dezigner.ru\", \"@dfwatson.com\", \"@di-ve.com\", \"@die-besten-bilder.de\", \"@die-genossen.de\", \"@die-optimisten.de\", \"@die-optimisten.net\", \"@diemailbox.de\", \"@digibel.be\", \"@digital-filestore.de\", \"@diplomats.com\", \"@directbox.com\", \"@dirtracer.com\", \"@discard.email\", \"@discard.ga\", \"@discard.gq\", \"@disciples.com\", \"@discofan.com\", \"@discoverymail.com\", \"@disign-concept.eu\", \"@disign-revelation.com\", \"@disinfo.net\", \"@dispomail.eu\", \"@disposable.com\", \"@dispose.it\", \"@dm.w3internet.co.uk\", \"@dmailman.com\", \"@dnainternet.net\", \"@dnsmadeeasy.com\", \"@doclist.bounces.google.com\", \"@docmail.cz\", \"@docs.google.com\", \"@doctor.com\", \"@dodgit.org\", \"@dodo.com.au\", \"@dodsi.com\", \"@dog.com\", \"@dogit.com\", \"@doglover.com\", \"@dogmail.co.uk\", \"@dogsnob.net\", \"@doityourself.com\", \"@domforfb1.tk\", \"@domforfb2.tk\", \"@domforfb3.tk\", \"@domforfb4.tk\", \"@domforfb5.tk\", \"@domforfb6.tk\", \"@domforfb7.tk\", \"@domforfb8.tk\", \"@domozmail.com\", \"@doneasy.com\", \"@donjuan.com\", \"@dontgotmail.com\", \"@dontmesswithtexas.com\", \"@doramail.com\", \"@dostmail.com\", \"@dotcom.fr\", \"@dotmsg.com\", \"@dott.it\", \"@download-privat.de\", \"@dplanet.ch\", \"@dr.com\", \"@dragoncon.net\", \"@dropmail.me\", \"@dropzone.com\", \"@drotposta.hu\", \"@dubaimail.com\", \"@dublin.com\", \"@dublin.ie\", \"@dumpmail.com\", \"@dumpmail.de\", \"@dumpyemail.com\", \"@dunlopdriver.com\", \"@dunloprider.com\", \"@duno.com\", \"@duskmail.com\", \"@dutchmail.com\", \"@dwp.net\", \"@dygo.com\", \"@dynamitemail.com\", \"@dyndns.org\", \"@e-apollo.lv\", \"@e-mail.com.tr\", \"@e-mail.dk\", \"@e-mail.ru\", \"@e-mail.ua\", \"@e-mailanywhere.com\", \"@e-mails.ru\", \"@e-tapaal.com\", \"@earthalliance.com\", \"@earthcam.net\", \"@earthdome.com\", \"@earthling.net\", \"@earthlink.net\", \"@earthonline.net\", \"@eastcoast.co.za\", \"@eastmail.com\", \"@easy.to\", \"@easypost.com\", \"@easytrashmail.com\", \"@ec.rr.com\", \"@ecardmail.com\", \"@ecbsolutions.net\", \"@echina.com\", \"@ecolo-online.fr\", \"@ecompare.com\", \"@edmail.com\", \"@ednatx.com\", \"@edtnmail.com\", \"@educacao.te.pt\", \"@eelmail.com\", \"@ehmail.com\", \"@einrot.com\", \"@einrot.de\", \"@eintagsmail.de\", \"@eircom.net\", \"@elisanet.fi\", \"@elitemail.org\", \"@elsitio.com\", \"@elvis.com\", \"@elvisfan.com\", \"@email-fake.gq\", \"@email-london.co.uk\", \"@email.biz\", \"@email.cbes.net\", \"@email.com\", \"@email.cz\", \"@email.ee\", \"@email.it\", \"@email.nu\", \"@email.org\", \"@email.ro\", \"@email.ru\", \"@email.si\", \"@email.su\", \"@email.ua\", \"@email2me.net\", \"@email4u.info\", \"@emailacc.com\", \"@emailaccount.com\", \"@emailage.ga\", \"@emailage.gq\", \"@emailasso.net\", \"@emailchoice.com\", \"@emailcorner.net\", \"@emailem.com\", \"@emailengine.net\", \"@emailengine.org\", \"@emailer.hubspot.com\", \"@emailforyou.net\", \"@emailgo.de\", \"@emailgroups.net\", \"@emailinfive.com\", \"@emailit.com\", \"@emailpinoy.com\", \"@emailplanet.com\", \"@emailplus.org\", \"@emailproxsy.com\", \"@emails.ga\", \"@emails.incisivemedia.com\", \"@emails.ru\", \"@emailthe.net\", \"@emailto.de\", \"@emailuser.net\", \"@emailx.net\", \"@emailz.ga\", \"@emailz.gq\", \"@ematic.com\", \"@embarqmail.com\", \"@emeil.in\", \"@emeil.ir\", \"@emil.com\", \"@eml.cc\", \"@eml.pp.ua\", \"@end-war.com\", \"@enel.net\", \"@engineer.com\", \"@england.com\", \"@england.edu\", \"@englandmail.com\", \"@epage.ru\", \"@epatra.com\", \"@ephemail.net\", \"@epix.net\", \"@epost.de\", \"@eposta.hu\", \"@eqqu.com\", \"@eramail.co.za\", \"@eresmas.com\", \"@eriga.lv\", \"@estranet.it\", \"@ethos.st\", \"@etoast.com\", \"@etrademail.com\", \"@etranquil.com\", \"@etranquil.net\", \"@eudoramail.com\", \"@europamel.net\", \"@europe.com\", \"@europemail.com\", \"@euroseek.com\", \"@eurosport.com\", \"@every1.net\", \"@everyday.com.kh\", \"@everymail.net\", \"@everyone.net\", \"@everytg.ml\", \"@examnotes.net\", \"@excite.co.jp\", \"@excite.com\", \"@excite.it\", \"@execs.com\", \"@exemail.com.au\", \"@exg6.exghost.com\", \"@existiert.net\", \"@expressasia.com\", \"@extenda.net\", \"@extended.com\", \"@eyepaste.com\", \"@eyou.com\", \"@ezcybersearch.com\", \"@ezmail.egine.com\", \"@ezmail.ru\", \"@ezrs.com\", \"@f-m.fm\", \"@f1fans.net\", \"@facebook-email.ga\", \"@facebook.com\", \"@facebookmail.com\", \"@facebookmail.gq\", \"@fahr-zur-hoelle.org\", \"@fake-email.pp.ua\", \"@fake-mail.cf\", \"@fake-mail.ga\", \"@fake-mail.ml\", \"@fakemailz.com\", \"@falseaddress.com\", \"@fan.com\", \"@fansonlymail.com\", \"@fansworldwide.de\", \"@fantasticmail.com\", \"@farang.net\", \"@farifluset.mailexpire.com\", \"@faroweb.com\", \"@fast-email.com\", \"@fast-mail.fr\", \"@fast-mail.org\", \"@fastacura.com\", \"@fastchevy.com\", \"@fastchrysler.com\", \"@fastem.com\", \"@fastemail.us\", \"@fastemailer.com\", \"@fastermail.com\", \"@fastest.cc\", \"@fastimap.com\", \"@fastkawasaki.com\", \"@fastmail.ca\", \"@fastmail.cn\", \"@fastmail.co.uk\", \"@fastmail.com\", \"@fastmail.com.au\", \"@fastmail.es\", \"@fastmail.fm\", \"@fastmail.im\", \"@fastmail.in\", \"@fastmail.jp\", \"@fastmail.mx\", \"@fastmail.net\", \"@fastmail.nl\", \"@fastmail.se\", \"@fastmail.to\", \"@fastmail.tw\", \"@fastmail.us\", \"@fastmailbox.net\", \"@fastmazda.com\", \"@fastmessaging.com\", \"@fastmitsubishi.com\", \"@fastnissan.com\", \"@fastservice.com\", \"@fastsubaru.com\", \"@fastsuzuki.com\", \"@fasttoyota.com\", \"@fastyamaha.com\", \"@fatcock.net\", \"@fatflap.com\", \"@fathersrightsne.org\", \"@fax.ru\", \"@fbi-agent.com\", \"@fbi.hu\", \"@fdfdsfds.com\", \"@fea.st\", \"@federalcontractors.com\", \"@feinripptraeger.de\", \"@felicitymail.com\", \"@femenino.com\", \"@fetchmail.co.uk\", \"@fettabernett.de\", \"@feyenoorder.com\", \"@ffanet.com\", \"@fiberia.com\", \"@ficken.de\", \"@fightallspam.com\", \"@filipinolinks.com\", \"@financemail.net\", \"@financier.com\", \"@findmail.com\", \"@finebody.com\", \"@fire-brigade.com\", \"@fireman.net\", \"@fishburne.org\", \"@fishfuse.com\", \"@fixmail.tk\", \"@fizmail.com\", \"@flashbox.5july.org\", \"@flashmail.com\", \"@flashmail.net\", \"@fleckens.hu\", \"@flipcode.com\", \"@fmail.co.uk\", \"@fmailbox.com\", \"@fmgirl.com\", \"@fmguy.com\", \"@fnbmail.co.za\", \"@fnmail.com\", \"@folkfan.com\", \"@foodmail.com\", \"@footard.com\", \"@footballmail.com\", \"@foothills.net\", \"@for-president.com\", \"@force9.co.uk\", \"@forfree.at\", \"@forgetmail.com\", \"@fornow.eu\", \"@forpresident.com\", \"@fortuncity.com\", \"@fortunecity.com\", \"@forum.dk\", \"@foxmail.com\", \"@fr33mail.info\", \"@francemel.fr\", \"@free-email.ga\", \"@free-online.net\", \"@free-org.com\", \"@free.com.pe\", \"@free.fr\", \"@freeaccess.nl\", \"@freeaccount.com\", \"@freeandsingle.com\", \"@freedom.usa.com\", \"@freedomlover.com\", \"@freegates.be\", \"@freeghana.com\", \"@freelance-france.eu\", \"@freeler.nl\", \"@freemail.c3.hu\", \"@freemail.com.au\", \"@freemail.com.pk\", \"@freemail.de\", \"@freemail.et\", \"@freemail.gr\", \"@freemail.hu\", \"@freemail.it\", \"@freemail.lt\", \"@freemail.ms\", \"@freemail.nl\", \"@freemail.org.mk\", \"@freemails.ga\", \"@freemeil.gq\", \"@freenet.de\", \"@freenet.kg\", \"@freeola.com\", \"@freeola.net\", \"@freeserve.co.uk\", \"@freestart.hu\", \"@freesurf.fr\", \"@freesurf.nl\", \"@freeuk.com\", \"@freeuk.net\", \"@freeukisp.co.uk\", \"@freeweb.org\", \"@freewebemail.com\", \"@freeyellow.com\", \"@freezone.co.uk\", \"@fresnomail.com\", \"@freudenkinder.de\", \"@freundin.ru\", \"@friendlymail.co.uk\", \"@friends-cafe.com\", \"@friendsfan.com\", \"@from-africa.com\", \"@from-america.com\", \"@from-argentina.com\", \"@from-asia.com\", \"@from-australia.com\", \"@from-belgium.com\", \"@from-brazil.com\", \"@from-canada.com\", \"@from-china.net\", \"@from-england.com\", \"@from-europe.com\", \"@from-france.net\", \"@from-germany.net\", \"@from-holland.com\", \"@from-israel.com\", \"@from-italy.net\", \"@from-japan.net\", \"@from-korea.com\", \"@from-mexico.com\", \"@from-outerspace.com\", \"@from-russia.com\", \"@from-spain.net\", \"@fromalabama.com\", \"@fromalaska.com\", \"@fromarizona.com\", \"@fromarkansas.com\", \"@fromcalifornia.com\", \"@fromcolorado.com\", \"@fromconnecticut.com\", \"@fromdelaware.com\", \"@fromflorida.net\", \"@fromgeorgia.com\", \"@fromhawaii.net\", \"@fromidaho.com\", \"@fromillinois.com\", \"@fromindiana.com\", \"@fromiowa.com\", \"@fromjupiter.com\", \"@fromkansas.com\", \"@fromkentucky.com\", \"@fromlouisiana.com\", \"@frommaine.net\", \"@frommaryland.com\", \"@frommassachusetts.com\", \"@frommiami.com\", \"@frommichigan.com\", \"@fromminnesota.com\", \"@frommississippi.com\", \"@frommissouri.com\", \"@frommontana.com\", \"@fromnebraska.com\", \"@fromnevada.com\", \"@fromnewhampshire.com\", \"@fromnewjersey.com\", \"@fromnewmexico.com\", \"@fromnewyork.net\", \"@fromnorthcarolina.com\", \"@fromnorthdakota.com\", \"@fromohio.com\", \"@fromoklahoma.com\", \"@fromoregon.net\", \"@frompennsylvania.com\", \"@fromrhodeisland.com\", \"@fromru.com\", \"@fromsouthcarolina.com\", \"@fromsouthdakota.com\", \"@fromtennessee.com\", \"@fromtexas.com\", \"@fromthestates.com\", \"@fromutah.com\", \"@fromvermont.com\", \"@fromvirginia.com\", \"@fromwashington.com\", \"@fromwashingtondc.com\", \"@fromwestvirginia.com\", \"@fromwisconsin.com\", \"@fromwyoming.com\", \"@front.ru\", \"@frontier.com\", \"@frontiernet.net\", \"@frostbyte.uk.net\", \"@fsmail.net\", \"@ftc-i.net\", \"@ftml.net\", \"@fullmail.com\", \"@funkfan.com\", \"@fuorissimo.com\", \"@furnitureprovider.com\", \"@fuse.net\", \"@fut.es\", \"@fux0ringduh.com\", \"@fwnb.com\", \"@fxsmails.com\", \"@gmail.com\",  \"&\", \"+\"];\n          }\n      <\/script>\n    <\/div>\n  <\/div>\n<script>\n  if (typeof MktoForms2 === 'undefined'){\n    $('#marketoFormContainer').html(window.mktoBlockedMsg);\n  }\n<\/script><\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Many of the top high-performing companies in software, financial services, and healthcare verticals are using Applitools Eyes for their visual test automation needs. We\u2019ve talked with these companies to gain&#8230;<\/p>\n","protected":false},"featured_media":47362,"parent":0,"menu_order":0,"template":"","meta":[],"ebook-persona":[16756,16755],"ebook-category":[16934,16761,16759,16760],"ebook-product":[16763,16764],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Best Practice Guide: Automated Visual Testing - Automated Visual Testing | Applitools<\/title>\n<meta name=\"description\" content=\"Many of the top high-performing companies in software, financial services, and healthcare verticals are using Applitools Eyes for their visual test automation needs. We\u2019ve talked with these companies to gain...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Best Practice Guide: Automated Visual Testing\" \/>\n<meta property=\"og:description\" content=\"Many of the top high-performing companies in software, financial services, and healthcare verticals are using Applitools Eyes for their visual test automation needs. We\u2019ve talked with these companies to gain...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Automated Visual Testing | Applitools\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-14T20:56:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/applitools.com\/wp-content\/uploads\/2023\/01\/Screenshot-2023-02-09-at-8.43.35-AM.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1202\" \/>\n\t<meta property=\"og:image:height\" content=\"1132\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/\",\"url\":\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/\",\"name\":\"Best Practice Guide: Automated Visual Testing - Automated Visual Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/applitools.com\/#website\"},\"datePublished\":\"2023-01-23T18:03:39+00:00\",\"dateModified\":\"2023-11-14T20:56:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/applitools.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"eBooks\",\"item\":\"https:\/\/applitools.com\/resources\/ebooks\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Best Practice Guide: Automated Visual Testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/applitools.com\/#website\",\"url\":\"https:\/\/applitools.com\/\",\"name\":\"Automated Visual Testing | Applitools\",\"description\":\"Applitools delivers the next generation of test automation powered by AI assisted computer vision technology known as Visual AI.\",\"publisher\":{\"@id\":\"https:\/\/applitools.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/applitools.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/applitools.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/applitools.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/applitools.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1\",\"contentUrl\":\"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/applitools.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Best Practice Guide: Automated Visual Testing - Automated Visual Testing | Applitools","description":"Many of the top high-performing companies in software, financial services, and healthcare verticals are using Applitools Eyes for their visual test automation needs. We\u2019ve talked with these companies to gain...","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:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/","og_locale":"en_US","og_type":"article","og_title":"Best Practice Guide: Automated Visual Testing","og_description":"Many of the top high-performing companies in software, financial services, and healthcare verticals are using Applitools Eyes for their visual test automation needs. We\u2019ve talked with these companies to gain...","og_url":"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/","og_site_name":"Automated Visual Testing | Applitools","article_modified_time":"2023-11-14T20:56:46+00:00","og_image":[{"width":1202,"height":1132,"url":"https:\/\/applitools.com\/wp-content\/uploads\/2023\/01\/Screenshot-2023-02-09-at-8.43.35-AM.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/","url":"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/","name":"Best Practice Guide: Automated Visual Testing - Automated Visual Testing | Applitools","isPartOf":{"@id":"https:\/\/applitools.com\/#website"},"datePublished":"2023-01-23T18:03:39+00:00","dateModified":"2023-11-14T20:56:46+00:00","breadcrumb":{"@id":"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/applitools.com\/resources\/ebooks\/best-practice-guide-automated-visual-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/applitools.com\/"},{"@type":"ListItem","position":2,"name":"eBooks","item":"https:\/\/applitools.com\/resources\/ebooks\/"},{"@type":"ListItem","position":3,"name":"Best Practice Guide: Automated Visual Testing"}]},{"@type":"WebSite","@id":"https:\/\/applitools.com\/#website","url":"https:\/\/applitools.com\/","name":"Automated Visual Testing | Applitools","description":"Applitools delivers the next generation of test automation powered by AI assisted computer vision technology known as Visual AI.","publisher":{"@id":"https:\/\/applitools.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/applitools.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/applitools.com\/#organization","name":"Applitools","url":"https:\/\/applitools.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/applitools.com\/#\/schema\/logo\/image\/","url":"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1","contentUrl":"https:\/\/ewig5qf9cgn.exactdn.com\/wp-content\/uploads\/2020\/03\/applitools.png?strip=all&lossy=1&ssl=1","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/applitools.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/ebook\/46108"}],"collection":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/ebook"}],"about":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/types\/ebook"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/media\/47362"}],"wp:attachment":[{"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/media?parent=46108"}],"wp:term":[{"taxonomy":"ebook-persona","embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/ebook-persona?post=46108"},{"taxonomy":"ebook-category","embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/ebook-category?post=46108"},{"taxonomy":"ebook-product","embeddable":true,"href":"https:\/\/applitools.com\/wp-json\/wp\/v2\/ebook-product?post=46108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}