{"id":22445,"date":"2020-05-21T14:19:08","date_gmt":"2020-05-21T14:19:08","guid":{"rendered":"https:\/\/www.heartinternet.uk\/blog\/?p=22445"},"modified":"2020-05-21T14:19:08","modified_gmt":"2020-05-21T14:19:08","slug":"getting-started-with-front-end-testing-using-cypress","status":"publish","type":"post","link":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/","title":{"rendered":"Getting started with front-end testing using Cypress"},"content":{"rendered":"<p>We all know that testing is important, but this is often limited to <a href=\"https:\/\/levelup.gitconnected.com\/what-you-need-to-know-about-unit-testing-7b04004da8fe\">unit testing<\/a> and <a href=\"https:\/\/dev.to\/hemanthyamjala\/everything-you-need-to-know-about-software-integration-testing-4ea6\">integration testing<\/a>, focusing on the back-end of our application, and we tend to forget about testing the front-end. There are so many different types of tests that we need to run on the front-end, it&#8217;s hard to know where to start. There&#8217;s accessibility testing, performance testing, user testing, HTML validation, visual regression testing and UI testing \u2014 not to mention the <a href=\"https:\/\/24ways.org\/2019\/twelve-days-of-front-end-testing\/\">countless tools<\/a> available for each type, and the different ways to set them up.<\/p>\n<p>To help get you started, we&#8217;re going to look at just one thing in particular in this article: UI testing with Cypress.<\/p>\n<h2>What?<\/h2>\n<p><strong>User interface (UI) testing<\/strong> is done on the front-end of the website and makes sure that the users can do what they&#8217;re supposed to be able to do. Can they click on the buttons, can they see elements that they should be able to, can they type where they&#8217;re supposed to, and does it respond the way it should?<\/p>\n<p><a href=\"https:\/\/www.cypress.io\/\">Cypress<\/a> is an open source tool for end-to-end testing, which involves testing the application from the start to the end (end to end). The capabilities of Cypress are extensive, but for the purpose of this post we\u2019ll just concentrate on UI testing. It\u2019s compatible with Windows, Linux and Mac, and language agnostic (which means it can be used no matter the language your website\/application is written in). The free version covers three users and 500 test recordings per month.<\/p>\n<h2>Why?<\/h2>\n<p>The UI is what your users see, when they interact with your application. It&#8217;s what they look at on the device, what they click on, what they enter information to \u2014 and they expect it to work. Running UI testing can help automate checking that the application works the way it was intended, on different browsers and at different screen sizes.<\/p>\n<p>For a number of reasons, your code may affect areas of the application that you didn&#8217;t expect it would. A change in stacking order could mean that a key button is no longer clickable, a form may no longer submit properly, or content may no longer appear on the page at smaller screen sizes. UI testing allows us to automatically run these checks as part of the deployment pipeline, so we can catch issues before the users see them.<\/p>\n<p>This kind of UI testing can also be used as a more forgiving alternative to <a href=\"https:\/\/medium.com\/front-end-weekly\/be-fearless-with-screenshot-testing-with-routine-design-3ae61d186174\">visual regression <\/a>testing, which is a pixel-by-pixel comparison of two website screenshots (one before the change, one after), to make sure that nothing has changed. Unfortunately, this kind of test often yields false results as content may change or images or other assets may not load properly. UI testing can be useful when you don&#8217;t need to know if the page is pixel-for-pixel identical to before, you just need to make sure the right elements still appear on the page.<\/p>\n<h2>How?<\/h2>\n<h3>Installing and running Cypress<\/h3>\n<p>One of the reasons to use Cypress for UI testing is that it gives you something to get started. Install Cypress in your project using <a href=\"https:\/\/www.npmjs.com\/\">npm<\/a> or <a href=\"https:\/\/yarnpkg.com\/\">yarn<\/a>.<\/p>\n<p><strong>Note:<\/strong> If you&#8217;re on Windows and use WSL, you&#8217;ll need to install Cypress on Windows instead of in the Linux subsystem, so that it can access your browsers to run the tests.<\/p>\n<h4>npm install cypress<\/h4>\n<p>When you run Cypress for the first time, it will generate a folder called <em>cypress<\/em> inside your project and include all the files you need (including a couple of example tests).<\/p>\n<h4>cypress open<\/h4>\n<p>When you run Cypress, it will open the task runner, and list all the tests you have available to run (they include a folder of examples to start with). In recent updates, they now also include several other browser options (before then you could only test with Chrome or Electron browsers).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-22446\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cypress-task-runner.png\" alt=\"\" width=\"650\" height=\"438\" \/><\/p>\n<p>From the task runner, you can run individual test files by double-clicking on them, or use the <em>Run all specs<\/em> option. This will then load a new browser window and iterate through the written tests that you&#8217;ve defined.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-22449\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cypress-tests-e1590069741981.png\" alt=\"\" width=\"650\" height=\"353\" \/><\/p>\n<h3>Writing tests<\/h3>\n<p>Any tests for Cypress should be saved in the <em>cypress\/integrations<\/em> folder. There should be a folder example in there with some pre-created test examples. Cypress bundles together<a href=\"https:\/\/mochajs.org\/\"> Mocha<\/a>,<a href=\"http:\/\/www.chaijs.com\/\"> Chai<\/a> and jQuery to build its tests, which can be a little strange to work with at the start, but it gets easier.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/222731eccc4058b33179165e28e28cc2.js\"><\/script><\/p>\n<p>You can use the <em>before<\/em> and <em>after<\/em> hook to specify conditions to be completed before and after your tests are run. Or you can use the <em>beforeEach<\/em> and <em>afterEach<\/em> hook for it to perform the conditions before each test.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/83348e15999aae94fe14d869a8f540eb.js\"><\/script><\/p>\n<p>The full list of assertions that you can use in your tests is available in the<a href=\"https:\/\/docs.cypress.io\/guides\/references\/assertions.html#BDD-Assertions\">Cypress docs<\/a>. You can use jQuery for their element selectors (similar to <em>querySelector<\/em> in JavaScript). Chaining together<a href=\"https:\/\/docs.cypress.io\/guides\/references\/assertions.html#Chai\">assertions<\/a> and<a href=\"https:\/\/docs.cypress.io\/api\/commands\/get.html#Syntax\">commands<\/a>, you can check for the existence of a particular HTML element on the page, and make sure that it is visible.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/695ae5e6e95bb82ee3840de06282e43c.js\"><\/script><\/p>\n<p>Because this is testing the UI, you can also change the viewport size to ensure that the tests still pass on various screen sizes.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/695ae5e6e95bb82ee3840de06282e43c.js\"><\/script><\/p>\n<p>You can also use JavaScript inside your tests to iterate over various test configurations, so that you don&#8217;t have to duplicate your code.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/c0f72141392a604920d036383a2f9de5.js\"><\/script><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-22451\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cypress-results.png\" alt=\"\" width=\"564\" height=\"329\" \/><\/p>\n<p>Once you&#8217;ve made sure that everything that is meant to be on the page is there (and visible), you can ensure the links are clickable and do what they&#8217;re supposed to. Using the click action you can make sure that all the clickable elements can be clicked on and go where they&#8217;re supposed to.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/ebb749d2f5932ebab9584267b9b0e614.js\"><\/script><\/p>\n<p>Similarly, you can use Cypress to fill out forms and make sure they do what they&#8217;re supposed to.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/amykapernick\/d08a6dbb8adbc68e8c4be4411210dce0.js\"><\/script><\/p>\n<p>The actions available in Cypress extend beyond clicking and typing in fields. There&#8217;s a<a href=\"https:\/\/github.com\/cypress-io\/cypress-example-recipes\"> repository of sample tests<\/a> available on Cypress&#8217; GitHub, which includes more advanced functionality such as drag-and-drop behaviour, loading of static resources and additional form inputs such as select or range fields.<\/p>\n<h2>But&#8230;<\/h2>\n<p>While Cypress is a very useful testing tool that can help make the task of testing the front-end easier, it&#8217;s not the answer to everything. Cypress can tell you that an image is where it&#8217;s supposed to be, but it can&#8217;t tell you if the image has been distorted. You\u2019ll still need to carry out some manual testing, or use a different testing method (such as visual regression testing).<\/p>\n<div id=\"attachment_22454\" style=\"width: 660px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22454\" class=\"wp-image-22454 size-full\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cypress-testing-blog-e1590070329666.png\" alt=\"\" width=\"650\" height=\"422\" \/><p id=\"caption-attachment-22454\" class=\"wp-caption-text\">A screenshot taken when running Cypress over my testing blog, some of the feature images are skewed and their aspect ratio is off. This kind of issue is not picked up by a testing tool like Cypress.<\/p><\/div>\n<p>Using Cypress to test your application&#8217;s UI is certainly a good step to take. However, it\u2019s just one of many. You should also consider other areas of front-end testing, such as accessibility testing, performance testing, and user testing. Find out more about these tests in<a href=\"https:\/\/www.javascriptjanuary.com\/blog\/getting-started-with-front-end-testing\"> <em>Getting Started with Front End Testing<\/em><\/a>, an article that I wrote for JavaScript January earlier this year.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We all know that testing is important, but this is often limited to unit testing and integration testing, focusing on the back-end of our application, and we tend to forget&#8230;<\/p>\n","protected":false},"author":2,"featured_media":22456,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":{"0":"post-22445","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-web-design"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Getting started with front-end testing using Cypress - Heart Internet<\/title>\n<meta name=\"description\" content=\"Getting started with front-end testing using Cypress - Written by the team at Heart Internet.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting started with front-end testing using Cypress - Heart Internet\" \/>\n<meta property=\"og:description\" content=\"Getting started with front-end testing using Cypress - Written by the team at Heart Internet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\" \/>\n<meta property=\"og:site_name\" content=\"Heart Internet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/heartinternet\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-21T14:19:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"733\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Eliot Chambers-Ostler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:site\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eliot Chambers-Ostler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated 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:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\"},\"author\":{\"name\":\"Eliot Chambers-Ostler\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\"},\"headline\":\"Getting started with front-end testing using Cypress\",\"datePublished\":\"2020-05-21T14:19:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\"},\"wordCount\":1175,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg\",\"articleSection\":[\"Web Design\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\",\"name\":\"Getting started with front-end testing using Cypress - Heart Internet\",\"isPartOf\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg\",\"datePublished\":\"2020-05-21T14:19:08+00:00\",\"description\":\"Getting started with front-end testing using Cypress - Written by the team at Heart Internet.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg\",\"width\":1100,\"height\":733},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.heartinternet.uk\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting started with front-end testing using Cypress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/heartblog.victory.digital\/#website\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"name\":\"Heart Internet\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/heartblog.victory.digital\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\",\"name\":\"Heart Internet\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"width\":992,\"height\":252,\"caption\":\"Heart Internet\"},\"image\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/heartinternet\/\",\"https:\/\/x.com\/heartinternet\",\"https:\/\/www.linkedin.com\/company\/heart-internet-ltd\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\",\"name\":\"Eliot Chambers-Ostler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"caption\":\"Eliot Chambers-Ostler\"},\"url\":\"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting started with front-end testing using Cypress - Heart Internet","description":"Getting started with front-end testing using Cypress - Written by the team at Heart Internet.","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:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/","og_locale":"en_GB","og_type":"article","og_title":"Getting started with front-end testing using Cypress - Heart Internet","og_description":"Getting started with front-end testing using Cypress - Written by the team at Heart Internet.","og_url":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/","og_site_name":"Heart Internet","article_publisher":"https:\/\/www.facebook.com\/heartinternet\/","article_published_time":"2020-05-21T14:19:08+00:00","og_image":[{"width":1100,"height":733,"url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg","type":"image\/jpeg"}],"author":"Eliot Chambers-Ostler","twitter_card":"summary_large_image","twitter_creator":"@heartinternet","twitter_site":"@heartinternet","twitter_misc":{"Written by":"Eliot Chambers-Ostler","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#article","isPartOf":{"@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/"},"author":{"name":"Eliot Chambers-Ostler","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28"},"headline":"Getting started with front-end testing using Cypress","datePublished":"2020-05-21T14:19:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/"},"wordCount":1175,"commentCount":0,"publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg","articleSection":["Web Design"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/","url":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/","name":"Getting started with front-end testing using Cypress - Heart Internet","isPartOf":{"@id":"https:\/\/heartblog.victory.digital\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg","datePublished":"2020-05-21T14:19:08+00:00","description":"Getting started with front-end testing using Cypress - Written by the team at Heart Internet.","breadcrumb":{"@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#primaryimage","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/05\/cypress-trees.jpg","width":1100,"height":733},{"@type":"BreadcrumbList","@id":"https:\/\/www.heartinternet.uk\/blog\/getting-started-with-front-end-testing-using-cypress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.heartinternet.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting started with front-end testing using Cypress"}]},{"@type":"WebSite","@id":"https:\/\/heartblog.victory.digital\/#website","url":"https:\/\/heartblog.victory.digital\/","name":"Heart Internet","description":"","publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/heartblog.victory.digital\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/heartblog.victory.digital\/#organization","name":"Heart Internet","url":"https:\/\/heartblog.victory.digital\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","width":992,"height":252,"caption":"Heart Internet"},"image":{"@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/heartinternet\/","https:\/\/x.com\/heartinternet","https:\/\/www.linkedin.com\/company\/heart-internet-ltd"]},{"@type":"Person","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28","name":"Eliot Chambers-Ostler","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","caption":"Eliot Chambers-Ostler"},"url":"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/"}]}},"_links":{"self":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/22445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/comments?post=22445"}],"version-history":[{"count":0,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/22445\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media\/22456"}],"wp:attachment":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media?parent=22445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/categories?post=22445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/tags?post=22445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}