Time Travel — одна из ключевых особенностей Cypress, которая значительно упрощает процесс отладки тестов. Этот механизм позволяет просматривать состояние приложения в каждый момент выполнения команды теста, обеспечивая глубокий контроль и прозрачность тестирования.
Cypress автоматически делает снимки DOM при выполнении каждой команды. Эти снимки сохраняются в цепочке выполнения теста и становятся доступными в интерфейсе Test Runner. Благодаря этому можно увидеть не только результат действия, но и предыдущее состояние страницы, элементы, их свойства и классы.
Ключевые моменты:
cy.get, cy.click,
cy.type и других команд сопровождается снимком DOM.При запуске теста в Test Runner каждая команда отображается в виде цепочки. Наведение на команду раскрывает снимок состояния DOM на момент выполнения этой команды. Это позволяет быстро определить, на каком шаге произошла ошибка или элемент оказался недоступен.
Пример:
describe('Time Travel пример', () => {
it('Отображение элемента после клика', () => {
cy.visit('/login')
cy.get('input[name="username"]').type('admin')
cy.get('input[name="password"]').type('password')
cy.get('button[type="submit"]').click()
cy.contains('Добро пожаловать, admin')
})
})
В Test Runner можно:
cy.get('input[name="username"]') и
увидеть пустое поле.type('admin') и проверить, что значение
инпута изменилось.click() убедиться, что страница обновилась и
появился текст приветствия.Cypress позволяет использовать Time Travel совместно с Chrome DevTools. При просмотре снимка DOM можно открыть консоль и инспектировать элементы напрямую, что облегчает понимание, почему тест не прошел. Любые изменения в DOM на шаге теста можно наблюдать и сравнивать с ожидаемым состоянием.
cy.debug() и
cy.pause() для остановки выполнения и детального изучения
состояния DOM.Time Travel превращает Cypress из просто фреймворка для автоматизации тестирования в мощный инструмент визуальной отладки, позволяя анализировать каждый шаг теста и исключать человеческий фактор при определении причин ошибок.