<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Testplane Blog</title>
        <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/</link>
        <description>Testplane Blog</description>
        <lastBuildDate>Wed, 03 Dec 2025 14:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>ru</language>
        <item>
            <title><![CDATA[Селективность запуска тестов]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/selectivity-intro/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/selectivity-intro/</guid>
            <pubDate>Wed, 03 Dec 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[В Testplane добавлена селективность запуска тестов — возможность автоматически запускать только те тесты, для которых изменились файлы, от которых они зависят.]]></description>
            <content:encoded><![CDATA[<p>В Testplane добавлена селективность запуска тестов — возможность автоматически запускать только те тесты, для которых изменились файлы, от которых они зависят.</p>
<p>Селективность позволяет значительно ускорить процесс тестирования, запуская только релевантные тесты вместо всего набора. Testplane отслеживает зависимости каждого теста от файлов проекта — как код самих тестов, так и код, выполняемый в браузере — и при изменении файла запускает только те тесты, которые от него зависят.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="как-использовать">Как использовать<a class="hash-link" aria-label="Прямая ссылка на Как использовать" title="Прямая ссылка на Как использовать" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Узнайте больше об этом в нашей документации <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/guides/selectivity/">Как настроить селективность при запуске тестов</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="заключение">Заключение<a class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Обновляйтесь на версию Testplane 8.36.0 или более позднюю и попробуйте селективность в своих проектах! В случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue github</a> — мы вам обязательно поможем!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Testplane vs Playwright: Полное сравнение инструментов для автоматизации тестирования]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/testplane-vs-playwright/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/testplane-vs-playwright/</guid>
            <pubDate>Mon, 10 Nov 2025 17:00:00 GMT</pubDate>
            <description><![CDATA[Детальное сравнение Testplane и Playwright: преимущества, недостатки и рекомендации по выбору подходящего инструмента для проекта]]></description>
            <content:encoded><![CDATA[<p>И <strong>Testplane</strong>, и <strong>Playwright</strong> — это решения для end-to-end тестирования, но они имеют разные подходы и возможности. В этой статье мы проведём детальное сравнение этих инструментов, чтобы помочь вам сделать правильный выбор.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="краткий-обзор-инструментов">Краткий обзор инструментов<a class="hash-link" aria-label="Прямая ссылка на Краткий обзор инструментов" title="Прямая ссылка на Краткий обзор инструментов" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h2>
<p><strong>Testplane</strong> — это инструмент для автоматизации тестирования веб-приложений, разработанный командой Яндекса. Он активно используется как в крупных, так и в небольших проектах компании и поддерживает широкий спектр браузеров и устройств.</p>
<p><strong>Playwright</strong> — инструмент от Microsoft, который быстро завоевал популярность благодаря своей простоте использования и современному подходу к автоматизации.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="ключевые-различия">Ключевые различия<a class="hash-link" aria-label="Прямая ссылка на Ключевые различия" title="Прямая ссылка на Ключевые различия" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="поддержка-браузеров-и-мобильных-устройств">Поддержка браузеров и мобильных устройств<a class="hash-link" aria-label="Прямая ссылка на Поддержка браузеров и мобильных устройств" title="Прямая ссылка на Поддержка браузеров и мобильных устройств" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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 anchorWithHideOnScrollNavbar_WYt5" id="визуальное-тестирование">Визуальное тестирование<a class="hash-link" aria-label="Прямая ссылка на Визуальное тестирование" title="Прямая ссылка на Визуальное тестирование" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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">looks-same</a> для сравнения скриншотов, которая <a href="https://github.com/gemini-testing/looks-same/blob/master/benchmark/results.md" target="_blank" rel="noopener noreferrer">быстрее</a> и точнее текущих конкурентов:</p>
<ul>
<li>Ожидание загрузки элементов перед скриншотом, чтобы исключить нестабильность в тесте;</li>
<li>Отключение анимации на странице;</li>
<li>Гибкая настройка чувствительности скриншотного тестирования — <a href="https://testplane.io/docs/v8/reference/config/browsers/#tolerance" target="_blank" rel="noopener noreferrer">tolerance</a>, <a href="https://testplane.io/docs/v8/reference/config/browsers/#antialiasing_tolerance" target="_blank" rel="noopener noreferrer">anti-aliasing tolerance</a>, игнорирование фиксированного количества пикселей;</li>
<li>Используется 3 уровня сравнения для оптимизации скорости;</li>
<li>Разнообразные <a href="https://testplane.io/docs/v8/html-reporter/overview/#superb-visual-testing-capabilities" target="_blank" rel="noopener noreferrer">виды визуализации различий между скриншотами</a> для удобной отладки, в т.ч. и подсветка мелких диффов;</li>
<li>Игнорирование элементов на скриншоте при необходимости.</li>
</ul>
<p>Testplane предоставляет удобный <a href="https://testplane.io/docs/v8/html-reporter/overview/" target="_blank" rel="noopener noreferrer">интерфейс</a> для массового принятия скриншотов, что ускоряет процесс обновления эталонных изображений.
Также, если в проекте пользователя настроен <a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a>, то Testplane предоставляет <a href="https://testplane.io/docs/v8/basic-guides/visual-testing-with-storybook/" target="_blank" rel="noopener noreferrer">автоматическую генерацию скриншотных тестов</a>, что позволяет быстро покрыть визуальными проверками все компоненты проекта <strong>без написания кода</strong>.</p>
<p>Playwright предлагает лишь базовую поддержку скриншотного тестирования с ограниченными возможностями и менее удобным интерфейсом для работы со скриншотами. Это делает его менее подходящим для проектов, где важно визуальное тестирование.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="отчет-для-работы-с-тестами">Отчет для работы с тестами<a class="hash-link" aria-label="Прямая ссылка на Отчет для работы с тестами" title="Прямая ссылка на Отчет для работы с тестами" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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>Запуск тестов непосредственно из UI;</li>
<li>Отладка с помощью <a href="https://testplane.io/ru/docs/v8/guides/time-travel/" target="_blank" rel="noopener noreferrer">Time Travel</a> (пошагового воспроизведения тестов);</li>
<li>Анализ производительности тестов;</li>
<li>Обновление эталонных изображений при скриншотном тестировании;</li>
<li>Объединение нескольких отчетов в один;</li>
<li>Повторное использование результатов из CI.</li>
</ul>
<p>Особенно важно, что отчёт Testplane способен эффективно работать с тысячами тестов, не теряя производительности. А система плагинов позволяет кастомизировать отчёты под специфические потребности команды.</p>
<p>Со всеми возможностями отчета можно ознакомиться в разделе <a href="https://testplane.io/docs/v8/html-reporter/overview/" target="_blank" rel="noopener noreferrer">UI</a> сайта <a href="https://testplane.io/" target="_blank" rel="noopener noreferrer">https://testplane.io</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="взаимодействие-с-ии">Взаимодействие с ИИ<a class="hash-link" aria-label="Прямая ссылка на Взаимодействие с ИИ" title="Прямая ссылка на Взаимодействие с ИИ" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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 href="https://testplane.io/ru/docs/v8/testplane-mcp/" target="_blank" rel="noopener noreferrer">Testplane MCP</a> — это инструмент, который позволяет ИИ-агентам погрузиться в контекст того, что происходит в браузере, выполнять действия и создавать или чинить тесты, основываясь на реальном состоянии страницы.
С помощью Testplane MCP пользователи могут не только создавать рабочие и стабильные тесты, но и быстро исправлять уже существующие. Testplane MPC позволяет подключиться к браузеру в ходе выполнения вашего теста, чтобы отладить или изменить его. Это значительно сокращает время, затрачиваемое на исправление нестабильных тестов.
Кроме того, Testplane MCP предоставляет возможность запускать браузер в режиме эмуляции мобильных устройств. Например, можно сказать "Открой страницу example.com с помощью Testplane MCP на iPhone 15" или указать явно какой User Agent нужно указать при создании браузерной сессии.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="расширяемость-и-интеграции">Расширяемость и интеграции<a class="hash-link" aria-label="Прямая ссылка на Расширяемость и интеграции" title="Прямая ссылка на Расширяемость и интеграции" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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 href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/reference/testplane-events/">событийная модель</a> предоставляет множество точек расширения, позволяя разработчикам внедрять собственную логику на любом этапе выполнения тестов. Это особенно важно для проектов, где требуется интеграция с внутренними системами мониторинга, отчётности и управления качеством.
Также Testplane предоставляет JS API, которое позволяет создавать собственные раннеры, адаптированные под специфические потребности проекта.</p>
<p>Playwright, несмотря на свою популярность, предлагает меньше точек расширения и требует самостоятельной разработки большинства интеграций. Это увеличивает время на внедрение и поддержку инструмента в корпоративной среде.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="масштабирование-и-производительность">Масштабирование и производительность<a class="hash-link" aria-label="Прямая ссылка на Масштабирование и производительность" title="Прямая ссылка на Масштабирование и производительность" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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">Microsoft Playwright Testing</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="обновления-и-стабильность">Обновления и стабильность<a class="hash-link" aria-label="Прямая ссылка на Обновления и стабильность" title="Прямая ссылка на Обновления и стабильность" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Testplane обеспечивает высокую стабильность благодаря продуманному подходу к управлению зависимостями. Обновления инструмента полностью отвязаны от обновлений браузеров, что позволяет командам контролировать процесс миграции и избегать неожиданных поломок в CI/CD пайплайнах. Использование стабильных версий браузеров минимизирует количество проблем с переснятием скриншотов, что особенно важно для проектов с большим количеством визуальных тестов.
Такой подход обеспечивает предсказуемость поведения тестов и снижает затраты на поддержку инфраструктуры тестирования. Команды могут планировать обновления браузеров независимо от обновлений самого инструмента тестирования, что даёт больше гибкости в управлении техническим долгом.</p>
<p>Playwright же связывает обновления инструмента с обновлениями браузеров, что может приводить к неожиданным изменениям в поведении тестов. Это создаёт дополнительную нагрузку на команды разработки, которым приходится чаще пересматривать и обновлять скриншоты, особенно в проектах с активной разработкой интерфейса.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="рекомендации-по-выбору">Рекомендации по выбору<a class="hash-link" aria-label="Прямая ссылка на Рекомендации по выбору" title="Прямая ссылка на Рекомендации по выбору" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="выбирайте-playwright-если">Выбирайте Playwright, если:<a class="hash-link" aria-label="Прямая ссылка на Выбирайте Playwright, если:" title="Прямая ссылка на Выбирайте Playwright, если:" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>✅ Достаточно тестирования только в самых последних десктопных браузерах<br>
<!-- -->✅ Уверены, что не потребуется поддержка старых версий браузеров<br>
<!-- -->✅ Не нужно визуальное тестирование</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="выбирайте-testplane-если">Выбирайте Testplane, если:<a class="hash-link" aria-label="Прямая ссылка на Выбирайте Testplane, если:" title="Прямая ссылка на Выбирайте Testplane, если:" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>✅ Важно визуальное тестирование с удобным отчётом<br>
<!-- -->✅ В будущем потребуется масштабирование<br>
<!-- -->✅ Важна кастомизация под специфические нужды<br>
<!-- -->✅ Необходимо тестирование в широком спектре десктопных браузеров и мобильных устройств<br>
<!-- -->✅ Требуется тестирование нативных приложений Android и iOS</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Testplane MCP]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/mcp-release/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/mcp-release/</guid>
            <pubDate>Mon, 16 Jun 2025 17:00:00 GMT</pubDate>
            <description><![CDATA[Рады представить Testplane MCP — проект, который позволяет AI-агентам быть в контексте происходящего в браузере, совершать действия и генерировать тесты с учетом реального состояния страницы.]]></description>
            <content:encoded><![CDATA[<p>Рады представить Testplane MCP — проект, который позволяет AI-агентам быть в контексте происходящего в браузере, совершать действия и генерировать тесты с учетом реального состояния страницы.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/assets/images/cover-08283a8892b3497f2f3aa36a317dec04.png" width="1536" height="1024" class="img_ev3q"></p>
<!-- -->
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="какие-возможности-открывает-testplane-mcp">Какие возможности открывает Testplane MCP?<a class="hash-link" aria-label="Прямая ссылка на Какие возможности открывает Testplane MCP?" title="Прямая ссылка на Какие возможности открывает Testplane MCP?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="значительное-улучшение-генерации-тестов">Значительное улучшение генерации тестов<a class="hash-link" aria-label="Прямая ссылка на Значительное улучшение генерации тестов" title="Прямая ссылка на Значительное улучшение генерации тестов" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Представим, что мы добавили в приложение новую функциональность и теперь хотим сгенерировать тесты на неё с помощью AI-агента. Ранее, AI-агент мог лишь предположить как выглядит эта страница — селекторы, скорее всего, получились бы вымышленными, и тест требовал бы серьезных правок.</p>
<p>Testplane MCP выводит этот процесс на новый уровень: AI-агент во время написания теста может открыть нужную страницу в браузере, посмотреть на её верстку или выполнить любые действия (например, нажать на кнопку или заполнить форму).</p>
<p>В результате AI-агент может сгенерировать тест имея полный контекст происходящего в браузере — включая селекторы, которые действительно есть на странице.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="использование-браузера-ai-агентами">Использование браузера AI-агентами<a class="hash-link" aria-label="Прямая ссылка на Использование браузера AI-агентами" title="Прямая ссылка на Использование браузера AI-агентами" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Testplane MCP делает возможным автоматизировать повторяющиеся процессы. Например, можно построить воркфлоу для извлечения информации из фото чеков, после чего с помощью Testplane MCP заходить на панель управления своей организации и заполнять форму отчета с соответствующей информацией (наименование, количество, цена и т.д.).</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="установка">Установка<a class="hash-link" aria-label="Прямая ссылка на Установка" title="Прямая ссылка на Установка" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/mcp-release/#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0">​</a></h2>
<p>Необходимо добавить сервер Testplane MCP в конфигурацию вашей IDE.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Cursor</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">VS Code + Cline</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">VS Code + Copilot</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Claude Desktop</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Windsurf</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Jetbrains</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p>Откройте настройки 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"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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>Установите <a href="https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev" target="_blank" rel="noopener noreferrer">расширение Cline</a>.</li>
<li>На вкладке расширения необходимо перейти на вкладу "MCP" и нажать "Configure MCP Servers".
<img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/assets/images/cline-setup-638e0a1615dd9652b8743094a305e529.png" width="1322" height="830" class="img_ev3q"></li>
<li>Добавьте в конфиг 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"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "inputs": [],</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "servers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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">как показано в оф. документации</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"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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">как показано в оф. документации</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"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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">как показано в оф. документации</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"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "mcpServers": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "testplane-mcp": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "command": "npx",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "args": ["@testplane/mcp@latest"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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 anchorWithHideOnScrollNavbar_WYt5" id="использование">Использование<a class="hash-link" aria-label="Прямая ссылка на Использование" title="Прямая ссылка на Использование" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h2>
<p>Рассмотрим кейс разработки интернет-магазина книг. Представим, что у нас появилась новая фича — отображение оценок книг и мы хотим сгенерировать тесты на эту фичу.</p>
<p>Сначала попросим AI-агента проанализировать страницу и составить план тестирования.</p>
<video src="/testplane-docs/website-static/24030152194-526-1/ru/assets/medias/investigate-5b81e51b32431e8ed39f891a658c59ec.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/mcp-release/video/blog/mcp/investigate.mp4">Скачайте видео</a>.</p></video>
<br>
<p>Теперь попробуем сгенерировать тесты и запустить их.</p>
<video src="/testplane-docs/website-static/24030152194-526-1/ru/assets/medias/generate-46821c8f2a645796edeac858059c7e25.mp4" width="100%" controls=""><p>Тег video не поддерживается вашим браузером.
<a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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 anchorWithHideOnScrollNavbar_WYt5" id="особенности-реализации">Особенности реализации<a class="hash-link" aria-label="Прямая ссылка на Особенности реализации" title="Прямая ссылка на Особенности реализации" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h2>
<p>Testplane MCP — не единственная реализация возможности взаимодействия AI-агента с браузером.</p>
<p>На данный момент Testplane MCP обеспечивает следующие преимущества:</p>
<ul>
<li>
<p>Очень компактные и гибкие снапшоты страниц, модели не нужно работать со скриншотами. Это значительная экономия токенов API LLM.</p>
<p>Как пример — полный исходник <code>https://ya.ru</code> занимает ~260,000 символов, а компактный снапшот — лишь ~9,000.</p>
<details class="group overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-300/10"><summary class="flex cursor-pointer items-start p-4 font-medium transition-colors duration-200 select-none group-open:bg-neutral-50 hover:bg-neutral-50 dark:group-open:bg-neutral-600/20 dark:hover:bg-neutral-600/10"><span class="flex-1 text-base leading-relaxed [&amp;>p]:mb-0">Пример снапшота</span><span class="flex h-6 w-6 items-center justify-center rounded-lg bg-neutral-100 text-neutral-500 transition-colors duration-300 group-hover:bg-neutral-200 dark:bg-neutral-600/20 dark:group-hover:bg-neutral-600/30"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" class="h-4 w-4 transition-transform duration-300 group-open:rotate-90"><path fill="currentColor" fill-rule="evenodd" d="M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0" clip-rule="evenodd"></path></svg></span></summary><div class="border-t border-neutral-200 p-4 dark:border-neutral-300/10"><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">body</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">main.body__wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline__personal</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.alice.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Алиса href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//alice.yandex.ru/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=yandex</span><span class="token important">&amp;utm_campaign=morda_header_oknyx&amp;utm_medium=interface"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.alice__icon</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item_services</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Сервисы href=https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/all title=Сервисы role=button</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline__personal-icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">enter.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_black</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//passport.yandex.ru/auth</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">retpath=https%3A%2F%2Fsso.passport.yandex.ru%2Fpush%3Fretpath%3Dhttp</span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain">"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Войти"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.usermenu-portal</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">menu.headline__personal</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Профиль</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> вход не выполнен" role=button tabindex=0 href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//passport.yandex.ru/auth</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">origin=morda</span><span class="token important">&amp;retpath=https%3A%2F%2Fya.ru%2F%3Fnr%3D1%26redirect_ts%3..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.headline__personal-icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.alerts</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">role=complementary aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Уведомления</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> h1.a11y</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">hidden</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Уведомления"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.alert</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.alert__content.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/pogoda/146</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lat=44.948237</span><span class="token important">&amp;lon=34.100318&amp;utm_content=GroupedTomorrow&amp;utm_medium=aler..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">"div.alert__left-content-wrapper[aria-label=\"Завтра: дождь, грозы&nbsp;· +15⁠…⁠+19⁠°&nbsp;· слабый ветер 3⁠–⁠5&nbsp;м⁠/⁠с, порывы до 11&nbsp;м⁠/⁠с\"]"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">span.alert__text "Завтра</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> дождь</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> грозы&nbsp;· +15⁠…⁠+19⁠°&nbsp;· слабый ветер 3⁠–⁠5&nbsp;м⁠/⁠с</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> порывы до 11&nbsp;м⁠/⁠с"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.alert__close</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Закрыть @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.body__content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> form.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest.i</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">bem.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_search_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_personal_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_request_xhr.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_favicon_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_hide</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">on</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">scroll_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_direct_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_re</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">request_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_direct</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">disclaimer_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_autofocus_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_delete</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">on</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">hover_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_grouping_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_theme_tile.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_prevent</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">empty_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_entity</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_overlay_yaru.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_type</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">icon_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_redesigned</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">navs_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_redesign</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">type_block.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_expanding_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_reasoning_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_redesign</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">serp_yes.search3.search3_redesign</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">type_block.search3_keyboard_yes.search3_voice_yes.search3_camera_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest_js_inited</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">action=https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/ role=search aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Поиск в интернете"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__inner-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">section.reasoning-section.reasoning-section_on-top_yes.reasoning-section_justify_center</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">ul.reasoning-section__list</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">li.reasoning-section__item.reasoning-section__item_type_rect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/finance</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=subclasses_product</span><span class="token important">&amp;utm_content=fin_5&amp;utm_campaign=morda_web&amp;per..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">title "Финансы"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">li.reasoning-section__item.reasoning-section__item_type_rect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/products</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=subclasses_product</span><span class="token important">&amp;utm_content=ecom&amp;utm_campaign=morda_web&amp;per..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">title "Товары"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">li.reasoning-section__item.reasoning-section__item_type_rect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_inherit</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/realty</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">utm_source=subclasses_realty</span><span class="token important">&amp;utm_content=realty&amp;utm_campaign=morda_web&amp;pers..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">section__item</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">title "Квартиры"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__inner</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> label.search3__input</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">wrapper</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">wrapper</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">for=text</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__input-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__input-outer-container</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__input-inner-container</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input.search3__input.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest__control</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Запрос name placeholder="Подробно опишите сложную задачу или вопрос" @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> textarea.search3__input.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest__input</span><span class="token comment" style="color:#999988;font-style:italic">#text[placeholder="Подробно опишите сложную задачу или вопрос" name=text role=combobox]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__magnifier</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__action-buttons.search3__action-buttons_submit-button-icon_yes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__reasoning-root</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__reasoning</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.reasoning-dropdown__root</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.reasoning-dropdown</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">             </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">dropwdown__button</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=button aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Подробнее title=Подробнее</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__reasoning</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">qmark</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.search3__keyboard.search3__action</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">title=Клавиатура type=button @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__svg_keyboard</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.search3__voice-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.Button.VoiceInput.search3__voice.search3__voice_type_depot.VoiceInput_futuris</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Голосовой поиск" type=button title="Голосовой поиск"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">span.Button-Text</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.VoiceInput</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">Icon</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.search3__action.search3__camera</span><span class="token comment" style="color:#999988;font-style:italic">#image-search[title="Поиск по картинке" type=button]:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg.search3__svg_camera</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.search3__button.search3__button_icon_yes.mini</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">suggest__button</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=submit tabindex=</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">1 aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Найти @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=lr value=146 @value=146 @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=msid value=1749915681851623</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">7074561989186018597</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">balancer</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">l7leveler</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">kubr</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yp</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">vla</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">119</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">BAL @value=1749915681851623</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">7074561989186018597</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">balancer</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">l7leveler</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">kubr</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yp</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">vla</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">119</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">BAL @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=search_source value=yaru_desktop_common @value=yaru_desktop_common @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> input</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">type=hidden name=search_domain value=yaru @value=yaru @hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> aside.informers3</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label=Информеры</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__item.informers3</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">weather.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Погода в Симферополе 21°</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Облачно с прояснениями" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/pogoda/146</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lat=44.948237</span><span class="token important">&amp;lon=34.100318&amp;utm_campaign=informer&amp;utm_content=main_info..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.informers3</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">weather__text "+21°"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__pollen.informers3__item.informers3__pollen_level_yellow.informers3__pollen_animate_yes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Низкая активность злаков" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/pogoda/allergies</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">allergen=cereals</span><span class="token important">&amp;lat=44.948237&amp;lon=34.100318&amp;utm_campaign=informe..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.simple</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip.force</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">dark.informers</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip.simple</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip_hidden_yes.simple</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tooltip_direction_right</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Низкая активность злаков"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">section.informers3__stocks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> h2.a11y</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">hidden "Курсы&nbsp;ЦБ РФ"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.informers3__stocks-item-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__stocks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="USD&nbsp;ЦБ 79</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">00" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lr=146</span><span class="token important">&amp;search_source=ya_morda_stocks&amp;text=USD+%D0%A6%D0%91&amp;wiz=finance"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span "USD 79</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">00"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.informers3__stocks-item-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__stocks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="EUR&nbsp;ЦБ 90</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">01" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lr=146</span><span class="token important">&amp;search_source=ya_morda_stocks&amp;text=EUR+%D0%A6%D0%91&amp;wiz=finance"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span "EUR 90</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">01"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.informers3__stocks-item-wrapper</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__stocks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">item.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="YDEX 3998</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">50" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/search/</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">lr=146</span><span class="token important">&amp;search_source=ya_morda_stocks&amp;text=YDEX&amp;wiz=finance"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span "YDEX 3998</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">50"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.informers3__geo.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_color_quaternary.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2_hover_tertiary</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Ваш город определён как Симферополь" href="https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//ya.ru/tune/geo</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">retpath=https%3A%2F%2Fya.ru%2F%3Fnr%3D1%26redirect_ts%3D1749915681.00000</span><span class="token important">&amp;nosy..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "Симферополь"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.main-home-banner</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.main-home-banner__content.banner-tgo.banner-tgo_title_m</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.banner-tgo__content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__title "Простой переход на&nbsp;Яндекс Браузер"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.banner-tgo__subtitle</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__domain "yandex.ru"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__mark "Реклама • 0+"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> a.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.banner</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tgo__link</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Простой переход на Яндекс Браузер" href=https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//yandex.ru/an/count/WgyejI_zOoVX2Lci0WqL00Eca4kmIQS4p0bKyOO9wCsxD</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yN0juA2EWchcZT7ALIUK0NwFEvt</span><span class="token punctuation" style="color:#393A34">...</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.direct-close-block.direct-close-block_state_idle.direct-close-block_tgo</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> button.direct</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">block__close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">button.direct</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">block__close</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">button_idle</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">aria</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label="Действия с рекламой"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.direct-close-block__close-icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.ladybug</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span.home</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">link2.ladybug__item.ladybug__butterfly</span><span class="token comment" style="color:#999988;font-style:italic">#butterfly:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token comment" style="color:#999988;font-style:italic">#butterfly-button:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.YndxBug.Bug__container1k5BDO.Bug__container_position_left35lf2v</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">div.YndxBug-Icon.Bug__icon3lvpsr</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> svg</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> div.page</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">info</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">@hidden</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> "</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">\"static\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"2025</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">06</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">11</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">855\"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">\"content\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"big\"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">\"domain\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"ru\"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">\"nodeVersion\"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\"v22.10.0\"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> span</span><span class="token comment" style="color:#999988;font-style:italic">#requestId[@hidden] "1749915681851623-7074561989186018597-balancer-l7leveler-kubr-yp-vla-119-BAL"</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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>
<p>Бесшовная интеграция с экосистемой Testplane, которая в будущем будет только улучшаться. Например, каждый ответ сервера содержит код, который был запущен, чтобы модель могла встроить его в тесты.</p>
</li>
</ul>
<p>Следите за новыми релизами в нашем блоге и в разделе <a href="https://github.com/gemini-testing/testplane-mcp/releases" target="_blank" rel="noopener noreferrer">Release Notes на GitHub</a>, а в случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane-mcp/issues" target="_blank" rel="noopener noreferrer">issue GitHub</a> или наш <a href="https://t.me/testplane" target="_blank" rel="noopener noreferrer">чат в Telegram</a> — мы вам обязательно поможем!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Time Travel + новости Testplane UI]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/time-travel-release/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/time-travel-release/</guid>
            <pubDate>Wed, 21 May 2025 17:00:00 GMT</pubDate>
            <description><![CDATA[Представляем новый инструмент Testplane UI — Time Travel, теперь в стабильной версии! Расскажем о новой функциональности и что ещё появилось в Testplane UI за последнее время.]]></description>
            <content:encoded><![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/24030152194-526-1/ru/assets/images/time-travel-123dc83929674d1f4b57557927cd878b.png" width="1536" height="1024" class="img_ev3q"></p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="как-получить-доступ-к-последним-обновлениям">Как получить доступ к последним обновлениям?<a class="hash-link" aria-label="Прямая ссылка на Как получить доступ к последним обновлениям?" title="Прямая ссылка на Как получить доступ к последним обновлениям?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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"><span class="token-line" style="color:#393A34"><span class="token plain">npm i -D testplane@8.29.2 html-reporter@10.18.0</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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 anchorWithHideOnScrollNavbar_WYt5" id="time-travel">Time Travel<a class="hash-link" aria-label="Прямая ссылка на Time Travel" title="Прямая ссылка на Time Travel" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/time-travel-release/#time-travel">​</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/24030152194-526-1/ru/assets/images/time-travel-demo-cb82a8ca03689ff7ab3c75959d9093cd.gif" width="1469" height="910" class="img_ev3q"></p>
<p>Time Travel записывает снапшоты DOM-дерева, что позволяет отлаживать проблемы, связанные с селекторами, и в то же время экономить место на диске.</p>
<p>Подробнее — в нашем <a href="https://testplane.io/ru/docs/v8/basic-guides/time-travel/" target="_blank" rel="noopener noreferrer">новом руководстве</a>.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="новости-testplane-ui">Новости Testplane UI<a class="hash-link" aria-label="Прямая ссылка на Новости Testplane UI" title="Прямая ссылка на Новости Testplane UI" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/time-travel-release/#%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8-testplane-ui">​</a></h2>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="fuzzy-поиск-тестов">Fuzzy-поиск тестов<a class="hash-link" aria-label="Прямая ссылка на Fuzzy-поиск тестов" title="Прямая ссылка на Fuzzy-поиск тестов" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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/24030152194-526-1/ru/assets/images/fuzzy-search-8d769357ecdb7974fd04fd6936c983b9.gif" width="1469" height="920" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="новые-кнопки-для-управления-элементами-интерфейса">Новые кнопки для управления элементами интерфейса<a class="hash-link" aria-label="Прямая ссылка на Новые кнопки для управления элементами интерфейса" title="Прямая ссылка на Новые кнопки для управления элементами интерфейса" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Добавили кнопки для управления видимостью дерева тестов и плеера. Теперь можно скрывать их, когда они вам не нужны и, например, работать со скриншотами во весь экран.</p>
<p>Интерфейс запоминает ваши предпочтения и даже после перезагрузки страницы всё будет так, как вы настроили.</p>
<p><img decoding="async" loading="lazy" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/assets/images/show-hide-buttons-ed2fcdfb4eb95154e5d6bca687b7f1b0.gif" width="1469" height="910" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="другие-улучшения">Другие улучшения<a class="hash-link" aria-label="Прямая ссылка на Другие улучшения" title="Прямая ссылка на Другие улучшения" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/time-travel-release/#%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D1%83%D0%BB%D1%83%EF%BF%BD%D1%87%D1%88%D0%B5%D0%BD%D0%B8%D1%8F">​</a></h3>
<ul>
<li>Значительно переработали <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/html-reporter/html-reporter-commands/#merge-reports">команду <code>merge-reports</code></a> —&nbsp;теперь она работает лучше, стабильнее и покрывает больше кейсов</li>
<li>Testplane UI теперь умеет работать с отчетами, созданными в старых версиях — теперь можно не бояться потерять данные при обновлении</li>
<li><a href="https://github.com/gemini-testing/html-reporter/releases/tag/v10.17.0" target="_blank" rel="noopener noreferrer">Появилось API</a> для выгрузки снапшотов в Time Travel</li>
<li>Возможность выбирать скорость воспроизведения в плеере Time Travel</li>
</ul>
<p>Следите за новыми релизами в нашем блоге и в разделе <a href="https://github.com/gemini-testing/html-reporter/releases" target="_blank" rel="noopener noreferrer">Release Notes на GitHub</a>, а в случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue GitHub</a> — мы вам обязательно поможем!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Поддержка WebDriver BiDi протокола]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/support-bidi-protocol/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/support-bidi-protocol/</guid>
            <pubDate>Tue, 06 May 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[В testplane@8.27.0 добавлена поддержка WebDriver BiDi протокола (будущий единый стандарт для автоматизации браузеров).]]></description>
            <content:encoded><![CDATA[<p>В <a href="https://github.com/gemini-testing/testplane/releases/tag/v8.27.0" target="_blank" rel="noopener noreferrer">testplane@8.27.0</a> добавлена поддержка <a href="https://w3c.github.io/webdriver-bidi/" target="_blank" rel="noopener noreferrer">WebDriver BiDi протокола</a> (будущий единый стандарт для автоматизации браузеров).</p>
<p>WebDriver BiDi (Bidirectional) — это новый протокол кросс-браузерной автоматизации, который сочетает в себе лучшее из существующих протоколов: <a href="https://www.w3.org/TR/webdriver1/" target="_blank" rel="noopener noreferrer">W3C WebDriver</a> и <a href="https://chromedevtools.github.io/devtools-protocol/" target="_blank" rel="noopener noreferrer">Chrome DevTools Protocol (CDP)</a> (подробнее о них можно почитать в нашей <a href="https://testplane.io/ru/docs/v8/reference/webdriver-vs-cdp/" target="_blank" rel="noopener noreferrer">статье</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">странице</a>.</p>
<p>Список команд BiDi протокола доступен на этой <a href="https://webdriver.io/docs/api/webdriverBidi" target="_blank" rel="noopener noreferrer">странице</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="как-использовать">Как использовать?<a class="hash-link" aria-label="Прямая ссылка на Как использовать?" title="Прямая ссылка на Как использовать?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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>установить testplane@8.27.0 или старше;</li>
<li>указать капабилити <code>webSocketUrl: true</code> в поле <code>desiredCapabilities</code> для необходимого браузера (в следующей мажорной версии будет выставляться по умолчанию);</li>
<li>запустить тесты.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="что-можно-сделать-с-помощью-нового-протокола">Что можно сделать с помощью нового протокола?<a class="hash-link" aria-label="Прямая ссылка на Что можно сделать с помощью нового протокола?" title="Прямая ссылка на Что можно сделать с помощью нового протокола?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="отслеживание-и-перехват-сетевых-запросовответов">Отслеживание и перехват сетевых запросов/ответов<a class="hash-link" aria-label="Прямая ссылка на Отслеживание и перехват сетевых запросов/ответов" title="Прямая ссылка на Отслеживание и перехват сетевых запросов/ответов" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<ol>
<li>Можно замокать запрос к 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"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should mock testplane.io"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">networkAddIntercept</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> phases</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"beforeRequestSent"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"network.beforeRequestSent"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> networkRequest </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">networkProvideResponse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            request</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> networkRequest</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            body</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"string"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"hello world"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">url</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://testplane.io"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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/24030152194-526-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/24030152194-526-1/ru/blog/support-bidi-protocol/video/blog/bidi/mock-network-request-example.mp4">Скачайте видео</a>.</p></video>
<ol start="2">
<li>Перехватим все запросы к ресурсу 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"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should log all loaded urls"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"network.responseCompleted"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> networkResponse </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"got response from url:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> networkResponse</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">url</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://testplane.io"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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/24030152194-526-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/24030152194-526-1/ru/blog/support-bidi-protocol/video/blog/bidi/network-responses-example.mp4">Скачайте видео</a>.</p></video>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="отображение-логов-в-браузере">Отображение логов в браузере<a class="hash-link" aria-label="Прямая ссылка на Отображение логов в браузере" title="Прямая ссылка на Отображение логов в браузере" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<div class="language-typescript codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should show browser console logs"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"log.entryAdded"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> entryAdded </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token constant" style="color:#36acaa">JSON</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">stringify</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">entryAdded</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">execute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Hello Bidi"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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/24030152194-526-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/24030152194-526-1/ru/blog/support-bidi-protocol/video/blog/bidi/browser-logs-example.mp4">Скачайте видео</a>.</p></video>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="снятие-скриншота-всей-страницы">Снятие скриншота всей страницы<a class="hash-link" aria-label="Прямая ссылка на Снятие скриншота всей страницы" title="Прямая ссылка на Снятие скриншота всей страницы" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<div class="language-typescript codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="codeBlock_qGQc thin-scrollbar rounded-xl border border-neutral-200 bg-white dark:border-neutral-300/20 dark:bg-neutral-950"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> fs </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"node:fs"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">it</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"should screen full page"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> browser </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">url</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://www.npmjs.com/"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> tree </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">browsingContextGetTree</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> file </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> browser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">browsingContextCaptureScreenshot</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        context</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> tree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">contexts</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">context</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        origin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"document"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    fs</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">writeFileSync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"screenshot.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Buffer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">from</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">data</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"base64"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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/24030152194-526-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/24030152194-526-1/ru/blog/support-bidi-protocol/video/blog/bidi/screen-full-page-example.mp4">Скачайте видео</a>.</p></video>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="заключение">Заключение<a class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Хотя протокол BiDi все еще находится в <a href="https://www.w3.org/standards/types/#ED" target="_blank" rel="noopener noreferrer">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">прекращает поддержку CDP протокола с версии 129</a>.</p>
<p>Поддержка протокола BiDi позволяет нашим пользователям:</p>
<ul>
<li>использовать больше возможностей для автоматизации тестов, которых не было в WebDriver протоколе;</li>
<li>возможность отказаться от использования <a href="https://pptr.dev/" target="_blank" rel="noopener noreferrer">Puppeteer</a> (используются под капотом для поддержки CDP протокола), который по нашему опыту приводит к множеству проблем в тестах;</li>
<li>идти в ногу со временем и уже начинать привыкать к будущему единому стандарту.</li>
</ul>
<p>Переходите на новую версию Testplane и приносите фидбек. В случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue github</a> — мы вам обязательно поможем!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Запуск на локальных браузерах]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/local-browsers-intro/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/local-browsers-intro/</guid>
            <pubDate>Thu, 19 Dec 2024 14:00:00 GMT</pubDate>
            <description><![CDATA[В Testplane добавлена возможность автоматической загрузки браузеров и драйверов для последующего локального запуска.]]></description>
            <content:encoded><![CDATA[<p>В Testplane добавлена возможность автоматической загрузки браузеров и драйверов для последующего локального запуска.</p>
<p>Раньше Testplane с протоколом автоматизации webdriver можно было запустить локально только с вручную запущенным <a href="https://github.com/webdriverio/selenium-standalone" target="_blank" rel="noopener noreferrer">selenium-standalone</a>. Теперь достаточно указать <code>gridUrl: "local"</code> в <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/reference/config/main/">Конфиге Testplane</a> или запустить тесты с <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/reference/cli/">CLI-опцией</a> <code>--local</code>. В таком случае перед запуском тестов при необходимости будут загружены соответствующие браузеры и вебдрайверы к ним, которые также будут запущены для дальнейшего использования в этих тестах.</p>
<p>Загрузить браузеры и вебдрайверы к ним можно и отдельно, с помощью команды <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/reference/cli/#install-deps">install-deps</a>.</p>
<p>Пример запуска тестов на локальном браузере с webdriver протоколом автоматизации:</p>
<video src="/testplane-docs/website-static/24030152194-526-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/24030152194-526-1/ru/blog/local-browsers-intro/video/blog/local-browsers/local-browsers-example.mp4">Скачайте видео</a>.</p></video>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="как-использовать">Как использовать?<a class="hash-link" aria-label="Прямая ссылка на Как использовать?" title="Прямая ссылка на Как использовать?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Узнайте больше об этом в нашей документации <a href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/docs/v8/basic-guides/managing-browsers/">Как запустить Testplane в локальном браузере</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Расширение для VS Code]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/vscode-extension/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/vscode-extension/</guid>
            <pubDate>Thu, 26 Sep 2024 19:00:00 GMT</pubDate>
            <description><![CDATA[Для Testplane реализовали расширение для VS Code, с помощью которого можно настраивать Testplane с нуля, запускать тесты и удобно работать с REPL режимом.]]></description>
            <content:encoded><![CDATA[<p>Для Testplane реализовали расширение для <a href="https://code.visualstudio.com/">VS Code</a>, с помощью которого можно настраивать Testplane с нуля, запускать тесты и удобно работать с <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/reference/cli#testplane-repl">REPL режимом</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="установка">Установка<a class="hash-link" aria-label="Прямая ссылка на Установка" title="Прямая ссылка на Установка" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/vscode-extension/#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0">​</a></h3>
<p>Установите расширение со страницы <a href="https://marketplace.visualstudio.com/items?itemName=gemini-testing.vscode-testplane" target="_blank" rel="noopener noreferrer">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/24030152194-526-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"><span class="token-line" style="color:#393A34"><span class="token plain">Install Testplane</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Скопировать в буфер обмена" 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/24030152194-526-1/ru/assets/images/testplane-install-7847f5ee48078c237da5ccec1e762810.png" width="1734" height="538" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="запуск-тестов">Запуск тестов<a class="hash-link" aria-label="Прямая ссылка на Запуск тестов" title="Прямая ссылка на Запуск тестов" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="из-сайдбара-в-панели-дл�я-тестирования">Из сайдбара в панели для тестирования<a class="hash-link" aria-label="Прямая ссылка на Из сайдбара в панели для тестирования" title="Прямая ссылка на Из сайдбара в панели для тестирования" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<p>Панель для тестирования можно открыть, кликнув на значок тестирования в панели действий.</p>
<p><img decoding="async" loading="lazy" alt="Открытие панели для тестирования" src="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/assets/images/testing-sidebar-f3c667ae110b1c90f9c5c7f2a5ab70d0.png" width="2476" height="814" class="img_ev3q"></p>
<p>В левой части экрана отображается сайдбар с деревом всех прочитанных тестов. В дереве сверху вниз отображаются:</p>
<ul>
<li>название директории с тестами (<code>testplane-tests</code>);</li>
<li>название файла теста (<code>example.testplane.ts</code>);</li>
<li>название сьюта (<code>test</code>). В примере используется <code>describe</code> из <a href="https://mochajs.org/#bdd" target="_blank" rel="noopener noreferrer">Mocha BDD интерфейса</a>;</li>
<li>название теста (<code>example</code>). В примере использует <code>it</code> из <a href="https://mochajs.org/#bdd" target="_blank" rel="noopener noreferrer">Mocha BDD интерфейса</a>;</li>
<li>название браузера в котором тест будет запущен (<code>chrome</code>).</li>
</ul>
<p>У каждого из элементов дерева отображается кнопка <code>Run Test</code>. Если нажать на <code>Run Test</code> у элемента:</p>
<ul>
<li>директории, файла или сьюта, то запустятся все дочерние тесты во всех браузерах;</li>
<li>теста, то запустится выбранный тест во всех браузерах;</li>
<li>браузера, то запустится один тест в одном браузере.</li>
</ul>
<p>Пример запуска тестов из сайдбара:</p>
<video src="/testplane-docs/website-static/24030152194-526-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/24030152194-526-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/24030152194-526-1/ru/assets/images/run-all-tests-from-sidebar-8887cbe650347cf4bedf0a7c305cb858.png" width="2482" height="810" class="img_ev3q"></p>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="из-текстового-редактора">Из текстового редактора<a class="hash-link" aria-label="Прямая ссылка на Из текстового редактора" title="Прямая ссылка на Из текстового редактора" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<p>Если в текстовом редакторе открыть Testplane тест, то рядом с каждым сьютом (<code>describe</code>) и тестом (<code>it</code>) будет отображаться зеленая кнопка play для их запуска. Если нажать левой кнопкой мыши, то запустится тест во всех браузерах, и после его выполнения отобразится результат в виде иконки статуса прохождения теста.
Если нажать на кнопку play правой клавишей мыши, то можно запустить тест в одном из браузеров.</p>
<p>Пример запуска тестов из текстового редактора:</p>
<video src="/testplane-docs/website-static/24030152194-526-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/24030152194-526-1/ru/blog/vscode-extension/video/blog/vscode-extension/run-tests-from-editor.mp4">Скачайте видео</a>.</p></video>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="с-настройкой-devtools">С настройкой <code>devtools</code><a class="hash-link" aria-label="Прямая ссылка на с-настройкой-devtools" title="Прямая ссылка на с-настройкой-devtools" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<p>В сайдбаре в панели для тестирования также отображается секция с названием Testplane. В ней можно управлять настройками в рантайме. При клике в чекбокс <code>Enable devtools</code> и последующем запуске тестов браузеры будут подниматься с использованием CDP протокола (вне зависимости от того, что указано в конфиге). Подробнее про этот режим можно прочитать <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/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/24030152194-526-1/ru/assets/images/enable-devtools-0663340d1f8c2c477860e506b65bc54e.png" width="2484" height="820" class="img_ev3q"></p>
<h4 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="с-настройкой-repl">С настройкой <code>REPL</code><a class="hash-link" aria-label="Прямая ссылка на с-настройкой-repl" title="Прямая ссылка на с-настройкой-repl" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h4>
<p>При клике в чекбокс <code>Enable REPL</code> и последующем запуске теста (в REPL режиме можно одновременно запустить только один тест) он будет запущен в специальном REPL режиме. Подробнее про этот режим можно прочитать <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/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/24030152194-526-1/ru/assets/images/enable-repl-469f08c30bc21b937ed861ecae01f191.png" width="2484" height="816" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="фильтрация-тестов-в-сайдбаре-панели-тестирования">Фильтрация тестов в сайдбаре панели тестирования<a class="hash-link" aria-label="Прямая ссылка на Фильтрация тестов в сайдбаре панели тестирования" title="Прямая ссылка на Фильтрация тестов в сайдбаре панели тестирования" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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%EF%BF%BD%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">​</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/24030152194-526-1/ru/assets/images/filter_sidebar_by_browser-db69a093db0bae138250c26921567d38.png" width="2482" height="814" class="img_ev3q"></p>
<p>Также в инпуте с фильтрацией можно использовать следующие значения:</p>
<ul>
<li>строка с названием элемента дерева (директория/файл/сьют/тест/браузер);</li>
<li>тег <code>@doc</code> — для отображения тестов из активного файла в текстовом редакторе;</li>
<li>тег <code>@openedFiles</code> — для отображения тестов во всех открытых файлах в текстовом редакторе;</li>
<li>тег <code>@executed</code> — для отображения только выполняющихся тестов;</li>
<li>тег <code>@failed</code> — для отображения только упавших тестов.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="перезапуск-окружения-testplane">Перезапуск окружения Testplane<a class="hash-link" aria-label="Прямая ссылка на Перезапуск окружения Testplane" title="Прямая ссылка на Перезапуск окружения Testplane" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</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/24030152194-526-1/ru/assets/images/refresh-tests-a2a3718e55dc10c27c05e95359074d9f.png" width="2482" height="820" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="требования">Требования<a class="hash-link" aria-label="Прямая ссылка на Требования" title="Прямая ссылка на Требования" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<ul>
<li>версия testplane должна быть 8.20.0 и старше (с версиями ниже запуск тестов работать не будет).</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="текущие-ограничения">Текущие ограничения<a class="hash-link" aria-label="Прямая ссылка на Текущие ограничения" title="Прямая ссылка на Текущие ограничения" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<ul>
<li>не поддержаны debug и continuous (auto-run) режимы;</li>
<li>нет вотчинга добавления/удаления тестов и файлов;</li>
<li>использование кастомных интерфейсов Mocha может приводить к некорректному отображению иконок с кнопкой play для запуска тестов из текстового редактора.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="заключение">Заключение<a class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Данная функциональность предоставляет нашим пользователям новые возможности:</p>
<ul>
<li>возможность запуска тестов прямо из IDE и просмотр результата выполнения;</li>
<li>возможность максимально быстро переключиться в режим <code>devtools</code> и <code>repl</code>;</li>
<li>автоматически подхватывать изменения, внесенные в конфиг Testplane.</li>
</ul>
<p>Устанавливайте расширение Testplane для VS Code и приходите с фидбеком. В случае обнаружения проблем приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue github</a> — мы вам обязательно поможем!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Скриншотное тестирование со Storybook]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/screenshot-testing-with-storybook/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/screenshot-testing-with-storybook/</guid>
            <pubDate>Thu, 26 Sep 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[Теперь для автоматического визуального тестирования ваших компонентов достаточно иметь Storybook с вашими компонентами и плагин @testplane/storybook. Больше не нужно писать тесты.]]></description>
            <content:encoded><![CDATA[<p>Теперь для автоматического визуального тестирования ваших компонентов достаточно иметь Storybook с вашими компонентами и плагин <code>@testplane/storybook</code>. Больше не нужно писать тесты.</p>
<p><a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a> - это инструмент для разработки пользовательских интерфейсов на основе компонентов. Он позволяет разработчикам независимо визуализировать компоненты в различных состояниях в изолированной от остальных компонентов среде.
Такой "шоурум" идеально подходит для скриншотного тестирования ваших компонентов, т.к. за счет этой изолированной среды такие тесты получаются в разы стабильнее и быстрее, чем вариант с e2e.</p>
<p>С помощью плагина <a href="https://github.com/gemini-testing/testplane-storybook" target="_blank" rel="noopener noreferrer">@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">play-функция</a>, то <code>testplane</code> перед началом теста выполнит ее, чтобы привести компонент в нужное состояние.</p>
<p>Но если и этих возможностей вам не хватит, то вы можете прямо в story-файле описать testplane-тест, который будет выполнен как дополнительный тест для компонента.</p>
<p>Как это использовать?</p>
<p>Узнайте больше об этом в нашей документации <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/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">Пример проекта</a> с настроенным скриншотным тестированием со Storybook можно посмотреть в нашем репозитории на GitHub.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Компонентное тестирование]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/component-testing-intro/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/component-testing-intro/</guid>
            <pubDate>Mon, 10 Jun 2024 14:00:00 GMT</pubDate>
            <description><![CDATA[В testplane в экспериментальном режиме поддержали компонентное тестирование и unit-тесты, выполняющиеся в браузере.]]></description>
            <content:encoded><![CDATA[<p>В testplane в экспериментальном режиме поддержали компонентное тестирование и unit-тесты, выполняющиеся в браузере.</p>
<p>Практически все современные веб-интерфейсы пишутся с использованием фреймворков (React, Vue, Svelte, ...) для упрощения создания и реиспользования компонентов. Такие компоненты важно тестировать в изоляции друг от друга, чтобы быть уверенным, что каждый компонент корректно справляется со своей работой. Точно так же как мы пишем unit-тесты отдельно от интеграционных. В Testplane уже поддержанно скриншотное тестирование компонентов с помощью <a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a>, однако этот инструмент актуален не для всех проектов. Поэтому мы разработали ещё один вариант компонентного тестирования, который не требует использования Storybook.</p>
<p>Данная возможность может быть полезна, если у вас в проекте используются React-компоненты. При этом тестов нет совсем или используются только тяжелые интеграционные тесты (т.е. проверяются целые страницы, содержащие множество компонентов). Согласно <a href="https://martinfowler.com/articles/practical-test-pyramid.html" target="_blank" rel="noopener noreferrer">пирамиде тестирования</a>, интеграционных тестов должно быть меньше всего так как они больше подвержены “флапам” и зачастую избыточны. Множество сценариев можно проверить с помощью компонентых тестов и тем самым сократить время выполнения тестов в CI и улучшить их стабильность.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="варианты-реализации-компонентного-тестирования">Варианты реализации компонентного тестирования<a class="hash-link" aria-label="Прямая ссылка на Варианты реализации компонентного тестирования" title="Прямая ссылка на Варианты реализации компонентного тестирования" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Компонентное тестирование — это вид тестирования, при котором логика работы веб-компонента проверяется в изоляции от веб-страницы, в которой он используется. Для того, чтобы выполнить такой тест, нужно уметь корректно рендерить компонент. Часто для этой задачи применяют <a href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer">JSDom</a> (используется в <a href="https://jestjs.io/" target="_blank" rel="noopener noreferrer">Jest</a>), который рендерит веб-компоненты с помощью виртуального рендеринга Node.js, т.е. без использования реального браузера. С одной стороны, это работает быстрее (браузер не поднимается), а с другой — менее стабильно, так как проверки выполняются не в реальном браузере. Второе популярное решение — это использовать очень быстрый dev-сервер <a href="https://vitejs.dev/" target="_blank" rel="noopener noreferrer">Vite</a>, который поддерживает множество фреймворков (React, Vue, Svelte, ...) и отвечает за рендеринг компонентов в изоляции.</p>
<p>Мы остановились на варианте с использованием Vite, так как такой подход обеспечивает тестирование страницы более приближенное к реальности (как если бы ее открыл пользователь). При этом, сами тесты выполняются немного дольше, чем в jsdom. Но для нас самое главное стабильность и воспроизводимость результатов тестов, поэтому выбор был очевиден.</p>
<details class="group overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-300/10"><summary class="flex cursor-pointer items-start p-4 font-medium transition-colors duration-200 select-none group-open:bg-neutral-50 hover:bg-neutral-50 dark:group-open:bg-neutral-600/20 dark:hover:bg-neutral-600/10"><span class="flex-1 text-base leading-relaxed [&amp;>p]:mb-0">Краткая информация о том, как это реализовано</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>при указании опции <code>testRunEnv: 'browser'</code> в конфиге Testplane, будет использован браузерный раннер, который поднимает Vite на localhost с рандомным свободным портом (пользователь может выставить необходимый порт в конфиге Vite). Именно на этом поднятом сервере будут рендерится все пользовательские компоненты и выполняться все необходимые команды/проверки (т.е. прямо внутри браузера);</li>
<li>затем читаются тесты в Node.js, т.е. как это делается и для интеграционных тестов. Это необходимо, чтобы все плагины работали корректно (речь про триггер событий при чтении тестов), а так же, чтобы была возможность запустить тесты из одного файла параллельно. Если бы тест читался только в контексте браузера, то приходилось бы запускать абсолютно все тесты внутри одного файла и критическое завершение в одном из них приводило бы к остановке всех последующих. Т.е. на данном этапе мы понимаем какие тесты нужно запустить;</li>
<li>после чего, как обычно, поднимаются необходимые браузеры и в них запускаются тесты. Каждый тест перед выполнением пользовательского кода выполняет переход на поднятый сервер Vite. При выполнении такого запроса генерится специальный index.html, в который подгружаются все необходимые библиотеки:</li>
<li>mocha — для чтения тестов;</li>
<li>webdriverio — для использования инстанса браузера внутри самого браузера;</li>
<li>expect — для выполнения проверок;</li>
<li>и прочие внутренние модули, необходимые для корректной работы.</li>
<li>при открытии 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">socket.io</a>;</li>
<li>после чего, в браузере начинает выполняться указанный тест, который по завершению возвращает результат в Node.js процесс.</li>
</ul></div></details>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="как-использовать">Как использовать?<a class="hash-link" aria-label="Прямая ссылка на Как использовать?" title="Прямая ссылка на Как использовать?" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Узнайте больше об этом в нашей документации <a href="https://testplane-ci.website.yandexcloud.net/ru/docs/v8/guides/component-testing">Компонентное тестирование</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="заключение">Заключение<a class="hash-link" aria-label="Прямая ссылка на Заключение" title="Прямая ссылка на Заключение" href="https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-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">​</a></h3>
<p>Данная функциональность предоставляет нашим пользователям новые возможности:</p>
<ul>
<li>изолированное тестирование React-компонентов в реальном браузере;</li>
<li>стабильность и воспроизводимость результатов тестов в сравнении с JSDom;</li>
<li>поддержка HMR;</li>
<li>доступ к инстансам browser/expect в DevTools браузера, для удобного дебага;</li>
<li>отображение логов в терминале для повышения комфорта и увеличения скорости разработки.</li>
</ul>
<p>Переезжайте на Testplane и попробуйте новую возможность самостоятельно. В случае обнаружения проблем, приходите в <a href="https://github.com/gemini-testing/testplane/issues" target="_blank" rel="noopener noreferrer">issue github</a> — мы вам обязательно поможем!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ребрендинг]]></title>
            <link>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/testplane-rebranding/</link>
            <guid>https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/24030152194-526-1/ru/blog/testplane-rebranding/</guid>
            <pubDate>Mon, 20 May 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[Представляем вашему вниманию... Testplane. Наш проект Hermione решил сменить имя — встречайте проверенный годами продукт в свежем образе!]]></description>
            <content:encoded><![CDATA[<p>Представляем вашему вниманию... <strong>Testplane</strong>. Наш проект Hermione решил сменить имя — встречайте проверенный годами продукт в свежем образе!</p>
<p>Мы долго рассматривали все за и против и пришли к выводу, что новое имя — Testplane — наилучшим образом отражает наше видение и будущее развитие продукта:</p>
<ol>
<li>Мы планируем активно вкладываться в развитие инструмента в опенсорсе. Новое имя символизирует качественный переход в развитии инструмента.</li>
<li>Мы стремимся создать полноценный бренд с товарным знаком, логотипом, фирменным визуальным стилем. Testplane — это название, которое как сочетает в себе отсылку к «испытательному полету», так и может читаться как "плоскость для тестирования".</li>
</ol>
<p>Суть продукта остаётся неизменной. Testplane — это тот же проект, который вы знали многие годы как Hermione, но в свежем, обновленном виде. Чтобы упростить переход, мы решили сохранить сквозную нумерацию версий: Testplane v8.x — это эквивалент Hermione v8.x.</p>
<p>Если вы уже работаете с Hermione, обновление на Testplane займет всего несколько минут. Мы проектировали его как drop-in замену:</p>
<ul>
<li>Полная поддержка существующих плагинов Hermione.</li>
<li>Понимание всех опций и переменных окружения Hermione.</li>
<li>Полная совместимость конфигураций.</li>
<li>Два бинарных файла (testplane и hermione) для плавного перехода (вы можете запускать и как hermione gui, и как testplane gui).</li>
<li>Экспорт типов для TypeScript, включая как собственные типы Testplane, так и типы Hermione (включая hermioneCtx).</li>
</ul>
<p>Если же вы еще не пробовали Testplane — загляните в нашу документацию и начните ваше исследование с Testplane всего за пару минут!</p>
<p>Благодарим за интерес к проекту! ✈️</p>]]></content:encoded>
        </item>
    </channel>
</rss>