{"id":67,"date":"2026-01-30T09:55:38","date_gmt":"2026-01-30T09:55:38","guid":{"rendered":"https:\/\/productive.io\/engineering\/blog\/"},"modified":"2026-01-30T09:55:38","modified_gmt":"2026-01-30T09:55:38","slug":"testing-the-test","status":"publish","type":"post","link":"https:\/\/productive.io\/engineering\/testing-the-test\/","title":{"rendered":"Testing the Test"},"content":{"rendered":"<p   > <a href='https:\/\/productive.io\/engineering\/category\/engineering\/'>Engineering<\/a><\/p> &#8211; <p   > {{minutes}} min read<\/p> <h1   > Testing the Test<\/h1> <a href=\"https:\/\/productive.io\/engineering\/author\/ivan-lucin\/\"> <\/a> <a href=\"https:\/\/productive.io\/engineering\/author\/ivan-lucin\/\"> <p   > Ivan Lu\u010din<\/p><\/a> VP of Engineering @ Productive. Frontend engineer under the hood. Outside of working hours\u2014a happy husband, dad of two girls and a wannabe musician.<p   > January 30, 2026<\/p> <a aria-hidden=\"false\"   href=https:\/\/www.facebook.com\/sharer.php?u=https:\/\/productive.io\/engineering\/testing-the-test target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/twitter.com\/intent\/tweet?text=Testing%20the%20Test&amp;url=https:\/\/productive.io\/engineering\/testing-the-test target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/www.linkedin.com\/shareArticle?mini=true&amp;url=https:\/\/productive.io\/engineering\/testing-the-test target=_blank rel=\"noopener noreferrer\" > <\/a> <img  src=\"https:\/\/productive.io\/engineering\/wp-content\/uploads\/sites\/2\/2022\/11\/BP_format.png\"  alt=\"\" loading=lazy \/> <p   > Code in <strong>automated tests should also be tested<\/strong>&#8230; right?<\/p> <p   > A lot of developers<strong> avoid writing automated code tests, or at least writing proper ones.<\/strong> Having a basic rendering test for a component or a class, generated by your framework, doesn\u2019t count as testing.<br><br>This is completely reasonable. Writing tests screws you up on so many levels:<br><\/p> <ul   > <li>it lowers your confidence, showing you how bad your code actually is<\/li><li>it drags your delivery date, which you so-badly underestimated<\/li><li>it triggers your OCD because it\u2019s impossible to achieve 100% test coverage<\/li><li>it generates more work, because you end up with a lot more code to maintain<\/li><\/ul> <p   > So it isn\u2019t surprising that only experienced devs do it properly. You need to<strong> feel the struggle<\/strong> to actually understand its benefits. And, you need to <strong>learn how to test<\/strong> the stuff that will bite your ass in the future.<br><br>There are different types of tests: unit, integration, acceptance, e2e, smoke, visual regression tests, etc. Every type of test introduces a new set of problems and requires a different perspective on the code being tested.<br><br>The biggest trap when writing tests is that you actually never know if the test is correct. You\u2019re writing code that tests other code, which means you have even more opportunities to make mistakes.<\/p> <p   > So you need a system to test the test, right? I don\u2019t actually have a solution for this, only a few pieces of advice to give.<\/p> <h2   > <strong>Minimize the Logic<\/strong><\/h2> <p   > The code in the test should be as trivial as possible. No <code>if<\/code> statements, no <code>for<\/code> loops, no logic\u2014this is forbidden. Minimize the complexity wherever you can.<br><br>The test should also function as documentation, which means it should be readable by a human. Your Product Manager or QA engineer should be able to understand it.<br><br>Having a good testing framework is important. At Productive, we\u2019ve developed our own set of abstractions over <a href=\"https:\/\/github.com\/emberjs\/ember-test-helpers\" target=\"_blank\" rel=\"noreferrer noopener\">ember-test-helpers<\/a> library, which is provided by Ember.<\/p> <h2   > <strong>Common Structure<\/strong><\/h2> <p   > Most of the code in unit\/integration tests should look the same. <br><br>A typical test consists of:<\/p> <ul   > <li><strong>setup:<\/strong> the part where you setup data mocks, stubs and the test environment<\/li><li><strong>construction:<\/strong> render the component or instantiate a unit you\u2019re testing<\/li><li><strong>assertions:<\/strong> where you make sure that the output of the component\/unit is correct<\/li><li><strong>interactions<\/strong> <strong>(+ more assertions):<\/strong> where you interact with the component (clickin\u2019 them buttons) or with the object (callin\u2019 them methods)<\/li><\/ul> <img  src=\"https:\/\/productive.io\/engineering\/wp-content\/uploads\/sites\/2\/2022\/11\/Testing-the-Test-RC1.png\"  alt=\"\" loading=lazy \/> <p   > Typical structure of a component rendering test<\/p> <p   > Being rigid about this structure is crucial. This will help you keep your tests tidy and readable. It will minimise the possibility of making mistakes, but it will not prevent you from falling into \u201cthe biggest trap\u201d.<\/p> <h2   > <strong>Testing the Test<\/strong><\/h2> <p   > A great way to test the test is to change the original code the test is testing and then seeing if the tests are failing as they should. It sounds trivial, but I\u2019m pretty sure you\u2019re not doing it that often (at least I\u2019m not \ud83d\ude42).<br><br>As soon as you see the green light in the tests, you feel happy and move on to the next thing\u2014 because you\u2019re probably in a rush. And what if you tested the wrong thing?<br><br>Let\u2019s take a look at the following example:<\/p> <img  src=\"https:\/\/productive.io\/engineering\/wp-content\/uploads\/sites\/2\/2022\/11\/attachments_files_002_177_021_original_Snap_3.png\"  alt=\"\" loading=lazy \/> <p   > Pretty basic. If there are no items, the \u201citems-count\u201d label should not render. We\u2019re testing the <code>{{if}}<\/code> statement in the template. You\u2019ll see a green light in your CI\/CD pipeline and move on happily, right?<br><br>Not so fast. Take a closer look at the test: the CSS selector is invalid. We\u2019re missing the the dot in the <code>$(\u2019items-count\u2019)<\/code> call. So it\u2019s completely wrong, but the test is still passing. \ud83e\udd2f\u00a0This is a common pitfall.<br><br><strong>Whenever you write an assertion, make sure it\u2019s failing before it passes. You can do that by commenting out (or adjusting) the code responsible for the logic you\u2019re testing.<\/strong><br><br>In this example, you would need to remove the <code>{{#if @items.length}}<\/code> statement in the template and check out if the test is failing. You would notice that the test isn\u2019t failing, which would indicate that you wrote an invalid test.<br><br>This is how you test the test.<\/p> <h2   > <strong>Mutation Testing<\/strong><\/h2> <p   > The idea of changing the codebase to validate how well the tests are written is not new. It\u2019s called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mutation_testing\" target=\"_blank\" rel=\"noreferrer noopener\">Mutation testing<\/a> and there are testing libraries that do that automatically. A good mutation library should be able to handle the problem from the example above.<br><br>If you\u2019re interested, check out this article on <a href=\"https:\/\/medium.com\/@ollelauribostr\/javascript-mutation-testing-2265e961029a\" target=\"_blank\" rel=\"noreferrer noopener\">Javascript Mutation Testing<\/a> from Olle Lauri Bostr\u00f6m. He\u2019s using <a href=\"https:\/\/github.com\/stryker-mutator\/stryker-js\" target=\"_blank\" rel=\"noreferrer noopener\">Stryker<\/a> for mutating his Javascript tests. To avoid diving into more detail, I\u2019m just gonna drop a quick quote from the article:<\/p> <p   > <em>\u2014 Simon de Lang<\/em><\/p> <p   > <em>The only way to know that a test actually works is when it fails when you make a code change.<\/em><\/p> <h2   > <strong>TDD<\/strong><\/h2> <p   > You can also try the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\" target=\"_blank\" rel=\"noreferrer noopener\">TDD<\/a> approach. First write a failing test followed by the code that makes the test pass. This would work well in our example because the test would be passing from the start, which isn\u2019t allowed by TDD.<br><br>TDD is a somewhat holistic and naive approach. It doesn\u2019t always work out in practice, at least not in the \u201cFrontend land\u201d. But the idea is great, so take all the good parts from it.<\/p> <h2   > <strong>How Good Are My Tests?<\/strong><\/h2> <p   > Our recently joined colleague, Jean Petri\u0107, wrote an excellent <a href=\"https:\/\/bura.brunel.ac.uk\/bitstream\/2438\/14816\/1\/FullText.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">academic paper<\/a> on a similar topic. With a few of his fellow researchers, he tried to answer: \u201cHow Good Are My Tests?\u201d<br><br>They made a list of 15 testing principles that capture the essence of testing goals and best practices from a quality perspective. Go on and read the article, it\u2019s a gem!<br><br>That\u2019s all folks. Happy testin\u2019 \ud83d\udc4b<\/p> <a aria-hidden=\"false\"   href=https:\/\/www.facebook.com\/sharer.php?u=https:\/\/productive.io\/engineering\/testing-the-test target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/twitter.com\/intent\/tweet?text=Testing%20the%20Test&amp;url=https:\/\/productive.io\/engineering\/testing-the-test target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/www.linkedin.com\/shareArticle?mini=true&amp;url=https:\/\/productive.io\/engineering\/testing-the-test target=_blank rel=\"noopener noreferrer\" > <\/a> <p   > Ivan Lu\u010din<\/p> VP of Engineering @ Productive. Frontend engineer under the hood. Outside of working hours\u2014a happy husband, dad of two girls and a wannabe musician.<a   href=\"https:\/\/productive.io\/engineering\/author\/ivan-lucin\/\" > More From This Author <\/a> <h2   > Related articles<\/h2> <a href=\"https:\/\/productive.io\/engineering\/how-react-ruined-web-development\/\"   > <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_react-1-768x322.png\"  alt=\"\" loading=lazy \/> <p   > Engineering \u2022 Frontend<\/p> <h2   > How React Ruined Web Development<\/h2> <\/a><a href=\"https:\/\/productive.io\/engineering\/pull-requests-the-good-the-bad-and-really-not-that-ugly\/\"   > <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_pull_requests-768x322.png\"  alt=\"\" loading=lazy \/> <p   > Engineering \u2022 Workflow<\/p> <h2   > Pull Requests\u2014The Good, the Bad and Really, Not That Ugly<\/h2> <\/a> <h2   > Related jobs<\/h2> <a href=\"https:\/\/productive.io\/careers\/open-job-application\/\"  > <p  > Open Job Application<\/p><p  > <\/p> <\/a>","protected":false},"excerpt":{"rendered":"A lot of developers avoid writing automated code tests, or at least writing proper ones.","protected":false},"author":11,"featured_media":83,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"es_utils_meta_schema":"","footnotes":""},"categories":[7,13],"tags":[],"class_list":["post-67","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","category-testing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Testing the Test - Building Productive<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/productive.io\/engineering\/testing-the-test\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Testing the Test\" \/>\n<meta property=\"og:description\" content=\"A lot of developers avoid writing automated code tests, or at least writing proper ones.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/productive.io\/engineering\/testing-the-test\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Productive\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T09:55:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1900\" \/>\n\t<meta property=\"og:image:height\" content=\"796\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ivan Lu\u010din\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ivan Lu\u010din\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/\"},\"author\":{\"name\":\"Ivan Lu\u010din\",\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/32a9827994fe8109baebc97c0be0c762\"},\"headline\":\"Testing the Test\",\"datePublished\":\"2026-01-30T09:55:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/\"},\"wordCount\":3,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png\",\"articleSection\":[\"Engineering\",\"Testing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/productive.io\/engineering\/testing-the-test\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/\",\"url\":\"https:\/\/productive.io\/engineering\/testing-the-test\/\",\"name\":\"Testing the Test - Building Productive\",\"isPartOf\":{\"@id\":\"https:\/\/productive.io\/engineering\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png\",\"datePublished\":\"2026-01-30T09:55:38+00:00\",\"author\":{\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/32a9827994fe8109baebc97c0be0c762\"},\"breadcrumb\":{\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/productive.io\/engineering\/testing-the-test\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage\",\"url\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png\",\"contentUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png\",\"width\":1900,\"height\":796},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/productive.io\/engineering\/testing-the-test\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/productive.io\/engineering\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Testing the Test\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/productive.io\/engineering\/#website\",\"url\":\"https:\/\/productive.io\/engineering\/\",\"name\":\"Building Productive\",\"description\":\"Just another Productive Sites site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/productive.io\/engineering\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/32a9827994fe8109baebc97c0be0c762\",\"name\":\"Ivan Lu\u010din\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/bc5f82dd98fabe447c2a8e68daaf2d20398785c5a4ba3e4353ab9e14c811abc7?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc5f82dd98fabe447c2a8e68daaf2d20398785c5a4ba3e4353ab9e14c811abc7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc5f82dd98fabe447c2a8e68daaf2d20398785c5a4ba3e4353ab9e14c811abc7?s=96&d=mm&r=g\",\"caption\":\"Ivan Lu\u010din\"},\"description\":\"VP of Engineering @ Productive. Frontend engineer under the hood. Outside of working hours\u2014a happy husband, dad of two girls and a wannabe musician.\",\"url\":\"https:\/\/productive.io\/engineering\/author\/ivan-lucin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Testing the Test - Building Productive","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:\/\/productive.io\/engineering\/testing-the-test\/","og_locale":"en_US","og_type":"article","og_title":"Testing the Test","og_description":"A lot of developers avoid writing automated code tests, or at least writing proper ones.","og_url":"https:\/\/productive.io\/engineering\/testing-the-test\/","og_site_name":"Building Productive","article_published_time":"2026-01-30T09:55:38+00:00","og_image":[{"width":1900,"height":796,"url":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png","type":"image\/png"}],"author":"Ivan Lu\u010din","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ivan Lu\u010din"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#article","isPartOf":{"@id":"https:\/\/productive.io\/engineering\/testing-the-test\/"},"author":{"name":"Ivan Lu\u010din","@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/32a9827994fe8109baebc97c0be0c762"},"headline":"Testing the Test","datePublished":"2026-01-30T09:55:38+00:00","mainEntityOfPage":{"@id":"https:\/\/productive.io\/engineering\/testing-the-test\/"},"wordCount":3,"commentCount":0,"image":{"@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage"},"thumbnailUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png","articleSection":["Engineering","Testing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/productive.io\/engineering\/testing-the-test\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/productive.io\/engineering\/testing-the-test\/","url":"https:\/\/productive.io\/engineering\/testing-the-test\/","name":"Testing the Test - Building Productive","isPartOf":{"@id":"https:\/\/productive.io\/engineering\/#website"},"primaryImageOfPage":{"@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage"},"image":{"@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage"},"thumbnailUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png","datePublished":"2026-01-30T09:55:38+00:00","author":{"@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/32a9827994fe8109baebc97c0be0c762"},"breadcrumb":{"@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/productive.io\/engineering\/testing-the-test\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#primaryimage","url":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png","contentUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png","width":1900,"height":796},{"@type":"BreadcrumbList","@id":"https:\/\/productive.io\/engineering\/testing-the-test\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/productive.io\/engineering\/"},{"@type":"ListItem","position":2,"name":"Testing the Test"}]},{"@type":"WebSite","@id":"https:\/\/productive.io\/engineering\/#website","url":"https:\/\/productive.io\/engineering\/","name":"Building Productive","description":"Just another Productive Sites site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/productive.io\/engineering\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/32a9827994fe8109baebc97c0be0c762","name":"Ivan Lu\u010din","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/bc5f82dd98fabe447c2a8e68daaf2d20398785c5a4ba3e4353ab9e14c811abc7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bc5f82dd98fabe447c2a8e68daaf2d20398785c5a4ba3e4353ab9e14c811abc7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc5f82dd98fabe447c2a8e68daaf2d20398785c5a4ba3e4353ab9e14c811abc7?s=96&d=mm&r=g","caption":"Ivan Lu\u010din"},"description":"VP of Engineering @ Productive. Frontend engineer under the hood. Outside of working hours\u2014a happy husband, dad of two girls and a wannabe musician.","url":"https:\/\/productive.io\/engineering\/author\/ivan-lucin\/"}]}},"featured_image":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_format.png","category":"Engineering","_links":{"self":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":10,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":712,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/67\/revisions\/712"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/media\/83"}],"wp:attachment":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/tags?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}