{"id":4307,"date":"2021-10-04T08:00:33","date_gmt":"2021-10-04T07:00:33","guid":{"rendered":"https:\/\/www.diogonunes.com\/blog\/?p=4307"},"modified":"2021-10-30T12:04:37","modified_gmt":"2021-10-30T11:04:37","slug":"ama-e2e-tests","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/","title":{"rendered":"7 questions we all had about end-to-end tests"},"content":{"rendered":"<h3>The summary of an Ask Me Anything session I hosted at my company<\/h3>\n<blockquote>\n<p>\ud83c\udfc6 This post was <strong>featured<\/strong> in <a href=\"https:\/\/softwaretestingweekly.com\/issues\/92?#automation\">Software Testing Weekly, #92<\/a> and <a href=\"https:\/\/softwaretestingnotes.substack.com\/p\/issue-28-software-testing-notes\">Software Testing Notes, #28<\/a><\/p>\n<\/blockquote>\n<p><!--more--><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-0.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4309\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-0.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-0.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-0.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>What\u2019s the definition of E2E in frontend?<\/h3>\n<p>I don&#8217;t think there&#8217;s a definition specific to frontend (BE). An end-to-end test interacts with your system as a user would, they are not aware of front or backend boundaries.<\/p>\n<p>An E2E exercises your system in terms of &#8220;width&#8221; and &#8220;depth&#8221;. These tests exercises the <strong>width<\/strong> of your system by checking the behaviour of a user journey from start to end, across multiple pages. While they do so, they are also exercising the <strong>depth<\/strong> of your system by checking all the tech layers, across frontend and backend.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4310\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>How does a test survive the \u201ctest of time\u201d?<\/h3>\n<p>First we need to define what the test of time is. In my opinion, that&#8217;s an automated check that remains <em>reliable<\/em> and <em>relevant<\/em> through time. To achieve that, I suggest three guidelines:<\/p>\n<ul>\n<li><strong>Assert what is critical.<\/strong> For example, core business rarely changes. If you focus your assertions on that type of business logic it is very likely that your test will remain relevant.<\/li>\n<li><strong>Assert what is final.<\/strong> For example, features under A\/B testing is not final. While the experiment is running, the feature might change (which would make the test unreliable) or even be dropped (which would make the test irrelevant). Save your automation efforts until a decision is made.<\/li>\n<li><strong>Assert what is stable.<\/strong> If your work was climbing a mountain, you would choose carefully where to place your supports. You would pick the places that are solid. Tests support your work, and selectors support your tests. If you use selectors that are not tied to your design implementation (e.g. classes via CSS selectors) they will be more reliable.<\/li>\n<\/ul>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-2.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4311\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-2.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-2.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-2.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>How to prevent test flakiness?<\/h3>\n<p>One way is build tests on stable ground and for that you should follow the guidelines from the previous question.<\/p>\n<p>The other guideline \u2013 one you should always keep in mind \u2013 is that tests exist to give you confidence. Any time you detect flakiness, investigate the cause and fix it. If that&#8217;s not possible, then you can&#8217;t trust the test. <strong>Unreliable tests have no purpose, delete them without mercy.<\/strong><\/p>\n<p>I would also stay away from <strong>mocking<\/strong> as a solution to flakiness. A property of E2E tests is that they are realistic, they are an automated user. If the test is facing a problem then a user might face it too. If you mock your E2E test then you transform it into a slow bloated unit test.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-3.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4312\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-3.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-3.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-3.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>How to prevent them from slowing down pipelines?<\/h3>\n<p>Each new test adds a handful of seconds to your development process. It&#8217;s a trade-off between confidence and speed. It&#8217;s not a one size fits all \u2013 your team needs to agree their balance.<\/p>\n<p>Think of it as crossing a bridge, you can cross it slowly and carefully or you can make a run for it. Maybe it&#8217;s a short bridge. Maybe you are used to cross bridges. Maybe you will only cross it once. Context, context, context.<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Marie_Kondo\">Marie Kondo<\/a> has a question for you: <em>Does your pipeline spark joy?<\/em> That should be your guiding light, is the pipeline helping or hurting me? Optimise accordingly.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-4.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4313\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-4.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-4.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-4.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>How do you run them in your pipeline?<\/h3>\n<p>My team owns several code repositories with individual pipelines. Therefore we need the ability to trigger E2E tests from any pipeline. That&#8217;s why we created a separate repo, one that builds a docker image on each push to main.<\/p>\n<p>When we want to run the E2E tests we simply pull the image and run it. That&#8217;s it (assuming you pass all the necessary secrets and configurations as env vars parameters).<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-5.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4314\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-5.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-5.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-5.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>How do you structure test code?<\/h3>\n<p>Just like with code styling rules, let your team agree on it. There&#8217;s no right way but&#8230; some rules have consequences. For instance, if you have one assertion per test, then you will have a lot more tests to cover the same system behaviour. And you know that each test adds (execution\/maintenance) time.<\/p>\n<p>A test suite with <em>too many files\/lines<\/em> is harder to maintain. A test suite that takes <em>too long<\/em> to run is executed fewer times. So I would argue that the way you structure your test code should avoid those two pitfalls.<\/p>\n<p>I start with the user goal, what they want to achieve in our system. Then I map their journey, the actions they will need to perform and which screens they will use. Finally I code the E2E test, asserting along the way, just like a user would.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-6.jpg?resize=580%2C326&#038;ssl=1\" alt=\"\" width=\"580\" height=\"326\" class=\"aligncenter size-full wp-image-4315\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-6.jpg?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-6.jpg?resize=400%2C225&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-6.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>How to cleanup the existing test mess using E2E?<\/h3>\n<p>The E2E tests are not a perfect tool that replaces everything. These tests can be messy too. We already know they are <em>slow<\/em> in comparison to other types of tests. Since they are realistic, their correct execution is <em>highly dependent<\/em> on your system&#8217;s state \u2013 e.g. if the login feature is down, you might have all your E2E tests failing. Another consequence of their realism is that they <em>create and update data<\/em>, changing your system&#8217;s state.<\/p>\n<p>Remember why you wanted E2E tests in the first place and keep in mind the testing pyramid. Every type of test has a place and a desirable quantity.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The summary of an Ask Me Anything session I hosted at my company \ud83c\udfc6 This post was featured in Software Testing Weekly, #92 and Software Testing Notes, #28<\/p>\n","protected":false},"author":1,"featured_media":4310,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[25,55],"class_list":["post-4307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-experience","tag-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>7 questions we all had about end-to-end tests - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"This is a summary of an Ask Me Anything session I did at my company. Developers voted what they wanted to know about (E2E) end-to-end tests and I shared my experience.\" \/>\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.diogonunes.com\/blog\/ama-e2e-tests\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"7 questions we all had about end-to-end tests - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"This is a summary of an Ask Me Anything session I did at my company. Developers voted what they wanted to know about (E2E) end-to-end tests and I shared my experience.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-04T07:00:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-30T11:04:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"7 questions we all had about end-to-end tests\",\"datePublished\":\"2021-10-04T07:00:33+00:00\",\"dateModified\":\"2021-10-30T11:04:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/\"},\"wordCount\":913,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1\",\"keywords\":[\"experience\",\"testing\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/\",\"name\":\"7 questions we all had about end-to-end tests - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1\",\"datePublished\":\"2021-10-04T07:00:33+00:00\",\"dateModified\":\"2021-10-30T11:04:37+00:00\",\"description\":\"This is a summary of an Ask Me Anything session I did at my company. Developers voted what they wanted to know about (E2E) end-to-end tests and I shared my experience.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"7 questions we all had about end-to-end tests\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"7 questions we all had about end-to-end tests - The Geeky Gecko","description":"This is a summary of an Ask Me Anything session I did at my company. Developers voted what they wanted to know about (E2E) end-to-end tests and I shared my experience.","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.diogonunes.com\/blog\/ama-e2e-tests\/","og_locale":"en_US","og_type":"article","og_title":"7 questions we all had about end-to-end tests - The Geeky Gecko","og_description":"This is a summary of an Ask Me Anything session I did at my company. Developers voted what they wanted to know about (E2E) end-to-end tests and I shared my experience.","og_url":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/","og_site_name":"The Geeky Gecko","article_published_time":"2021-10-04T07:00:33+00:00","article_modified_time":"2021-10-30T11:04:37+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1","type":"image\/jpeg"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"7 questions we all had about end-to-end tests","datePublished":"2021-10-04T07:00:33+00:00","dateModified":"2021-10-30T11:04:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/"},"wordCount":913,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1","keywords":["experience","testing"],"articleSection":["Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/","url":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/","name":"7 questions we all had about end-to-end tests - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1","datePublished":"2021-10-04T07:00:33+00:00","dateModified":"2021-10-30T11:04:37+00:00","description":"This is a summary of an Ask Me Anything session I did at my company. Developers voted what they wanted to know about (E2E) end-to-end tests and I shared my experience.","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/ama-e2e-tests\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"7 questions we all had about end-to-end tests"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/09\/Knowledge-Sharing-E2E-tests-1.jpg?fit=960%2C540&ssl=1","jetpack-related-posts":[{"id":4709,"url":"https:\/\/www.diogonunes.com\/blog\/types-1-the-test-pyramid\/","url_meta":{"origin":4307,"position":0},"title":"The test pyramid model (Types #1)","author":"Diogo Nunes","date":"12 June, 2023","format":false,"excerpt":"\ud83c\udfc6 This post was featured in Software Testing Weekly #173 tl;dr A visual metaphor that groups tests into layers and recommends how many tests should exist in each of layers. This is part of my free testing course, focused on teaching you the fundamentals of testing \ud83d\ude09 Theory The concept\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/05\/eugene-tkachenko-TF47p5PHW18-unsplash-1.jpg?fit=1200%2C738&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/05\/eugene-tkachenko-TF47p5PHW18-unsplash-1.jpg?fit=1200%2C738&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/05\/eugene-tkachenko-TF47p5PHW18-unsplash-1.jpg?fit=1200%2C738&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/05\/eugene-tkachenko-TF47p5PHW18-unsplash-1.jpg?fit=1200%2C738&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/05\/eugene-tkachenko-TF47p5PHW18-unsplash-1.jpg?fit=1200%2C738&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4756,"url":"https:\/\/www.diogonunes.com\/blog\/types-2-test-categories-approaches-types\/","url_meta":{"origin":4307,"position":1},"title":"Test categories and approaches (Types #2)","author":"Diogo Nunes","date":"16 October, 2023","format":false,"excerpt":"\ud83c\udfc6 This post was featured in Software Testing Weekly #191 This is a very long post. You don't have to read it all in one go. Use it as a reference, anytime you want to check the purpose of a particular test type. Categories Functional testing Non-functional testing Black box\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"lego pieces","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/08\/xavi-cabrera-kn-UmDZQDjM-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/08\/xavi-cabrera-kn-UmDZQDjM-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/08\/xavi-cabrera-kn-UmDZQDjM-unsplash.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/08\/xavi-cabrera-kn-UmDZQDjM-unsplash.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/08\/xavi-cabrera-kn-UmDZQDjM-unsplash.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3978,"url":"https:\/\/www.diogonunes.com\/blog\/framework-review-cypress\/","url_meta":{"origin":4307,"position":2},"title":"Framework review: Cypress","author":"Diogo Nunes","date":"4 January, 2021","format":false,"excerpt":"Fast and reliable testing for anything that runs in a browser. It uses Javascript to make setting up, writing, running and debugging tests easy \u2014 for QAs and developers. \u2014 Official website Code Example of automation at GitHub. Use cases \ud83e\udd47 Automate end-to-end (E2E) tests using the UI or the\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/09\/herbert-goetsch-vImJ5GYMMqQ-unsplash-1.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/09\/herbert-goetsch-vImJ5GYMMqQ-unsplash-1.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/09\/herbert-goetsch-vImJ5GYMMqQ-unsplash-1.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/09\/herbert-goetsch-vImJ5GYMMqQ-unsplash-1.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/09\/herbert-goetsch-vImJ5GYMMqQ-unsplash-1.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4698,"url":"https:\/\/www.diogonunes.com\/blog\/framework-review-maestro\/","url_meta":{"origin":4307,"position":3},"title":"Framework review: Maestro","author":"Diogo Nunes","date":"15 May, 2023","format":false,"excerpt":"\ud83c\udfc6 This post was featured in Software Testing Weekly #169 A friend (Hugo) told me about this new mobile test automation framework called Maestro. At the time, my team was using Appium to test a React Native app, that ran on iOS and Android. I was not 100% happy with\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/04\/ConductorEimearNoonepoisedtomakehistoryatthe2020Oscars.jpg?fit=1000%2C563&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/04\/ConductorEimearNoonepoisedtomakehistoryatthe2020Oscars.jpg?fit=1000%2C563&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/04\/ConductorEimearNoonepoisedtomakehistoryatthe2020Oscars.jpg?fit=1000%2C563&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2023\/04\/ConductorEimearNoonepoisedtomakehistoryatthe2020Oscars.jpg?fit=1000%2C563&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":3955,"url":"https:\/\/www.diogonunes.com\/blog\/framework-review-karate\/","url_meta":{"origin":4307,"position":4},"title":"Framework review: Karate","author":"Diogo Nunes","date":"2 November, 2020","format":false,"excerpt":"Karate is the only open-source tool to combine API test-automation, mocks, performance-testing and even UI automation into a single, unified framework. You don't have to compile (Java) code. Just write tests in a readable syntax. \u2014 Official website Code Example of automation at GitHub. Use cases \ud83e\udd47 Automate API tests.\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3709,"url":"https:\/\/www.diogonunes.com\/blog\/cypress-automation-template\/","url_meta":{"origin":4307,"position":5},"title":"Cypress Sapling (automation template)","author":"Diogo Nunes","date":"18 May, 2020","format":false,"excerpt":"No need to start with the seed \u2013 plant the sapling! Get it? Because \"Cypress\" is a tree... \ud83e\udd13 On my last project we chose Cypress to automate our E2E tests. During a year and a half we constantly tweaked and improved our test repository. We added more functionary on\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/tzingtao-chow-J8oxnYHBpWM-unsplash-scaled.jpg?fit=960%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/tzingtao-chow-J8oxnYHBpWM-unsplash-scaled.jpg?fit=960%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/tzingtao-chow-J8oxnYHBpWM-unsplash-scaled.jpg?fit=960%2C1200&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/tzingtao-chow-J8oxnYHBpWM-unsplash-scaled.jpg?fit=960%2C1200&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/4307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=4307"}],"version-history":[{"count":3,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/4307\/revisions"}],"predecessor-version":[{"id":4445,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/4307\/revisions\/4445"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/4310"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=4307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=4307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=4307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}