<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Testplane Blog</title>
        <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/</link>
        <description>Testplane Blog</description>
        <lastBuildDate>Wed, 03 Dec 2025 14:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Test run selectivity]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/selectivity-intro/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/selectivity-intro/</guid>
            <pubDate>Wed, 03 Dec 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[Testplane now supports test run selectivity — the ability to automatically run only those tests whose dependency files have changed.]]></description>
            <content:encoded><![CDATA[<p>Testplane now supports test run selectivity — the ability to automatically run only those tests whose dependency files have changed.</p>
<p>Selectivity allows you to significantly speed up the testing process by running only relevant tests instead of the entire suite. Testplane tracks each test’s dependencies on project files — both the test code itself and the code executed in the browser — and, when a file changes, runs only those tests that depend on it.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="how-to-use">How to use<a class="hash-link" aria-label="Direct link to How to use" title="Direct link to How to use" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/selectivity-intro/#how-to-use">​</a></h3>
<p>Learn more in our guide <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/guides/selectivity/">How to configure selectivity when running tests</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="conclusion">Conclusion<a class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/selectivity-intro/#conclusion">​</a></h3>
<p>Upgrade to Testplane version 8.36.0 or higher and try selectivity in your projects! If you encounter any issues, feel free to open an <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue on GitHub</a> — we’ll be happy to help!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Testplane vs Playwright: Complete Comparison of Test Automation Tools]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/</guid>
            <pubDate>Mon, 10 Nov 2025 17:00:00 GMT</pubDate>
            <description><![CDATA[Detailed comparison of Testplane and Playwright: advantages, disadvantages, and recommendations for choosing the right tool for your project]]></description>
            <content:encoded><![CDATA[<p>Both <strong>Testplane</strong> and <strong>Playwright</strong> are end-to-end testing solutions, but they have different approaches and capabilities. In this article, we'll conduct a detailed comparison of these tools to help you make the right choice.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="brief-tool-overview">Brief Tool Overview<a class="hash-link" aria-label="Direct link to Brief Tool Overview" title="Direct link to Brief Tool Overview" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#brief-tool-overview">​</a></h2>
<p><strong>Testplane</strong> is a web application test automation tool developed by the Yandex team. It is actively used in both large and small company projects and supports a wide range of browsers and devices.</p>
<p><strong>Playwright</strong> is a tool from Microsoft that has quickly gained popularity due to its ease of use and modern approach to automation.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="key-differences">Key Differences<a class="hash-link" aria-label="Direct link to Key Differences" title="Direct link to Key Differences" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#key-differences">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="browser-and-mobile-device-support">Browser and Mobile Device Support<a class="hash-link" aria-label="Direct link to Browser and Mobile Device Support" title="Direct link to Browser and Mobile Device Support" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#browser-and-mobile-device-support">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1">Testplane supports both desktop browsers and mobile devices</div></div>
<p>One of Testplane's key advantages is its versatility in working with desktop browsers and mobile devices. Unlike Playwright, which focuses on modern desktop browsers of the latest versions, Testplane provides full support for both old and new browser versions.
This is important for companies that work with users using outdated browsers. A complete comparison of the two approaches can be seen in the table below:</p>
<table><thead><tr><td><strong>Criteria</strong></td><td><strong>Testplane</strong></td><td><strong>Playwright</strong></td><td><strong>Why It Matters</strong></td></tr></thead><tbody><tr><td>Browser Source</td><td>Original binaries from browser vendors</td><td>Custom builds</td><td>Maximum proximity to real devices</td></tr><tr><td>Browser Versions</td><td>Any — from legacy to latest</td><td>Browser version tied to Playwright version</td><td>Simultaneous coverage of users on both new and outdated browsers</td></tr><tr><td>Mobile Devices</td><td>Android and iOS: browsers + native applications</td><td>No</td><td>Unified stack for desktop and mobile devices</td></tr><tr><td>Remote Grid</td><td>Selenium Grid/Selenoid/BrowserStack/SauceLabs (any remote grid)</td><td><p>Officially — paid Microsoft Playwright Testing; Remote grid — through hacks, without
guarantees</p></td><td>Scalability and using your own grid</td></tr><tr><td>Protocols</td><td>CDP; WebDriver (W3C); WebDriver BiDi</td><td>Custom proprietary protocol; CDP (Chromium); WebDriver — no</td><td>Browser compatibility and integration flexibility</td></tr></tbody></table>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="visual-testing">Visual Testing<a class="hash-link" aria-label="Direct link to Visual Testing" title="Direct link to Visual Testing" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#visual-testing">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1">Testplane offers advanced visual testing capabilities</div></div>
<p>In the area of visual (screenshot) testing, Testplane demonstrates clear superiority over Playwright.
Under the hood, the tool uses its own <a href="https://github.com/gemini-testing/looks-same" target="_blank" rel="noopener noreferrer">looks-same</a> library for screenshot comparison, which is <a href="https://github.com/gemini-testing/looks-same/blob/master/benchmark/results.md" target="_blank" rel="noopener noreferrer">faster</a> and more accurate than current competitors:</p>
<ul>
<li>Waiting for elements to load before taking screenshots to eliminate test instability;</li>
<li>Disabling animations on the page;</li>
<li>Flexible configuration of screenshot testing sensitivity — <a href="https://testplane.io/docs/v8/config/browsers/#tolerance" target="_blank" rel="noopener noreferrer">tolerance</a>, <a href="https://testplane.io/docs/v8/config/browsers/#antialiasing_tolerance" target="_blank" rel="noopener noreferrer">anti-aliasing tolerance</a>, ignoring a fixed number of pixels;</li>
<li>Uses 3 levels of comparison for speed optimization;</li>
<li>Various <a href="https://testplane.io/docs/v8/html-reporter/overview/#superb-visual-testing-capabilities" target="_blank" rel="noopener noreferrer">types of visualization of differences between screenshots</a> for convenient debugging, including highlighting small diffs;</li>
<li>Ignoring elements in screenshots when necessary.</li>
</ul>
<p>Testplane provides a convenient <a href="https://testplane.io/docs/v8/html-reporter/overview/" target="_blank" rel="noopener noreferrer">interface</a> for bulk screenshot acceptance, which speeds up the process of updating reference images.
Also, if <a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a> is configured in the user's project, Testplane provides <a href="https://testplane.io/docs/v8/visual-testing/with-storybook/" target="_blank" rel="noopener noreferrer">automatic generation of screenshot tests</a>, which allows you to quickly cover all project components with visual checks <strong>without writing code</strong>.</p>
<p>Playwright offers only basic screenshot testing support with limited capabilities and a less convenient interface for working with screenshots. This makes it less suitable for projects where visual testing is important.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="test-report-interface">Test Report Interface<a class="hash-link" aria-label="Direct link to Test Report Interface" title="Direct link to Test Report Interface" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#test-report-interface">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Testplane has a powerful UI for working with tests in various scenarios</p></div></div>
<p>Testplane has a graphical interface that not only shows the results of your test execution but also provides extensive capabilities for working with them.</p>
<p>This report is perfect for both local work and use in CI. It offers a unified interface for performing various tasks:</p>
<ul>
<li>Running tests directly from the UI;</li>
<li>Debugging with <a href="https://testplane.io/docs/v8/guides/time-travel/" target="_blank" rel="noopener noreferrer">Time Travel</a> (step-by-step test replay);</li>
<li>Test performance analysis;</li>
<li>Updating reference images in screenshot testing;</li>
<li>Merging multiple reports into one;</li>
<li>Reusing results from CI.</li>
</ul>
<p>It's especially important that Testplane's report can efficiently work with thousands of tests without losing performance. The plugin system allows customizing reports for specific team needs.</p>
<p>You can explore all report capabilities in the <a href="https://testplane.io/docs/v8/html-reporter/overview/" target="_blank" rel="noopener noreferrer">UI</a> section of the <a href="https://testplane.io/" target="_blank" rel="noopener noreferrer">https://testplane.io</a> website.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="ai-integration">AI Integration<a class="hash-link" aria-label="Direct link to AI Integration" title="Direct link to AI Integration" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#ai-integration">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Testplane MCP helps AI agents write stable new tests and fix existing ones</p></div></div>
<p><a href="https://testplane.io/docs/v8/testplane-mcp/" target="_blank" rel="noopener noreferrer">Testplane MCP</a> is a tool that allows AI agents to immerse themselves in the context of what's happening in the browser, perform actions, and create or fix tests based on the real state of the page.
With Testplane MCP, users can not only create working and stable tests but also quickly fix existing ones. Testplane MCP allows connecting to the browser during your test execution to debug or modify it. This significantly reduces the time spent fixing unstable tests.
Additionally, Testplane MCP provides the ability to run the browser in mobile device emulation mode. For example, you can say "Open example.com page using Testplane MCP on iPhone 15" or explicitly specify which User Agent should be used when creating a browser session.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="extensibility-and-integrations">Extensibility and Integrations<a class="hash-link" aria-label="Direct link to Extensibility and Integrations" title="Direct link to Extensibility and Integrations" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#extensibility-and-integrations">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1">Testplane provides more customization capabilities</div></div>
<p>Testplane's architecture is built with customization and integration needs in mind. The rich <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/reference/testplane-events/">event model</a> provides numerous extension points, allowing developers to inject their own logic at any stage of test execution. This is especially important for projects that require integration with internal monitoring, reporting, and quality management systems.
Testplane also provides a JS API that allows creating custom runners adapted to specific project needs.</p>
<p>Playwright, despite its popularity, offers fewer extension points and requires independent development of most integrations. This increases the time for implementation and maintenance of the tool in a corporate environment.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="scaling-and-performance">Scaling and Performance<a class="hash-link" aria-label="Direct link to Scaling and Performance" title="Direct link to Scaling and Performance" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#scaling-and-performance">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1">Testplane is proven on large projects with millions of tests</div></div>
<p>Testplane's architecture was initially designed to work with large volumes of tests, ensuring stable operation even with significant growth in test coverage. This is especially important for long-term projects where the number of tests constantly increases.
Support for remote browser grids (e.g., BrowserStack, SauceLabs, etc.) allows efficient distribution of test execution across multiple machines, ensuring fast execution even of very large test suites.
Testplane also allows scaling runs through sharding, running tests on different machines. As a result, the user will be provided with a unified report with the results of passed tests.</p>
<p>Playwright also has scaling capabilities in the form of out-of-the-box sharding. Scaling through remote grid is provided only as a paid service <a href="https://learn.microsoft.com/en-us/azure/playwright-testing/" target="_blank" rel="noopener noreferrer">Microsoft Playwright Testing</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="updates-and-stability">Updates and Stability<a class="hash-link" aria-label="Direct link to Updates and Stability" title="Direct link to Updates and Stability" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#updates-and-stability">​</a></h3>
<p>Testplane ensures high stability through a thoughtful approach to dependency management. Tool updates are completely decoupled from browser updates, allowing teams to control the migration process and avoid unexpected failures in CI/CD pipelines. Using stable browser versions minimizes screenshot retaking issues, which is especially important for projects with many visual tests.
This approach ensures predictable test behavior and reduces testing infrastructure maintenance costs. Teams can plan browser updates independently of the testing tool updates, providing more flexibility in managing technical debt.</p>
<p>Playwright links tool updates with browser updates, which can lead to unexpected changes in test behavior. This creates additional burden on development teams who have to more frequently review and update screenshots, especially in projects with active interface development.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="selection-recommendations">Selection Recommendations<a class="hash-link" aria-label="Direct link to Selection Recommendations" title="Direct link to Selection Recommendations" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#selection-recommendations">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="choose-playwright-if">Choose Playwright if:<a class="hash-link" aria-label="Direct link to Choose Playwright if:" title="Direct link to Choose Playwright if:" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#choose-playwright-if">​</a></h3>
<p>✅ Testing only in the latest desktop browsers is sufficient<br>
<!-- -->✅ You're confident that support for old browser versions won't be needed<br>
<!-- -->✅ Visual testing is not required</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="choose-testplane-if">Choose Testplane if:<a class="hash-link" aria-label="Direct link to Choose Testplane if:" title="Direct link to Choose Testplane if:" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-vs-playwright/#choose-testplane-if">​</a></h3>
<p>✅ Visual testing with convenient reporting is important<br>
<!-- -->✅ Future scaling will be required<br>
<!-- -->✅ Customization for specific needs is important<br>
<!-- -->✅ Testing across a wide range of desktop browsers and mobile devices is necessary<br>
<!-- -->✅ Testing of native Android and iOS applications is required</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Testplane MCP]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/</guid>
            <pubDate>Mon, 16 Jun 2025 17:00:00 GMT</pubDate>
            <description><![CDATA[We're excited to present Testplane MCP — a project that allows AI agents to be aware of what's happening in the browser, perform actions, and generate tests based on the real state of the page.]]></description>
            <content:encoded><![CDATA[<p>We're excited to present Testplane MCP — a project that allows AI agents to be aware of what's happening in the browser, perform actions, and generate tests based on the real state of the page.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/cover-08283a8892b3497f2f3aa36a317dec04.png" width="1536" height="1024" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="what-capabilities-does-testplane-mcp-unlock">What capabilities does Testplane MCP unlock?<a class="hash-link" aria-label="Direct link to What capabilities does Testplane MCP unlock?" title="Direct link to What capabilities does Testplane MCP unlock?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/#what-capabilities-does-testplane-mcp-unlock">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="significant-improvement-in-test-generation">Significant improvement in test generation<a class="hash-link" aria-label="Direct link to Significant improvement in test generation" title="Direct link to Significant improvement in test generation" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/#significant-improvement-in-test-generation">​</a></h3>
<p>Imagine you've added new functionality to your application and now want to generate tests for it using an AI agent. Previously, an AI agent could only guess what this page looks like — the selectors would likely be fictional, and the test would require serious edits.</p>
<p>Testplane MCP takes this process to a new level: while writing tests, the AI agent can open the required page in a browser, look at its layout, or perform any actions (such as clicking a button or filling out a form).</p>
<p>As a result, the AI agent can generate tests with full context of what's happening in the browser — including selectors that actually exist on the page.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="browser-usage-by-ai-agents">Browser usage by AI agents<a class="hash-link" aria-label="Direct link to Browser usage by AI agents" title="Direct link to Browser usage by AI agents" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/#browser-usage-by-ai-agents">​</a></h3>
<p>Testplane MCP makes it possible to automate repetitive processes. For example, you can build a workflow to extract information from receipt photos, then use Testplane MCP to access your organization's management panel and fill out report forms with the corresponding information (item names, quantities, prices, etc.).</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="installation">Installation<a class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/#installation">​</a></h2>
<p>Add Testplane MCP server to the configuration of your IDE.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Cursor</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">VS Code + Cline</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">VS Code + Copilot</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Claude Desktop</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Windsurf</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Jetbrains</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p>Open Cursor settings (button in the top right corner of the IDE), in the <code>MCP</code> section click on the <code>Add new global MCP server</code> button, add Testplane MCP to the config as in the example below.</p><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ol>
<li>Install the <a href="https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev" target="_blank" rel="noopener noreferrer">Cline extension</a>.</li>
<li>On the extension tab, you need to go to the "MCP" tab and click "Configure MCP Servers".
<img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/cline-setup-638e0a1615dd9652b8743094a305e529.png" width="1322" height="830" class="img_ev3q"></li>
<li>Add Testplane MCP to the config as in the example below.<!-- -->
<div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
</li>
</ol></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>Open VS Code settings, search for <code>MCP</code>, click on <code>Edit in settings.json</code>, add Testplane MCP to the config as in the example below.</p><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "inputs": [],</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "servers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>Open settings <a href="https://modelcontextprotocol.io/quickstart/user" target="_blank" rel="noopener noreferrer">as shown in the official documentation</a>, add Testplane MCP to the config as in the example below.</p><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>Open settings <a href="https://docs.windsurf.com/windsurf/cascade/mcp" target="_blank" rel="noopener noreferrer">as shown in the official documentation</a>, add Testplane MCP to the config as in the example below.</p><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>Open settings <a href="https://www.jetbrains.com/help/ai-assistant/configure-an-mcp-server.html" target="_blank" rel="noopener noreferrer">as shown in the official documentation</a>, add Testplane MCP to the config as in the example below.</p><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div></div></div></div>
<p>After installation, the AI agent will be able to use Testplane MCP. You can directly mention this in the prompt: "Use testplane mcp to open the page ...".</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="usage">Usage<a class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/#usage">​</a></h2>
<p>Let's consider the case of developing an online bookstore. Imagine we have a new feature — displaying book ratings and we want to generate tests for this feature.</p>
<p>First, let's ask the AI agent to analyze the page and create a testing plan.</p>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/investigate-5b81e51b32431e8ed39f891a658c59ec.mp4" width="100%" controls=""><p>The video tag is not supported by your browser.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/video/blog/mcp/investigate.mp4">Download the video</a>.</p></video>
<br>
<p>Now let's try to generate tests and run them.</p>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/generate-46821c8f2a645796edeac858059c7e25.mp4" width="100%" controls=""><p>The video tag is not supported by your browser.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/video/blog/mcp/generate.mp4">Download the video</a>.</p></video>
<br>
<p>As we can see, the AI agent generated tests on the first try that pass and contain correct selectors.</p>
<p>You can try this prompt for generating tests using Testplane MCP:</p>
<blockquote>
<p>Use testplane mcp to open the page <code>https://ya.ru</code>, perform a search for "cats", and verify that search results are displayed.</p>
<p>Don't write unnecessary comments in tests, except for complex edge cases. Write tests following the project's style guide.</p>
<p>Try to use semantic selectors, for example, by <code>data-testid</code> attributes or element text instead of complex CSS selectors.</p>
</blockquote>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="implementation-details">Implementation Details<a class="hash-link" aria-label="Direct link to Implementation Details" title="Direct link to Implementation Details" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/mcp-release/#implementation-details">​</a></h2>
<p>Testplane MCP is not the only implementation that enables AI agent interaction with browsers.</p>
<p>Currently, Testplane MCP provides the following advantages:</p>
<ul>
<li>
<p>Very compact and flexible page snapshots, models don't need to work with screenshots. This significantly saves LLM API token usage.</p>
<p>As an example — the full source code of <code>https://ya.ru</code> takes ~260,000 characters, while a compact snapshot takes only ~9,000.</p>
<details class="group overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-300/10"><summary class="flex cursor-pointer items-start p-4 font-medium transition-colors duration-200 select-none group-open:bg-neutral-50 hover:bg-neutral-50 dark:group-open:bg-neutral-600/20 dark:hover:bg-neutral-600/10"><span class="flex-1 text-base leading-relaxed [&amp;>p]:mb-0">Snapshot example</span><span class="flex h-6 w-6 items-center justify-center rounded-lg bg-neutral-100 text-neutral-500 transition-colors duration-300 group-hover:bg-neutral-200 dark:bg-neutral-600/20 dark:group-hover:bg-neutral-600/30"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-300 group-open:rotate-90"><path fill="currentColor" fill-rule="evenodd" d="M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0" clip-rule="evenodd"></path></svg></span></summary><div class="border-t border-neutral-200 p-4 dark:border-neutral-300/10"><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">body</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">main.body__wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline__personal</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.alice.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Алиса href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//alice.yandex.ru/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=yandex</span><span class="token important">&amp;utm_campaign=morda_header_oknyx&amp;utm_medium=interface"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.alice__icon</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item_services</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Сервисы href=https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/all title=Сервисы role=button</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline__personal-icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">enter.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_black</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//passport.yandex.ru/auth</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">retpath=https%3A%2F%2Fsso.passport.yandex.ru%2Fpush%3Fretpath%3Dhttp</span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain">"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Войти"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.usermenu-portal</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">menu.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Профиль</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> вход не выполнен" role=button tabindex=0 href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//passport.yandex.ru/auth</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">origin=morda</span><span class="token important">&amp;retpath=https%3A%2F%2Fya.ru%2F%3Fnr%3D1%26redirect_ts%3..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline__personal-icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.alerts</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">role=complementary aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Уведомления</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> h1.a11y</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">hidden</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Уведомления"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.alert</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.alert__content.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/pogoda/146</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lat=44.948237</span><span class="token important">&amp;lon=34.100318&amp;utm_content=GroupedTomorrow&amp;utm_medium=aler..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">"div.alert__left-content-wrapper[aria-label=\"Завтра: дождь, грозы&nbsp;· +15⁠…⁠+19⁠°&nbsp;· слабый ветер 3⁠–⁠5&nbsp;м⁠/⁠с, порывы до 11&nbsp;м⁠/⁠с\"]"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">span.alert__text "Завтра</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> дождь</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> грозы&nbsp;· +15⁠…⁠+19⁠°&nbsp;· слабый ветер 3⁠–⁠5&nbsp;м⁠/⁠с</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> порывы до 11&nbsp;м⁠/⁠с"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.alert__close</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Закрыть @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.body__content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> form.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest.i</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">bem.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_search_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_personal_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_request_xhr.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_favicon_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_hide</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">on</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">scroll_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_direct_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_re</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">request_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_direct</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">disclaimer_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_autofocus_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_delete</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">on</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">hover_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_grouping_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_theme_tile.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_prevent</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">empty_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_entity</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_overlay_yaru.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_type</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">icon_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_redesigned</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">navs_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_redesign</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">type_block.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_expanding_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_reasoning_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_redesign</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">serp_yes.search3.search3_redesign</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">type_block.search3_keyboard_yes.search3_voice_yes.search3_camera_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_js_inited</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">action=https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/ role=search aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Поиск в интернете"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__inner-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">section.reasoning-section.reasoning-section_on-top_yes.reasoning-section_justify_center</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">ul.reasoning-section__list</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">li.reasoning-section__item.reasoning-section__item_type_rect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/finance</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=subclasses_product</span><span class="token important">&amp;utm_content=fin_5&amp;utm_campaign=morda_web&amp;per..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">title "Финансы"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">li.reasoning-section__item.reasoning-section__item_type_rect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/products</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=subclasses_product</span><span class="token important">&amp;utm_content=ecom&amp;utm_campaign=morda_web&amp;per..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">title "Товары"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">li.reasoning-section__item.reasoning-section__item_type_rect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/realty</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=subclasses_realty</span><span class="token important">&amp;utm_content=realty&amp;utm_campaign=morda_web&amp;pers..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">title "Квартиры"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__inner</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> label.search3__input</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">wrapper</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">wrapper</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">for=text</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__input-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__input-outer-container</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__input-inner-container</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input.search3__input.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest__control</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Запрос name placeholder="Подробно опишите сложную задачу или вопрос" @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> textarea.search3__input.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest__input</span><span class="token comment" style="color:#999988;font-style:italic">#text[placeholder="Подробно опишите сложную задачу или вопрос" name=text role=combobox]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__magnifier</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__action-buttons.search3__action-buttons_submit-button-icon_yes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__reasoning-root</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__reasoning</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.reasoning-dropdown__root</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.reasoning-dropdown</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">             </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">dropwdown__button</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=button aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Подробнее title=Подробнее</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">qmark</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.search3__keyboard.search3__action</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">title=Клавиатура type=button @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__svg_keyboard</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__voice-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.Button.VoiceInput.search3__voice.search3__voice_type_depot.VoiceInput_futuris</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Голосовой поиск" type=button title="Голосовой поиск"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">span.Button-Text</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.VoiceInput</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">Icon</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.search3__action.search3__camera</span><span class="token comment" style="color:#999988;font-style:italic">#image-search[title="Поиск по картинке" type=button]:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__svg_camera</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.search3__button.search3__button_icon_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest__button</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=submit tabindex=</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">1 aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Найти @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=lr value=146 @value=146 @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=msid value=1749915681851623</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">7074561989186018597</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">balancer</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">l7leveler</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">kubr</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yp</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">vla</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">119</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">BAL @value=1749915681851623</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">7074561989186018597</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">balancer</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">l7leveler</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">kubr</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yp</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">vla</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">119</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">BAL @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=search_source value=yaru_desktop_common @value=yaru_desktop_common @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=search_domain value=yaru @value=yaru @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> aside.informers3</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Информеры</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__item.informers3</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">weather.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Погода в Симферополе 21°</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Облачно с прояснениями" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/pogoda/146</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lat=44.948237</span><span class="token important">&amp;lon=34.100318&amp;utm_campaign=informer&amp;utm_content=main_info..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.informers3</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">weather__text "+21°"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__pollen.informers3__item.informers3__pollen_level_yellow.informers3__pollen_animate_yes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Низкая активность злаков" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/pogoda/allergies</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">allergen=cereals</span><span class="token important">&amp;lat=44.948237&amp;lon=34.100318&amp;utm_campaign=informe..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.simple</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip.force</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">dark.informers</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip.simple</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip_hidden_yes.simple</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip_direction_right</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Низкая активность злаков"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">section.informers3__stocks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> h2.a11y</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">hidden "Курсы&nbsp;ЦБ РФ"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.informers3__stocks-item-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__stocks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="USD&nbsp;ЦБ 79</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">00" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lr=146</span><span class="token important">&amp;search_source=ya_morda_stocks&amp;text=USD+%D0%A6%D0%91&amp;wiz=finance"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span "USD 79</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">00"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.informers3__stocks-item-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__stocks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="EUR&nbsp;ЦБ 90</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">01" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lr=146</span><span class="token important">&amp;search_source=ya_morda_stocks&amp;text=EUR+%D0%A6%D0%91&amp;wiz=finance"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span "EUR 90</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">01"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.informers3__stocks-item-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__stocks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="YDEX 3998</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">50" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lr=146</span><span class="token important">&amp;search_source=ya_morda_stocks&amp;text=YDEX&amp;wiz=finance"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span "YDEX 3998</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">50"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__geo.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Ваш город определён как Симферополь" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/tune/geo</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">retpath=https%3A%2F%2Fya.ru%2F%3Fnr%3D1%26redirect_ts%3D1749915681.00000</span><span class="token important">&amp;nosy..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Симферополь"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.main-home-banner</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.main-home-banner__content.banner-tgo.banner-tgo_title_m</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.banner-tgo__content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__title "Простой переход на&nbsp;Яндекс Браузер"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.banner-tgo__subtitle</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__domain "yandex.ru"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__mark "Реклама • 0+"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__link</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Простой переход на Яндекс Браузер" href=https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/an/count/WgyejI_zOoVX2Lci0WqL00Eca4kmIQS4p0bKyOO9wCsxD</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yN0juA2EWchcZT7ALIUK0NwFEvt</span><span class="token punctuation" style="color:#393A34">...</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.direct-close-block.direct-close-block_state_idle.direct-close-block_tgo</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.direct</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">block__close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">button.direct</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">block__close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">button_idle</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Действия с рекламой"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.direct-close-block__close-icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.ladybug</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.ladybug__item.ladybug__butterfly</span><span class="token comment" style="color:#999988;font-style:italic">#butterfly:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token comment" style="color:#999988;font-style:italic">#butterfly-button:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.YndxBug.Bug__container1k5BDO.Bug__container_position_left35lf2v</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.YndxBug-Icon.Bug__icon3lvpsr</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.page</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">info</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">\"static\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"2025</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">06</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">11</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">855\"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">\"content\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"big\"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">\"domain\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"ru\"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">\"nodeVersion\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"v22.10.0\"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span</span><span class="token comment" style="color:#999988;font-style:italic">#requestId[@hidden] "1749915681851623-7074561989186018597-balancer-l7leveler-kubr-yp-vla-119-BAL"</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div></div></details>
</li>
<li>
<p>Seamless integration with the Testplane ecosystem, which will only improve in the future. For example, each server response contains the code that was executed, so the model can embed it into tests.</p>
</li>
</ul>
<p>Follow new releases in our blog and in the <a href="https://github.com/gemini-testing/testplane-mcp/releases" target="_blank" rel="noopener noreferrer">Release Notes section on GitHub</a>, and if you encounter any issues, come to <a href="https://github.com/gemini-testing/testplane-mcp/issues" target="_blank" rel="noopener noreferrer">GitHub issues</a> or our <a href="https://t.me/testplane" target="_blank" rel="noopener noreferrer">Telegram chat</a> — we'll definitely help you!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Time Travel + Testplane UI Updates]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/</guid>
            <pubDate>Wed, 21 May 2025 17:00:00 GMT</pubDate>
            <description><![CDATA[We're presenting a new Testplane UI tool — Time Travel, now stable! Let's talk about this new functionality and what else has been added to Testplane UI recently.]]></description>
            <content:encoded><![CDATA[<p>We're presenting a new Testplane UI tool — Time Travel, now stable! Let's talk about this new functionality and what else has been added to Testplane UI recently.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/time-travel-123dc83929674d1f4b57557927cd878b.png" width="1536" height="1024" class="img_ev3q"></p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="how-to-get-the-latest-updates">How to get the latest updates?<a class="hash-link" aria-label="Direct link to How to get the latest updates?" title="Direct link to How to get the latest updates?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/#how-to-get-the-latest-updates">​</a></h2>
<p>You need to install the latest versions of Testplane and <code>html-reporter</code>:</p>
<div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">npm i -D testplane@8.29.2 html-reporter@10.18.0</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="time-travel">Time Travel<a class="hash-link" aria-label="Direct link to Time Travel" title="Direct link to Time Travel" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/#time-travel">​</a></h2>
<p>Time Travel is a new Testplane UI tool that allows you to view test runs in real-time, as well as record and play back all the actions that occurred in the browser during the test.</p>
<p>Here's how it looks:</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/time-travel-demo-cb82a8ca03689ff7ab3c75959d9093cd.gif" width="1469" height="910" class="img_ev3q"></p>
<p>Time Travel records DOM tree snapshots, which helps debug issues related to selectors while saving disk space.</p>
<p>Learn more in our <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/basic-guides/time-travel/">new guide</a>.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="testplane-ui-news">Testplane UI News<a class="hash-link" aria-label="Direct link to Testplane UI News" title="Direct link to Testplane UI News" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/#testplane-ui-news">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="fuzzy-test-search">Fuzzy Test Search<a class="hash-link" aria-label="Direct link to Fuzzy Test Search" title="Direct link to Fuzzy Test Search" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/#fuzzy-test-search">​</a></h3>
<p>Test search is now more intelligent and understands queries even with typos or in a different keyboard layout. IDE-like search options have been added: regex and case-insensitive.</p>
<p>We've also added a new sorting method — by relevance. It's automatically enabled during search, ensuring the most relevant tests appear at the top.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/fuzzy-search-8d769357ecdb7974fd04fd6936c983b9.gif" width="1469" height="920" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="new-buttons-for-managing-interface-elements">New Buttons for Managing Interface Elements<a class="hash-link" aria-label="Direct link to New Buttons for Managing Interface Elements" title="Direct link to New Buttons for Managing Interface Elements" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/#new-buttons-for-managing-interface-elements">​</a></h3>
<p>We've added buttons to control the visibility of the test tree and player. Now you can hide them when you don't need them and, for example, work with screenshots in full screen.</p>
<p>The interface remembers your preferences, and even after reloading the page, everything will be as you set it up.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/show-hide-buttons-ed2fcdfb4eb95154e5d6bca687b7f1b0.gif" width="1469" height="910" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="other-improvements">Other Improvements<a class="hash-link" aria-label="Direct link to Other Improvements" title="Direct link to Other Improvements" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/time-travel-release/#other-improvements">​</a></h3>
<ul>
<li>Significantly reworked the <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/html-reporter/html-reporter-commands/#merge-reports"><code>merge-reports</code></a> command — now it works better, more stable, and covers more cases</li>
<li>Testplane UI can now work with reports created in older versions — no need to worry about losing data when upgrading</li>
<li><a href="https://github.com/gemini-testing/html-reporter/releases/tag/v10.17.0" target="_blank" rel="noopener noreferrer">New API</a> for exporting snapshots in Time Travel</li>
<li>Option to select playback speed in the Time Travel player</li>
</ul>
<p>Stay tuned for new releases on our blog and in the <a href="https://github.com/gemini-testing/html-reporter/releases" target="_blank" rel="noopener noreferrer">Release Notes on GitHub</a>, and if you encounter any issues, please visit our <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">GitHub issues</a> — we'll be happy to help!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WebDriver BiDi protocol support]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/</guid>
            <pubDate>Tue, 06 May 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[Support for the WebDriver BiDi protocol (the future unified standard for browser automation) has been added in testplane@8.27.0.]]></description>
            <content:encoded><![CDATA[<p>Support for the <a href="https://w3c.github.io/webdriver-bidi/" target="_blank" rel="noopener noreferrer">WebDriver BiDi protocol</a> (the future unified standard for browser automation) has been added in <a href="https://github.com/gemini-testing/testplane/releases/tag/v8.27.0" target="_blank" rel="noopener noreferrer">testplane@8.27.0</a>.</p>
<p>WebDriver BiDi (Bidirectional) is a new cross-browser automation protocol that combines the best features of existing protocols: <a href="https://www.w3.org/TR/webdriver1/" target="_blank" rel="noopener noreferrer">W3C WebDriver</a> and <a href="https://chromedevtools.github.io/devtools-protocol/" target="_blank" rel="noopener noreferrer">Chrome DevTools Protocol (CDP)</a> (you can read more about them in our <a href="https://testplane.io/ru/docs/v8/reference/webdriver-vs-cdp/" target="_blank" rel="noopener noreferrer">article</a>).
Essentially, the new protocol extends the existing W3C WebDriver protocol and adds new cross-browser commands that replace the CDP protocol (which is not cross-browser compatible).
Old webdriver commands still work via HTTP, while new commands provide bidirectional communication between the client and the browser via a WebSocket connection.</p>
<p>The new protocol is currently supported by the following browsers: Chrome, Firefox, Edge. Safari support is not available yet. You can follow the supported browsers on this <a href="https://wpt.fyi/results/webdriver/tests/bidi?label=master&amp;label=stable&amp;aligned" target="_blank" rel="noopener noreferrer">page</a>.</p>
<p>A list of BiDi protocol commands is available on this <a href="https://webdriver.io/docs/api/webdriverBidi" target="_blank" rel="noopener noreferrer">page</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="how-to-use">How to use?<a class="hash-link" aria-label="Direct link to How to use?" title="Direct link to How to use?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/#how-to-use">​</a></h3>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>warning</div><div class="admonitionContent_BuS1"><p>BiDi protocol support in Testplane is available in browsers starting from version: chrome@128
and firefox@129.</p></div></div>
<p>To use the BiDi protocol, you need to:</p>
<ul>
<li>install testplane@8.27.0 or older;</li>
<li>specify the capability <code>webSocketUrl: true</code> in the <code>desiredCapabilities</code> field for the desired browser (it will be set by default in the next major version);</li>
<li>run the tests.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="what-can-be-done-with-the-new-protocol">What can be done with the new protocol?<a class="hash-link" aria-label="Direct link to What can be done with the new protocol?" title="Direct link to What can be done with the new protocol?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/#what-can-be-done-with-the-new-protocol">​</a></h3>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="tracking-and-intercepting-network-requestsresponses">Tracking and intercepting network requests/responses<a class="hash-link" aria-label="Direct link to Tracking and intercepting network requests/responses" title="Direct link to Tracking and intercepting network requests/responses" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/#tracking-and-intercepting-network-requestsresponses">​</a></h4>
<ol>
<li>You can mock a request to testplane.io and return your own response:</li>
</ol>
<div class="language-typescript codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should mock testplane.io"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">networkAddIntercept</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> phases</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"beforeRequestSent"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"network.beforeRequestSent"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> networkRequest </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">networkProvideResponse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            request</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> networkRequest</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            body</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"string"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"hello world"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">url</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://testplane.io"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/mock-network-request-example-0dc385eb96ee49a96b4d39e786c24a89.mp4" width="100%" controls=""><p>Your browser does not support the video tag.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/video/blog/bidi/mock-network-request-example.mp4">Download the video</a>.</p></video>
<ol start="2">
<li>We will intercept all requests to the testplane.io resource and display a list of all loaded URLs:</li>
</ol>
<div class="language-typescript codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should log all loaded urls"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"network.responseCompleted"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> networkResponse </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"got response from url:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> networkResponse</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">url</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://testplane.io"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/network-responses-example-959e02846e0e8fba94babce1b9845d17.mp4" width="100%" controls=""><p>Your browser does not support the video tag.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/video/blog/bidi/network-responses-example.mp4">Download the video</a>.</p></video>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="displaying-logs-in-the-browser">Displaying logs in the browser<a class="hash-link" aria-label="Direct link to Displaying logs in the browser" title="Direct link to Displaying logs in the browser" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/#displaying-logs-in-the-browser">​</a></h4>
<div class="language-typescript codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should show browser console logs"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"log.entryAdded"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> entryAdded </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token constant" style="color:#36acaa">JSON</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">stringify</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">entryAdded</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">execute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Hello Bidi"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/browser-logs-example-e482cecf15edc6e9d060516b6f7c41ca.mp4" width="100%" controls=""><p>Your browser does not support the video tag.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/video/blog/bidi/browser-logs-example.mp4">Download the video</a>.</p></video>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="taking-a-screenshot-of-the-entire-page">Taking a screenshot of the entire page<a class="hash-link" aria-label="Direct link to Taking a screenshot of the entire page" title="Direct link to Taking a screenshot of the entire page" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/#taking-a-screenshot-of-the-entire-page">​</a></h4>
<div class="language-typescript codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> fs </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"node:fs"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should screen full page"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">url</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://www.npmjs.com/"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> tree </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">browsingContextGetTree</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> file </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">browsingContextCaptureScreenshot</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        context</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> tree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">contexts</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">context</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        origin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"document"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    fs</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">writeFileSync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"screenshot.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Buffer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">from</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">data</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"base64"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/screen-full-page-example-dfaa0e41e3a9f5b4d1a46900ff594085.mp4" width="100%" controls=""><p>Your browser does not support the video tag.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/video/blog/bidi/screen-full-page-example.mp4">Download the video</a>.</p></video>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="conclusion">Conclusion<a class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/support-bidi-protocol/#conclusion">​</a></h3>
<p>While the BiDi protocol remains in the <a href="https://www.w3.org/standards/types/#ED" target="_blank" rel="noopener noreferrer">Editor's Draft</a> stage, its potential as the future standard is already clear.
Major browsers like Firefox have taken decisive steps toward adoption, <a href="https://fxdx.dev/deprecating-cdp-support-in-firefox-embracing-the-future-with-webdriver-bidi/" target="_blank" rel="noopener noreferrer">announcing the deprecation of CDP protocol support starting in version 129</a>.</p>
<p>By embracing BiDi protocol support, we're empowering our users with:</p>
<ul>
<li>enhanced test automation capabilities beyond what WebDriver could offer;</li>
<li>freedom from Puppeteer dependencies - eliminating the instability issues we've consistently observed in CDP-based implementations;</li>
<li>Future-proof testing infrastructure by aligning with emerging industry standards</li>
</ul>
<p>We encourage you to upgrade to the latest Testplane version and share your experience. Should you encounter any challenges, our team is ready to assist through <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">GitHub issue</a> - just create a ticket and we'll help resolve it promptly!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Running on Local Browsers]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/local-browsers-intro/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/local-browsers-intro/</guid>
            <pubDate>Thu, 19 Dec 2024 14:00:00 GMT</pubDate>
            <description><![CDATA[Testplane is now able to automatically download browsers for running tests locally. Enjoy a hassle-free start with --local option if you don't need remote browser grid.]]></description>
            <content:encoded><![CDATA[<p>Testplane is now able to automatically download browsers for running tests locally. Enjoy a hassle-free start with <code>--local</code> option if you don't need remote browser grid.</p>
<p>Previously, Testplane with the webdriver automation protocol could only be launched locally with a manually started <a href="https://github.com/webdriverio/selenium-standalone" target="_blank" rel="noopener noreferrer">selenium-standalone</a>. Now, it is enough to specify <code>gridUrl: "local"</code> in the <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/reference/config/main/">Testplane Config</a> or run tests with the <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/reference/cli/">CLI option</a> <code>--local</code>. In this case, if necessary, the corresponding browsers and web drivers will be downloaded before running the tests, and they will also be launched for further use in these tests.</p>
<p>You can also download the browsers and their web drivers separately using the <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/reference/cli/#install-deps">install-deps</a> command.</p>
<p>Example of running tests on local browser with webdriver automation protocol:</p>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/local-browsers-example-84132df96dc43b22051adb0c44a1252c.mp4" width="100%" controls="" autoplay="autoplay"><p>Tag video is not supported by your browser.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/local-browsers-intro/video/blog/local-browsers/local-browsers-example.mp4">Download video</a>.</p></video>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="how-to-use">How to use?<a class="hash-link" aria-label="Direct link to How to use?" title="Direct link to How to use?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/local-browsers-intro/#how-to-use">​</a></h3>
<p>Learn more about this in our documentation <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/basic-guides/managing-browsers/">How to Run Testplane in a Local Browser</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Extension for VS Code]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/</guid>
            <pubDate>Thu, 26 Sep 2024 19:00:00 GMT</pubDate>
            <description><![CDATA[We have implemented an extension for VS Code for Testplane, which allows you to configure Testplane from scratch, run tests, and conveniently work with the REPL mode.]]></description>
            <content:encoded><![CDATA[<p>We have implemented an extension for <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">VS Code</a> for Testplane, which allows you to configure Testplane from scratch, run tests, and conveniently work with the <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/reference/cli#testplane-repl">REPL mode</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="installation">Installation<a class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#installation">​</a></h3>
<p>Install the extension from the <a href="https://marketplace.visualstudio.com/items?itemName=gemini-testing.vscode-testplane" target="_blank" rel="noopener noreferrer">VS Code Marketplace</a> or from the extensions tab in the VS Code IDE.</p>
<p><img decoding="async" loading="lazy" alt="Extension in VS Code IDE" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/testplane-in-extensions-panel-82e3c3cd0858f6cb433cc3bcbe99d12f.png" width="1734" height="540" class="img_ev3q"></p>
<p>After installation, open VS Code in an empty project and enter in the command panel:</p>
<div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">Install Testplane</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonIcon_phi_"><path fill="currentColor" fill-rule="evenodd" d="M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5" clip-rule="evenodd"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="copyButtonSuccessIcon_FfTR"><g fill="currentColor"><path d="m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001z"></path><path fill-rule="evenodd" d="M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1zM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.5 1.5 0 0 0 8 6.5zM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8z" clip-rule="evenodd"></path></g></svg></span></button></div></div></div>
<p><img decoding="async" loading="lazy" alt="Install Testplane" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/testplane-install-7847f5ee48078c237da5ccec1e762810.png" width="1734" height="538" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="running-tests">Running tests<a class="hash-link" aria-label="Direct link to Running tests" title="Direct link to Running tests" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#running-tests">​</a></h3>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="from-the-sidebar-in-the-testing-panel">From the sidebar in the testing panel<a class="hash-link" aria-label="Direct link to From the sidebar in the testing panel" title="Direct link to From the sidebar in the testing panel" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#from-the-sidebar-in-the-testing-panel">​</a></h4>
<p>The testing panel can be opened by clicking on the testing icon in the activity bar.</p>
<p><img decoding="async" loading="lazy" alt="Opening testing panel in activity bar" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/testing-sidebar-f3c667ae110b1c90f9c5c7f2a5ab70d0.png" width="2476" height="814" class="img_ev3q"></p>
<p>On the left side of the screen, a sidebar displays a tree of all read tests. The tree displays from top to bottom:</p>
<ul>
<li>the name of the directory with tests (<code>testplane-tests</code>);</li>
<li>the name of the test file (<code>example.testplane.ts</code>);</li>
<li>the name of the suite (<code>test</code>). In the example, <code>describe</code> from the <a href="https://mochajs.org/#bdd" target="_blank" rel="noopener noreferrer">Mocha BDD interface</a> is used;</li>
<li>the name of the test (<code>example</code>). In the example, <code>it</code> from the <a href="https://mochajs.org/#bdd" target="_blank" rel="noopener noreferrer">Mocha BDD interface</a> is used;</li>
<li>the name of the browser in which the test will be run (<code>chrome</code>).</li>
</ul>
<p>Each element in the tree has a <code>Run Test</code> button. If you click on it at the element:</p>
<ul>
<li>for a directory, file, or suite, all child tests will run in all browsers;</li>
<li>for a test, the selected test will run in all browsers;</li>
<li>for a browser, one test will run in one browser.</li>
</ul>
<p>Example of running tests from the sidebar:</p>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/run-tests-from-sidebar-365f54b83f1337b9a592f73fba8351b9.mp4" width="100%" controls=""><p>The video tag is not supported by your browser.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/video/blog/vscode-extension/run-tests-from-sidebar.mp4">Download the video</a>.</p></video>
<p>You can also run all tests using the <code>Run Tests</code> button.</p>
<p><img decoding="async" loading="lazy" alt="Running all tests" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/run-all-tests-from-sidebar-8887cbe650347cf4bedf0a7c305cb858.png" width="2482" height="810" class="img_ev3q"></p>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="from-a-text-editor">From a text editor<a class="hash-link" aria-label="Direct link to From a text editor" title="Direct link to From a text editor" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#from-a-text-editor">​</a></h4>
<p>If you open a Testplane test in the text editor, a green play button will be displayed next to each suite (<code>describe</code>) and test (<code>it</code>) for launching them. If you click the left mouse button, the test will run in all browsers, and after execution, the result will be displayed as a status icon for the test's pass/fail status.
If you right-click the play button, you can run the test in one of the browsers.</p>
<p>Example of running tests from a text editor:</p>
<video src="/testplane-docs/website-static/24030152194-526-1/assets/medias/run-tests-from-editor-497e76420195f222ccd62cf1c4253b6b.mp4" width="100%" controls=""><p>The video tag is not supported by your browser.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/video/blog/vscode-extension/run-tests-from-editor.mp4">Download the video</a>.</p></video>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="with-the-devtools-settings">With the <code>devtools</code> settings<a class="hash-link" aria-label="Direct link to with-the-devtools-settings" title="Direct link to with-the-devtools-settings" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#with-the-devtools-settings">​</a></h4>
<p>In the sidebar of the testing panel, there is also a section titled Testplane. Here you can manage settings at runtime. By clicking the <code>Enable devtools</code> checkbox and subsequently running tests, browsers will launch using the CDP protocol (regardless of what is specified in the config). You can read more about this mode <a href="https://testplane-ci.website.yandexcloud.net/docs/v8/guides/how-to-use-cdp/">here</a>..</p>
<p><img decoding="async" loading="lazy" alt="Enabling devtools option" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/enable-devtools-0663340d1f8c2c477860e506b65bc54e.png" width="2484" height="820" class="img_ev3q"></p>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="with-the-repl-settings">With the <code>REPL</code> settings<a class="hash-link" aria-label="Direct link to with-the-repl-settings" title="Direct link to with-the-repl-settings" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#with-the-repl-settings">​</a></h4>
<p>When you click the checkbox <code>Enable REPL</code> and subsequently run a test (only one test can be run simultaneously in REPL mode), it will be launched in a special REPL mode. You can read more about this mode <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/reference/cli#testplane-repl">here</a>.</p>
<p><img decoding="async" loading="lazy" alt="Enabling the REPL option" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/enable-repl-469f08c30bc21b937ed861ecae01f191.png" width="2484" height="816" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="filtering-tests-in-the-sidebar-of-the-testing-panel">Filtering tests in the sidebar of the testing panel<a class="hash-link" aria-label="Direct link to Filtering tests in the sidebar of the testing panel" title="Direct link to Filtering tests in the sidebar of the testing panel" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#filtering-tests-in-the-sidebar-of-the-testing-panel">​</a></h3>
<p>To display only tests in a specific browser in the tree, you need to enter the tag <code>@testplane:browser:your_browser_name</code> in the filtering input. To get a suggestion, you can simply type <code>@browser</code>. You can also use multiple tags there.</p>
<p><img decoding="async" loading="lazy" alt="Filter by specified browser" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/filter_sidebar_by_browser-db69a093db0bae138250c26921567d38.png" width="2482" height="814" class="img_ev3q"></p>
<p>You can also use the following values in the filter input:</p>
<ul>
<li>a string with the name of the tree element (directory/file/suite/test/browser);</li>
<li>tag @doc - to display tests from the active file in the text editor;</li>
<li>tag @openedFiles - to display tests in all open files in the text editor;</li>
<li>tag @executed - to display only running tests;</li>
<li>tag @failed - to display only failed tests.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="restarting-the-testplane-environment">Restarting the Testplane Environment<a class="hash-link" aria-label="Direct link to Restarting the Testplane Environment" title="Direct link to Restarting the Testplane Environment" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#restarting-the-testplane-environment">​</a></h3>
<p>You can restart Testplane using the <code>Refresh Tests</code> button in the sidebar. In this case, the config and tests will be re-read. This will be useful if you have added a new test to a file (watching test files is not yet supported) or if a critical error has occurred. The test tree is automatically updated when the config changes.</p>
<p><img decoding="async" loading="lazy" alt="Updating the test tree" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/assets/images/refresh-tests-a2a3718e55dc10c27c05e95359074d9f.png" width="2482" height="820" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="requirements">Requirements<a class="hash-link" aria-label="Direct link to Requirements" title="Direct link to Requirements" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#requirements">​</a></h3>
<ul>
<li>the Testplane version must be 8.20.0 or higher (tests will not run with lower versions).</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="current-limitations">Current Limitations<a class="hash-link" aria-label="Direct link to Current Limitations" title="Direct link to Current Limitations" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#current-limitations">​</a></h3>
<ul>
<li>debug and continuous (auto-run) modes are not supported;</li>
<li>there is no watching for adding/removing tests and files;</li>
<li>using custom Mocha interfaces may lead to incorrect display of icons with the play button for running tests from the text editor.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="conclusion">Conclusion<a class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/vscode-extension/#conclusion">​</a></h3>
<p>This functionality provides our users with new opportunities:</p>
<ul>
<li>the ability to run tests directly from the IDE and view the execution results;</li>
<li>the ability to quickly switch to devtools and REPL mode;</li>
<li>automatically pick up changes made to the Testplane config.</li>
</ul>
<p>Install the Testplane extension for VS Code and provide us with feedback. If you encounter any issues, please visit the <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">GitHub issue</a> — we will definitely help you!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Screenshot testing with Storybook]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/screenshot-testing-with-storybook/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/screenshot-testing-with-storybook/</guid>
            <pubDate>Thu, 26 Sep 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[Now, for automatic visual testing of your components, you only need Storybook with your components and the @testplane/storybook plugin. There’s no need to write any tests anymore.]]></description>
            <content:encoded><![CDATA[<p>Now, for automatic visual testing of your components, you only need Storybook with your components and the <code>@testplane/storybook</code> plugin. There’s no need to write any tests anymore.</p>
<p><a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a> is a tool for developing user interfaces based on components. It allows developers to independently visualize components in various states in an isolated environment, separate from other components.
This "showroom" is perfect for screenshot testing your components, as this isolated environment makes such tests significantly more stable and faster compared to e2e testing.</p>
<p>With the <a href="https://github.com/gemini-testing/testplane-storybook" target="_blank" rel="noopener noreferrer">@testplane/storybook</a> plugin, you can automatically verify changes to your components using screenshot testing without writing a single line of test code.
You just need to describe your component in <code>Storybook</code> and Testplane will automatically generate all necessary tests upon execution, run them in the required browsers and provide a visual report for updating screenshots.
Additionally, if a <a href="https://storybook.js.org/docs/writing-stories/play-function" target="_blank" rel="noopener noreferrer">play function</a> has been declared for the components, Testplane will execute it before the test begins to set the component to the desired state.</p>
<p>However, if these capabilities are not enough, you can directly describe a Testplane test in the story file, which will be executed as an additional test for the component.</p>
<p>How to use it?</p>
<p>Learn more about this in our documentation <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/docs/v8/basic-guides/visual-testing-with-storybook/">Screenshot testing with Storybook</a>.
Also you can try it yourself in our <a href="https://github.com/gemini-testing/testplane/tree/master/examples/storybook-autoscreenshots" target="_blank" rel="noopener noreferrer">example project</a> on GitHub with customized screenshot testing.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Component Testing]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/component-testing-intro/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/component-testing-intro/</guid>
            <pubDate>Mon, 10 Jun 2024 14:00:00 GMT</pubDate>
            <description><![CDATA[In testplane, experimental support for component testing and unit tests running in the browser has been added.]]></description>
            <content:encoded><![CDATA[<p>In testplane, experimental support for component testing and unit tests running in the browser has been added.</p>
<p>Almost all modern web interfaces are built using frameworks (React, Vue, Svelte, ...) to simplify the creation and reuse of components. It is important to test such components in isolation from each other to ensure that each component correctly performs its function. Just as we write unit tests separately from integration tests. Testplane already supports screenshot testing of components using <a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a>, but this tool is not relevant for all projects. Therefore, we developed another option for component testing that does not require the use of Storybook.</p>
<p>This feature can be useful if your project uses React components. At the same time, there are no tests at all or only heavy integration tests are used (i.e., entire pages containing many components are checked). According to the <a href="https://martinfowler.com/articles/practical-test-pyramid.html" target="_blank" rel="noopener noreferrer">testing pyramid</a>, there should be fewer integration tests because they are more prone to "flaps" and often redundant. Many scenarios can be checked using component tests, thereby reducing test execution time in CI and improving their stability.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="component-testing-implementation-options">Component Testing Implementation Options<a class="hash-link" aria-label="Direct link to Component Testing Implementation Options" title="Direct link to Component Testing Implementation Options" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/component-testing-intro/#component-testing-implementation-options">​</a></h3>
<p>Component testing is a type of testing where the logic of a web component is checked in isolation from the web page in which it is used. To perform such a test, you need to be able to correctly render the component. Often, <a href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer">JSDom</a> (used in <a href="https://jestjs.io/" target="_blank" rel="noopener noreferrer">Jest</a>) is used for this task, which renders web components using virtual rendering in Node.js, i.e., without using a real browser. On the one hand, this works faster (the browser is not launched), but on the other hand, it is less stable because the checks are not performed in a real browser. The second popular solution is to use a very fast dev server <a href="https://vitejs.dev/" target="_blank" rel="noopener noreferrer">Vite</a>, which supports many frameworks (React, Vue, Svelte, ...) and is responsible for rendering components in isolation.</p>
<p>We chose the option of using Vite because this approach provides testing of the page closer to reality (as if it were opened by a user). At the same time, the tests themselves run a little longer than in jsdom. But for us, the most important thing is the stability and reproducibility of test results, so the choice was obvious.</p>
<details class="group overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-300/10"><summary class="flex cursor-pointer items-start p-4 font-medium transition-colors duration-200 select-none group-open:bg-neutral-50 hover:bg-neutral-50 dark:group-open:bg-neutral-600/20 dark:hover:bg-neutral-600/10"><span class="flex-1 text-base leading-relaxed [&amp;>p]:mb-0">Brief information on how this is implemented</span><span class="flex h-6 w-6 items-center justify-center rounded-lg bg-neutral-100 text-neutral-500 transition-colors duration-300 group-hover:bg-neutral-200 dark:bg-neutral-600/20 dark:group-hover:bg-neutral-600/30"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-300 group-open:rotate-90"><path fill="currentColor" fill-rule="evenodd" d="M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0" clip-rule="evenodd"></path></svg></span></summary><div class="border-t border-neutral-200 p-4 dark:border-neutral-300/10"><ul>
<li>when specifying the <code>testRunEnv: 'browser'</code> option in the Testplane config, a browser runner will be used, which launches Vite on localhost with a random free port (the user can set the required port in the Vite config). It is on this launched server that all user components will be rendered and all necessary commands/checks will be performed (i.e., directly inside the browser);</li>
<li>then the tests are read in Node.js, i.e., as it is done for integration tests. This is necessary for all plugins to work correctly (we are talking about event triggers when reading tests), as well as to be able to run tests from one file in parallel. If the test were read only in the browser context, it would be necessary to run absolutely all tests inside one file, and a critical failure in one of them would lead to the stopping of all subsequent ones. That is, at this stage, we understand which tests need to be run;</li>
<li>after that, as usual, the necessary browsers are launched, and the tests are run in them. Each test, before executing user code, navigates to the launched Vite server. When such a request is made, a special index.html is generated, into which all necessary libraries are loaded:</li>
<li>mocha — for reading tests;</li>
<li>webdriverio — for using the browser instance inside the browser itself;</li>
<li>expect — for performing checks;</li>
<li>and other internal modules necessary for correct operation.</li>
<li>when opening index.html from Vite, the browser establishes a websocket connection with the Testplane master process to exchange the necessary data. For example, if the construct <code>await browser.$("body").assertView("plain", "body")</code> is called in the browser, it is obvious that it cannot be executed in the browser itself, as access to the file system is required inside <code>assertView</code>. Therefore, the execution of this command is sent to the Testplane master, which in turn sends it to the worker in which this test is running. And it is the worker that executes the command passed to it. When the result is obtained, it is sent back to the browser in the same way. All communication is implemented using the <a href="https://socket.io/" target="_blank" rel="noopener noreferrer">socket.io</a> library;</li>
<li>after that, the specified test begins to run in the browser, which returns the result to the Node.js process upon completion.</li>
</ul></div></details>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="how-to-use">How to use?<a class="hash-link" aria-label="Direct link to How to use?" title="Direct link to How to use?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/component-testing-intro/#how-to-use">​</a></h3>
<p>Read more about it in our documentation <a href="https://testplane-ci.website.yandexcloud.net/docs/v8/guides/component-testing">Component Testing</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="conclusion">Conclusion<a class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/component-testing-intro/#conclusion">​</a></h3>
<p>This functionality provides our users with new capabilities:</p>
<ul>
<li>isolated testing of React components in a real browser;</li>
<li>stability and reproducibility of test results compared to JSDom;</li>
<li>HMR support;</li>
<li>access to browser/expect instances in the browser's DevTools for convenient debugging;</li>
<li>log display in the terminal to enhance comfort and speed up development.</li>
</ul>
<p>Switch to Testplane and try the new feature yourself. If you encounter any problems, come to the <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue github</a> — we will definitely help you!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rebranding]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-rebranding/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/blog/testplane-rebranding/</guid>
            <pubDate>Mon, 20 May 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[We present to your attention... Testplane. Our project Hermione has decided to change its name — meet the time-tested product in a fresh look!]]></description>
            <content:encoded><![CDATA[<p>We present to your attention... <strong>Testplane</strong>. Our project Hermione has decided to change its name — meet the time-tested product in a fresh look!</p>
<p>We carefully considered all the pros and cons and concluded that the new name — Testplane — best reflects our vision and future development of the product:</p>
<ol>
<li>We plan to actively invest in the development of the tool in open source. The new name symbolizes a qualitative leap in the development of the tool.</li>
<li>We aim to create a full-fledged brand with a trademark, logo, and corporate visual style. Testplane is a name that both references a "test flight" and can be read as "a plane for testing."</li>
</ol>
<p>The essence of the product remains unchanged. Testplane is the same project you have known for many years as Hermione, but in a fresh, updated form. To simplify the transition, we decided to maintain continuous version numbering: Testplane v8.x is equivalent to Hermione v8.x.</p>
<p>If you are already working with Hermione, updating to Testplane will take just a few minutes. We designed it as a drop-in replacement:</p>
<ul>
<li>Full support for existing Hermione plugins.</li>
<li>Understanding of all Hermione options and environment variables.</li>
<li>Full configuration compatibility.</li>
<li>Two binary files (testplane and hermione) for a smooth transition (you can run both as hermione gui and as testplane gui).</li>
<li>Type export for TypeScript, including both Testplane's own types and Hermione's types (including hermioneCtx).</li>
</ul>
<p>If you haven't tried Testplane yet — check out our documentation and start your exploration with Testplane in just a few minutes!</p>
<p>Thank you for your interest in the project! ✈️</p>]]></content:encoded>
        </item>
    </channel>
</rss>