How to Optimize Your SEO with Automated SEO Tests

How to Optimize Your SEO with Automated SEO Tests

In a nutshell: Search engine optimization (SEO) is a crucial element for any business looking to increase its online visibility and attract qualified traffic to its website. This guide covers: What is SEO?, The use of title tags, The use of meta-description tags, and Website loading speed.

Search engine optimization (SEO) is a crucial element for any business aiming to increase its online visibility and attract qualified traffic to its website.

However, with numerous technical elements considered by search engines, ensuring optimal SEO at all times can be challenging.

In this article, we will explore how automated tests, still relatively underutilized in SEO, can be leveraged to enhance your search engine optimization.

automated-seo-tests

What is SEO?

It is through natural search engine optimization (SEO) that search engines like Google can interpret our web pages and facilitate their discovery by end-users.

Essentially, it is a structured method for communicating website information to search engines and other websites.

Search engines utilize bots to crawl web pages, automatically discovering sites, gathering information about these web pages, and storing it in a database.

This database is indexed in such a way that information on these pages can be readily retrieved.

When you search for information on a search engine, it retrieves data from this index to provide the most relevant web pages corresponding to your query.

By optimizing websites with SEO data, you significantly increase the chances of your site being discovered by relevant users.

However, the foundation of an SEO strategy relies on the quality of the content present on your site. No technical optimization can compensate for duplicate content (content reproduced identically or nearly identically across the web) or content that fails to fully address the queries of your target market.

The objective of optimizing the technical aspects of SEO through automated testing is to make your high-quality content more readily accessible to your target market.

SEO Contributing Factors Amenable to Automated Monitoring

Key elements verifiable by an automated testing tool include:

The Presence of Title Tags

