{"id":5926,"date":"2022-03-07T16:40:00","date_gmt":"2022-03-07T15:40:00","guid":{"rendered":"https:\/\/the7.io\/elementor-creative-light\/?p=5926"},"modified":"2023-09-13T09:11:21","modified_gmt":"2023-09-13T07:11:21","slug":"svelte","status":"publish","type":"post","link":"https:\/\/blog.socraft.io\/en\/blog\/svelte\/","title":{"rendered":"Svelte, sans tests = NO GO"},"content":{"rendered":"<p>\u00catre un software crafter ne veut pas dire ma\u00eetriser toutes les technologies et m\u00e9thodologies. C&rsquo;est avant tout un mindset: celui de toujours chercher \u00e0 produire de la valeur sans renier la qualit\u00e9, de mettre l\u2019am\u00e9lioration continue au premier plan.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/new.socraft.ch\/wp-content\/uploads\/2023\/04\/Untitled-1--1024x683.png\" alt=\"\" class=\"wp-image-87452\" srcset=\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-1--1024x683.png 1024w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-1--300x200.png 300w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-1--768x512.png 768w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-1--1536x1024.png 1536w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-1--2048x1365.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Je me consid\u00e8re aspirant software crafter, et aujourd&rsquo;hui j&rsquo;aimerais partager avec vous un morceau du chemin que j&rsquo;ai parcouru: l&rsquo;\u00e9criture de tests.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"l%C3%A9criture-de-tests-un-sujet-d%C3%A9licat\">L&rsquo;\u00e9criture de tests: un sujet d\u00e9licat<\/h2>\n\n\n\n<p>A ce stade de la lecture, les plus exp\u00e9riment\u00e9s d&rsquo;entre vous commencent probablement \u00e0 vous offusquer que ce sujet n\u2019ait rien de d\u00e9licat: Il faut faire des tests, un point c&rsquo;est tout !<\/p>\n\n\n\n<p>Pourtant, est-ce la r\u00e9alit\u00e9? Vous conviendrez que rares sont les cadres o\u00f9 le testing est justement valoris\u00e9.<\/p>\n\n\n\n<p>Vous \u00eates certainement pass\u00e9s par des entreprises o\u00f9 cette pratique \u00e9tait consid\u00e9r\u00e9e comme un centre de co\u00fbts. Ou plus g\u00e9n\u00e9ralement, une obligation provoqu\u00e9e par un gate keeping for\u00e7ant un pourcentage de couverture, sans grande conviction.<\/p>\n\n\n\n<p>Cette r\u00e9alit\u00e9 se mat\u00e9rialise \u00e9galement dans les projets personnels: \u00e9crivez-vous syst\u00e9matiquement des tests dans ce cas de figure?<\/p>\n\n\n\n<p>Pour ma part, je vais peut-\u00eatre vous d\u00e9cevoir, mais la r\u00e9ponse est non.<\/p>\n\n\n\n<p>Et c&rsquo;est pr\u00e9cis\u00e9ment ce dont je vais vous parler.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"un-projet-perso-ce-doit-avant-tout-%C3%AAtre-fun\">Un projet perso, ce doit avant tout \u00eatre fun !<\/h2>\n\n\n\n<p>En tant que d\u00e9veloppeurs, nous consacrons la plupart de notre temps de travail \u00e0 des activit\u00e9s de d\u00e9veloppement. Selon le c\u00f4t\u00e9 de la fronti\u00e8re duquel vous vous situez, on parle donc de 35 \u00e0 42 h par semaine.<\/p>\n\n\n\n<p>Apr\u00e8s avoir pass\u00e9 tant de temps dans le code, qu\u2019est-ce qui peut motiver quelqu\u2019un \u00e0 investir de son temps personnel pour remettre les mains dedans ?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/new.socraft.ch\/wp-content\/uploads\/2023\/04\/Untitled-2--1024x683.png\" alt=\"\" class=\"wp-image-87453\" srcset=\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-2--1024x683.png 1024w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-2--300x200.png 300w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-2--768x512.png 768w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-2--1536x1024.png 1536w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-2--2048x1365.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Il y a bien des raisons possibles, \u00e0 tel point que ce sujet m\u00e9riterait un article \u00e0 part enti\u00e8re. Pour la jouer courte, dans mon cas, il s\u2019agit de r\u00e9pondre \u00e0 un besoin, et avoir du fun.<\/p>\n\n\n\n<p>Pour moi, un projet personnel n\u2019est viable que s\u2019il r\u00e9pond \u00e0 une probl\u00e9matique qui me touche au quotidien. C\u2019est \u00e0 cette seule condition que je le concr\u00e9tiserais, car sa r\u00e9alisation m\u2019apporterait un gain concret dans ma vie de tous les jours: il r\u00e9pond \u00e0 un besoin, il apporte de la valeur.<\/p>\n\n\n\n<p>Apr\u00e8s avoir \u00e9lucid\u00e9 l\u2019objectif d\u2019un projet personnel, il reste un point tout aussi important: quelles technologies et m\u00e9thodologies utiliser pour le r\u00e9aliser ?<\/p>\n\n\n\n<p>Ces \u00e9lans de motivation qui m\u00e8nent \u00e0 r\u00e9aliser des d\u00e9veloppements sur le temps libre, c\u2019est justement l\u2019occasion d\u2019exp\u00e9rimenter. Il serait dommage de se restreindre aux technologies utilis\u00e9es dans notre quotidien.<\/p>\n\n\n\n<p>Au final, un projet perso, ce doit avant tout \u00eatre fun ! Sortir des sentiers battus, exp\u00e9rimenter de nouvelles choses, tester de nouvelles technologies pour voir \u00e0 quel point elles sont agr\u00e9ables \u00e0 utiliser&#8230;<\/p>\n\n\n\n<p>Sauf que voil\u00e0: parfois, cette recherche du fun obscurcit notre vision, et m\u00e8ne \u00e0 de mauvaises d\u00e9cisions<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"l%E2%80%99histoire-d%E2%80%99un-projet-qui-d%C3%A9marrait-bien\"><strong>L\u2019histoire d\u2019un projet qui d\u00e9marrait bien&#8230;<\/strong><\/h2>\n\n\n\n<p>Ces derniers mois, je me suis grandement int\u00e9ress\u00e9 \u00e0 Svelte. Il s\u2019agit d\u2019un framework Javascript, au m\u00eame titre que Angular ou React. Ce qui m\u2019a men\u00e9 \u00e0 explorer Svelte est sa facilit\u00e9 d\u2019utilisation, li\u00e9e \u00e0 une syntaxe n\u00e9cessitant bien moins de boilerplate que ce qui se fait avec d\u2019autres frameworks. Les performances \u00e0 l\u2019ex\u00e9cution sont \u00e9galement tr\u00e8s bonnes, la boucle de feedback s\u2019en voit tr\u00e8s acc\u00e9l\u00e9r\u00e9e: un plaisir \u00e0 utiliser !<\/p>\n\n\n\n<p>Malheureusement, tout n\u2019est pas rose : Svelte se veut actuellement agnostique en termes d\u2019outils de test. Ce qui implique que lorsque l\u2019on cr\u00e9e un projet, il ne vient pas avec une configuration de test pr\u00eate \u00e0 l\u2019emploi (\u00e0 l\u2019instar d\u2019autres frameworks, tels que ceux cit\u00e9s pr\u00e9c\u00e9demment).<\/p>\n\n\n\n<p>Apr\u00e8s avoir consacr\u00e9 du temps \u00e0 tenter de pallier ce probl\u00e8me sans succ\u00e8s, j\u2019ai pris la d\u00e9cision de partir dans la r\u00e9alisation de mon projet malgr\u00e9 tout. A ce stade, on fait donc une croix sur toute possibilit\u00e9 d\u2019\u00e9criture de tests, la configuration n\u00e9cessaire \u00e9tant absente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"682\" height=\"1024\" src=\"https:\/\/new.socraft.ch\/wp-content\/uploads\/2023\/04\/Untitled-3--682x1024.png\" alt=\"\" class=\"wp-image-87454\" srcset=\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-3--682x1024.png 682w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-3--200x300.png 200w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-3--768x1152.png 768w, https:\/\/blog.socraft.io\/wp-content\/uploads\/2023\/04\/Untitled-3-.png 987w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><\/figure>\n\n\n\n<p>J\u2019ai r\u00e9alis\u00e9 ce projet sur quelques mois, en y consacrant quelques heures par-ci par-l\u00e0. Dans les faits, je pourrais d\u00e9couper ces d\u00e9veloppements en 3 phases:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le d\u00e9marrage du projet: mise en place de la stack technique et r\u00e9alisation du MVP en ayant un focus sur les fonctionnalit\u00e9s \u00e0 forte valeur et faible co\u00fbt. Tout roule, j\u2019avance de mani\u00e8re fluide.<\/li>\n\n\n\n<li>L\u2019ajout de fonctionnalit\u00e9s: \u00e9tant sur une bonne lanc\u00e9e, je commence \u00e0 aller plus loin, le p\u00e9rim\u00e8tre du projet grossit, le nombre de fonctionnalit\u00e9s augmente. \u00c7a roule toujours, mais je commence \u00e0 payer l\u2019absence de tests: je consacre une attention particuli\u00e8re \u00e0 tester manuellement les diff\u00e9rentes fonctionnalit\u00e9s, ce qui me ralentit.<\/li>\n\n\n\n<li>Le polissage: satisfait du r\u00e9sultat, je souhaite donner un c\u00f4t\u00e9 sympa \u00e0 mon projet, en y ajoutant des \u00e9l\u00e9ments un peu plus chers, mais am\u00e9liorant l\u2019exp\u00e9rience utilisateur. Je me fais alors rattraper par mes d\u00e9cisions pr\u00e9c\u00e9dentes: je parviens tant bien que mal \u00e0 boucler le sujet, apr\u00e8s avoir essuy\u00e9 quelques pl\u00e2tres li\u00e9s \u00e0 des effets de bord.<\/li>\n<\/ul>\n\n\n\n<p>J\u2019arrive alors dans la phase que tout d\u00e9veloppeur redoute: celle o\u00f9 l\u2019on ne fait plus confiance au code. Le fun de la techno et du sujet commence \u00e0 s\u2019effacer au d\u00e9triment de la crainte d\u2019avoir des effets de bord. L\u2019investissement de temps\/\u00e9nergie n\u00e9cessaire pour remettre le projet \u00e0 plat devient un facteur de dissuasion tr\u00e8s puissant.<\/p>\n\n\n\n<p>C\u2019est souvent \u00e0 ce moment que les jours d\u2019un projet perso commencent \u00e0 \u00eatre compt\u00e9s: l\u2019effort n\u00e9cessaire augmente, la motivation baisse, et le temps accord\u00e9 finit par dispara\u00eetre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"un-projet-au-point-mort\"><strong>Un projet au point mort<\/strong><\/h2>\n\n\n\n<p>A ce niveau de progression, je suis d\u00e9sormais convaincu que ce projet a besoin de tests. Pourtant, la configuration permettant d\u2019en ex\u00e9cuter \u00e9tant absente, je me vois contraint de rattraper ce retard alors que le projet est bien avanc\u00e9.<\/p>\n\n\n\n<p>Malgr\u00e9 les heures investies sur ce sujet, je ne suis pas parvenu \u00e0 un r\u00e9sultat positif : la sp\u00e9cificit\u00e9 de mon projet (Svelte + SvelteKit + TypeScript) fait qu\u2019il n\u2019est pas ais\u00e9 aujourd\u2019hui d\u2019obtenir une configuration correcte.<\/p>\n\n\n\n<p>J\u2019en viens donc \u00e0 devoir rembourser une dette que je ne suis pas en mesure de payer aujourd\u2019hui. A\u00efe.<\/p>\n\n\n\n<p>Ma strat\u00e9gie actuelle est de sonder les tickets GitHub des projets concern\u00e9s, notamment SvelteKit, afin de suivre les avanc\u00e9es r\u00e9alis\u00e9es concernant le testing. Mon projet est donc au point mort, en attendant d\u2019avoir une option viable \u00e0 exploiter.<\/p>\n\n\n\n<p>Cet arr\u00eat \u201cforc\u00e9\u201d est brutal, mais il me permet de prendre du recul.. recul qui prend notamment la forme de cet article.<\/p>\n\n\n\n<p>\u00c0 date d\u2019aujourd\u2019hui, je ne suis pas s\u00fbr d\u2019utiliser Svelte sur un autre projet. Ne vous m\u00e9prenez pas : Svelte est un excellent atout \u00e0 avoir en main, son potentiel est incroyable !<\/p>\n\n\n\n<p>Par contre, partir sur une techno qui ne permet pas facilement d\u2019\u00e9crire des tests devrait \u00eatre un NO-GO.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"bonus\">Bonus<\/h1>\n\n\n\n<p>Lors de mes recherches concernant le niveau de maturit\u00e9 de Svelte en termes de testing, j\u2019ai observ\u00e9 quelque chose d\u2019intriguant: Rich Harris, cr\u00e9ateur de Svelte, a exprim\u00e9 le fait qu\u2019il ne toucherait pas Jest, m\u00eame avec un b\u00e2ton.<\/p>\n\n\n\n<p>Pourtant, Jest repr\u00e9sente aujourd\u2019hui la solution la plus populaire en termes d\u2019\u00e9criture de tests unitaires dans un \u00e9cosyst\u00e8me Javascript.<\/p>\n\n\n\n<p>Pour ma part, il s\u2019agit de mon outil de pr\u00e9dilection, aussi j\u2019ai \u00e9t\u00e9 grandement \u00e9tonn\u00e9 de voir un positionnement aussi tranch\u00e9 sur le sujet.<\/p>\n\n\n\n<p>Si l\u2019\u00e9quipe contribuant \u00e0 Svelte ne para\u00eet pas avoir un outil unique pour tester, il semble y avoir un consensus pour dire que uvu est plus efficace que Jest.<\/p>\n\n\n\n<p>J\u2019ignore ce qu\u2019il en est de votre c\u00f4t\u00e9, mais cet outil m\u2019\u00e9tait totalement \u00e9tranger. Les arguments sont int\u00e9ressants, aussi je vais tester uvu prochainement, pour voir ce qu\u2019il en ressort.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"qu%E2%80%99y-a-t-il-%C3%A0-retenir\"><strong>Qu\u2019y a-t-il \u00e0 retenir ?<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ne pas tester sur un projet One-Shot, c\u2019est faisable.<\/li>\n\n\n\n<li>Ne pas tester sur un projet que l\u2019on souhaite faire vivre, c\u2019est une tr\u00e8s mauvaise id\u00e9e.<\/li>\n\n\n\n<li>Quand on choisit une technologie, il faudrait syst\u00e9matiquement consid\u00e9rer la facilit\u00e9 \u00e0 tester en premier lieu.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Un projet sans tests, c\u2019est comme une voiture sans volant: \u00e7a peut avoir de l\u2019allure et aller vite, mais \u00e7a finira forc\u00e9ment dans un mur.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Vivamus nec purus nec leo blandit pellentesque vitae nec magna. Suspendisse turpis urna, consectetur in sagittis vehicula.<\/p>","protected":false},"author":21,"featured_media":87451,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"arc_restricted_post":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[257],"tags":[],"table_tags":[],"ppma_author":[325],"class_list":["post-5926","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","category-257","description-off"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Svelte, sans tests = NO GO - socraft - blog<\/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:\/\/blog.socraft.io\/en\/blog\/svelte\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Svelte, sans tests = NO GO - socraft - blog\" \/>\n<meta property=\"og:description\" content=\"Vivamus nec purus nec leo blandit pellentesque vitae nec magna. Suspendisse turpis urna, consectetur in sagittis vehicula.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.socraft.io\/en\/blog\/svelte\/\" \/>\n<meta property=\"og:site_name\" content=\"socraft - blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/socraft.ch\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-07T15:40:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-13T07:11:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"998\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alvaro Costa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@socraftch\" \/>\n<meta name=\"twitter:site\" content=\"@socraftch\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alvaro Costa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/\"},\"author\":{\"name\":\"Alvaro Costa\",\"@id\":\"https:\/\/blog.socraft.io\/#\/schema\/person\/31b338d6b0b78223da4517afd899b80e\"},\"headline\":\"Svelte, sans tests = NO GO\",\"datePublished\":\"2022-03-07T15:40:00+00:00\",\"dateModified\":\"2023-09-13T07:11:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/\"},\"wordCount\":1465,\"commentCount\":38,\"publisher\":{\"@id\":\"https:\/\/blog.socraft.io\/#organization\"},\"image\":{\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png\",\"articleSection\":[\"tech\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.socraft.io\/blog\/svelte\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/\",\"url\":\"https:\/\/blog.socraft.io\/blog\/svelte\/\",\"name\":\"Svelte, sans tests = NO GO - socraft - blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.socraft.io\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png\",\"datePublished\":\"2022-03-07T15:40:00+00:00\",\"dateModified\":\"2023-09-13T07:11:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.socraft.io\/blog\/svelte\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage\",\"url\":\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png\",\"contentUrl\":\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png\",\"width\":1500,\"height\":998},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.socraft.io\/blog\/svelte\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.socraft.io\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Svelte, sans tests = NO GO\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.socraft.io\/#website\",\"url\":\"https:\/\/blog.socraft.io\/\",\"name\":\"socraft - blog\",\"description\":\"socraft - les artisans du num\u00e9rique\",\"publisher\":{\"@id\":\"https:\/\/blog.socraft.io\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.socraft.io\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.socraft.io\/#organization\",\"name\":\"socraft\",\"url\":\"https:\/\/blog.socraft.io\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/blog.socraft.io\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2024\/04\/socraft-logo-noir2.png\",\"contentUrl\":\"https:\/\/blog.socraft.io\/wp-content\/uploads\/2024\/04\/socraft-logo-noir2.png\",\"width\":400,\"height\":94,\"caption\":\"socraft\"},\"image\":{\"@id\":\"https:\/\/blog.socraft.io\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/socraft.ch\",\"https:\/\/x.com\/socraftch\",\"https:\/\/www.linkedin.com\/company\/socraft-ch\",\"https:\/\/www.instagram.com\/socraft.ch\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.socraft.io\/#\/schema\/person\/31b338d6b0b78223da4517afd899b80e\",\"name\":\"Alvaro Costa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/blog.socraft.io\/#\/schema\/person\/image\/d24737b1f2d8df348ba3298f94a4fd7d\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cd54ee5c8817cb5cc3e38fe329bce2fe?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cd54ee5c8817cb5cc3e38fe329bce2fe?s=96&d=mm&r=g\",\"caption\":\"Alvaro Costa\"},\"url\":\"https:\/\/blog.socraft.io\/en\/blog\/author\/alvaro-costasocraft-ch\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Svelte, sans tests = NO GO - socraft - blog","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:\/\/blog.socraft.io\/en\/blog\/svelte\/","og_locale":"en_GB","og_type":"article","og_title":"Svelte, sans tests = NO GO - socraft - blog","og_description":"Vivamus nec purus nec leo blandit pellentesque vitae nec magna. Suspendisse turpis urna, consectetur in sagittis vehicula.","og_url":"https:\/\/blog.socraft.io\/en\/blog\/svelte\/","og_site_name":"socraft - blog","article_publisher":"https:\/\/www.facebook.com\/socraft.ch","article_published_time":"2022-03-07T15:40:00+00:00","article_modified_time":"2023-09-13T07:11:21+00:00","og_image":[{"width":1500,"height":998,"url":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png","type":"image\/png"}],"author":"Alvaro Costa","twitter_card":"summary_large_image","twitter_creator":"@socraftch","twitter_site":"@socraftch","twitter_misc":{"Written by":"Alvaro Costa","Estimated reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#article","isPartOf":{"@id":"https:\/\/blog.socraft.io\/blog\/svelte\/"},"author":{"name":"Alvaro Costa","@id":"https:\/\/blog.socraft.io\/#\/schema\/person\/31b338d6b0b78223da4517afd899b80e"},"headline":"Svelte, sans tests = NO GO","datePublished":"2022-03-07T15:40:00+00:00","dateModified":"2023-09-13T07:11:21+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.socraft.io\/blog\/svelte\/"},"wordCount":1465,"commentCount":38,"publisher":{"@id":"https:\/\/blog.socraft.io\/#organization"},"image":{"@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png","articleSection":["tech"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.socraft.io\/blog\/svelte\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.socraft.io\/blog\/svelte\/","url":"https:\/\/blog.socraft.io\/blog\/svelte\/","name":"Svelte, sans tests = NO GO - socraft - blog","isPartOf":{"@id":"https:\/\/blog.socraft.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage"},"image":{"@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png","datePublished":"2022-03-07T15:40:00+00:00","dateModified":"2023-09-13T07:11:21+00:00","breadcrumb":{"@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.socraft.io\/blog\/svelte\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#primaryimage","url":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png","contentUrl":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2020\/10\/Capture-decran-2023-04-06-a-14.19.55.png","width":1500,"height":998},{"@type":"BreadcrumbList","@id":"https:\/\/blog.socraft.io\/blog\/svelte\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.socraft.io\/"},{"@type":"ListItem","position":2,"name":"Svelte, sans tests = NO GO"}]},{"@type":"WebSite","@id":"https:\/\/blog.socraft.io\/#website","url":"https:\/\/blog.socraft.io\/","name":"socraft - blog","description":"socraft - les artisans du num\u00e9rique","publisher":{"@id":"https:\/\/blog.socraft.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.socraft.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/blog.socraft.io\/#organization","name":"socraft","url":"https:\/\/blog.socraft.io\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.socraft.io\/#\/schema\/logo\/image\/","url":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2024\/04\/socraft-logo-noir2.png","contentUrl":"https:\/\/blog.socraft.io\/wp-content\/uploads\/2024\/04\/socraft-logo-noir2.png","width":400,"height":94,"caption":"socraft"},"image":{"@id":"https:\/\/blog.socraft.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/socraft.ch","https:\/\/x.com\/socraftch","https:\/\/www.linkedin.com\/company\/socraft-ch","https:\/\/www.instagram.com\/socraft.ch"]},{"@type":"Person","@id":"https:\/\/blog.socraft.io\/#\/schema\/person\/31b338d6b0b78223da4517afd899b80e","name":"Alvaro Costa","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.socraft.io\/#\/schema\/person\/image\/d24737b1f2d8df348ba3298f94a4fd7d","url":"https:\/\/secure.gravatar.com\/avatar\/cd54ee5c8817cb5cc3e38fe329bce2fe?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cd54ee5c8817cb5cc3e38fe329bce2fe?s=96&d=mm&r=g","caption":"Alvaro Costa"},"url":"https:\/\/blog.socraft.io\/en\/blog\/author\/alvaro-costasocraft-ch\/"}]}},"authors":[{"term_id":325,"user_id":21,"is_guest":0,"slug":"alvaro-costasocraft-ch","display_name":"Alvaro Costa","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/cd54ee5c8817cb5cc3e38fe329bce2fe?s=96&d=mm&r=g","first_name":"Alvaro","last_name":"Costa","user_url":"","job_title_2":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/posts\/5926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/comments?post=5926"}],"version-history":[{"count":2,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/posts\/5926\/revisions"}],"predecessor-version":[{"id":87455,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/posts\/5926\/revisions\/87455"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/media\/87451"}],"wp:attachment":[{"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/media?parent=5926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/categories?post=5926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/tags?post=5926"},{"taxonomy":"table_tags","embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/table_tags?post=5926"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.socraft.io\/en\/wp-json\/wp\/v2\/ppma_author?post=5926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}