Путешествия во времени с Replay.io |
15.12.2023 00:00 |
Автор: Филип Рик (Filip Hric) Несколько дней назад я изучал инструмент Replay и имел возможность взглянуть как на ряд новых возможностей, так и на инструмент в целом. Меня он очень впечатлил и как тестировщика, и как разработчика. Я думаю, у Replay есть потенциал стать неотъемлемой частью процесса разработки, так как он наводит мостик между разработчиками, тестировщиками и всеми, кто работает над продуктом. Если разработчик когда-либо возвращал вам баг-репорт с комментарием «не воспроизводится», или вы дебажили противную проблему с пачкой console.log(), то знаете, как сложен может быть дебаг. Цель Replay – чтобы этот процесс стал проще и (хотите верьте, хотите нет) радостнее. Что такое Replay? Если кратко, Replay.io – это инструмент, записывающий все, что делает ваше приложение, и дающий вам суперспособности дебага. Запись – это комбинация видео, исходного кода, снимков состояния DOM и инструментов разработчика, способных путешествовать во времени; все это позволяет вам ретроактивно добавлять операторы печати к работе приложения. Лучший способ показать его возможности – это увидеть его в действии. Replay.io можно использовать разными способами – начнем с наиболее простого. Создание записиДля создания записи скачайте браузер Replay.io, откройте его и нажмите на запись. После этого можно взаимодействовать с приложением, как в обычном браузере. К примеру, можно воспроизвести баг, на который вы наткнулись.
После того, как вы закончите, запись будет доступна. Ее можно перематывать вперед и назад и наблюдать за различными нажатиями клавиш, кликами мыши и прочими взаимодействиями. Если вы в процессе воспроизведения бага, можно добавлять к записи комментарии и делиться ей с разработчиками. И тут начинается настоящая магия.
Путешествие во времени с DevToolsЗапись может сделать кто угодно, и это снимает большой груз с плеч разработчиков. Однако создание записи – всего лишь начало пути. Replay.io дает вам набор инструментов, очень похожих на инструменты разработчика Chrome или Firefox. Однако теперь они прикреплены к вашей записи. Вы можете ретроактивно изучать элементы, просматривать вызовы API на вкладке сети, читать логи консоли, и так далее.
Изучение кода приложенияНа первый взгляд все очень похоже на trace-viewer Playwright или временную шкалу Cypress. Оба они позволяют по-своему путешествовать во времени. Но Replay.io делает куда более мощные штуки. Помимо снимков состояния и сетевой деятельности можно получить доступ к полному исходному коду вашего приложения. К примеру, я могу провести дальнейшее исследование компонента приложения, ответственного за создание задачи. В режиме просмотра кода я могу кликнуть на кнопку «+» для добавления оператора печати. Теперь он будет показывать имя компонента в консоли, предоставляя информацию о количестве вызовов функции в ходе записанного взаимодействия.
Но этот оператор печати еще мощнее, чем кажется. Мы можем передать в него переменную из нашего приложения. Таким образом переданная через приложение информация становится для нас видимой. Заметьте, что теперь в консоли видно «Hello world ????» и «new todo» – после того, как мы использовали переменную newTodo внутри оператора печати.
Это позволяет следить за информационным потоком и эффективнее дебажить. Мы не только видим, что что-то произошло, но и можем разобраться, почему оно произошло. Если вы используете React с менеджером состояний вроде Jotai или Redux, то Replay.io позволяет взглянуть на состояние каждого компонента. Панель React в инструментах разработчика Replay.io позволяет прослеживать состояние компонента по всей временной шкале.
Дебаг ваших тестовЗаписанная информация очень полезна, но все еще круче. Как я уже упоминал, Replay.io – это по сути браузер. Вместо ручного воспроизведения бага вы можете использовать ваш тест-прогон для создания записей для вас. Это интегрируется как в Cypress, так и в Playwright. Настройка довольно проста. В Replay есть плагин Cypress, работающий аналогично любому другому плагину. Вы устанавливаете его как пакет и включаете в файлы support/e2e.ts file и cypress.config.ts. 1 npm i @replayio/cypress После этого Replay.io нужно настроить в вашей CI. Я пользуюсь GitHub Actions, но настроить это можно практически в любом провайдере CI. 1 name: Replay test Ключ API можно получить прямо из браузера Replay и добавить его в качестве секретного в ваш GitHub-проект. Если вы не знаете, как настраивать GitHub Actions, посмотрите мою статью на эту тему. После настройки можно запустить тест, и вы получите то же самое, что и раньше. Но в дополнение к этому Replay.io также запишет ваш прогон. Эти записи доступны прямо из браузера Replay.io. Через них можно пробежаться так же, как через временную шкалу Cypress в открытом режиме. Однако помните – Replay записывает все, и вы можете изучать не только свой тест, но и свое приложение. Если тест по любой причине стал нестабильным, вам больше не нужно воспроизводить эту нестабильность локально – воспользуйтесь Replay.io, чтобы разобраться, что происходит и в вашем тесте, и в вашем приложении.
В завершение скажу, что Replay.io может быть полезным компаньоном для записи багов и передачи этой информации разработчиком. Он помогает провести дебаг приложения, добавляя операторы печати к прошлым или будущим событиям, а также поможет с дебагом тестов, предоставляя всю информацию прямо из прогона. Я думаю, что этот инструмент сэкономит вам кучу времени, сделав дебаг проще, быстрее и, откровенно говоря, увлекательнее. |