Google recommends explicitly ensure that every page on your site includes a title within the element .</span></p> <p style="font-size: 16px;"><span style="color: #666666;">This is located inside the tag <head> of the HTML document, and it is displayed in the browser's title bar.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">This is the title displayed in search results. It is also important to note that a web page should not contain more than one title tag.<br /></span><span style="color: #666666;"></span></p> <p style="font-size: 16px;"><span style="color: #666666;"><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20681%20146'%3E%3C/svg%3E" width="681" height="146" alt="suricate-title-tag" style="height: auto; max-width: 100%; width: 681px;" data-lazy-srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=341&height=73&name=title-tag-suricate.png 341w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=681&height=146&name=title-tag-suricate.png 681w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=1022&height=219&name=title-tag-suricate.png 1022w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=1362&height=292&name=title-tag-suricate.png 1362w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=1703&height=365&name=title-tag-suricate.png 1703w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=2043&height=438&name=title-tag-suricate.png 2043w" data-lazy-sizes="auto, (max-width: 681px) 100vw, 681px" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png"><noscript><img loading="lazy" loading="lazy" decoding="async" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png" width="681" height="146" loading="lazy" alt="title-tag-suricate" style="height: auto; max-width: 100%; width: 681px;" srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=341&height=73&name=title-tag-suricate.png 341w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=681&height=146&name=title-tag-suricate.png 681w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=1022&height=219&name=title-tag-suricate.png 1022w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=1362&height=292&name=title-tag-suricate.png 1362w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=1703&height=365&name=title-tag-suricate.png 1703w, https://www.mrsuricate.com/wp-content/uploads/2026/07/title-tag-suricate.png?width=2043&height=438&name=title-tag-suricate.png 2043w" sizes="auto, (max-width: 681px) 100vw, 681px"></noscript></span></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">The presence of meta-description tags</span></h3> <p style="font-size: 16px;"><span style="color: #666666;">The tag <meta> is used to describe the metadata of a web page, where the page description, keywords, etc., are specified.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">This tag must be inside the tag <head> of the HTML document. Metadata such as the description is used by the browser and other applications to display information about the web page.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">While tools exist to validate the structure of certain metadata, such as <a href="https://developers.google.com/search/docs/appearance/structured-data?hl=fr" rel="noopener">Google's Structured Data Testing Tool</a>, an automated testing tool proves invaluable for regression testing of actual metadata.</span></p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20682%20164'%3E%3C/svg%3E" width="682" height="164" alt="suricate-meta-description" style="height: auto; max-width: 100%; width: 682px;" data-lazy-srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=341&height=82&name=meta-description-suricate.png 341w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=682&height=164&name=meta-description-suricate.png 682w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=1023&height=246&name=meta-description-suricate.png 1023w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=1364&height=328&name=meta-description-suricate.png 1364w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=1705&height=410&name=meta-description-suricate.png 1705w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=2046&height=492&name=meta-description-suricate.png 2046w" data-lazy-sizes="auto, (max-width: 682px) 100vw, 682px" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png"><noscript><img loading="lazy" loading="lazy" decoding="async" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png" width="682" height="164" loading="lazy" alt="meta-description-suricate" style="height: auto; max-width: 100%; width: 682px;" srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=341&height=82&name=meta-description-suricate.png 341w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=682&height=164&name=meta-description-suricate.png 682w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=1023&height=246&name=meta-description-suricate.png 1023w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=1364&height=328&name=meta-description-suricate.png 1364w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=1705&height=410&name=meta-description-suricate.png 1705w, https://www.mrsuricate.com/wp-content/uploads/2026/07/meta-description-suricate.png?width=2046&height=492&name=meta-description-suricate.png 2046w" sizes="auto, (max-width: 682px) 100vw, 682px"></noscript></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">Website loading speed</span></h3> <p><span style="font-size: 16px;"><a href="https://www.baptiste-crestey.fr/ux-experience-utilisateur-un-element-cle-pour-ameliorer-le-seo/#:~:text=L'exp%C3%A9rience%20utilisateur%20%3A%20un%20%C3%A9l%C3%A9ment,dans%20les%20pages%20de%20r%C3%A9sultats." rel="noopener">User experience is a pivotal factor in SEO</a>, and site speed is an integral component of it.</span></p> <p><span style="font-size: 16px;">Evidently, a site that fails to load quickly across <a href="https://www.mrsuricate.com/en/blog/top-8-outils-test-cross-plateforme/" rel="noopener">all browsers and devices</a> tends to deter users, <span style="font-weight: bold;">resulting in a higher bounce rate</span> and, consequently, inflicting significant damage to a site's search engine ranking.</span></p> <p><span style="font-size: 16px;">Automated tests can pinpoint performance errors that may impede your site's speed, enabling prompt remediation.</span></p> <p><span style="font-size: 16px;">Discuss how automated testing can help ensure compliance with evolving search engine guidelines, emphasizing Google's Web Core Vitals.</span></p> <p><span style="font-size: 16px;"><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20640%20348'%3E%3C/svg%3E" width="640" height="348" alt="mr-suricate-seo-tests" style="height: auto; max-width: 100%; width: 640px;" data-lazy-srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=320&height=174&name=tests-seo-mr-suricate.png 320w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=640&height=348&name=tests-seo-mr-suricate.png 640w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=960&height=522&name=tests-seo-mr-suricate.png 960w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=1280&height=696&name=tests-seo-mr-suricate.png 1280w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=1600&height=870&name=tests-seo-mr-suricate.png 1600w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=1920&height=1044&name=tests-seo-mr-suricate.png 1920w" data-lazy-sizes="auto, (max-width: 640px) 100vw, 640px" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png"><noscript><img loading="lazy" loading="lazy" decoding="async" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png" width="640" height="348" loading="lazy" alt="tests-seo-mr-suricate" style="height: auto; max-width: 100%; width: 640px;" srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=320&height=174&name=tests-seo-mr-suricate.png 320w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=640&height=348&name=tests-seo-mr-suricate.png 640w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=960&height=522&name=tests-seo-mr-suricate.png 960w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=1280&height=696&name=tests-seo-mr-suricate.png 1280w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=1600&height=870&name=tests-seo-mr-suricate.png 1600w, https://www.mrsuricate.com/wp-content/uploads/2026/07/tests-seo-mr-suricate.png?width=1920&height=1044&name=tests-seo-mr-suricate.png 1920w" sizes="auto, (max-width: 640px) 100vw, 640px"></noscript></span></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">URL structure</span></h3> <p><span style="font-size: 16px;">A clear and consistent URL structure is paramount for effective SEO.</span></p> <p><span style="font-size: 16px;">Automated tests can assist in validating your URL structure and <span style="font-weight: bold;">detecting errors such as broken links, incorrect redirects, and missing canonical URLs</span>.</span></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">Content optimization for keywords</span></h3> <p style="font-size: 16px;"><span style="color: #666666;">Keywords play a crucial role in your website's SEO, and <span style="font-weight: bold;">automated SEO testing</span> can help you identify the most relevant keywords for your content and strategically integrate them into your pages.</span></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">Web Accessibility</span></h3> <p style="font-size: 16px;"><span style="color: #666666;">Search engines place significant emphasis on user experience, and <a href="https://www.mrsuricate.com/en/blog/obligation-accessibilite-numerique-evaluer-tester-accessibilite-site-internet/" rel="noopener">accessibility</a> is a key component. It ensures that content is <a href="https://fr.semrush.com/blog/accessibilite-site-web/" rel="noopener">accessible</a> to all users, regardless of their physical or sensory abilities. </span></p> <p style="font-size: 16px;"><span style="color: #666666;">Consequently, an accessible website generally leads to a lower bounce rate and enhanced content comprehension by both users and search engines.<br /></span><span style="color: #666666;"></span></p> <h2 style="font-size: 20px;"><span style="color: #3f51b5;">Why and when to automate SEO tests?</span></h2> <p style="font-size: 16px;"><span style="color: #666666;">Businesses are <a href="https://www.mrsuricate.com/en/blog/tendances-pipelines-devops-ci-cd-2024/" rel="noopener">deploying software much faster today</a>, and an efficient method for testing and validating SEO data for web pages can provide a significant confidence boost!</span></p> <p style="font-size: 16px;"><span style="color: #666666;"><span style="font-weight: bold;">Organic search engine optimization (SEO) is an excellent candidate for automated testing</span>, as manually reviewing page sources can be tedious, and critical details may be overlooked.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">To maintain your ranking on Google or any other search engine, <span style="font-weight: bold;">you must ensure that your SEO data is consistently present on your web page; otherwise, your site will not be indexed correctly</span>, or potentially not at all, depending on the missing elements.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">Especially when migrating your site using a different technology stack, it is crucial to ensure that all your HTML metadata is correctly transferred to the new platform.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">Furthermore, <span style="font-weight: bold;">if a company frequently updates its website's frontend</span>, implementing tests to verify the persistent presence of metadata on the page prior to publication would be prudent.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">The aforementioned scenarios highlight that during launches or migrations, there is a significant probability of SEO data being deleted or altered. It is imperative to ensure this data remains consistent, irrespective of the context.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">By collecting data in a reference table, information for each page can then be automatically reviewed individually, ensuring a successful migration.<br /></span><span style="color: #666666;"></span></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">Manual SEO Tests vs. Automated SEO Tests</span></h3> <p style="font-size: 16px;"><span style="color: #666666;">Numerous companies and individuals are capable of conducting SEO audits on websites. </span></p> <p style="font-size: 16px;"><span style="color: #666666;">However, the results <span style="font-weight: bold;">of such audits reflect the website's status at <em>a single</em> point in time</span> within a constantly evolving process, and are susceptible to human errors and detail omissions. </span></p> <p style="font-size: 16px; font-weight: bold;"><span style="color: #666666;">What's more, these manual <a href="https://www.mrsuricate.com/en/test-seo/">SEO tests</a> take a significant amount of time! </span></p> <p style="font-size: 16px;"><span style="color: #666666;">Automated SEO tests provide continuous and comprehensive monitoring, effectively alerting you to issues across all technical SEO aspects of your website.<br /></span><span style="color: #666666;"></span></p> <h3 style="font-size: 18px;"><span style="color: #3f51b5;">A Development Cycle Prioritizing SEO at Every Stage</span></h3> <p style="font-size: 16px;"><span style="color: #666666;">Automated tests are frequently employed in development cycles to detect bugs related to logic, syntax, and <a href="https://www.mrsuricate.com/en/blog/outil-test-api-approches-bonnes-pratiques-automatisation-tests/" rel="noopener">integration</a> errors.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">However, integrating automated SEO tests into continuous development workflows and continuous integration processes <span style="font-weight: bold;">provides clear SEO guidelines to technical teams</span>, optimizing website development for SEO from the outset, at all levels.</span></p> <p style="font-size: 16px;"><span style="color: #666666;"><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20640%20360'%3E%3C/svg%3E" width="640" height="360" alt="developer-seo-test" style="height: auto; max-width: 100%; width: 640px;" data-lazy-srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=320&height=180&name=test-seo-developpeur.png 320w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=640&height=360&name=test-seo-developpeur.png 640w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=960&height=540&name=test-seo-developpeur.png 960w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=1280&height=720&name=test-seo-developpeur.png 1280w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=1600&height=900&name=test-seo-developpeur.png 1600w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=1920&height=1080&name=test-seo-developpeur.png 1920w" data-lazy-sizes="auto, (max-width: 640px) 100vw, 640px" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png"><noscript><img loading="lazy" loading="lazy" decoding="async" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png" width="640" height="360" loading="lazy" alt="test-seo-developpeur" style="height: auto; max-width: 100%; width: 640px;" srcset="https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=320&height=180&name=test-seo-developpeur.png 320w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=640&height=360&name=test-seo-developpeur.png 640w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=960&height=540&name=test-seo-developpeur.png 960w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=1280&height=720&name=test-seo-developpeur.png 1280w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=1600&height=900&name=test-seo-developpeur.png 1600w, https://www.mrsuricate.com/wp-content/uploads/2026/07/test-seo-developpeur.png?width=1920&height=1080&name=test-seo-developpeur.png 1920w" sizes="auto, (max-width: 640px) 100vw, 640px"></noscript></span></p> <h2 style="font-size: 20px;"><span style="color: #3f51b5;">Mr Suricate France's leading provider of no-code automated testing</span></h2> <p style="font-size: 16px;"><span style="color: #666666;">Automated tests can be a powerful tool for optimizing your SEO and enhancing your website's visibility.</span></p> <p style="font-size: 16px;"><span style="color: #666666;">With the Mr Suricate automated testing tool, you can <span style="font-weight: bold;">implement continuous SEO monitoring</span> to maintain your competitive edge in an ever-changing environment.</span></p> <p style="font-size: 16px;"><span style="color: #666666;"> </span></p> <h2>FAQ</h2> <h3>What is SEO?</h3> <p>It is thanks to search engine optimization (SEO) that search engines like Google can understand our web pages and enable end users to discover them. Essentially, it is a structured way of providing search engines and other websites with information about a site.</p> <h3>Why and when to automate SEO tests?</h3> <p>Companies are launching software much faster these days, and having an easy way to test and validate SEO data for web pages can be a real confidence booster!</p> <p><script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is SEO?","acceptedAnswer":{"@type":"Answer","text":"It is thanks to search engine optimization (SEO) that search engines like Google can understand our web pages and enable end users to discover them. Essentially, it is a structured way of providing search engines and other websites with information about a site."}},{"@type":"Question","name":"Why and when to automate SEO tests?","acceptedAnswer":{"@type":"Answer","text":"Companies are launching software much faster these days, and having an easy way to test and validate SEO data for web pages can be a real confidence booster!"}}]}</script><br /> <!-- cta-auto --></p> <div class="cta-demo" style="text-align:center;margin:48px 0 40px;"><a href="https://www.mrsuricate.com/en/test-seo/" style="display:inline-block;background-color:#4C3BFF;color:#ffffff;padding:16px 36px;border-radius:90px;font-weight:600;text-decoration:none;">Discover Mr Suricate Suricate's SEO Tests</a></div> <p><!-- maillage-auto --><!-- maillage-pages-v1 --></p> <div class="msu-lnk"> <p class="msu-lnk-t">Further Reading</p> <ul class="msu-lnk-l"> <li><a href="/en/blog/5-meilleurs-outils-seo-optimiser-referencement/">The 5 Best SEO Tools to Optimize Your Search Engine Ranking</a></li> <li><a href="/en/blog/le-guide-ultime-des-tests-automatises-qa-strategies-outils-et-bonnes-pratiques/">The Ultimate Guide to Automated Testing & QA: Strategies, Tools, and Best Practices</a></li> <li><a href="/en/blog/audit-qualite-tests-automatises-facilitent-conformite-iso-rgaa-gdpr/">Quality Audit: How Automated Testing Facilitates Compliance (ISO, RGAA, GDPR, etc.)</a></li> <li><a href="https://www.mrsuricate.com/en/tests-daccessibilite/">Accessibility Testing</a></li> </ul> </div> <p>To see the solution in action, check out <a href="/en/test-seo/">our SEO tests</a>.</p> </div> </div> <div class="elementor-element elementor-element-888aec3 elementor-post-navigation-borders-yes elementor-widget elementor-widget-post-navigation" data-id="888aec3" data-element_type="widget" data-e-type="widget" data-widget_type="post-navigation.default"> <div class="elementor-widget-container"> <div class="elementor-post-navigation" role="navigation" aria-label="Navigation de publication"> <div class="elementor-post-navigation__prev elementor-post-navigation__link"> <a href="https://www.mrsuricate.com/en/blog/green-it-developpement-logiciels/" rel="prev"><span class="post-navigation__arrow-wrapper post-navigation__arrow-prev"><i aria-hidden="true" class="fas fa-angle-left" data-wg-notranslate=""></i><span class="elementor-screen-only">Previous</span></span><span class="elementor-post-navigation__link__prev"><span class="post-navigation__prev--label">Previous Article</span><span class="post-navigation__prev--title">Green IT in Software Development – What You Need to Know</span></span></a> </div> <div class="elementor-post-navigation__separator-wrapper"> <div class="elementor-post-navigation__separator"></div> </div> <div class="elementor-post-navigation__next elementor-post-navigation__link"> <a href="https://www.mrsuricate.com/en/blog/tests-graphiques-conseils-pour-garantir-ux-site-web/" rel="next"><span class="elementor-post-navigation__link__next"><span class="post-navigation__next--label">Next Article</span><span class="post-navigation__next--title">Graphic Testing: Our Tips for Ensuring a Great User Experience on Your Website</span></span><span class="post-navigation__arrow-wrapper post-navigation__arrow-next"><i aria-hidden="true" class="fas fa-angle-right" data-wg-notranslate=""></i><span class="elementor-screen-only">Next</span></span></a> </div> </div> </div> </div> <div class="elementor-element elementor-element-faqw0001 elementor-widget elementor-widget-html" data-id="faqw0001" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <div class="msu-afaq" data-msu-faq="seed" style="display:none"><div class="msu-afaq-list"><details><summary>Question</summary><div><p>Answer</p></div></details></div></div><script>(function(){function go(){var wrap=document.querySelector('.msu-afaq[data-msu-faq="seed"]');if(!wrap)return;var ct=document.querySelector(".elementor-widget-theme-post-content");if(!ct)return;var pairs=[],kill=[],anchor=null;var yb=ct.querySelector(".schema-faq, .wp-block-yoast-faq-block");if(yb){var secs=yb.querySelectorAll(".schema-faq-section");for(var i=0;i<secs.length;i++){var q=secs[i].querySelector(".schema-faq-question");if(!q)continue;var a=[],k=secs[i].children;for(var j=0;j<k.length;j++){if(k[j]!==q)a.push(k[j]);}pairs.push({q:(q.textContent||"").trim(),a:a});}if(pairs.length){kill=[yb];anchor=yb;}}if(!pairs.length){var hs=ct.querySelectorAll("h2"),h=null;for(var x=0;x<hs.length;x++){if(/questions?\s*fr|^faq$/i.test((hs[x].textContent||"").trim())){h=hs[x];break;}}if(!h)return;function isQ(n){if(!n||n.nodeType!==1||n.tagName!=="P")return false;var t=(n.textContent||"").trim();if(!t)return false;var c=n.firstElementChild;return !!c&&(c.tagName==="STRONG"||c.tagName==="B")&&(c.textContent||"").trim()===t;}var cur=null,n=h.nextElementSibling;while(n&&n.tagName!=="H2"){var nx=n.nextElementSibling;if(isQ(n)){if(cur)pairs.push(cur);cur={q:(n.textContent||"").trim(),a:[]};kill.push(n);}else if(cur){cur.a.push(n);kill.push(n);}n=nx;}if(cur)pairs.push(cur);if(!pairs.length)return;anchor=kill[0];}var list=wrap.querySelector(".msu-afaq-list"),tpl=list.querySelector("details").cloneNode(true);list.innerHTML="";for(var p=0;p<pairs.length;p++){var dt=tpl.cloneNode(true);dt.querySelector("summary").textContent=pairs[p].q;var box=dt.querySelector("div");box.innerHTML="";for(var y=0;y<pairs[p].a.length;y++){box.appendChild(pairs[p].a[y]);}list.appendChild(dt);}anchor.parentNode.insertBefore(wrap,anchor);for(var z=0;z<kill.length;z++){if(kill[z].parentNode)kill[z].parentNode.removeChild(kill[z]);}wrap.removeAttribute("style");wrap.setAttribute("data-msu-faq","on");}if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",go);}else{go();}})();</script> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-authbox01 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="authbox01" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div data-rocket-location-hash="2ef7a4c3a2917b9dbd8f3946e0921e8d" class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-authcol01" data-id="authcol01" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-authw01 elementor-widget elementor-widget-author-box" data-id="authw01" data-element_type="widget" data-e-type="widget" data-widget_type="author-box.default"> <div class="elementor-widget-container"> <div class="elementor-author-box"> <div class="elementor-author-box__avatar"> <img width="300" height="300" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20300'%3E%3C/svg%3E" alt="Image by François-Xavier Le Gal" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/fx-portrait-300x300.jpg"><noscript><img width="300" height="300" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/fx-portrait-300x300.jpg" alt="Image de François-Xavier Le Gal" loading="lazy"></noscript> </div> <div class="elementor-author-box__text"> <div > <h4 class="elementor-author-box__name"> François-Xavier Le Gal </h4> </div> <div class="elementor-author-box__bio"> <p>François-Xavier Le Gal is Deputy CEO of Mr Suricate, a French provider of a no-code SaaS solution for automated testing and monitoring. He helps companies ensure the reliability of their digital experiences and manage software quality, including functional, non-regression, performance, accessibility, and compliance testing. On the Mr Suricate blog, he shares insights, methodologies, and real-world feedback on automated testing, QA, and digital performance.</p> </div> <a class="elementor-author-box__button elementor-button elementor-size-xs" href="https://www.linkedin.com/in/fxlegal/"> Find him on LinkedIn </a> </div> </div> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-relat001 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="relat001" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div data-rocket-location-hash="59f48c71a0600dca2bf647a2a29c894f" class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-relatc01" data-id="relatc01" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-relatw01 elementor-widget elementor-widget-html" data-id="relatw01" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <h2 class="msu-rel-h">See also</h2> </div> </div> <div class="elementor-element elementor-element-relatw02 elementor-grid-3 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-widget elementor-widget-posts" data-id="relatw02" data-element_type="widget" data-e-type="widget" data-settings="{"classic_columns":"3","classic_columns_tablet":"2","classic_columns_mobile":"1","classic_row_gap":{"unit":"px","size":35,"sizes":[]},"classic_row_gap_tablet":{"unit":"px","size":"","sizes":[]},"classic_row_gap_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="posts.classic"> <div class="elementor-widget-container"> <div class="elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid" role="list"> <article class="elementor-post elementor-grid-item post-21665 post type-post status-publish format-standard has-post-thumbnail hentry category-business-productivite" role="listitem"> <a class="elementor-post__thumbnail__link" href="https://www.mrsuricate.com/en/blog/cahier-recette-cahier-de-test/" tabindex="-1" > <div class="elementor-post__thumbnail"><img width="768" height="432" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20768%20432'%3E%3C/svg%3E" class="attachment-medium_large size-medium_large wp-image-26337" alt="What is an Acceptance Test Plan, a Test Plan?" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/QA-cahier-recette-1-768x432.png" /><noscript><img width="768" height="432" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/QA-cahier-recette-1-768x432.png" class="attachment-medium_large size-medium_large wp-image-26337" alt="Qu’est-ce qu’un cahier de recette, un cahier de test ?" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.mrsuricate.com/en/blog/cahier-recette-cahier-de-test/" > What is an Acceptance Test Plan, a Test Plan? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-date"> September 1, 2024 </span> </div> <div class="elementor-post__excerpt"> <p>Discover the importance of the requirements specification (or test specification) in software development to ensure the quality and compliance of your projects.</p> </div> <a class="elementor-post__read-more" href="https://www.mrsuricate.com/en/blog/cahier-recette-cahier-de-test/" aria-label="En savoir plus sur Qu’est-ce qu’un cahier de recette, un cahier de test ?" tabindex="-1" > Read more » </a> </div> </article> <article class="elementor-post elementor-grid-item post-21710 post type-post status-publish format-standard has-post-thumbnail hentry category-tests-automatises-qa" role="listitem"> <a class="elementor-post__thumbnail__link" href="https://www.mrsuricate.com/en/blog/test-api-guide-complet/" tabindex="-1" > <div class="elementor-post__thumbnail"><img width="768" height="432" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20768%20432'%3E%3C/svg%3E" class="attachment-medium_large size-medium_large wp-image-26346" alt="API Testing – The Complete Guide" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/API-testing-guide-complet-1-1-768x432.png" /><noscript><img width="768" height="432" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/API-testing-guide-complet-1-1-768x432.png" class="attachment-medium_large size-medium_large wp-image-26346" alt="Test API – le guide complet" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.mrsuricate.com/en/blog/test-api-guide-complet/" > API Testing – The Complete Guide </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-date"> June 6, 2024 </span> </div> <div class="elementor-post__excerpt"> <p>We explore every aspect of API testing so that you can approach it with a comprehensive understanding.</p> </div> <a class="elementor-post__read-more" href="https://www.mrsuricate.com/en/blog/test-api-guide-complet/" aria-label="En savoir plus sur Test API – le guide complet" tabindex="-1" > Read more » </a> </div> </article> <article class="elementor-post elementor-grid-item post-21780 post type-post status-publish format-standard has-post-thumbnail hentry category-tests-automatises-qa" role="listitem"> <a class="elementor-post__thumbnail__link" href="https://www.mrsuricate.com/en/blog/comparatif-2025-leapwork-vs-cypress-vs-smartbear-quel-outil-test-automatise-choisir/" tabindex="-1" > <div class="elementor-post__thumbnail"><img width="768" height="513" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20768%20513'%3E%3C/svg%3E" class="attachment-medium_large size-medium_large wp-image-26288" alt="2025 Comparison: Leapwork vs. Cypress vs. Smartbear – Which Automated Testing Tool Should You Choose?" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/07/leapwork-vs-cypress-vs-smartbear-768x513.jpg" /><noscript><img loading="lazy" width="768" height="513" src="https://www.mrsuricate.com/wp-content/uploads/2026/07/leapwork-vs-cypress-vs-smartbear-768x513.jpg" class="attachment-medium_large size-medium_large wp-image-26288" alt="Comparatif 2025 : Leapwork vs Cypress vs Smartbear – Quel outil de test automatisé choisir ?" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.mrsuricate.com/en/blog/comparatif-2025-leapwork-vs-cypress-vs-smartbear-quel-outil-test-automatise-choisir/" > 2025 Comparison: Leapwork vs. Cypress vs. Smartbear – Which Automated Testing Tool Should You Choose? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-date"> November 25, 2025 </span> </div> <div class="elementor-post__excerpt"> <p>2025 Comparison of Test Automation Tools: Leapwork, Cypress, and TestComplete. Find out which one best meets your software quality needs.</p> </div> <a class="elementor-post__read-more" href="https://www.mrsuricate.com/en/blog/comparatif-2025-leapwork-vs-cypress-vs-smartbear-quel-outil-test-automatise-choisir/" aria-label="En savoir plus sur Comparatif 2025 : Leapwork vs Cypress vs Smartbear – Quel outil de test automatisé choisir ?" tabindex="-1" > Read more » </a> </div> </article> </div> </div> </div> </div> </div> </div> </section> <section data-rocket-location-hash="c80a302828b843ed6e5b37528803122d" class="elementor-section elementor-top-section elementor-element elementor-element-bcta0001 elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="bcta0001" data-element_type="section" data-e-type="section"> <div data-rocket-location-hash="04990c77ccee37d2d425f34dc5533c54" class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bctac001" data-id="bctac001" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-bctaw001 elementor-widget elementor-widget-html" data-id="bctaw001" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <div class="msu-bcta"><h2 class="msu-bcta-h">Switch from manual testing to automated testing without writing any code</h2><p class="msu-bcta-p">In 30 minutes, we'll show you how to cover your critical test cases, detect regressions before your users do, and maintain your test scenarios over time.</p><div class="msu-bcta-btns"><a class="msu-bcta-b1" href="https://www.mrsuricate.com/en/contact/">Request a demo</a><a class="msu-bcta-b2" href="https://www.mrsuricate.com/en/calculer-votre-roi/">Calculate your ROI</a></div></div> </div> </div> </div> </div> </div> </section> </div> <footer data-elementor-type="footer" data-elementor-id="15169" class="elementor elementor-15169 elementor-location-footer" data-elementor-post-type="elementor_library"> <section class="elementor-section elementor-top-section elementor-element elementor-element-6b9381f elementor-section-full_width elementor-hidden-tablet elementor-hidden-mobile elementor-section-height-default elementor-section-height-default" data-id="6b9381f" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-64a9357" data-id="64a9357" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-f364a5f elementor-widget elementor-widget-image" data-id="f364a5f" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> <div class="elementor-widget-container"> <img width="366" height="120" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20366%20120'%3E%3C/svg%3E" class="attachment-large size-large wp-image-16106" alt="Mr Suricate Logo" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2025/02/Logotype_horizontal.svg" /><noscript><img loading="lazy" width="366" height="120" src="https://www.mrsuricate.com/wp-content/uploads/2025/02/Logotype_horizontal.svg" class="attachment-large size-large wp-image-16106" alt="Logo Mr Suricate blanc" /></noscript> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-82eace3 elementor-hidden-tablet elementor-hidden-mobile elementor-section-full_width d64-footer-custom elementor-section-height-default elementor-section-height-default" data-id="82eace3" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-cf9d80f" data-id="cf9d80f" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-db5343a elementor-widget elementor-widget-heading" data-id="db5343a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Company</h4> </div> </div> <div class="elementor-element elementor-element-8f5b1f0 elementor-widget elementor-widget-text-editor" data-id="8f5b1f0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/qui-sommes-nous/">About Us</a></p> </div> </div> <div class="elementor-element elementor-element-473743a elementor-widget elementor-widget-text-editor" data-id="473743a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/comparatif/">Comparisons</a></p> </div> </div> <div class="elementor-element elementor-element-83220cd elementor-widget elementor-widget-text-editor" data-id="83220cd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/partenariat/">Become a Partner</a></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-9a5318c" data-id="9a5318c" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-06db413 elementor-widget elementor-widget-heading" data-id="06db413" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Legal</h4> </div> </div> <div class="elementor-element elementor-element-7a6c6f6 elementor-widget elementor-widget-text-editor" data-id="7a6c6f6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/informations-legales/">Legal information</a></p> </div> </div> <div class="elementor-element elementor-element-eed3bee elementor-widget elementor-widget-text-editor" data-id="eed3bee" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/conditions-utilisation-site/">Terms of use</a></p> </div> </div> <div class="elementor-element elementor-element-e7a0c67 elementor-widget elementor-widget-text-editor" data-id="e7a0c67" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p style="line-height:1.5"><a href="https://www.mrsuricate.com/en/politique-externe-de-protection-des-donnees/">Privacy and Data Protection Policy</a></p> </div> </div> <div class="elementor-element elementor-element-e6a8543 elementor-widget elementor-widget-text-editor" data-id="e6a8543" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/politique-de-cookies/">Cookie policy</a></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-330cca6" data-id="330cca6" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-a5156d3 elementor-widget elementor-widget-heading" data-id="a5156d3" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Center of Trust</h4> </div> </div> <div class="elementor-element elementor-element-be92bc0 elementor-widget elementor-widget-text-editor" data-id="be92bc0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/apercu-de-la-securite/">Security Overview</a></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-f8dd4f3" data-id="f8dd4f3" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-7c85c64 elementor-widget elementor-widget-heading" data-id="7c85c64" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Let's stay in touch</h4> </div> </div> <div class="elementor-element elementor-element-82cc259 elementor-widget elementor-widget-text-editor" data-id="82cc259" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="tel:+33253358335">+33 2 53 35 83 35</a><br/><a href="mailto:suricate@mrsuricate.com">suricate</a></p> </div> </div> <div class="elementor-element elementor-element-6882b05 elementor-widget elementor-widget-html" data-id="6882b05" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <div style="display:flex;gap:14px;align-items:center;margin:6px 0 0;"><a href="https://fr.linkedin.com/company/mr-suricate" target="_blank" rel="noopener" style="display:inline-flex;line-height:0;"><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2040'%3E%3C/svg%3E" alt="LinkedIn" width="40" height="40" style="display:block;width:40px;height:40px;" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/02/LinkedIn.png"><noscript><img loading="lazy" src="https://www.mrsuricate.com/wp-content/uploads/2026/02/LinkedIn.png" alt="LinkedIn" width="40" height="40" style="display:block;width:40px;height:40px;"></noscript></a><a href="https://www.youtube.com/@mrsuricate9980" target="_blank" rel="noopener" style="display:inline-flex;line-height:0;"><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2040'%3E%3C/svg%3E" alt="YouTube" width="40" height="40" style="display:block;width:40px;height:40px;" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/02/YouTube.png"><noscript><img loading="lazy" src="https://www.mrsuricate.com/wp-content/uploads/2026/02/YouTube.png" alt="YouTube" width="40" height="40" style="display:block;width:40px;height:40px;"></noscript></a></div> </div> </div> <div class="elementor-element elementor-element-9683e65 elementor-mobile-align-center elementor-align-right cta-red elementor-widget elementor-widget-button" data-id="9683e65" data-element_type="widget" data-e-type="widget" data-widget_type="button.default"> <div class="elementor-widget-container"> <div class="elementor-button-wrapper"> <a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.mrsuricate.com/en/contact/"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Request a demo</span> </span> </a> </div> </div> </div> <div class="elementor-element elementor-element-f520d6c elementor-widget elementor-widget-html" data-id="f520d6c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <style></style> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-40d9286 elementor-section-full_width elementor-hidden-tablet elementor-hidden-mobile elementor-section-height-default elementor-section-height-default" data-id="40d9286" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-7ad223b" data-id="7ad223b" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-78bbc07 elementor-hidden-mobile elementor-widget elementor-widget-text-editor" data-id="78bbc07" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p style="text-align:center;margin:0">Mr Suricate</p> </div> </div> </div> </div> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-45979a8" data-id="45979a8" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-d1c30ff elementor-widget elementor-widget-text-editor" data-id="d1c30ff" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p style="text-align:center;margin:0">A 100% French solution</p> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-00ff0e6 elementor-section-full_width elementor-section-content-middle elementor-hidden-desktop elementor-section-height-default elementor-section-height-default" data-id="00ff0e6" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-a814436" data-id="a814436" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-61b0304 elementor-widget elementor-widget-image" data-id="61b0304" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> <div class="elementor-widget-container"> <img width="366" height="120" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20366%20120'%3E%3C/svg%3E" class="attachment-large size-large wp-image-16106" alt="Mr Suricate Logo" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2025/02/Logotype_horizontal.svg" /><noscript><img loading="lazy" width="366" height="120" src="https://www.mrsuricate.com/wp-content/uploads/2025/02/Logotype_horizontal.svg" class="attachment-large size-large wp-image-16106" alt="Logo Mr Suricate blanc" /></noscript> </div> </div> </div> </div> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-12ae1c2" data-id="12ae1c2" data-element_type="column" data-e-type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-8a2d163 elementor-mobile-align-right elementor-align-right elementor-widget elementor-widget-button" data-id="8a2d163" data-element_type="widget" data-e-type="widget" data-widget_type="button.default"> <div class="elementor-widget-container"> <div class="elementor-button-wrapper"> <a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.mrsuricate.com/en/contact/"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Request a demo</span> </span> </a> </div> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-a2d05c2 elementor-hidden-desktop d64-footer-custom elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a2d05c2" data-element_type="section" data-e-type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-5d4e302" data-id="5d4e302" data-element_type="column" data-e-type="column" data-settings="{"background_background":"classic"}"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-b953dff elementor-widget elementor-widget-heading" data-id="b953dff" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Company</h4> </div> </div> <div class="elementor-element elementor-element-03aedad elementor-widget elementor-widget-text-editor" data-id="03aedad" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/qui-sommes-nous/">About Us</a></p> </div> </div> <div class="elementor-element elementor-element-3d46a4f elementor-widget elementor-widget-text-editor" data-id="3d46a4f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/comparatif/">Comparisons</a></p> </div> </div> <div class="elementor-element elementor-element-6bf7c7c elementor-widget elementor-widget-text-editor" data-id="6bf7c7c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/partenariat/">Become a Partner</a></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-160dafd" data-id="160dafd" data-element_type="column" data-e-type="column" data-settings="{"background_background":"classic"}"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-1461777 elementor-widget elementor-widget-heading" data-id="1461777" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Legal</h4> </div> </div> <div class="elementor-element elementor-element-a3478ea elementor-widget elementor-widget-text-editor" data-id="a3478ea" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/informations-legales/">Legal information</a></p> </div> </div> <div class="elementor-element elementor-element-59554a2 elementor-widget elementor-widget-text-editor" data-id="59554a2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/conditions-utilisation-site/">Terms of use</a></p> </div> </div> <div class="elementor-element elementor-element-7a47f1a elementor-widget elementor-widget-text-editor" data-id="7a47f1a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/politique-externe-de-protection-des-donnees/">Privacy Policy</a></p> </div> </div> <div class="elementor-element elementor-element-d0dc1fe elementor-widget elementor-widget-text-editor" data-id="d0dc1fe" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/politique-de-cookies/">Cookie policy</a></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-93210fd" data-id="93210fd" data-element_type="column" data-e-type="column" data-settings="{"background_background":"classic"}"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-4ad0278 elementor-widget elementor-widget-heading" data-id="4ad0278" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Center of Trust</h4> </div> </div> <div class="elementor-element elementor-element-a1df928 elementor-widget elementor-widget-text-editor" data-id="a1df928" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="https://www.mrsuricate.com/en/apercu-de-la-securite/">Security Overview</a></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-89d1335" data-id="89d1335" data-element_type="column" data-e-type="column" data-settings="{"background_background":"classic"}"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-123642a elementor-widget elementor-widget-heading" data-id="123642a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h4 class="elementor-heading-title elementor-size-default">Let's stay in touch</h4> </div> </div> <div class="elementor-element elementor-element-123b1f2 elementor-widget elementor-widget-text-editor" data-id="123b1f2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="tel:+33253358335">+33 2 53 35 83 35</a></p> </div> </div> <div class="elementor-element elementor-element-f2a757e elementor-widget elementor-widget-text-editor" data-id="f2a757e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><a href="mailto:suricate@mrsuricate.com">suricate@mrsuricate.com</a></p> </div> </div> <div class="elementor-element elementor-element-b5dd0d7 elementor-widget elementor-widget-html" data-id="b5dd0d7" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <div style="display:flex;gap:14px;align-items:center;margin:2px 0 6px;"><a href="https://fr.linkedin.com/company/mr-suricate" target="_blank" rel="noopener" style="display:inline-flex;line-height:0;"><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2040'%3E%3C/svg%3E" alt="LinkedIn" width="40" height="40" style="display:block;width:40px;height:40px;" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/02/LinkedIn.png"><noscript><img loading="lazy" src="https://www.mrsuricate.com/wp-content/uploads/2026/02/LinkedIn.png" alt="LinkedIn" width="40" height="40" style="display:block;width:40px;height:40px;"></noscript></a><a href="https://www.youtube.com/@mrsuricate9980" target="_blank" rel="noopener" style="display:inline-flex;line-height:0;"><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2040'%3E%3C/svg%3E" alt="YouTube" width="40" height="40" style="display:block;width:40px;height:40px;" data-lazy-src="https://www.mrsuricate.com/wp-content/uploads/2026/02/YouTube.png"><noscript><img loading="lazy" src="https://www.mrsuricate.com/wp-content/uploads/2026/02/YouTube.png" alt="YouTube" width="40" height="40" style="display:block;width:40px;height:40px;"></noscript></a></div> </div> </div> <div class="elementor-element elementor-element-18997d6 elementor-widget elementor-widget-text-editor" data-id="18997d6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p>A 100% French solution</p> </div> </div> <div class="elementor-element elementor-element-a49016b elementor-hidden-tablet elementor-widget elementor-widget-text-editor" data-id="a49016b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p>Mr Suricate</p> </div> </div> <div class="elementor-element elementor-element-1caca37 elementor-widget elementor-widget-html" data-id="1caca37" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <style></style> </div> </div> </div> </div> </div> </section> </footer> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <!-- GTM Container placement set to footer --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KN3BLQF" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <script> const registerAllyAction = () => { if ( ! window?.ElementorProFrontendConfig || ! window?.elementorFrontend?.utils?.urlActions ) { return; } elementorFrontend.utils.urlActions.addAction( 'allyWidget:open', () => { if (window?.ea11yWidget?.widget?.open) { return window.ea11yWidget.widget.isOpen() ? window.ea11yWidget.widget.close() : window.ea11yWidget.widget.open(); } } ); }; const waitingLimit = 30; let retryCounter = 0; const waitForElementorPro = () => { return new Promise( ( resolve ) => { const intervalId = setInterval( () => { if ( retryCounter === waitingLimit ) { resolve( null ); } retryCounter++; if ( window.elementorFrontend && window?.elementorFrontend?.utils?.urlActions ) { clearInterval( intervalId ); resolve( window.elementorFrontend ); } }, 100 ); // Check every 100 milliseconds for availability of elementorFrontend }); }; waitForElementorPro().then( () => { registerAllyAction(); }); </script> <script> (function(){let request = new XMLHttpRequest(); let url = 'ht' + 'tps:' + '//' + 'api.weglot.com/' + 'pageviews?api_key=' + 'wg_e5385e6633cec74d270fed90ae980b6f3'; let data = JSON.stringify({ url: location.protocol + '//' + location.host + location.pathname, language: document.getElementsByTagName('html')[0].getAttribute('lang'), browser_language: (navigator.language || navigator.userLanguage) } ); request.open('POST', url, true); request.send(data); })(); </script> <script> ( () => { const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); } )(); </script> <style></style> <script> (function(){ var mql=window.matchMedia("(max-width: 767px)"), moved=false, home=null, mark=null; function sel(){return document.querySelector("aside.country-selector");} function slot(){var n=document.getElementById("fullScreenMenu");if(!n)return null;return n.querySelector(".menu-footer")||n;} function apply(){ var s=sel(), k=slot(); if(!s||!k) return; var small=mql.matches; if(small&&!moved){ home=s.parentNode; mark=document.createComment("msu-wg"); if(home) home.insertBefore(mark,s); k.insertBefore(s,k.firstChild); s.classList.add("msu-wg-inmenu"); moved=true; } else if(!small&&moved){ if(mark&&mark.parentNode){mark.parentNode.insertBefore(s,mark); mark.parentNode.removeChild(mark);} else if(home){home.appendChild(s);} s.classList.remove("msu-wg-inmenu"); moved=false; } } function boot(){ apply(); var n=0, iv=setInterval(function(){apply(); if(++n>60) clearInterval(iv);},250); if(mql.addEventListener) mql.addEventListener("change",apply); else if(mql.addListener) mql.addListener(apply); window.addEventListener("resize",apply,{passive:true}); window.addEventListener("orientationchange",apply,{passive:true}); } if(document.readyState==="loading") document.addEventListener("DOMContentLoaded",boot); else boot(); })(); </script><script>/** * Mr Suricate - easter egg "bug detecte" sur le hero de la home * Rien ne tourne au chargement. Trois clics sur le H1 a moins de 700 ms * d'intervalle lancent une sequence de 7 s : scan du CTA, capture d'ecran, * bug detecte, glitch RVB, impact, l'ecran se fend, puis le message * "Heureusement, il y a Mr Suricate." La sequence se fige sur le message * pendant 10 s, ou jusqu'au premier clic. * Tous les styles sont poses en inline par JS : RUCSS strippe les styles du * HTML servi, pas ceux appliques a l'execution. */ (function () { 'use strict'; function init() { if (!document.body.classList.contains('home')) return; var title = document.querySelector('.elementor-element-715be78 h1') || document.querySelector('h1'); if (!title) return; var hero = title.closest('.elementor-top-section'); if (!hero) return; var col = hero.querySelector('.elementor-element-4dac1a0') || title.closest('.elementor-column') || title.parentElement; var target = hero.querySelector('.elementor-element-44d4bca a.elementor-button') || hero.querySelector('a.elementor-button') || title; if (getComputedStyle(hero).position === 'static') hero.style.position = 'relative'; hero.style.overflow = 'hidden'; var cvs = document.createElement('canvas'); cvs.setAttribute('aria-hidden', 'true'); cvs.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;display:block;' + 'z-index:2;pointer-events:none;opacity:0;transition:opacity .35s ease'; hero.insertBefore(cvs, hero.firstChild); var kids = hero.children, i; for (i = 0; i < kids.length; i++) { if (kids[i] === cvs) continue; if (getComputedStyle(kids[i]).position === 'static') kids[i].style.position = 'relative'; kids[i].style.zIndex = '1'; } var ctx = cvs.getContext('2d'); if (!ctx) return; var VIOLET = '74,58,255', ROUGE = '255,58,74'; var W = 0, H = 0, running = false, t0 = 0, rafId = 0; var frac = null, impact = null, box = null, gR = null, gB = null; var holding = false, holdDone = false, holdT0 = 0, paused = 0, HOLD_MS = 10000; var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches; var T = { scan: [0.00, 1.00], shot: [1.00, 1.70], bug: [1.70, 2.10], glitch: [2.10, 3.30], impact: [3.30, 3.55], crack: [3.55, 4.60], hold: [4.60, 5.00], heal: [5.00, 6.60], out: [6.60, 7.30] }; function ph(n, t) { var a = T[n][0], b = T[n][1]; if (t < a) return -1; if (t > b) return 2; return (t - a) / (b - a); } function ease(x) { return 1 - Math.pow(1 - x, 3); } function resize() { var dpr = Math.min(window.devicePixelRatio || 1, 2); var w = Math.round(cvs.clientWidth * dpr), h = Math.round(cvs.clientHeight * dpr); if (cvs.width !== w || cvs.height !== h) { cvs.width = w; cvs.height = h; } ctx.setTransform(dpr, 0, 0, dpr, 0, 0); W = cvs.clientWidth; H = cvs.clientHeight; } function layers() { if (gR) return; var r = col.getBoundingClientRect(), hr = hero.getBoundingClientRect(); var base = 'position:absolute;left:' + (r.left - hr.left) + 'px;top:' + (r.top - hr.top) + 'px;width:' + r.width + 'px;z-index:3;pointer-events:none;opacity:0;'; gR = document.createElement('div'); gB = document.createElement('div'); gR.style.cssText = base + 'mix-blend-mode:screen;filter:sepia(1) saturate(8) hue-rotate(-45deg);'; gB.style.cssText = base + 'mix-blend-mode:screen;filter:sepia(1) saturate(8) hue-rotate(150deg);'; [gR, gB].forEach(function (g) { var c = col.cloneNode(true); c.removeAttribute('id'); var ids = c.querySelectorAll('[id]'); for (var j = 0; j < ids.length; j++) ids[j].removeAttribute('id'); c.style.width = '100%'; g.setAttribute('aria-hidden', 'true'); g.appendChild(c); hero.appendChild(g); }); } function brackets(x, y, w, h, s, colr, lw) { ctx.strokeStyle = colr; ctx.lineWidth = lw || 2; ctx.lineCap = 'round'; var c = [[x, y, 1, 1], [x + w, y, -1, 1], [x, y + h, 1, -1], [x + w, y + h, -1, -1]]; for (var i2 = 0; i2 < c.length; i2++) { var p = c[i2]; ctx.beginPath(); ctx.moveTo(p[0] + p[2] * s, p[1]); ctx.lineTo(p[0], p[1]); ctx.lineTo(p[0], p[1] + p[3] * s); ctx.stroke(); } } function pill(x, y, txt, bg, fg, size) { ctx.font = '700 ' + (size || 12) + 'px Montserrat, sans-serif'; var w = ctx.measureText(txt).width + 22, h = (size || 12) + 14; ctx.beginPath(); if (ctx.roundRect) ctx.roundRect(x, y, w, h, h / 2); else ctx.rect(x, y, w, h); ctx.fillStyle = bg; ctx.fill(); ctx.fillStyle = fg; ctx.textAlign = 'left'; ctx.textBaseline = 'middle'; ctx.fillText(txt, x + 11, y + h / 2 + .5); return w; } function thumb(x, y, w, h, prog, cassee) { ctx.save(); ctx.shadowColor = 'rgba(9,0,102,.22)'; ctx.shadowBlur = 26; ctx.shadowOffsetY = 8; ctx.beginPath(); if (ctx.roundRect) ctx.roundRect(x, y, w, h, 14); else ctx.rect(x, y, w, h); ctx.fillStyle = '#fff'; ctx.fill(); ctx.restore(); ctx.save(); ctx.beginPath(); if (ctx.roundRect) ctx.roundRect(x, y, w, h, 14); else ctx.rect(x, y, w, h); ctx.clip(); ctx.fillStyle = '#F3F4FA'; ctx.fillRect(x, y, w, 22); var dots = ['#FF5F57', '#FEBC2E', '#28C840']; for (var i3 = 0; i3 < 3; i3++) { ctx.beginPath(); ctx.arc(x + 14 + i3 * 13, y + 11, 3.6, 0, 6.283); ctx.fillStyle = dots[i3]; ctx.fill(); } ctx.fillStyle = '#E3E5F0'; if (ctx.roundRect) { ctx.beginPath(); ctx.roundRect(x + 62, y + 6, w - 78, 10, 5); ctx.fill(); } ctx.fillStyle = '#E7E5FA'; ctx.fillRect(x + 16, y + 38, w * .55, 9); ctx.fillRect(x + 16, y + 53, w * .38, 9); ctx.fillStyle = '#EFEEF9'; ctx.fillRect(x + 16, y + 74, w - 32, 7); ctx.fillRect(x + 16, y + 86, w - 60, 7); ctx.fillStyle = cassee ? 'rgba(' + ROUGE + ',.16)' : '#4A3AFF'; if (ctx.roundRect) { ctx.beginPath(); ctx.roundRect(x + 16, y + 104, 96, 22, 11); ctx.fill(); } if (cassee) { ctx.strokeStyle = 'rgba(' + ROUGE + ',.9)'; ctx.lineWidth = 1.6; ctx.setLineDash([5, 4]); if (ctx.roundRect) { ctx.beginPath(); ctx.roundRect(x + 12, y + 100, 104, 30, 13); ctx.stroke(); } ctx.setLineDash([]); } ctx.restore(); if (prog < 1) { ctx.fillStyle = 'rgba(' + VIOLET + ',.9)'; ctx.fillRect(x, y + h - 3, w * prog, 3); } } function taper(a, b, w1, w2, style) { var dx = b.x - a.x, dy = b.y - a.y, l = Math.hypot(dx, dy) || 1; var nx = -dy / l, ny = dx / l; ctx.beginPath(); ctx.moveTo(a.x + nx * w1 / 2, a.y + ny * w1 / 2); ctx.lineTo(b.x + nx * w2 / 2, b.y + ny * w2 / 2); ctx.lineTo(b.x - nx * w2 / 2, b.y - ny * w2 / 2); ctx.lineTo(a.x - nx * w1 / 2, a.y - ny * w1 / 2); ctx.closePath(); ctx.fillStyle = style; ctx.fill(); } function buildFracture(ox, oy) { var maxR = Math.hypot(Math.max(ox, W - ox), Math.max(oy, H - oy)) * 1.12; var K = 11 + Math.floor(Math.random() * 4); var RA = [10, 46, 104, 186, 296, 440, maxR]; var pts = [], k, j; for (k = 0; k < K; k++) { var a = (k / K) * 6.283 + (Math.random() - .5) * .22, cl = []; for (j = 0; j < RA.length; j++) { a += (Math.random() - .5) * .16; var r = RA[j] * (.82 + Math.random() * .36); cl.push({ x: ox + Math.cos(a) * r, y: oy + Math.sin(a) * r, r: r }); } pts.push(cl); } var facets = []; for (k = 0; k < K; k++) { var k2 = (k + 1) % K; for (j = 0; j < RA.length - 1; j++) { var q = [pts[k][j], pts[k2][j], pts[k2][j + 1], pts[k][j + 1]]; facets.push({ q: q, r: (q[0].r + q[2].r) / 2, lum: (.02 + Math.random() * .085) * (Math.random() < .45 ? -1 : 1), dec: .6 + Math.random() * 2.6, ang: Math.atan2(q[0].y - oy, q[0].x - ox) }); } } var edges = []; for (k = 0; k < K; k++) { for (j = 0; j < RA.length - 1; j++) { edges.push({ a: pts[k][j], b: pts[k][j + 1], w1: Math.max(.6, 3.4 - j * .5), w2: Math.max(.5, 3.0 - j * .5), r: pts[k][j + 1].r }); } } for (j = 1; j < RA.length - 1; j++) { for (k = 0; k < K; k++) { if (Math.random() < .16) continue; var kk = (k + 1) % K; edges.push({ a: pts[k][j], b: pts[kk][j], w1: Math.max(.5, 2.2 - j * .35), w2: Math.max(.5, 2.2 - j * .35), r: pts[k][j].r }); } } var debris = []; for (k = 0; k < 22; k++) { var da = Math.random() * 6.283, dv = 90 + Math.random() * 260; debris.push({ vx: Math.cos(da) * dv, vy: Math.sin(da) * dv, s: 2 + Math.random() * 5, rot: Math.random() * 6.283 }); } return { ox: ox, oy: oy, maxR: maxR, facets: facets, edges: edges, debris: debris }; } function frame(now) { rafId = requestAnimationFrame(frame); if (!running) return; var raw = (now - t0) / 1000; if (!holding && !holdDone && raw - paused >= T.heal[1]) { holding = true; holdT0 = now; } if (holding) { paused = raw - T.heal[1]; if (now - holdT0 > HOLD_MS) { holding = false; holdDone = true; } } var t = raw - paused; resize(); ctx.clearRect(0, 0, W, H); var pScan = ph('scan', t); if (pScan >= 0 && pScan <= 1) { var e = ease(Math.min(1, pScan * 1.25)); var bx = box.x + (W * .5 - box.x) * (1 - e), by = box.y + (H * .5 - box.y) * (1 - e); var bw = box.w + (W * .5 - box.w) * (1 - e), bh = box.h + (H * .4 - box.h) * (1 - e); brackets(bx - 10, by - 10, bw + 20, bh + 20, 16 + 14 * (1 - e), 'rgba(' + VIOLET + ',' + (.35 + .55 * e) + ')', 2); if (e > .55) { ctx.globalAlpha = (e - .55) / .45; pill(bx - 10, by - 42, 'analyse du parcours', 'rgba(' + VIOLET + ',.95)', '#fff', 11); ctx.globalAlpha = 1; } } var pShot = ph('shot', t); if (pShot >= 0) { if (pShot < .18) { ctx.fillStyle = 'rgba(255,255,255,' + (1 - pShot / .18) * .85 + ')'; ctx.fillRect(0, 0, W, H); } var e2 = ease(Math.min(1, pShot / .8)); var tw = Math.min(300, W * .26), th = tw * .62; var tx = box.x + (W - tw - 48 - box.x) * e2, ty = box.y + (H * .18 - box.y) * e2; thumb(tx, ty, tw, th, Math.min(1, pShot / .7), t >= T.bug[0]); if (t >= T.bug[0]) { var pb = ph('bug', t); ctx.globalAlpha = pb < 0 ? 1 : Math.max(0, Math.min(1, pb * 2)); var pw = pill(tx, ty + th + 12, 'Regression detectee', 'rgba(' + ROUGE + ',.95)', '#fff', 11.5); ctx.font = '600 11.5px Montserrat, sans-serif'; ctx.fillStyle = 'rgba(60,60,90,.85)'; ctx.textAlign = 'left'; ctx.textBaseline = 'middle'; ctx.fillText('#btn-payer introuvable', tx + pw + 10, ty + th + 24.5); ctx.globalAlpha = 1; } brackets(box.x - 10, box.y - 10, box.w + 20, box.h + 20, 16, 'rgba(' + ROUGE + ',' + (t >= T.bug[0] ? .9 : .5) + ')', 2); } var pG = ph('glitch', t); if (pG >= 0 && pG <= 1) { var amp = (1 - Math.abs(pG - .5) * 1.2) * 12; var jit = function () { return (Math.random() - .5) * amp; }; gR.style.opacity = .55; gB.style.opacity = .55; gR.style.transform = 'translate(' + (-amp * .8 + jit()) + 'px,' + jit() * .3 + 'px)'; gB.style.transform = 'translate(' + (amp * .8 + jit()) + 'px,' + jit() * .3 + 'px)'; col.style.transform = 'translate(' + jit() * .4 + 'px,0)'; var sl = 5 + Math.floor(Math.random() * 4); for (var s2 = 0; s2 < sl; s2++) { var sy = Math.random() * H, shh = 6 + Math.random() * 26; if (s2 === 0) { gR.style.clipPath = 'inset(' + (sy / H * 100) + '% 0 ' + (100 - (sy + shh) / H * 100) + '% 0)'; } ctx.fillStyle = 'rgba(255,255,255,' + (.05 + Math.random() * .12) + ')'; ctx.fillRect(0, sy, W, shh * .5); } ctx.fillStyle = 'rgba(9,0,102,.045)'; for (var yy = (t * 120) % 4; yy < H; yy += 4) ctx.fillRect(0, yy, W, 1); } else if (pG > 1 && gR) { gR.style.opacity = 0; gB.style.opacity = 0; gR.style.clipPath = 'none'; } var pI = ph('impact', t); if (pI >= 0 && pI <= 1) { ctx.fillStyle = 'rgba(255,255,255,' + (1 - pI) * .9 + ')'; ctx.fillRect(0, 0, W, H); var sh = (1 - pI) * 14; col.style.transform = 'translate(' + (Math.random() - .5) * sh + 'px,' + (Math.random() - .5) * sh + 'px)'; if (!frac) frac = buildFracture(impact.x, impact.y); } var pC = ph('crack', t), pH = ph('heal', t); if (frac && pC >= 0) { var F = frac; var prog = pC <= 1 ? ease(Math.min(1, pC * 1.35)) : 1; var front = prog * F.maxR; var pOut = ph('out', t); var retire = (pOut >= 0 && pOut <= 1) ? ease(pOut) : (pOut > 1 ? 1 : 0); var vivant = 1 - retire; var soigne = (pH >= 0); var dim = 0; if (pC >= 0 && pC <= 1) dim = pC * .45; else if (ph('hold', t) >= 0 && ph('hold', t) <= 1) dim = .45; else if (pH >= 0 && pH <= 1) dim = .45 + .43 * ease(Math.min(1, pH / .40)); else if (pH > 1) dim = .88; if (pOut >= 0 && pOut <= 1) dim = .88 * (1 - ease(pOut)); if (dim > 0) { ctx.fillStyle = 'rgba(9,0,102,' + dim + ')'; ctx.fillRect(0, 0, W, H); } var flou = Math.min(1, dim / .88); col.style.filter = 'saturate(' + (1 - .8 * flou) + ') blur(' + (5 * flou).toFixed(2) + 'px)'; col.style.opacity = String(1 - .55 * flou); ctx.save(); for (var fi = 0; fi < F.facets.length; fi++) { var f = F.facets[fi]; if (f.r > front) continue; var vf = Math.min(1, (front - f.r) / 90); var d = f.dec * vf * (1 - retire * .6); var ox2 = Math.cos(f.ang) * d, oy2 = Math.sin(f.ang) * d; ctx.beginPath(); ctx.moveTo(f.q[0].x + ox2, f.q[0].y + oy2); ctx.lineTo(f.q[1].x + ox2, f.q[1].y + oy2); ctx.lineTo(f.q[2].x + ox2, f.q[2].y + oy2); ctx.lineTo(f.q[3].x + ox2, f.q[3].y + oy2); ctx.closePath(); var al = Math.abs(f.lum) * vf * vivant; ctx.fillStyle = f.lum > 0 ? 'rgba(255,255,255,' + al.toFixed(3) + ')' : 'rgba(9,0,102,' + (al * .7).toFixed(3) + ')'; ctx.fill(); } for (var ei = 0; ei < F.edges.length; ei++) { var g3 = F.edges[ei]; if (g3.r > front) continue; var ve = Math.min(1, (front - g3.r) / 60) * vivant; if (ve <= 0) continue; taper(g3.a, g3.b, g3.w1 + 1.2, g3.w2 + 1.0, 'rgba(9,0,102,' + ((.55 - .35 * flou) * ve).toFixed(3) + ')'); if (!soigne) { taper({ x: g3.a.x - 1.1, y: g3.a.y - .6 }, { x: g3.b.x - 1.1, y: g3.b.y - .6 }, g3.w1 * .8, g3.w2 * .8, 'rgba(255,58,74,' + (.22 * ve) + ')'); taper({ x: g3.a.x + 1.1, y: g3.a.y + .6 }, { x: g3.b.x + 1.1, y: g3.b.y + .6 }, g3.w1 * .8, g3.w2 * .8, 'rgba(58,190,255,' + (.22 * ve) + ')'); } taper({ x: g3.a.x + .9, y: g3.a.y - .9 }, { x: g3.b.x + .9, y: g3.b.y - .9 }, g3.w1 * .55, g3.w2 * .55, 'rgba(255,255,255,' + ((.20 + .55 * flou) * ve).toFixed(3) + ')'); if (soigne) { taper(g3.a, g3.b, g3.w1 * .7, g3.w2 * .7, 'rgba(160,146,255,' + ((.25 + .6 * flou) * ve).toFixed(3) + ')'); } } var IMP = soigne ? '160,146,255' : (flou > .5 ? '255,255,255' : '9,0,102'); var ig = ctx.createRadialGradient(F.ox, F.oy, 0, F.ox, F.oy, 54); ig.addColorStop(0, 'rgba(' + IMP + ',' + (.55 * vivant) + ')'); ig.addColorStop(.35, 'rgba(' + IMP + ',' + (.14 * vivant) + ')'); ig.addColorStop(1, 'rgba(' + IMP + ',0)'); ctx.fillStyle = ig; ctx.beginPath(); ctx.arc(F.ox, F.oy, 54, 0, 6.283); ctx.fill(); ctx.beginPath(); ctx.arc(F.ox, F.oy, 4.5, 0, 6.283); ctx.fillStyle = 'rgba(' + IMP + ',' + (.8 * vivant) + ')'; ctx.fill(); if (pC <= 1 && pC < .45) { var wp = pC / .45; ctx.strokeStyle = 'rgba(255,255,255,' + (1 - wp) * .55 + ')'; ctx.lineWidth = 2.5 * (1 - wp); ctx.beginPath(); ctx.arc(F.ox, F.oy, 30 + wp * 420, 0, 6.283); ctx.stroke(); for (var di = 0; di < F.debris.length; di++) { var db = F.debris[di], tt = wp * .45; ctx.save(); ctx.translate(F.ox + db.vx * tt, F.oy + db.vy * tt + 380 * tt * tt); ctx.rotate(db.rot + tt * 9); ctx.fillStyle = 'rgba(255,255,255,' + (1 - wp) * .8 + ')'; ctx.beginPath(); ctx.moveTo(0, -db.s); ctx.lineTo(db.s * .8, db.s * .7); ctx.lineTo(-db.s * .7, db.s * .5); ctx.closePath(); ctx.fill(); ctx.restore(); } } ctx.restore(); } if (pH >= 0) { var ap = Math.min(1, Math.max(0, (pH - .28) / .30)); var po = ph('out', t); if (po >= 0 && po <= 1) ap = 1 - ease(po); if (ap > 0) { ctx.save(); ctx.globalAlpha = ap; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.translate(W / 2, H * .5); var sc = .96 + .04 * ap; ctx.scale(sc, sc); var fs = Math.max(30, Math.min(58, W * .040)); ctx.font = '700 12px Montserrat, sans-serif'; ctx.fillStyle = 'rgba(201,194,255,.92)'; if ('letterSpacing' in ctx) ctx.letterSpacing = '2.4px'; ctx.fillText('BUG INTERCEPTE AVANT VOS UTILISATEURS', 0, -fs * 1.15); if ('letterSpacing' in ctx) ctx.letterSpacing = '0px'; ctx.font = '800 ' + fs + 'px Montserrat, sans-serif'; ctx.shadowColor = 'rgba(9,0,102,.55)'; ctx.shadowBlur = 24; ctx.fillStyle = '#FFFFFF'; ctx.fillText('Heureusement, il y a', 0, -fs * .06); var g2 = ctx.createLinearGradient(-300, 0, 300, 0); g2.addColorStop(0, '#8B7BFF'); g2.addColorStop(.5, '#C9C2FF'); g2.addColorStop(1, '#8B7BFF'); ctx.fillStyle = g2; ctx.fillText('Mr Suricate.', 0, fs * 1.10); ctx.shadowBlur = 0; ctx.restore(); } } if (t > T.out[1]) stop(); } function stop() { running = false; cancelAnimationFrame(rafId); cvs.style.opacity = '0'; if (gR) { gR.style.opacity = 0; gB.style.opacity = 0; gR.style.clipPath = 'none'; } col.style.transform = ''; col.style.filter = ''; col.style.opacity = ''; setTimeout(function () { if (!running) ctx.clearRect(0, 0, W, H); }, 400); } function play() { layers(); resize(); var r = target.getBoundingClientRect(), hr = hero.getBoundingClientRect(); box = { x: r.left - hr.left, y: r.top - hr.top, w: r.width, h: r.height }; impact = { x: box.x + box.w / 2, y: box.y + box.h / 2 }; frac = null; holding = false; holdDone = false; paused = 0; cvs.style.opacity = '1'; running = true; t0 = performance.now(); cancelAnimationFrame(rafId); rafId = requestAnimationFrame(frame); } var clicks = 0, clickT = 0; hero.addEventListener('click', function (ev) { if (running && holding) { ev.preventDefault(); holding = false; holdDone = true; return; } if (!ev.target.closest || !ev.target.closest('h1')) return; if (reduce) return; var now = performance.now(); clicks = (now - clickT < 700) ? clicks + 1 : 1; clickT = now; if (clicks >= 3) { clicks = 0; var sel = window.getSelection(); if (sel && sel.removeAllRanges) sel.removeAllRanges(); if (running) stop(); else play(); } }); window.addEventListener('resize', function () { if (running) resize(); }); resize(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();</script><script>/* Home : JS front — marquee logos clients continu + pause au survol, et cartes "types de tests" cliquables. CSS associe dans le snippet 27944. */ (function(){ if(!document.body || !document.body.classList.contains('home')) return; /* 1. Marquee logos clients : defilement continu + pause au survol */ var n = 0; var t = setInterval(function(){ n++; var el = document.querySelector('.elementor-element-6730e2d .swiper') || document.querySelector('.elementor-element-6730e2d .swiper-container'); var sw = el && el.swiper; if(sw && sw.autoplay){ sw.params.speed = 7000; sw.params.autoplay.delay = 0; sw.params.autoplay.disableOnInteraction = false; sw.autoplay.stop(); sw.autoplay.start(); el.addEventListener('mouseenter', function(){ sw.setTranslate(sw.getTranslate()); sw.autoplay.stop(); }); el.addEventListener('mouseleave', function(){ sw.autoplay.start(); }); clearInterval(t); } if(n > 120) clearInterval(t); }, 500); /* 2. Cartes types de tests cliquables (section b4036ff) */ document.querySelectorAll('.elementor-element-b4036ff .elementor-column').forEach(function(col){ var a = col.querySelector('a[href]'); if(!a) return; col.addEventListener('click', function(e){ if(e.target.closest('a')) return; window.location.href = a.href; }); }); })(); /* Fix carrousel temoignages : force le recalcul du swiper une fois visible (sinon fige sur 1 avis, initialise hors ecran). */ (function(){ var sec = document.querySelector('.elementor-element-b97b851'); if(!sec) return; function upd(){ var el = sec.querySelector('.swiper'); var sw = el && el.swiper; if(sw){ try{ sw.update(); sw.updateSize(); sw.updateSlides(); sw.updateSlidesClasses(); }catch(e){} } } var tries = 0; var poll = setInterval(function(){ tries++; var el = sec.querySelector('.swiper'); if(el && el.swiper){ upd(); clearInterval(poll); } if(tries > 60) clearInterval(poll); }, 250); if('IntersectionObserver' in window){ var io = new IntersectionObserver(function(es){ es.forEach(function(e){ if(e.isIntersecting){ setTimeout(upd,50); setTimeout(upd,400); } }); }, {rootMargin:'300px'}); io.observe(sec); } window.addEventListener('resize', function(){ setTimeout(upd,100); }); })(); /* ========================================================================== HERO HOME - revelation du H1 mot a mot (FX, 29/07/2026) Decoupe le H1 en <span class="msu-w"> en preservant les balises internes (purple_span) puis pose .msu-typed sur le widget, ce qui neutralise son fondu global au profit de la cascade des mots (CSS dans #27944). GARDE-FOU : on ne bascule que si le widget est encore invisible. Si ce JS arrive apres le fondu, on ne touche a rien et il ny a aucun flash. ========================================================================== */ (function(){ function heroWords(){ var w = document.querySelector("body.home .elementor-element-715be78"); if (!w) return; var h = w.querySelector(".elementor-heading-title") || w.querySelector("h1"); if (!h || h.querySelector(".msu-w")) return; if (parseFloat(getComputedStyle(w).opacity) > 0.15) return; var i = 0; (function split(node){ Array.prototype.slice.call(node.childNodes).forEach(function(n){ if (n.nodeType === 3) { var frag = document.createDocumentFragment(); n.nodeValue.split(/(\s+)/).forEach(function(p){ if (!p) return; if (/^\s+$/.test(p)) { frag.appendChild(document.createTextNode(p)); return; } var s = document.createElement("span"); s.className = "msu-w"; s.style.setProperty("--msu-i", String(i++)); s.textContent = p; frag.appendChild(s); }); node.replaceChild(frag, n); } else if (n.nodeType === 1) { split(n); } }); })(h); if (i > 0) w.classList.add("msu-typed"); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", heroWords, { once: true }); } else { heroWords(); } })(); /* Home : compteurs KPI du hero (30/07/2026). Defilement au chargement, en cascade sur la sequence d apparition existante. Les KPI a zero descendent depuis une valeur haute pour raconter la reduction. Le HTML final est restaure a la fin, donc sans JS ou en mouvement reduit le bon chiffre reste affiche. */ (function(){ function runKpi(){ var nums = document.querySelectorAll(".msu-kpi-num[data-msu-to]"); if(!nums.length) return; if(window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; Array.prototype.forEach.call(nums, function(el, i){ var to = parseFloat(el.getAttribute("data-msu-to")); if(isNaN(to)) return; var from = el.hasAttribute("data-msu-from") ? parseFloat(el.getAttribute("data-msu-from")) : 0; var suf = el.getAttribute("data-msu-suffix") || ""; var finalHtml = el.innerHTML; var dur = 1100, delay = 560 + i*120, t0 = null; el.setAttribute("data-msu-run","1"); function fmt(v){ return Math.round(v) + suf; } el.innerHTML = fmt(from); function step(ts){ if(t0 === null) t0 = ts; var p = Math.min(1, (ts - t0) / dur); var e = 1 - Math.pow(1 - p, 3); if(p < 1){ el.innerHTML = fmt(from + (to - from) * e); requestAnimationFrame(step); } else { el.innerHTML = finalHtml; el.removeAttribute("data-msu-run"); } } setTimeout(function(){ requestAnimationFrame(step); }, delay); /* garde-fou : si rAF n a pas pu terminer, on repose la valeur finale */ setTimeout(function(){ if(el.getAttribute("data-msu-run")){ el.innerHTML = finalHtml; el.removeAttribute("data-msu-run"); } }, delay + dur + 1400); }); } function boot(){ if(document.hidden){ document.addEventListener("visibilitychange", function h(){ if(!document.hidden){ document.removeEventListener("visibilitychange", h); runKpi(); } }); return; } runKpi(); } if(document.readyState === "loading"){ document.addEventListener("DOMContentLoaded", boot); } else { boot(); } })(); </script><script> /* Mr Suricate - Blocage des emails non professionnels sur le formulaire de contact (#msuDemoForm) */ (function () { "use strict"; var FREE_DOMAINS = [ "gmail.com","googlemail.com","yahoo.com","yahoo.fr","yahoo.co.uk","ymail.com","rocketmail.com", "hotmail.com","hotmail.fr","hotmail.co.uk","outlook.com","outlook.fr","live.com","live.fr","msn.com","windowslive.com", "icloud.com","me.com","mac.com","aol.com","aol.fr","gmx.com","gmx.fr","gmx.net","gmx.de", "protonmail.com","proton.me","pm.me","tutanota.com","tuta.io","zoho.com","yandex.com","yandex.ru", "mail.com","mail.ru","orange.fr","wanadoo.fr","free.fr","sfr.fr","neuf.fr","laposte.net", "bbox.fr","numericable.fr","aliceadsl.fr","club-internet.fr","cegetel.net", "web.de","t-online.de","libero.it","yahoo.de","yahoo.es","yahoo.it" ]; var DISPOSABLE_DOMAINS = [ "mailinator.com","yopmail.com","yopmail.fr","guerrillamail.com","guerrillamail.info", "sharklasers.com","grr.la","temp-mail.org","tempmail.com","tempmail.net", "10minutemail.com","10minutemail.net","throwawaymail.com","getnada.com","nada.email", "trashmail.com","trashmail.net","maildrop.cc","fakeinbox.com","mailnesia.com", "mohmal.com","jetable.org","spambog.com","emailondeck.com","moakt.com", "dispostable.com","mytemp.email","tmpmail.org","tmpmail.net","mailcatch.com", "spam4.me","discard.email","burnermail.io","spamgourmet.com","mintemail.com", "inboxbear.com","tempinbox.com","tempr.email","33mail.com","anonbox.net" ]; var ROLE_LOCAL_PARTS = [ "contact","contacts","info","infos","information","admin","administrator","webmaster","postmaster","hostmaster","abuse", "noreply","no-reply","donotreply","do-not-reply","hello","bonjour","salut", "sales","commercial","commerciaux","vente","ventes","support","help","aide","service","services","sav", "marketing","communication","com","presse","press","rh","hr","jobs","job","career","careers","recrutement","recruitment", "comptabilite","compta","facturation","billing","accounting","finance","direction","secretariat","accueil","office","team","equipe" ]; var MSG_FREE = "Une adresse email professionnelle est requise pour votre demande de démo."; var MSG_ROLE = "Merci d'indiquer votre adresse email professionnelle nominative, pas une adresse générique."; var free={},dispo={},roles={}; FREE_DOMAINS.forEach(function(d){free[d]=1;}); DISPOSABLE_DOMAINS.forEach(function(d){dispo[d]=1;}); ROLE_LOCAL_PARTS.forEach(function(p){roles[p]=1;}); function parseEmail(value){var v=(value||"").trim().toLowerCase();var at=v.lastIndexOf("@");if(at<1||at===v.length-1)return null;return{local:v.slice(0,at),domain:v.slice(at+1)};} function checkEmail(value){var e=parseEmail(value);if(!e)return null;if(free[e.domain]||dispo[e.domain])return MSG_FREE;if(roles[e.local])return MSG_ROLE;return null;} function getEmailInput(form){return form.querySelector('#msu-email, input[type="email"], input[name="email"]');} function showError(input,message){if(!input)return;var id="msu-email-error";var box=document.getElementById(id);if(!box){box=document.createElement("div");box.id=id;box.setAttribute("role","alert");box.style.cssText="color:#d92d20;font-size:14px;line-height:1.4;margin-top:6px;";var field=input.closest(".msu-field")||input.parentNode;field.appendChild(box);}box.textContent=message;input.setAttribute("aria-invalid","true");try{input.focus();}catch(e){}} function clearError(input){var box=document.getElementById("msu-email-error");if(box)box.textContent="";if(input)input.removeAttribute("aria-invalid");} document.addEventListener("submit",function(ev){var form=ev.target;if(!form||form.id!=="msuDemoForm")return;var input=getEmailInput(form);if(!input)return;var msg=checkEmail(input.value);if(msg){ev.preventDefault();ev.stopImmediatePropagation();showError(input,msg);}},true); document.addEventListener("input",function(ev){var t=ev.target;if(t&&(t.id==="msu-email"||t.name==="email"))clearError(t);},true); })(); </script><style></style> <script> (function(){ if(!window.matchMedia||!matchMedia('(hover: hover) and (pointer: fine)').matches){return;} var hideTimer,showTimer; function getInst($a){var root=$a.closest('ul.elementor-nav-menu');return root.length?root.data('smartmenus'):null;} function init(){ if(!window.jQuery){setTimeout(init,200);return;} var $=window.jQuery; $('.elementor-nav-menu--main .menu-item-has-children').each(function(){ var li=this,$li=$(li),$a=$li.children('a'); $li.on('mouseenter',function(){ clearTimeout(hideTimer);clearTimeout(showTimer); showTimer=setTimeout(function(){ if(li.matches(':hover')&&$a.attr('aria-expanded')!=='true'){ var inst=getInst($a); if(inst&&inst.itemActivate){inst.itemActivate($a,true);} } },320); }); $li.on('mouseleave',function(){ clearTimeout(showTimer);clearTimeout(hideTimer); hideTimer=setTimeout(function(){ var inst=getInst($a); if(inst&&$a.attr('aria-expanded')==='true'&&!li.matches(':hover')){inst.menuHideAll();} },300); }); }); } if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();} })(); </script><script id="leadin-script-loader-js-js-extra"> var leadin_wordpress = {"userRole":"visitor","pageType":"post","leadinPluginVersion":"11.3.70"}; //# sourceURL=leadin-script-loader-js-js-extra </script> <script data-minify="1" async defer id='hs-script-loader' src="https://www.mrsuricate.com/wp-content/cache/min/1/19890196.js?ver=1785661808"></script> <script data-minify="1" id="gtm4wp-form-move-tracker-js" src="https://www.mrsuricate.com/wp-content/cache/min/1/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-form-move-tracker.js?ver=1785661808" data-rocket-defer defer></script> <script id="rocket-browser-checker-js-after"> "use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); //# sourceURL=rocket-browser-checker-js-after </script> <script id="rocket-preload-links-js-extra"> var RocketPreloadLinksConfig = {"excludeUris":"/(?:.+/)?feed(?:/(?:.+/?)?)?$|/(?:.+/)?embed/|/(index.php/)?(.*)wp-json(/.*|$)|/refer/|/go/|/recommend/|/recommends/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https://www.mrsuricate.com","onHoverDelay":"100","rateThrottle":"3"}; //# sourceURL=rocket-preload-links-js-extra </script> <script id="rocket-preload-links-js-after"> (function() { "use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); }()); //# sourceURL=rocket-preload-links-js-after </script> <script id="rocket_lazyload_css-js-extra"> var rocket_lazyload_css_data = {"threshold":"300"}; //# sourceURL=rocket_lazyload_css-js-extra </script> <script id="rocket_lazyload_css-js-after"> !function o(n,a,c){function l(t,e){if(!a[t]){if(!n[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}r=a[t]={exports:{}},n[t][0].call(r.exports,function(e){return l(n[t][1][e]||e)},r,r.exports,o,n,a,c)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e<c.length;e++)l(c[e]);return l}({1:[function(e,t,r){{let r="undefined"==typeof rocket_pairs?[]:rocket_pairs,o=(("undefined"==typeof rocket_excluded_pairs?[]:rocket_excluded_pairs).map(t=>{var e=t.selector;document.querySelectorAll(e).forEach(e=>{e.setAttribute("data-rocket-lazy-bg-"+t.hash,"excluded")})}),document.querySelector("#wpr-lazyload-bg-container"));var a=rocket_lazyload_css_data.threshold||300;let n=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&r.filter(e=>t.target.matches(e.selector)).map(t=>{var e;t&&((e=document.createElement("style")).textContent=t.style,o.insertAdjacentElement("afterend",e),t.elements.forEach(e=>{n.unobserve(e),e.setAttribute("data-rocket-lazy-bg-"+t.hash,"loaded")}))})})},{rootMargin:a+"px"});function c(){0<(0<arguments.length&&void 0!==arguments[0]?arguments[0]:[]).length&&r.forEach(t=>{try{document.querySelectorAll(t.selector).forEach(e=>{"loaded"!==e.getAttribute("data-rocket-lazy-bg-"+t.hash)&&"excluded"!==e.getAttribute("data-rocket-lazy-bg-"+t.hash)&&(n.observe(e),(t.elements||=[]).push(e))})}catch(e){console.error(e)}})}c(),(()=>{let r=window.MutationObserver;return function(e,t){if(e&&1===e.nodeType)return(t=new r(t)).observe(e,{attributes:!0,childList:!0,subtree:!0}),t}})()(document.querySelector("body"),c)}},{}]},{},[1]); //# sourceURL=rocket_lazyload_css-js-after </script> <script data-minify="1" id="hello-theme-frontend-js" src="https://www.mrsuricate.com/wp-content/cache/min/1/wp-content/themes/hello-elementor/assets/js/hello-frontend.js?ver=1785661808" data-rocket-defer defer></script> <script id="elementor-webpack-runtime-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.2.2" data-rocket-defer defer></script> <script id="elementor-frontend-modules-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.2.2" data-rocket-defer defer></script> <script id="jquery-ui-core-js" src="https://www.mrsuricate.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" data-rocket-defer defer></script> <script id="elementor-frontend-js-before"> var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Partager sur Facebook","shareOnX":"Share on X","pinIt":"L\u2019\u00e9pingler","download":"T\u00e9l\u00e9charger","downloadImage":"T\u00e9l\u00e9charger une image","fullscreen":"Plein \u00e9cran","zoom":"Zoom","share":"Partager","playVideo":"Lire la vid\u00e9o","previous":"Pr\u00e9c\u00e9dent","next":"Suivant","close":"Fermer","a11yCarouselPrevSlideMessage":"Diapositive pr\u00e9c\u00e9dente","a11yCarouselNextSlideMessage":"Diapositive suivante","a11yCarouselFirstSlideMessage":"Ceci est la premi\u00e8re diapositive","a11yCarouselLastSlideMessage":"Ceci est la derni\u00e8re diapositive","a11yCarouselPaginationBulletMessage":"Aller \u00e0 la diapositive"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Portrait mobile","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Paysage","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablette en mode portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablette en mode paysage","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Portable","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"\u00c9cran large","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"4.2.2","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"e_panel_promotions":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true,"e_pro_variables":true,"e_pro_interactions":true},"urls":{"assets":"https:\/\/www.mrsuricate.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/www.mrsuricate.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/www.mrsuricate.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"b22c08dd0d","atomicFormsSendForm":"b01ddab42f"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"logo","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":21776,"title":"Comment%20optimiser%20votre%20r%C3%A9f%C3%A9rencement%20gr%C3%A2ce%20aux%20tests%20SEO%20automatis%C3%A9s%20-%20Mr%20Suricate","excerpt":"D\u00e9couvrez comment les tests automatis\u00e9s, encore relativement m\u00e9connus pour le SEO, peuvent \u00eatre utilis\u00e9s pour am\u00e9liorer votre r\u00e9f\u00e9rencement.","featuredImage":"https:\/\/www.mrsuricate.com\/wp-content\/uploads\/2026\/07\/test-seo-automatises-avantages-1024x576.png"}}; //# sourceURL=elementor-frontend-js-before </script> <script id="elementor-frontend-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.2.2" data-rocket-defer defer></script> <script id="e-sticky-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.2.1" data-rocket-defer defer></script> <script id="imagesloaded-js" src="https://www.mrsuricate.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0" data-rocket-defer defer></script> <script id="elementor-pro-webpack-runtime-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=4.2.1" data-rocket-defer defer></script> <script id="wp-hooks-js" src="https://www.mrsuricate.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script> <script id="wp-i18n-js" src="https://www.mrsuricate.com/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after </script> <script id="elementor-pro-frontend-js-before"> var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.mrsuricate.com\/wp-admin\/admin-ajax.php","nonce":"fd0a03cb08","urls":{"assets":"https:\/\/www.mrsuricate.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/www.mrsuricate.com\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"fr_FR","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/www.mrsuricate.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; //# sourceURL=elementor-pro-frontend-js-before </script> <script id="elementor-pro-frontend-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.2.1" data-rocket-defer defer></script> <script id="pro-elements-handlers-js" src="https://www.mrsuricate.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.2.1" data-rocket-defer defer></script> <div data-rocket-location-hash="0972f3a14725f4fb7e3cd958445c1974" hidden data-wpu-integrity="ec14fe5b3b9b9140e24d1e05046b3d85"></div> <script>window.lazyLoadOptions=[{elements_selector:"img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,callback_loaded:function(element){if(element.tagName==="IFRAME"&&element.dataset.rocketLazyload=="fitvidscompatible"){if(element.classList.contains("lazyloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}},{elements_selector:".rocket-lazyload",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,}];window.addEventListener('LazyLoad::Initialized',function(e){var lazyLoadInstance=e.detail.instance;if(window.MutationObserver){var observer=new MutationObserver(function(mutations){var image_count=0;var iframe_count=0;var rocketlazy_count=0;mutations.forEach(function(mutation){for(var i=0;i<mutation.addedNodes.length;i++){if(typeof mutation.addedNodes[i].getElementsByTagName!=='function'){continue} if(typeof mutation.addedNodes[i].getElementsByClassName!=='function'){continue} images=mutation.addedNodes[i].getElementsByTagName('img');is_image=mutation.addedNodes[i].tagName=="IMG";iframes=mutation.addedNodes[i].getElementsByTagName('iframe');is_iframe=mutation.addedNodes[i].tagName=="IFRAME";rocket_lazy=mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');image_count+=images.length;iframe_count+=iframes.length;rocketlazy_count+=rocket_lazy.length;if(is_image){image_count+=1} if(is_iframe){iframe_count+=1}}});if(image_count>0||iframe_count>0||rocketlazy_count>0){lazyLoadInstance.update()}});var b=document.getElementsByTagName("body")[0];var config={childList:!0,subtree:!0};observer.observe(b,config)}},!1)</script><script data-no-minify="1" async src="https://www.mrsuricate.com/wp-content/plugins/wp-rocket/assets/js/lazyload/17.8.3/lazyload.min.js"></script> <script>var rocket_beacon_data = {"ajax_url":"https:\/\/www.mrsuricate.com\/wp-admin\/admin-ajax.php","nonce":"7b40572ef9","url":"https:\/\/www.mrsuricate.com\/blog\/comment-optimiser-referencement-tests-seo-automatises","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true,"preload_fonts":true,"preconnect_external_domain":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800,"preload_fonts_exclusions":["api.fontshare.com","cdn.fontshare.com"],"processed_extensions":["woff2","woff","ttf"],"external_font_exclusions":[],"preconnect_external_domain_elements":["link","script","iframe"],"preconnect_external_domain_exclusions":["static.cloudflareinsights.com","rel=\"profile\"","rel=\"preconnect\"","rel=\"dns-prefetch\"","rel=\"icon\""]}</script><script data-name="wpr-wpr-beacon" src='https://www.mrsuricate.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script><!--Weglot 6.2--><aside data-wg-notranslate="" class="country-selector weglot-dropdown weglot-default wg-" tabindex="0" aria-expanded="false" aria-label="Language selected: English"><input id="wg6a8232a6dfcd32.078747181786917542300" class="weglot_choice" type="checkbox" name="menu"/><label data-l="en" tabindex="-1" for="wg6a8232a6dfcd32.078747181786917542300" class="wgcurrent wg-li weglot-lang weglot-language weglot-flags flag-0 wg-en" data-code-language="wg-en" data-name-language="English"><span class="wglanguage-name">English</span></label><ul role="none"><li data-l="fr" class="wg-li weglot-lang weglot-language weglot-flags flag-0 wg-fr" data-code-language="fr" role="option"><a title="Language switcher : French" class="weglot-language-fr" role="option" data-wg-notranslate="" href="https://www.mrsuricate.com/blog/comment-optimiser-referencement-tests-seo-automatises/?wg-choose-original=true">Français</a></li></ul></aside> </html> <!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me - Debug: cached@1786917542 -->