<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/</id>
    <title>Testplane Blog</title>
    <updated>2026-05-15T17:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/"/>
    <subtitle>Testplane Blog</subtitle>
    <icon>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Testplane CLI и Skill]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/"/>
        <updated>2026-05-15T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Сегодня мы рады представить новый набор инструментов для работы AI-агентов с Testplane: Testplane CLI, Testplane Skill и крупные обновления доступных возможностей.]]></summary>
        <content type="html"><![CDATA[<p>Сегодня мы рады представить новый набор инструментов для работы AI-агентов с Testplane: Testplane CLI, Testplane Skill и крупные обновления доступных возможностей.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/cover-ac62fe277113288f11927db80c5e9057.png" width="1672" height="941" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="testplane-skill">Testplane Skill<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#testplane-skill" class="hash-link" aria-label="Прямая ссылка на Testplane Skill" title="Прямая ссылка на Testplane Skill" translate="no">​</a></h2>
<p>Данный skill рассказывает агентам, как эффективно работать с тестами Testplane, использовать браузер через <code>@testplane/cli</code> и работать с отчетами для отладки.</p>
<p>Добавьте skill в систему командой:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx skills add gemini-testing/testplane-skill</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буф�ер обмена" title="Скопировать" 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>Skill загружается агентами только когда релевантен запросу, поэтому не засоряет контекст зря.</p>
<p>При работе с тестами он дает агенту инструкции, например: исследовать приложение перед написанием тестов, использовать реальные селекторы из браузера, переиспользовать project helpers, избегать <code>browser.pause()</code>, открывать отчеты через <code>@testplane/cli</code> для отладки, использовать CLI для отладки тестов через REPL и многое другое.</p>
<p>Также он учит агента использовать <code>@testplane/cli</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli navigate http://localhost:3000</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli click --role button --name "Save"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli snapshot</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Это превращает размытый запрос вроде "почини этот flaky checkout-тест" в более четкий цикл работы. Агент может воспроизвести состояние страницы, исследовать DOM, обновить тест и перезапустить самый узкий релевантный набор команд.</p>
<p>Подробнее о Testplane Skill читайте <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/ai/toolkit/testplane-skill/">в документации</a> или на странице skill в <a href="https://www.skills.sh/gemini-testing/testplane-skill/testplane-skill" target="_blank" rel="noopener noreferrer" class="">skills.sh</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="testplane-cli">Testplane CLI<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#testplane-cli" class="hash-link" aria-label="Прямая ссылка на Testplane CLI" title="Прямая ссылка на Testplane CLI" translate="no">​</a></h2>
<p>Testplane CLI позволяет пользователям и агентам управлять браузером из терминала. Он также является основой браузерных workflow в Testplane Skill.</p>
<p>Установите его в проект:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npm install --save-dev @testplane/cli</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Или запускайте напрямую:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli@latest --help</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>По умолчанию CLI запускает браузеры в headless-режиме. Если хотите наблюдать браузер во время отладки, сначала запустите видимую сессию:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli launch --headless false</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Базовая браузерная сессия выглядит так:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli navigate https://example.com</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli snapshot</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<details class="group mb-6 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">Пример вывода команды navigate</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-text 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"><div class="token-line" style="color:#393A34"><span class="token plain">Successfully navigated to https://example.com</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Testplane Code</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">await browser.openAndWait("https://example.com");</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Browser Tabs</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  1. Title: Example Domain; URL: https://example.com/ (current)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Current Tab Snapshot</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">The snapshot was saved to: /tmp/.testplane/snapshots/2026-05-14T21-24-40-811Z.yml</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<details class="group mb-6 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</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-text 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"><div class="token-line" style="color:#393A34"><span class="token plain">Page snapshot captured successfully</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Current Tab Snapshot</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- body:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> - div:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  - h1 "Example Domain"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  - p "This domain is for use in documentation examples without needing permission. Avoid use in operations..."</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  - p:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   - a[href=https://iana.org/domains/example] "Learn more"</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<p>Snapshots в первую очередь текстовые и оптимизированы для агентов. Они по умолчанию убирают шумные теги и атрибуты, обрезают очень длинный текст и сохраняют большие снимки во временный файл вместо того, чтобы заливать терминал большим объемом вывода.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="интеграция-с-html-reporter">Интеграция с HTML Reporter<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%81-html-reporter" class="hash-link" aria-label="Прямая ссылка на Интеграция с HTML Reporter" title="Прямая ссылка на Интеграция с HTML Reporter" translate="no">​</a></h2>
<p>Новая интеграция с HTML Reporter позволяет агентам исследовать <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/html-reporter/overview/">отчеты Testplane</a> с помощью CLI. Они работают как с локальными отчетами, так и удаленными — работать с отчетами из CI можно так же удобно, как и с локальными.</p>
<p>Удаленные отчеты автоматически скачиваются и кэшируются. Агент может запросить упавшие тесты, исследовать конкретный прогон и посмотреть на ошибку, шаги, изображения, метаданные и вложения, которые важны для исправления.</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli test-results ./html-report --status failed --grep checkout</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli inspect-result ./html-report --name "checkout submits order" --browser chrome</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<details class="group mb-6 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">Пример вывода test-results для отчета из CI</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-text 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"><div class="token-line" style="color:#393A34"><span class="token plain">Test results in report: https://gh-testplane-ci.s3.yandexcloud.net/testplane-ci/e2e-tests-reports/25706755847-557-1/new-ui.html</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Total tests: 133; total attempts: 133; matched tests: 133</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Total tests counts: passed: 133, failed: 0, muted: 0, retried: 0, skipped: 0</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Matched tests counts: passed: 133, failed: 0, muted: 0, retried: 0, skipped: 0</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Showing 1-4 of 133 matched test results.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">1. success | chrome | attempt 0 | 1.5s | common/error-group.testplane.js</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   testplane Error grouping should group errors</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">2. success | chrome | attempt 0 | 1.7s | common/test-results-appearance.testplane.js</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   testplane Test results appearance Passed test should have green retry selector</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">3. success | chrome | attempt 0 | 1.6s | common/test-results-appearance.testplane.js</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   testplane Test results appearance Test with diff should have pink retry selector</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">4. success | chrome | attempt 0 | 1.4s | common/test-results-appearance.testplane.js</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   testplane Test results appearance Test with diff should display 3 images</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<details class="group mb-6 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">Пример вывода inspect-result</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-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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "status": "success",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "browser": "chrome",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "attempt": 0,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "duration": 1503,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "file": "common/error-group.testplane.js",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "name": "testplane Error grouping should group errors",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "error": null,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "meta": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "url": "http://host.docker.internal:8061/fixtures/testplane/report/",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "file": "common/error-group.testplane.js",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "sessionId": "c5e07ff0b8fdce82785dba4493f5c7b7"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    },</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "steps": [</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "name": "setWindowSize",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["1280", "1024"],</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "duration": 31</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "name": "$",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["[data-qa=\"group-by-dropdown\"]"],</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "duration": 0</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "name": "click",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": [],</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "duration": 79</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    ],</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "images": [],</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "attachments": [</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "type": "snapshot",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "path": "snapshots/e632a64/chrome_1778547952338_0.zip",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "maxWidth": 1280,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "maxHeight": 1024</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    ]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<p>Полный ответ <code>inspect-result</code> включает все шаги, выполненные в ходе теста.</p>
<p>Также есть команда <code>time-travel-snapshot</code> для отчетов с данными Testplane Time Travel. Она воспроизводит снимок в выбранный момент и возвращает DOM-снимок страницы в этом состоянии.</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli time-travel-snapshot ./html-report \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --name "checkout submits order" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --browser chrome \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --time 250 \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --diff-from 100</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Тот же CI-отчет можно исследовать в конкретной точке тестового таймлайна:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli time-travel-snapshot "$REPORT_URL" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --name "testplane Error grouping should group errors" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --browser chrome \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --attempt 0 \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --time 1400 \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --include-attrs data-qa href class \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --max-text-length 80</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<details class="group mb-6 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">Пример вывода time-travel-snapshot</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-text 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"><div class="token-line" style="color:#393A34"><span class="token plain">Time travel snapshot captured</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Source</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Report: https://gh-testplane-ci.s3.yandexcloud.net/testplane-ci/e2e-tests-reports/25706755847-557-1/new-ui.html</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Test: testplane Error grouping should group errors</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Browser: chrome</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Attempt: 0</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Mode: report</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Snapshot source: https://gh-testplane-ci.s3.yandexcloud.net/testplane-ci/e2e-tests-reports/25706755847-557-1/snapshots/e632a64/chrome_1778547952338_0.zip</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Events: 34</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Snapshot range: 1778547952408 (2026-05-12T01:05:52.408Z) - 1778547953911 (2026-05-12T01:05:53.911Z); total 1503ms</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Selected Time</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Reason: provided offset 1400ms from first rrweb event</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Absolute timestamp: 1778547953808 (2026-05-12T01:05:53.808Z)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Offset from first rrweb event: 1400ms</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Requested time: 1400 (offset)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Test Steps</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Times are offsets from the first rrweb event; use them as "time" values.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- +1080ms..+1080ms $("[data-qa=\"group-by-dropdown\"]")</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- +1104ms..+1183ms click</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- +1184ms..+1184ms $("div=error")</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- +1199ms..+1282ms click</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- +1282ms..+1282ms $(".grouped-tests")</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- +1356ms..+1356ms $("span*=tests: 1")</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Snapshot</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- body.report.g-root.g-root_theme_light:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"> - div#app:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  - div.sticky-header__content:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   - div.main-menu.container:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    - div.select.select_type_group:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">     - div.g-select.group-by-dropdown:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      - button[data-qa=group-by-dropdown role=combobox]:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">       - span.g-select-control__option-text "error"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  - main.container:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">   - div.grouped-tests:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    - div.tests-group.tests-group_collapsed:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">     - span.tests-group__name "image comparison failed"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">     - span.tests-group__count "( tests: 1, runs: 2 )"</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<p>Это полезно, когда у вас есть упавшие тесты в CI-отчете и вы хотите, чтобы агент проанализировал падения. Агент может происследовать воспроизведенный DOM и решить, нужно менять тест или сломалось поведение тестируемого сервиса.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="интеграция-с-repl">Интеграция с REPL<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%81-repl" class="hash-link" aria-label="Прямая ссылка на Интеграция с REPL" title="Прямая ссылка на Интеграция с REPL" translate="no">​</a></h2>
<p>Testplane CLI может подключаться к запущенной REPL-сессии Testplane:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli attach-repl --port 4444</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>После подключения CLI может снимать снапшоты и выполнять код Testplane через REPL:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli snapshot</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli run-code "await browser.getUrl()"</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Это удобный режим отладки, когда тест уже привел браузер в нужное состояние. Агент может подключиться, исследовать страницу, выполнять код Testplane в интерактивном режиме.</p>
<p>Одна из ключевых сильных сторон REPL-режима в том, что агент остается внутри runtime вашего проекта. Это значит, что он может использовать существующие page object'ы, кастомные команды и хелперы вместо повторной реализации поведения через низкоуровневые вызовы браузера.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="работа-с-auth">Работа с auth<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-auth" class="hash-link" aria-label="Прямая ссылка на Работа с auth" title="Прямая ссылка на Работа с auth" translate="no">​</a></h2>
<p>В CLI теперь есть команды для состояния браузера. Запускайте их после открытия или подключения к браузерной сессии:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli save-state ./tmp/auth-state.json</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli restore-state ./tmp/auth-state.json</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Сохраненное состояние включает cookies, localStorage и sessionStorage. При сохранении можно отключить любую часть:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli save-state ./tmp/auth-state.json --cookies false</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Это дает агентам безопасный способ переиспользовать аутентифицированное состояние браузера.</p>
<p>Сам файл состояния может содержать чувствительные данные, поэтому не добавляйте его в git и работайте с ним с осторожностью.</p>
<p>Это новый подход к работе с чувствительными данными в дополнение к существующему сценарию, где код теста подготавливает браузер и оставляет браузер агенту через <code>--keep-browser</code>. Также для этого сценария можно использовать REPL-интеграцию, описанную выше.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="новые-инструменты-взаимодействия-с-браузером">Новые инструменты взаимодействия с браузером<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B-%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D1%81-%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BE%D0%BC" class="hash-link" aria-label="Прямая ссылка на Новые инструменты взаимодействия с браузером" title="Прямая ссылка на Новые инструменты взаимодействия с браузером" translate="no">​</a></h2>
<p><code>select</code> работает с нативными элементами <code>&lt;select&gt;</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli select "#country" --visible-text "Germany"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli select --label-text "Country" --value de</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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><code>console</code> читает новые (еще не полученные ранее) сообщения консоли браузера из Chromium-сессий:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli console</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<details class="group mb-6 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">Пример вывода console</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-text 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"><div class="token-line" style="color:#393A34"><span class="token plain">Retrieved 5 unseen browser console messages</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Testplane Code</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">const consoleMessages = await browser.getLogs("browser");</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Browser Tabs</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  1. Title: javascript - Load page on selection from dropdown form - Stack Overflow; URL: https://stackoverflow.com/questions/10175445/load-page-on-selection-from-dropdown-form (current)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">## Additional Information</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">1. [2026-05-14T22:23:40.793Z] WARNING (security): Error with Feature-Policy header: Unrecognized feature: 'speaker'.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">2. [2026-05-14T22:23:42.789Z] WARNING (console-api): "[GPT] PubAdsService.setForceSafeFrame is deprecated..."</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">3. [2026-05-14T22:23:43.883Z] SEVERE (other): Not signed in with the identity provider.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">4. [2026-05-14T22:23:44.059Z] SEVERE (javascript): Access to fetch at 'https://id5-sync.com/api/config/prebid' from origin 'https://stackoverflow.com' has been blocked by CORS policy.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">5. [2026-05-14T22:23:44.059Z] SEVERE (network): Failed to load resource: net::ERR_FAILED</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>
<p><code>navigate</code> принимает таймаут, что полезно для медленных локальных приложений и CI-окружений:</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"><div class="token-line" style="color:#393A34"><span class="token plain">npx @testplane/cli navigate http://localhost:3000 --timeout 60000</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Навигация после действий тоже улучшилась. Когда клик или другое действие меняет страницу, ответ формируется из итогового состояния браузера, поэтому следующий снапшот отражает то место, где браузер действительно оказался.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="testplane-mcp">Testplane MCP<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#testplane-mcp" class="hash-link" aria-label="Прямая ссылка на Testplane MCP" title="Прямая ссылка на Testplane MCP" translate="no">​</a></h2>
<p>Все эти возможности также доступны через Testplane MCP. MCP-сервер и CLI импортируют общий пакет <code>@testplane/tools</code>, поэтому их функциональность полностью синхронизирована.</p>
<p>Используйте MCP-сервер в MCP-совместимом клиенте с такой конфигурацией:</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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Используйте CLI, когда нужен доступ к браузеру из терминала или для скриптов. Используйте MCP, когда хотите видеть доступные инструменты в редакторе или другом MCP клиенте.</p>
<p>В обоих случаях важна одна и та же идея: агенты теперь могут работать с реальным состоянием браузера и реальными данными отчетов Testplane, а не гадать только по исходному коду.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="что-дальше">Что дальше?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/cli-and-skill/#%D1%87%D1%82%D0%BE-%D0%B4%D0%B0%D0%BB%D1%8C%D1%88%D0%B5" class="hash-link" aria-label="Прямая ссылка на Что дальше?" title="Прямая ссылка на Что дальше?" translate="no">​</a></h2>
<p>Надеемся, новые инструменты помогут вам сделать браузерное тестирование более прозрачным, отлаживаемым и просто приятным процессом.</p>
<p>Попробуйте на одной реальной задаче: отладка упавшего отчета, flaky-теста или страницы, где сложно угадать селекторы. Больше идей, практических рекомендаций и примеров того, как можно использовать эти инструменты, — на странице <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/ai/toolkit/testplane-cli/">документации AI инструментов</a>.</p>
<p>Если что-то ощущается неудобным — пишите, мы всегда рады <a href="https://github.com/gemini-testing/testplane-mcp/issues" target="_blank" rel="noopener noreferrer" class="">вашему фидбеку</a>.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Селективность запуска тестов]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/selectivity-intro/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/selectivity-intro/"/>
        <updated>2025-12-03T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[В Testplane добавлена селективность запуска тестов — возможность автоматически запускать только те тесты, для которых изменились файлы, от которых они зависят.]]></summary>
        <content type="html"><![CDATA[<p>В Testplane добавлена селективность запуска тестов — возможность автоматически запускать только те тесты, для которых изменились файлы, от которых они зависят.</p>
<p>Селективность позволяет значительно ускорить процесс тестирования, запуская только релевантные тесты вместо всего набора. Testplane отслеживает зависимости каждого теста от файлов проекта — как код самих тестов, так и код, выполняемый в браузере — и при изменении файла запускает только те тесты, которые от него зависят.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="как-использовать">Как использовать<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/selectivity-intro/#%D0%BA%D0%B0%D0%BA-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C" class="hash-link" aria-label="Прямая ссылка на Как использовать" title="Прямая ссылка на Как использовать" translate="no">​</a></h3>
<p>Узнайте больше об этом в нашей документации <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/guides/selectivity/">Как настроить селективность при запуске тестов</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="заключение">Заключение<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/selectivity-intro/#%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" translate="no">​</a></h3>
<p>Обновляйтесь на версию Testplane 8.36.0 или более позднюю и попробуйте селективность в своих проектах! В случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer" class="">issue github</a> — мы вам обязательно поможем!</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testplane vs Playwright: Полное сравнение инструментов для автоматизации тестирования]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/"/>
        <updated>2025-11-10T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Детальное сравнение Testplane и Playwright: преимущества, недостатки и рекомендации по выбору подходящего инструмента для проекта]]></summary>
        <content type="html"><![CDATA[<p>И <strong>Testplane</strong>, и <strong>Playwright</strong> — это решения для end-to-end тестирования, но они имеют разные подходы и возможности. В этой статье мы проведём детальное сравнение этих инструментов, чтобы помочь вам сделать правильный выбор.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="краткий-обзор-инструментов">Краткий обзор инструментов<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9-%D0%BE%D0%B1%D0%B7%D0%BE%D1%80-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2" class="hash-link" aria-label="Прямая ссылка на Краткий обзор инструментов" title="Прямая ссылка на Краткий обзор инструментов" translate="no">​</a></h2>
<p><strong>Testplane</strong> — это инструмент для автоматизации тестирования веб-приложений, разработанный командой Яндекса. Он активно используется как в крупных, так и в небольших проектах компании и поддерживает широкий спектр браузеров и устройств.</p>
<p><strong>Playwright</strong> — инструмент от Microsoft, который быстро завоевал популярность благодаря своей простоте использования и современному подходу к автоматизации.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="ключевые-различия">Ключевые различия<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5-%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Ключевые различия" title="Прямая ссылка на Ключевые различия" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="поддержка-браузеров-и-мобильных-устройств">Поддержка браузеров и мобильных устройств<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BE%D0%B2-%D0%B8-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2" class="hash-link" aria-label="Прямая ссылка на Поддержка браузеров и мобильных устройств" title="Прямая ссылка на Поддержка браузеров и мобильных устройств" translate="no">​</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>подсказка</div><div class="admonitionContent_BuS1"><p>Testplane поддерживает как десктопные браузеры, так и мобильные устройства</p></div></div>
<p>Одним из ключевых преимуществ Testplane является его универсальность в работе с десктопными браузерами и мобильными устройствами. В отличие от Playwright, который фокусируется на современных десктопных браузерах последних версий, Testplane предоставляет полноценную поддержку как старых, так и новых версий браузеров.
Это важно для компаний, которые работают с пользователями, использующими устаревшие браузеры. Полное сравнение двух подходов можно посмотреть в таблице ниже:</p>
<table><thead><tr><td><strong>Критерий</strong></td><td><strong>Testplane</strong></td><td><strong>Playwright</strong></td><td><strong>Почему это важно</strong></td></tr></thead><tbody><tr><td>Источник браузеров</td><td>Оригинальные бинарники от браузерных вендоров</td><td>Кастомные сборки</td><td>Максимальная приближённость к реальным устройствам</td></tr><tr><td>Версии браузеров</td><td>Любые — от legacy до новейших</td><td>Версия браузера привязана к версии Playwright</td><td><p>Одновременное покрытие пользователей как на новых, так и на устаревших браузерах</p></td></tr><tr><td>Мобильные устройства</td><td>Android и iOS: браузеры + нативные приложения</td><td>Нет</td><td>Единый стек для десктопа и мобильных устройств</td></tr><tr><td>Удаленный грид</td><td>Selenium Grid/Selenoid/BrowserStack/SauceLabs (любой удаленный грид)</td><td><p>Официально — платный Microsoft Playwright Testing; Удаленный грид — с помощью хака,
без гарантий</p></td><td>Масштабируемость и использование своего грида</td></tr><tr><td>Протоколы</td><td>CDP; WebDriver (W3C); WebDriver BiDi</td><td>Собственный кастомный протокол; CDP (Chromium); WebDriver — нет</td><td>Совместимость с браузерами и гибкость интеграций</td></tr></tbody></table>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="визуальное-тестирование">Визуальное тестирование<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%B2%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Прямая ссылка на Визуальное тестирование" title="Прямая ссылка на Визуальное тестирование" translate="no">​</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>подсказка</div><div class="admonitionContent_BuS1"><p>Testplane предлагает продвинутые возможности для визуального тестирования</p></div></div>
<p>В области визуального (скриншотного) тестирования Testplane демонстрирует явное превосходство над Playwright.
Под капотом инструмент использует собственную библиотеку <a href="https://github.com/gemini-testing/looks-same" target="_blank" rel="noopener noreferrer" class="">looks-same</a> для сравнения скриншотов, которая <a href="https://github.com/gemini-testing/looks-same/blob/master/benchmark/results.md" target="_blank" rel="noopener noreferrer" class="">быстрее</a> и точнее текущих конкурентов:</p>
<ul>
<li class="">Ожидание загрузки элементов перед скриншотом, чтобы исключить нестабильность в тесте;</li>
<li class="">Отключение анимации на странице;</li>
<li class="">Гибкая настройка чувствительности скриншотного тестирования — <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/config/browsers/#tolerance">tolerance</a>, <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/config/browsers/#antialiasing_tolerance">anti-aliasing tolerance</a>, игнорирование фиксированного количества пикселей;</li>
<li class="">Используется 3 уровня сравнения для оптимизации скорости;</li>
<li class="">Разнообразные <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/html-reporter/overview/">виды визуализации различий между скриншотами</a> для удобной отладки, в т.ч. и подсветка мелких диффов;</li>
<li class="">Игнорирование элементов на скриншоте при необходимости.</li>
</ul>
<p>Testplane предоставляет удобный <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/html-reporter/overview/">интерфейс</a> для массового принятия скриншотов, что ускоряет процесс обновления эталонных изображений.
Также, если в проекте пользователя настроен <a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer" class="">Storybook</a>, то Testplane предоставляет <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/basic-guides/visual-testing-with-storybook/">автоматическую генерацию скриншотных тестов</a>, что позволяет быстро покрыть визуальными проверками все компоненты проекта <strong>без написания кода</strong>.</p>
<p>Playwright предлагает лишь базовую поддержку скриншотного тестирования с ограниченными возможностями и менее удобным интерфейсом для работы со скриншотами. Это делает его менее подходящим для проектов, где важно визуальное тестирование.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="отчет-для-работы-с-тестами">Отчет для работы с тестами<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%BE%D1%82%D1%87%D0%B5%D1%82-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%82%D0%B5%D1%81%D1%82%D0%B0%D0%BC%D0%B8" class="hash-link" aria-label="Прямая ссылка на Отчет для работы с тестами" title="Прямая ссылка на Отчет для работы с тестами" translate="no">​</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>подсказка</div><div class="admonitionContent_BuS1"><p>У Testplane есть мощный UI для работы с тестами в самых различных сценариях</p></div></div>
<p>Testplane имеет графический интерфейс, который не просто показывает результаты выполнения ваших тестов, но и предоставляет широкие возможности для работы с ними.</p>
<p>Этот отчет прекрасно подходит как для локальной работы, так и для использования в CI. Он предлагает единый интерфейс для выполнения различных задач:</p>
<ul>
<li class="">Запуск тестов непосредственно из UI;</li>
<li class="">Отладка с помощью <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/basic-guides/time-travel/">Time Travel</a> (пошагового воспроизведения тестов);</li>
<li class="">Анализ производительности тестов;</li>
<li class="">Обновление эталонных изображений при скриншотном тестировании;</li>
<li class="">Объединение нескольких отчетов в один;</li>
<li class="">Повторное использование результатов из CI.</li>
</ul>
<p>Особенно важно, что отчёт Testplane способен эффективно работать с тысячами тестов, не теряя производительности. А система плагинов позволяет кастомизировать отчёты под специфические потребности команды.</p>
<p>Со всеми возможностями отчета можно ознакомиться в разделе <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/html-reporter/overview/">UI</a> сайта <a href="https://testplane.io/" target="_blank" rel="noopener noreferrer" class="">https://testplane.io</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="взаимодействие-с-ии">Взаимодействие с ИИ<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5-%D1%81-%D0%B8%D0%B8" class="hash-link" aria-label="Прямая ссылка на Взаимодействие с ИИ" title="Прямая ссылка на Взаимодействие с ИИ" translate="no">​</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>подсказка</div><div class="admonitionContent_BuS1"><p>Testplane MPC помогает ИИ-агентам писать стабильные новые тесты и чинить существующие</p></div></div>
<p><a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/ai/toolkit/testplane-mcp/">Testplane MCP</a> — это инструмент, который позволяет ИИ-агентам погрузиться в контекст того, что происходит в браузере, выполнять действия и создавать или чинить тесты, основываясь на реальном состоянии страницы.
С помощью Testplane MCP пользователи могут не только создавать рабочие и стабильные тесты, но и быстро исправлять уже существующие. Testplane MPC позволяет подключиться к браузеру в ходе выполнения вашего теста, чтобы отладить или изменить его. Это значительно сокращает время, затрачиваемое на исправление нестабильных тестов.
Кроме того, Testplane MCP предоставляет возможность запускать браузер в режиме эмуляции мобильных устройств. Например, можно сказать "Открой страницу example.com с помощью Testplane MCP на iPhone 15" или указать явно какой User Agent нужно указать при создании браузерной сессии.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="расширяемость-и-интеграции">Расширяемость и интеграции<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D1%8F%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C-%D0%B8-%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%B8" class="hash-link" aria-label="Прямая ссылка на Расширяемость и интеграции" title="Прямая ссылка на Расширяемость и интеграции" translate="no">​</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>подсказка</div><div class="admonitionContent_BuS1">Testplane предоставляет больше возможностей для кастомизации</div></div>
<p>Архитектура Testplane построена с учётом потребностей в кастомизации и интеграции. Богатая <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/testplane-events/">событийная модель</a> предоставляет множество точек расширения, позволяя разработчикам внедрять собственную логику на любом этапе выполнения тестов. Это особенно важно для проектов, где требуется интеграция с внутренними системами мониторинга, отчётности и управления качеством.
Также Testplane предоставляет JS API, которое позволяет создавать собственные раннеры, адаптированные под специфические потребности проекта.</p>
<p>Playwright, несмотря на свою популярность, предлагает меньше точек расширения и требует самостоятельной разработки большинства интеграций. Это увеличивает время на внедрение и поддержку инструмента в корпоративной среде.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="масштабирование-и-производительность">Масштабирование и производительность<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="hash-link" aria-label="Прямая ссылка на Масштабирование и производительность" title="Прямая ссылка на Масштабирование и производительность" translate="no">​</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>подсказка</div><div class="admonitionContent_BuS1">Testplane проверен на крупных проектах с миллионами тестов</div></div>
<p>Архитектура Testplane изначально проектировалась для работы с большими объёмами тестов, что обеспечивает стабильную работу даже при значительном росте тестового покрытия. Это особенно важно для долгосрочных проектов, где количество тестов постоянно увеличивается.
Поддержка удалённого грида браузеров (например, BrowserStack, SauceLabs и т.д.) позволяет эффективно распределять выполнение тестов по множеству машин, обеспечивая быстрое выполнение даже очень больших тестовых наборов.
Также Testplane позволяет масштабировать запуски за счет шардирования, запуская тесты на разных машинах. При этом, в результате пользователю будет предоставлен единый отчет с результатами пройденных тестов.</p>
<p>Playwright также имеет возможности для масштабирования в виде шардирования из коробки. Масштабирование за счет удаленного грида предоставляется только в виде платного сервиса <a href="https://learn.microsoft.com/en-us/azure/playwright-testing/" target="_blank" rel="noopener noreferrer" class="">Microsoft Playwright Testing</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="обновления-и-стабильность">Обновления и стабильность<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D1%81%D1%82%D0%B0%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="hash-link" aria-label="Прямая ссылка на Обновления и стабильность" title="Прямая ссылка на Обновления и стабильность" translate="no">​</a></h3>
<p>Testplane обеспечивает высокую стабильность благодаря продуманному подходу к управлению зависимостями. Обновления инструмента полностью отвязаны от обновлений браузеров, что позволяет командам контролировать процесс миграции и избегать неожиданных поломок в CI/CD пайплайнах. Использование стабильных версий браузеров минимизирует количество проблем с переснятием скриншотов, что особенно важно для проектов с большим количеством визуальных тестов.
Такой подход обеспечивает предсказуемость поведения тестов и снижает затраты на поддержку инфраструктуры тестирования. Команды могут планировать обновления браузеров независимо от обновлений самого инструмента тестирования, что даёт больше гибкости в управлении техническим долгом.</p>
<p>Playwright же связывает обновления инструмента с обновлениями браузеров, что может приводить к неожиданным изменениям в поведении тестов. Это создаёт дополнительную нагрузку на команды разработки, которым приходится чаще пересматривать и обновлять скриншоты, особенно в проектах с активной разработкой интерфейса.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="рекомендации-по-выбору">Рекомендации по выбору<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8-%D0%BF%D0%BE-%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D1%83" class="hash-link" aria-label="Прямая ссылка на Рекомендации по выбору" title="Прямая ссылка на Рекомендации по выбору" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="выбирайте-playwright-если">Выбирайте Playwright, если:<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%B2%D1%8B%D0%B1%D0%B8%D1%80%D0%B0%D0%B9%D1%82%D0%B5-playwright-%D0%B5%D1%81%D0%BB%D0%B8" class="hash-link" aria-label="Прямая ссылка на Выбирайте Playwright, если:" title="Прямая ссылка на Выбирайте Playwright, если:" translate="no">​</a></h3>
<p>✅ Достаточно тестирования только в самых последних десктопных браузерах<br>
<!-- -->✅ Уверены, что не потребуется поддержка старых версий браузеров<br>
<!-- -->✅ Не нужно визуальное тестирование</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="выбирайте-testplane-если">Выбирайте Testplane, если:<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-vs-playwright/#%D0%B2%D1%8B%D0%B1%D0%B8%D1%80%D0%B0%D0%B9%D1%82%D0%B5-testplane-%D0%B5%D1%81%D0%BB%D0%B8" class="hash-link" aria-label="Прямая ссылка на Выбирайте Testplane, если:" title="Прямая ссылка на Выбирайте Testplane, если:" translate="no">​</a></h3>
<p>✅ Важно визуальное тестирование с удобным отчётом<br>
<!-- -->✅ В будущем потребуется масштабирование<br>
<!-- -->✅ Важна кастомизация под специфические нужды<br>
<!-- -->✅ Необходимо тестирование в широком спектре десктопных браузеров и мобильных устройств<br>
<!-- -->✅ Требуется тестирование нативных приложений Android и iOS</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testplane MCP]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/"/>
        <updated>2025-06-16T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Рады представить Testplane MCP — проект, который позволяет AI-агентам быть в контексте происходящего в браузере, совершать действия и генерировать тесты с учетом реального состояния страницы.]]></summary>
        <content type="html"><![CDATA[<p>Рады представить Testplane MCP — проект, который позволяет AI-агентам быть в контексте происходящего в браузере, совершать действия и генерировать тесты с учетом реального состояния страницы.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/cover-08283a8892b3497f2f3aa36a317dec04.png" width="1536" height="1024" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="какие-возможности-открывает-testplane-mcp">Какие возможности открывает Testplane MCP?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/#%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D1%82-testplane-mcp" class="hash-link" aria-label="Прямая ссылка на Какие возможности открывает Testplane MCP?" title="Прямая ссылка на Какие возможности открывает Testplane MCP?" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="значительное-улучшение-генерации-тестов">Значительное улучшение генерации тестов<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/#%D0%B7%D0%BD%D0%B0%D1%87%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2" class="hash-link" aria-label="Прямая ссылка на Значительное улучшение генерации тестов" title="Прямая ссылка на Значительное улучшение генерации тестов" translate="no">​</a></h3>
<p>Представим, что мы добавили в приложение новую функциональность и теперь хотим сгенерировать тесты на неё с помощью AI-агента. Ранее, AI-агент мог лишь предположить как выглядит эта страница — селекторы, скорее всего, получились бы вымышленными, и тест требовал бы серьезных правок.</p>
<p>Testplane MCP выводит этот процесс на новый уровень: AI-агент во время написания теста может открыть нужную страницу в браузере, посмотреть на её верстку или выполнить любые действия (например, нажать на кнопку или заполнить форму).</p>
<p>В результате AI-агент может сгенерировать тест имея полный контекст происходящего в браузере — включая селекторы, которые действительно есть на странице.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="использование-браузера-ai-агентами">Использование браузера AI-агентами<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%B0-ai-%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8" class="hash-link" aria-label="Прямая ссылка на Использование браузера AI-агентами" title="Прямая ссылка на Использование браузера AI-агентами" translate="no">​</a></h3>
<p>Testplane MCP делает возможным автоматизировать повторяющиеся процессы. Например, можно построить воркфлоу для извлечения информации из фото чеков, после чего с помощью Testplane MCP заходить на панель управления своей организации и заполнять форму отчета с соответствующей информацией (наименование, количество, цена и т.д.).</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="установка">Установка<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0" class="hash-link" aria-label="Прямая ссылка на Установка" title="Прямая ссылка на Установка" translate="no">​</a></h2>
<p>Необходимо добавить сервер Testplane MCP в конфигурацию вашей IDE.</p>
<div class="theme-tabs-container 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>Откройте настройки Cursor (кнопка в правом верхнем углу IDE), в секции <code>MCP</code> нажмите на кнопку <code>Add new global MCP server</code>, добавьте в конфиг Testplane MCP как в примере ниже.</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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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 class="">Установите <a href="https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev" target="_blank" rel="noopener noreferrer" class="">расширение Cline</a>.</li>
<li class="">На вкладке расширения необходимо перейти на вкладу "MCP" и нажать "Configure MCP Servers".
<img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/cline-setup-638e0a1615dd9652b8743094a305e529.png" width="1322" height="830" class="img_ev3q"></li>
<li class="">Добавьте в конфиг Testplane MCP как в примере ниже.<!-- -->
<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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Откройте настройки VS Code, введите в поиск <code>MCP</code>, нажмите на <code>Edit in settings.json</code>, добавьте в конфиг Testplane MCP как в примере ниже.</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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "inputs": [],</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "servers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Откройте настройки <a href="https://modelcontextprotocol.io/quickstart/user" target="_blank" rel="noopener noreferrer" class="">как показано в оф. документации</a>, добавьте в конфиг Testplane MCP как в примере ниже.</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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Откройте настройки <a href="https://docs.windsurf.com/windsurf/cascade/mcp" target="_blank" rel="noopener noreferrer" class="">как показано в оф. документации</a>, добавьте в конфиг Testplane MCP как в примере ниже.</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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>Откройте настройки <a href="https://www.jetbrains.com/help/ai-assistant/configure-an-mcp-server.html" target="_blank" rel="noopener noreferrer" class="">как показано в оф. документации</a>, добавьте в конфиг Testplane MCP как в примере ниже.</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"><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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>После установки AI-агент сможет использовать Testplane MCP, можно прямо указать на это в промпте: "Используй testplane mcp, чтобы открыть страницу ...".</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="использование">Использование<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Прямая ссылка на Использование" title="Прямая ссылка на Использование" translate="no">​</a></h2>
<p>Рассмотрим кейс разработки интернет-магазина книг. Представим, что у нас появилась новая фича — отображение оценок книг и мы хотим сгенерировать тесты на эту фичу.</p>
<p>Сначала попросим AI-агента проанализировать страницу и составить план тестирования.</p>
<video src="/testplane-docs/website-static/29034546532-593-1/ru/assets/medias/investigate-5b81e51b32431e8ed39f891a658c59ec.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/video/blog/mcp/investigate.mp4">Скачайте видео</a>.</p></video>
<br>
<p>Теперь попробуем сгенерировать тесты и запустить их.</p>
<video src="/testplane-docs/website-static/29034546532-593-1/ru/assets/medias/generate-46821c8f2a645796edeac858059c7e25.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/video/blog/mcp/generate.mp4">Скачайте видео</a>.</p></video>
<br>
<p>Как мы видим, AI-агент с первого раза сгенерировал тесты, которые проходят и содержат корректные селекторы.</p>
<p>Вы можете попробовать такой промпт для генерации тестов с использованием Testplane MCP:</p>
<blockquote>
<p>Используй testplane mcp, чтобы открыть страницу <code>https://ya.ru</code>, выполни поиск по запросу "котики", проверь, что результаты поиска отображаются.</p>
<p>Не пиши лишние комментарии в тестах, кроме сложных краевых случаев. Пиши тесты в соответствии со стилем проекта.</p>
<p>Старайся использовать семантические селекторы, например, по атрибутам <code>data-testid</code> или тексту элемента вместо сложных CSS-селекторов.</p>
</blockquote>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="особенности-реализации">Особенности реализации<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/mcp-release/#%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8" class="hash-link" aria-label="Прямая ссылка на Особенности реализации" title="Прямая ссылка на Особенности реализации" translate="no">​</a></h2>
<p>Testplane MCP — не единственная реализация возможности взаимодействия AI-агента с браузером.</p>
<p>На данный момент Testplane MCP обеспечивает следующие преимущества:</p>
<ul>
<li class="">
<p>Очень компактные и гибкие снапшоты страниц, модели не нужно работать со скриншотами. Это значительная экономия токенов API LLM.</p>
<p>Как пример — полный исходник <code>https://ya.ru</code> занимает ~260,000 символов, а компактный снапшот — лишь ~9,000.</p>
<details class="group mb-6 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">Пример снапшота</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"><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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 class="">
<p>Бесшовная интеграция с экосистемой Testplane, которая в будущем будет только улучшаться. Например, каждый ответ сервера содержит код, который был запущен, чтобы модель могла встроить его в тесты.</p>
</li>
</ul>
<p>Следите за новыми релизами в нашем блоге и в разделе <a href="https://github.com/gemini-testing/testplane-mcp/releases" target="_blank" rel="noopener noreferrer" class="">Release Notes на GitHub</a>, а в случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane-mcp/issues" target="_blank" rel="noopener noreferrer" class="">issue GitHub</a> или наш <a href="https://t.me/testplane" target="_blank" rel="noopener noreferrer" class="">чат в Telegram</a> — мы вам обязательно поможем!</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Time Travel + новости Testplane UI]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/"/>
        <updated>2025-05-21T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Представляем новый инструмент Testplane UI — Time Travel, теперь в стабильной версии! Расскажем о новой функциональности и что ещё появилось в Testplane UI за последнее время.]]></summary>
        <content type="html"><![CDATA[<p>Представляем новый инструмент Testplane UI — Time Travel, теперь в стабильной версии! Расскажем о новой функциональности и что ещё появилось в Testplane UI за последнее время.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/time-travel-123dc83929674d1f4b57557927cd878b.png" width="1536" height="1024" class="img_ev3q"></p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="как-получить-доступ-к-последним-обновлениям">Как получить доступ к последним обновлениям?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/#%D0%BA%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF-%D0%BA-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%BC-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC" class="hash-link" aria-label="Прямая ссылка на Как получить доступ к последним обновлениям?" title="Прямая ссылка на Как получить доступ к последним обновлениям?" translate="no">​</a></h2>
<p>Нужно установить свежие версии Testplane и <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"><div class="token-line" style="color:#393A34"><span class="token plain">npm i -D testplane@8.29.2 html-reporter@10.18.0</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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 anchorTargetHideOnScrollNavbar_vjPI" id="time-travel">Time Travel<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/#time-travel" class="hash-link" aria-label="Прямая ссылка на Time Travel" title="Прямая ссылка на Time Travel" translate="no">​</a></h2>
<p>Time Travel — это новый инструмент Testplane UI, который позволяет просматривать прогоны тестов в реальном времени, а также записывать и воспроизводить все действия, которые происходили в браузере во время теста.</p>
<p>Вот как это выглядит:</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/time-travel-demo-cb82a8ca03689ff7ab3c75959d9093cd.gif" width="1469" height="910" class="img_ev3q"></p>
<p>Time Travel записывает снапшоты DOM-дерева, что позволяет отлаживать проблемы, связанные с селекторами, и в то же время экономить место на диске.</p>
<p>Подробнее — в нашем <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/basic-guides/time-travel/">новом руководстве</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="новости-testplane-ui">Новости Testplane UI<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/#%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8-testplane-ui" class="hash-link" aria-label="Прямая ссылка на Новости Testplane UI" title="Прямая ссылка на Новости Testplane UI" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="fuzzy-поиск-тестов">Fuzzy-поиск тестов<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/#fuzzy-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2" class="hash-link" aria-label="Прямая ссылка на Fuzzy-поиск тестов" title="Прямая ссылка на Fuzzy-поиск тестов" translate="no">​</a></h3>
<p>Поиск тестов теперь более интеллектуальный и понимает запросы даже с опечатками или в другой раскладке. Появились опции поиска как в IDE: regex и case-insensitive.</p>
<p>А ещё мы добавили новый способ сортировки — по релевантности. Он включается автоматически во время поиска, благодаря чему сверху вы видите самые релевантные тесты.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/fuzzy-search-8d769357ecdb7974fd04fd6936c983b9.gif" width="1469" height="920" class="img_ev3q"></p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="новые-кнопки-для-управления-элементами-интерфейса">Новые кнопки для управления элементами интерфейса<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/#%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8-%D0%B4%D0%BB%D1%8F-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0" class="hash-link" aria-label="Прямая ссылка на Новые кнопки для управления элементами интерфейса" title="Прямая ссылка на Новые кнопки для управления элементами интерфейса" translate="no">​</a></h3>
<p>Добавили кнопки для управления видимостью дерева тестов и плеера. Теперь можно скрывать их, когда они вам не нужны и, например, работать со скриншотами во весь экран.</p>
<p>Интерфейс запоминает ваши предпочтения и даже после перезагрузки страницы всё будет так, как вы настроили.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/show-hide-buttons-ed2fcdfb4eb95154e5d6bca687b7f1b0.gif" width="1469" height="910" class="img_ev3q"></p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="другие-улучшения">Другие улучшения<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/time-travel-release/#%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Другие улучшения" title="Прямая ссылка на Другие улучшения" translate="no">​</a></h3>
<ul>
<li class="">Значительно переработали <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/html-reporter/html-reporter-commands/#merge-reports">команду <code>merge-reports</code></a> —&nbsp;теперь она работает лучше, стабильнее и покрывает больше кейсов</li>
<li class="">Testplane UI теперь умеет работать с отчетами, созданными в старых версиях — теперь можно не бояться потерять данные при обновлении</li>
<li class=""><a href="https://github.com/gemini-testing/html-reporter/releases/tag/v10.17.0" target="_blank" rel="noopener noreferrer" class="">Появилось API</a> для выгрузки снапшотов в Time Travel</li>
<li class="">Возможность выбирать скорость воспроизведения в плеере Time Travel</li>
</ul>
<p>Следите за новыми релизами в нашем блоге и в разделе <a href="https://github.com/gemini-testing/html-reporter/releases" target="_blank" rel="noopener noreferrer" class="">Release Notes на GitHub</a>, а в случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer" class="">issue GitHub</a> — мы вам обязательно поможем!</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Поддержка WebDriver BiDi протокола]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/"/>
        <updated>2025-05-06T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[В testplane@8.27.0 добавлена поддержка WebDriver BiDi протокола (будущий единый стандарт для автоматизации браузеров).]]></summary>
        <content type="html"><![CDATA[<p>В <a href="https://github.com/gemini-testing/testplane/releases/tag/v8.27.0" target="_blank" rel="noopener noreferrer" class="">testplane@8.27.0</a> добавлена поддержка <a href="https://w3c.github.io/webdriver-bidi/" target="_blank" rel="noopener noreferrer" class="">WebDriver BiDi протокола</a> (будущий единый стандарт для автоматизации браузеров).</p>
<p>WebDriver BiDi (Bidirectional) — это новый протокол кросс-браузерной автоматизации, который сочетает в себе лучшее из существующих протоколов: <a href="https://www.w3.org/TR/webdriver1/" target="_blank" rel="noopener noreferrer" class="">W3C WebDriver</a> и <a href="https://chromedevtools.github.io/devtools-protocol/" target="_blank" rel="noopener noreferrer" class="">Chrome DevTools Protocol (CDP)</a> (подробнее о них можно почитать в нашей <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/webdriver-vs-cdp/">статье</a>). По сути новый протокол расширяет существующий
W3C Webdriver протокол и добавляет в него новые кросс-браузерные команды, которые заменяют CDP протокол (не является кросс-браузерным). Старые webdriver-команды работают как и раньше по http, а новые команды обеспечивают двунаправленную коммуникацию между клиентом и браузером по websocket соединению.</p>
<p>Новый протокол на данный момент поддержан следующими браузерами: Chrome, Firefox, Edge. В safari поддержки пока нет. Следить за поддерживаемыми браузерами можно на этой <a href="https://wpt.fyi/results/webdriver/tests/bidi?label=master&amp;label=stable&amp;aligned" target="_blank" rel="noopener noreferrer" class="">странице</a>.</p>
<p>Список команд BiDi протокола доступен на этой <a href="https://webdriver.io/docs/api/webdriverBidi" target="_blank" rel="noopener noreferrer" class="">странице</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="как-использовать">Как использовать?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/#%D0%BA%D0%B0%D0%BA-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C" class="hash-link" aria-label="Прямая ссылка на Как использовать?" title="Прямая ссылка на Как использовать?" translate="no">​</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>В Testplane поддержка BiDi протокола доступна в браузерах начиная с версии: chrome@128 и
firefox@129.</p></div></div>
<p>Для использования BiDi протокола необходимо:</p>
<ul>
<li class="">установить testplane@8.27.0 или старше;</li>
<li class="">указать капабилити <code>webSocketUrl: true</code> в поле <code>desiredCapabilities</code> для необходимого браузера (в следующей мажорной версии будет выставляться по умолчанию);</li>
<li class="">запустить тесты.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="что-можно-сделать-с-помощью-нового-протокола">Что можно сделать с помощью нового протокола?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/#%D1%87%D1%82%D0%BE-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B0" class="hash-link" aria-label="Прямая ссылка на Что можно сделать с помощью нового протокола?" title="Прямая ссылка на Что можно сделать с помощью нового протокола?" translate="no">​</a></h3>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="отслеживание-и-перехват-сетевых-запросовответов">Отслеживание и перехват сетевых запросов/ответов<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/#%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D1%85-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%BE%D0%B2" class="hash-link" aria-label="Прямая ссылка на Отслеживание и перехват сетевых запросов/ответов" title="Прямая ссылка на Отслеживание и перехват сетевых запросов/ответов" translate="no">​</a></h4>
<ol>
<li class="">Можно замокать запрос к testplane.io и вернуть свой ответ:</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"><div 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></div><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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/29034546532-593-1/ru/assets/medias/mock-network-request-example-0dc385eb96ee49a96b4d39e786c24a89.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/video/blog/bidi/mock-network-request-example.mp4">Скачайте видео</a>.</p></video>
<ol start="2">
<li class="">Перехватим все запросы к ресурсу testplane.io и отобразим список всех загружаемых урлов:</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"><div 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></div><div 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></div><div 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></div><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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/29034546532-593-1/ru/assets/medias/network-responses-example-959e02846e0e8fba94babce1b9845d17.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/video/blog/bidi/network-responses-example.mp4">Скачайте видео</a>.</p></video>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="отображение-логов-в-браузере">Отображение логов в браузере<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/#%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2-%D0%B2-%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%B5" class="hash-link" aria-label="Прямая ссылка на Отображение логов в браузере" title="Прямая ссылка на Отображение логов в браузере" translate="no">​</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"><div 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></div><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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/29034546532-593-1/ru/assets/medias/browser-logs-example-e482cecf15edc6e9d060516b6f7c41ca.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/video/blog/bidi/browser-logs-example.mp4">Скачайте видео</a>.</p></video>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="снятие-скриншота-всей-страницы">Снятие скриншота всей страницы<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/#%D1%81%D0%BD%D1%8F%D1%82%D0%B8%D0%B5-%D1%81%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%D0%B0-%D0%B2%D1%81%D0%B5%D0%B9-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" class="hash-link" aria-label="Прямая ссылка на Снятие скриншота всей страницы" title="Прямая ссылка на Снятие скриншота всей страницы" translate="no">​</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"><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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/29034546532-593-1/ru/assets/medias/screen-full-page-example-dfaa0e41e3a9f5b4d1a46900ff594085.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/video/blog/bidi/screen-full-page-example.mp4">Скачайте видео</a>.</p></video>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="заключение">Заключение<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/support-bidi-protocol/#%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" translate="no">​</a></h3>
<p>Хотя протокол BiDi все еще находится в <a href="https://www.w3.org/standards/types/#ED" target="_blank" rel="noopener noreferrer" class="">Editor's Draft</a>, но уже очевидно, что за этим протоколом будущее. Так например браузер firefox уже объявил о том, что <a href="https://fxdx.dev/deprecating-cdp-support-in-firefox-embracing-the-future-with-webdriver-bidi/" target="_blank" rel="noopener noreferrer" class="">прекращает поддержку CDP протокола с версии 129</a>.</p>
<p>Поддержка протокола BiDi позволяет нашим пользователям:</p>
<ul>
<li class="">использовать больше возможностей для автоматизации тестов, которых не было в WebDriver протоколе;</li>
<li class="">возможность отказаться от использования <a href="https://pptr.dev/" target="_blank" rel="noopener noreferrer" class="">Puppeteer</a> (используются под капотом для поддержки CDP протокола), который по нашему опыту приводит к множеству проблем в тестах;</li>
<li class="">идти в ногу со временем и уже начинать привыкать к будущему единому стандарту.</li>
</ul>
<p>Переходите на новую версию Testplane и приносите фидбек. В случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer" class="">issue github</a> — мы вам обязательно поможем!</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Запуск на локальных браузерах]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/local-browsers-intro/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/local-browsers-intro/"/>
        <updated>2024-12-19T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[В Testplane добавлена возможность автоматической загрузки браузеров и драйверов для последующего локального запуска.]]></summary>
        <content type="html"><![CDATA[<p>В Testplane добавлена возможность автоматической загрузки браузеров и драйверов для последующего локального запуска.</p>
<p>Раньше Testplane с протоколом автоматизации webdriver можно было запустить локально только с вручную запущенным <a href="https://github.com/webdriverio/selenium-standalone" target="_blank" rel="noopener noreferrer" class="">selenium-standalone</a>. Теперь достаточно указать <code>gridUrl: "local"</code> в <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/config/main/">Конфиге Testplane</a> или запустить тесты с <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/cli/">CLI-опцией</a> <code>--local</code>. В таком случае перед запуском тестов при необходимости будут загружены соответствующие браузеры и вебдрайверы к ним, которые также будут запущены для дальнейшего использования в этих тестах.</p>
<p>Загрузить браузеры и вебдрайверы к ним можно и отдельно, с помощью команды <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/cli/#install-deps">install-deps</a>.</p>
<p>Пример запуска тестов на локальном браузере с webdriver протоколом автоматизации:</p>
<video src="/testplane-docs/website-static/29034546532-593-1/ru/assets/medias/local-browsers-example-84132df96dc43b22051adb0c44a1252c.mp4" width="100%" controls="" autoplay="autoplay"><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/local-browsers-intro/video/blog/local-browsers/local-browsers-example.mp4">Скачайте видео</a>.</p></video>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="как-использовать">Как использовать?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/local-browsers-intro/#%D0%BA%D0%B0%D0%BA-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C" class="hash-link" aria-label="Прямая ссылка на Как использовать?" title="Прямая ссылка на Как использовать?" translate="no">​</a></h3>
<p>Узнайте больше об этом в нашей документации <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/basic-guides/browsers-overview/">Как запустить Testplane в локальном браузере</a>.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Расширение для VS Code]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/"/>
        <updated>2024-09-26T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Для Testplane реализовали расширение для VS Code, с помощью которого можно настраивать Testplane с нуля, запускать тесты и удобно работать с REPL режимом.]]></summary>
        <content type="html"><![CDATA[<p>Для Testplane реализовали расширение для <a href="https://code.visualstudio.com/">VS Code</a>, с помощью которого можно настраивать Testplane с нуля, запускать тесты и удобно работать с <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/cli/#testplane-repl">REPL режимом</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="установка">Установка<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0" class="hash-link" aria-label="Прямая ссылка на Установка" title="Прямая ссылка на Установка" translate="no">​</a></h3>
<p>Установите расширение со страницы <a href="https://marketplace.visualstudio.com/items?itemName=gemini-testing.vscode-testplane" target="_blank" rel="noopener noreferrer" class="">VS Code Marketplace</a> или на вкладке расширений в VS Code IDE.</p>
<p><img decoding="async" loading="lazy" alt="Расширение в VS Code IDE" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/testplane-in-extensions-panel-82e3c3cd0858f6cb433cc3bcbe99d12f.png" width="1734" height="540" class="img_ev3q"></p>
<p>После установки откройте VS Code в пустом проекте и в панели управления введите:</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"><div class="token-line" style="color:#393A34"><span class="token plain">Install Testplane</span><br></div></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" title="Скопировать" 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="Установка Testplane" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/testplane-install-7847f5ee48078c237da5ccec1e762810.png" width="1734" height="538" class="img_ev3q"></p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="запуск-тестов">Запуск тестов<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2" class="hash-link" aria-label="Прямая ссылка на Запуск тестов" title="Прямая ссылка на Запуск тестов" translate="no">​</a></h3>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="из-сайдбара-в-панели-для-тестирования">Из сайдбара в панели для тестирования<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D0%B8%D0%B7-%D1%81%D0%B0%D0%B9%D0%B4%D0%B1%D0%B0%D1%80%D0%B0-%D0%B2-%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D0%B8-%D0%B4%D0%BB%D1%8F-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Из сайдбара в панели для тестирования" title="Прямая ссылка на Из сайдбара в панели для тестирования" translate="no">​</a></h4>
<p>Панель для тестирования можно открыть, кликнув на значок тестирования в панели действий.</p>
<p><img decoding="async" loading="lazy" alt="Открытие панели для тестирования" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/testing-sidebar-f3c667ae110b1c90f9c5c7f2a5ab70d0.png" width="2476" height="814" class="img_ev3q"></p>
<p>В левой части экрана отображается сайдбар с деревом всех прочитанных тестов. В дереве сверху вниз отображаются:</p>
<ul>
<li class="">название директории с тестами (<code>testplane-tests</code>);</li>
<li class="">название файла теста (<code>example.testplane.ts</code>);</li>
<li class="">название сьюта (<code>test</code>). В примере используется <code>describe</code> из <a href="https://mochajs.org/#bdd" target="_blank" rel="noopener noreferrer" class="">Mocha BDD интерфейса</a>;</li>
<li class="">название теста (<code>example</code>). В примере использует <code>it</code> из <a href="https://mochajs.org/#bdd" target="_blank" rel="noopener noreferrer" class="">Mocha BDD интерфейса</a>;</li>
<li class="">название браузера в котором тест будет запущен (<code>chrome</code>).</li>
</ul>
<p>У каждого из элементов дерева отображается кнопка <code>Run Test</code>. Если нажать на <code>Run Test</code> у элемента:</p>
<ul>
<li class="">директории, файла или сьюта, то запустятся все дочерние тесты во всех браузерах;</li>
<li class="">теста, то запустится выбранный тест во всех браузерах;</li>
<li class="">браузера, то запустится один тест в одном браузере.</li>
</ul>
<p>Пример запуска тестов из сайдбара:</p>
<video src="/testplane-docs/website-static/29034546532-593-1/ru/assets/medias/run-tests-from-sidebar-365f54b83f1337b9a592f73fba8351b9.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/video/blog/vscode-extension/run-tests-from-sidebar.mp4">Скачайте видео</a>.</p></video>
<p>Также можно выполнить запуск всех тестов с помощью кнопки <code>Run Tests</code>.</p>
<p><img decoding="async" loading="lazy" alt="Запуск всех тестов" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/run-all-tests-from-sidebar-8887cbe650347cf4bedf0a7c305cb858.png" width="2482" height="810" class="img_ev3q"></p>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="из-текстового-редактора">Из текстового редактора<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D0%B8%D0%B7-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B0" class="hash-link" aria-label="Прямая ссылка на Из текстового редактора" title="Прямая ссылка на Из текстового редактора" translate="no">​</a></h4>
<p>Если в текстовом редакторе открыть Testplane тест, то рядом с каждым сьютом (<code>describe</code>) и тестом (<code>it</code>) будет отображаться зеленая кнопка play для их запуска. Если нажать левой кнопкой мыши, то запустится тест во всех браузерах, и после его выполнения отобразится результат в виде иконки статуса прохождения теста.
Если нажать на кнопку play правой клавишей мыши, то можно запустить тест в одном из браузеров.</p>
<p>Пример запуска тестов из текстового редактора:</p>
<video src="/testplane-docs/website-static/29034546532-593-1/ru/assets/medias/run-tests-from-editor-497e76420195f222ccd62cf1c4253b6b.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/video/blog/vscode-extension/run-tests-from-editor.mp4">Скачайте видео</a>.</p></video>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="с-настройкой-devtools">С настройкой <code>devtools</code><a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D1%81-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%BE%D0%B9-devtools" class="hash-link" aria-label="Прямая ссылка на с-настройкой-devtools" title="Прямая ссылка на с-настройкой-devtools" translate="no">​</a></h4>
<p>В сайдбаре в панели для тестирования также отображается секция с названием Testplane. В ней можно управлять настройками в рантайме. При клике в чекбокс <code>Enable devtools</code> и последующем запуске тестов браузеры будут подниматься с использованием CDP протокола (вне зависимости от того, что указано в конфиге). Подробнее про этот режим можно прочитать <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/guides/how-to-use-cdp/">здесь</a>.</p>
<p><img decoding="async" loading="lazy" alt="Включение опции devtools" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/enable-devtools-0663340d1f8c2c477860e506b65bc54e.png" width="2484" height="820" class="img_ev3q"></p>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="с-настройкой-repl">С настройкой <code>REPL</code><a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D1%81-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%BE%D0%B9-repl" class="hash-link" aria-label="Прямая ссылка на с-настройкой-repl" title="Прямая ссылка на с-настройкой-repl" translate="no">​</a></h4>
<p>При клике в чекбокс <code>Enable REPL</code> и последующем запуске теста (в REPL режиме можно одновременно запустить только один тест) он будет запущен в специальном REPL режиме. Подробнее про этот режим можно прочитать <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/reference/cli/#testplane-repl">здесь</a>.</p>
<p><img decoding="async" loading="lazy" alt="Включение опции REPL" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/enable-repl-469f08c30bc21b937ed861ecae01f191.png" width="2484" height="816" class="img_ev3q"></p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="фильтрация-тестов-в-сайдбаре-панели-тестирования">Фильтрация тестов в сайдбаре панели тестирования<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2-%D0%B2-%D1%81%D0%B0%D0%B9%D0%B4%D0%B1%D0%B0%D1%80%D0%B5-%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D0%B8-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Фильтрация тес�тов в сайдбаре панели тестирования" title="Прямая ссылка на Фильтрация тестов в сайдбаре панели тестирования" translate="no">​</a></h3>
<p>Чтобы в дереве отобразить только тесты в определенном браузере, необходимо ввести тег <code>@testplane:browser:your_browser_name</code> в инпут фильтрации. Чтобы появился саджест, можно просто написать <code>@browser</code>. Там же можно использовать несколько тегов.</p>
<p><img decoding="async" loading="lazy" alt="Фильтр по указанном браузеру" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/filter_sidebar_by_browser-db69a093db0bae138250c26921567d38.png" width="2482" height="814" class="img_ev3q"></p>
<p>Также в инпуте с фильтрацией можно использовать следующие значения:</p>
<ul>
<li class="">строка с названием элемента дерева (директория/файл/сьют/тест/браузер);</li>
<li class="">тег <code>@doc</code> — для отображения тестов из активного файла в текстовом редакторе;</li>
<li class="">тег <code>@openedFiles</code> — для отображения тестов во всех открытых файлах в текстовом редакторе;</li>
<li class="">тег <code>@executed</code> — для отображения только выполняющихся тестов;</li>
<li class="">тег <code>@failed</code> — для отображения только упавших тестов.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="перезапуск-окружения-testplane">Перезапуск окружения Testplane<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-testplane" class="hash-link" aria-label="Прямая ссылка на Перезапуск окружения Testplane" title="Прямая ссылка на Перезапуск окружения Testplane" translate="no">​</a></h3>
<p>С помощью кнопки <code>Refresh Tests</code> в сайдбаре можно перезапустить Testplane. В этом случае перечитается конфиг и тесты. Пригодится в случае, если вы добавили новый тест в файл (вотчинг тестовых файлов пока не поддерживается) или произошла какая-то критическая ошибка.
Обновление дерева тестов выполняется автоматически при изменении конфига.</p>
<p><img decoding="async" loading="lazy" alt="Обновление дерева тестов" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/assets/images/refresh-tests-a2a3718e55dc10c27c05e95359074d9f.png" width="2482" height="820" class="img_ev3q"></p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="требования">Требования<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Требования" title="Прямая ссылка на Требования" translate="no">​</a></h3>
<ul>
<li class="">версия testplane должна быть 8.20.0 и старше (с версиями ниже запуск тестов работать не будет).</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="текущие-ограничения">Текущие ограничения<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B5-%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Текущие ограничения" title="Прямая ссылка на Текущие ограничения" translate="no">​</a></h3>
<ul>
<li class="">не поддержаны debug и continuous (auto-run) режимы;</li>
<li class="">нет вотчинга добавления/удаления тестов и файлов;</li>
<li class="">использование кастомных интерфейсов Mocha может приводить к некорректному отображению иконок с кнопкой play для запуска тестов из текстового редактора.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="заключение">Заключение<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/vscode-extension/#%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" translate="no">​</a></h3>
<p>Данная функциональность предоставляет нашим пользователям новые возможности:</p>
<ul>
<li class="">возможность запуска тестов прямо из IDE и просмотр результата выполнения;</li>
<li class="">возможность максимально быстро переключиться в режим <code>devtools</code> и <code>repl</code>;</li>
<li class="">автоматически подхватывать изменения, внесенные в конфиг Testplane.</li>
</ul>
<p>Устанавливайте расширение Testplane для VS Code и приходите с фидбеком. В случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer" class="">issue github</a> — мы вам обязательно поможем!</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Скриншотное тестирование со Storybook]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/screenshot-testing-with-storybook/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/screenshot-testing-with-storybook/"/>
        <updated>2024-09-26T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[Теперь для автоматического визуального тестирования ваших компонентов достаточно иметь Storybook с вашими компонентами и плагин @testplane/storybook. Больше не нужно писать тесты.]]></summary>
        <content type="html"><![CDATA[<p>Теперь для автоматического визуального тестирования ваших компонентов достаточно иметь Storybook с вашими компонентами и плагин <code>@testplane/storybook</code>. Больше не нужно писать тесты.</p>
<p><a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer" class="">Storybook</a> - это инструмент для разработки пользовательских интерфейсов на основе компонентов. Он позволяет разработчикам независимо визуализировать компоненты в различных состояниях в изолированной от остальных компонентов среде.
Такой "шоурум" идеально подходит для скриншотного тестирования ваших компонентов, т.к. за счет этой изолированной среды такие тесты получаются в разы стабильнее и быстрее, чем вариант с e2e.</p>
<p>С помощью плагина <a href="https://github.com/gemini-testing/testplane-storybook" target="_blank" rel="noopener noreferrer" class="">@testplane/storybook</a> предоставляется возможность автоматически проверять изменения ваших компонентов с помощью скриншотного тестирования без единой строчки кода теста.
Вам достаточно описать ваш компонент в <code>Storybook</code>, а <code>testplane</code> при запуске автоматически сгенерит все необходимые тесты, прогонит их в нужных браузерах и предоставит визуальный отчет для обновления скриншотов.
При этом, если для компонентов была задекларирована <a href="https://storybook.js.org/docs/writing-stories/play-function" target="_blank" rel="noopener noreferrer" class="">play-функция</a>, то <code>testplane</code> перед началом теста выполнит ее, чтобы привести компонент в нужное состояние.</p>
<p>Но если и этих возможностей вам не хватит, то вы можете прямо в story-файле описать testplane-тест, который будет выполнен как дополнительный тест для компонента.</p>
<p>Как это использовать?</p>
<p>Узнайте больше об этом в нашей документации <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/basic-guides/visual-testing-with-storybook/">Скриншотное тестирование со Storybook</a>.
<a href="https://github.com/gemini-testing/testplane/tree/master/examples/storybook-autoscreenshots" target="_blank" rel="noopener noreferrer" class="">Пример проекта</a> с настроенным скриншотным тестированием со Storybook можно посмотреть в нашем репозитории на GitHub.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Компонентное тестирование]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/component-testing-intro/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/component-testing-intro/"/>
        <updated>2024-06-10T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[В testplane в экспериментальном режиме поддержали компонентное тестирование и unit-тесты, выполняющиеся в браузере.]]></summary>
        <content type="html"><![CDATA[<p>В testplane в экспериментальном режиме поддержали компонентное тестирование и unit-тесты, выполняющиеся в браузере.</p>
<p>Практически все современные веб-интерфейсы пишутся с использованием фреймворков (React, Vue, Svelte, ...) для упрощения создания и реиспользования компонентов. Такие компоненты важно тестировать в изоляции друг от друга, чтобы быть уверенным, что каждый компонент корректно справляется со своей работой. Точно так же как мы пишем unit-тесты отдельно от интеграционных. В Testplane уже поддержанно скриншотное тестирование компонентов с помощью <a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer" class="">Storybook</a>, однако этот инструмент актуален не для всех проектов. Поэтому мы разработали ещё один вариант компонентного тестирования, который не требует использования Storybook.</p>
<p>Данная возможность может быть полезна, если у вас в проекте используются React-компоненты. При этом тестов нет совсем или используются только тяжелые интеграционные тесты (т.е. проверяются целые страницы, содержащие множество компонентов). Согласно <a href="https://martinfowler.com/articles/practical-test-pyramid.html" target="_blank" rel="noopener noreferrer" class="">пирамиде тестирования</a>, интеграционных тестов должно быть меньше всего так как они больше подвержены “флапам” и зачастую избыточны. Множество сценариев можно проверить с помощью компонентых тестов и тем самым сократить время выполнения тестов в CI и улучшить их стабильность.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="варианты-реализации-компонентного-тестирования">Варианты реализации компонентного тестирования<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/component-testing-intro/#%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D1%8B-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D0%B3%D0%BE-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" class="hash-link" aria-label="Прямая ссылка на Варианты реализации компонентного тестирования" title="Прямая ссылка на Варианты реализации компонентного тестирования" translate="no">​</a></h3>
<p>Компонентное тестирование — это вид тестирования, при котором логика работы веб-компонента проверяется в изоляции от веб-страницы, в которой он используется. Для того, чтобы выполнить такой тест, нужно уметь корректно рендерить компонент. Часто для этой задачи применяют <a href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer" class="">JSDom</a> (используется в <a href="https://jestjs.io/" target="_blank" rel="noopener noreferrer" class="">Jest</a>), который рендерит веб-компоненты с помощью виртуального рендеринга Node.js, т.е. без использования реального браузера. С одной стороны, это работает быстрее (браузер не поднимается), а с другой — менее стабильно, так как проверки выполняются не в реальном браузере. Второе популярное решение — это использовать очень быстрый dev-сервер <a href="https://vitejs.dev/" target="_blank" rel="noopener noreferrer" class="">Vite</a>, который поддерживает множество фреймворков (React, Vue, Svelte, ...) и отвечает за рендеринг компонентов в изоляции.</p>
<p>Мы остановились на варианте с использованием Vite, так как такой подход обеспечивает тестирование страницы более приближенное к реальности (как если бы ее открыл пользователь). При этом, сами тесты выполняются немного дольше, чем в jsdom. Но для нас самое главное стабильность и воспроизводимость результатов тестов, поэтому выбор был очевиден.</p>
<details class="group mb-6 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">Краткая информация о том, как это реализовано</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 class="">при указании опции <code>testRunEnv: 'browser'</code> в конфиге Testplane, будет использован браузерный раннер, который поднимает Vite на localhost с рандомным свободным портом (пользователь может выставить необходимый порт в конфиге Vite). Именно на этом поднятом сервере будут рендерится все пользовательские компоненты и выполняться все необходимые команды/проверки (т.е. прямо внутри браузера);</li>
<li class="">затем читаются тесты в Node.js, т.е. как это делается и для интеграционных тестов. Это необходимо, чтобы все плагины работали корректно (речь про триггер событий при чтении тестов), а так же, чтобы была возможность запустить тесты из одного файла параллельно. Если бы тест читался только в контексте браузера, то приходилось бы запускать абсолютно все тесты внутри одного файла и критическое завершение в одном из них приводило бы к остановке всех последующих. Т.е. на данном этапе мы понимаем какие тесты нужно запустить;</li>
<li class="">после чего, как обычно, поднимаются необходимые браузеры и в них запускаются тесты. Каждый тест перед выполнением пользовательского кода выполняет переход на поднятый сервер Vite. При выполнении такого запроса генерится специальный index.html, в который подгружаются все необходимые библиотеки:</li>
<li class="">mocha — для чтения тестов;</li>
<li class="">webdriverio — для использования инстанса браузера внутри самого браузера;</li>
<li class="">expect — для выполнения проверок;</li>
<li class="">и прочие внутренние модули, необходимые для корректной работы.</li>
<li class="">при открытии index.html из Vite, браузер устанавливает websocket-соединение с мастер процессом Testplane для того, чтобы обмениваться необходимыми данными. Например, в случае, если в браузере вызывается конструкция <code>await browser.$("body").assertView("plain", "body")</code>, то очевидно, что она выполниться в самом браузере не может, так как внутри <code>assertView</code> нам необходим доступ к файловой системе. Поэтому, выполнение этой команды отправляется в мастер Testplane, который в свою очередь отправляет ее worker-у, в котором данный тест запущен. И именно worker выполняет переданную ему команду. Когда результат получен, он таким же образом отправляется назад в браузер. Все общение реализовано с помощью библиотеки <a href="https://socket.io/" target="_blank" rel="noopener noreferrer" class="">socket.io</a>;</li>
<li class="">после чего, в браузере начинает выполняться указанный тест, который по завершению возвращает результат в Node.js процесс.</li>
</ul></div></details>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="как-использовать">Как использовать?<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/component-testing-intro/#%D0%BA%D0%B0%D0%BA-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C" class="hash-link" aria-label="Прямая ссылка на Как использовать?" title="Прямая ссылка на Как использовать?" translate="no">​</a></h3>
<p>Узнайте больше об этом в нашей документации <a class="" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/docs/basic-guides/component-testing/">Компонентное тестирование</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="заключение">Заключение<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/component-testing-intro/#%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" translate="no">​</a></h3>
<p>Данная функциональность предоставляет нашим пользователям новые возможности:</p>
<ul>
<li class="">изолированное тестирование React-компонентов в реальном браузере;</li>
<li class="">стабильность и воспроизводимость результатов тестов в сравнении с JSDom;</li>
<li class="">поддержка HMR;</li>
<li class="">доступ к инстансам browser/expect в DevTools браузера, для удобного дебага;</li>
<li class="">отображение логов в терминале для повышения комфорта и увеличения скорости разработки.</li>
</ul>
<p>Переезжайте на Testplane и попробуйте новую возможность самостоятельно. В случае обнаружения проблем, приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer" class="">issue github</a> — мы вам обязательно поможем!</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ребрендинг]]></title>
        <id>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-rebranding/</id>
        <link href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/29034546532-593-1/ru/blog/testplane-rebranding/"/>
        <updated>2024-05-20T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[Представляем вашему вниманию... Testplane. Наш проект Hermione решил сменить имя — встречайте проверенный годами продукт в свежем образе!]]></summary>
        <content type="html"><![CDATA[<p>Представляем вашему вниманию... <strong>Testplane</strong>. Наш проект Hermione решил сменить имя — встречайте проверенный годами продукт в свежем образе!</p>
<p>Мы долго рассматривали все за и против и пришли к выводу, что новое имя — Testplane — наилучшим образом отражает наше видение и будущее развитие продукта:</p>
<ol>
<li class="">Мы планируем активно вкладываться в развитие инструмента в опенсорсе. Новое имя символизирует качественный переход в развитии инструмента.</li>
<li class="">Мы стремимся создать полноценный бренд с товарным знаком, логотипом, фирменным визуальным стилем. Testplane — это название, которое как сочетает в себе отсылку к «испытательному полету», так и может читаться как "плоскость для тестирования".</li>
</ol>
<p>Суть продукта остаётся неизменной. Testplane — это тот же проект, который вы знали многие годы как Hermione, но в свежем, обновленном виде. Чтобы упростить переход, мы решили сохранить сквозную нумерацию версий: Testplane v8.x — это эквивалент Hermione v8.x.</p>
<p>Если вы уже работаете с Hermione, обновление на Testplane займет всего несколько минут. Мы проектировали его как drop-in замену:</p>
<ul>
<li class="">Полная поддержка существующих плагинов Hermione.</li>
<li class="">Понимание всех опций и переменных окружения Hermione.</li>
<li class="">Полная совместимость конфигураций.</li>
<li class="">Два бинарных файла (testplane и hermione) для плавного перехода (вы можете запускать и как hermione gui, и как testplane gui).</li>
<li class="">Экспорт типов для TypeScript, включая как собственные типы Testplane, так и типы Hermione (включая hermioneCtx).</li>
</ul>
<p>Если же вы еще не пробовали Testplane — загляните в нашу документацию и начните ваше исследование с Testplane всего за пару минут!</p>
<p>Благодарим за интерес к проекту! ✈️</p>]]></content>
    </entry>
</feed>