Тестирование туров в Intro.js — критически важный этап разработки интерактивных руководств, обеспечивающий корректное отображение шагов, их последовательность и взаимодействие с элементами страницы. Intro.js предоставляет удобные механизмы для проверки правильности сценариев, а также гибкие возможности для автоматизации тестирования.
Каждый тур в Intro.js строится на основе массива объектов шагов
(steps). Каждый шаг описывает элемент, текст подсказки,
положение подсказки и дополнительные параметры:
var tour = introJs();
tour.setOptions({
steps: [
{
element: '#header',
intro: 'Это заголовок страницы',
position: 'bottom'
},
{
element: '#menu',
intro: 'Здесь расположено главное меню',
position: 'right'
}
]
});
Ключевые моменты для тестирования структуры:
element существуют в DOM в момент запуска
тура.intro содержит корректную информацию.position для каждого шага, особенно при адаптивном
дизайне.Intro.js автоматически определяет порядок шагов по порядку в массиве
steps. При динамическом формировании шагов важно
тестировать:
nextStep() и
previousStep().tour.onafterchange(function(targetElement) {
console.log('Сменился шаг на элемент:', targetElement);
});
Использование событий позволяет логировать последовательность и проверять соответствие ожидаемому сценарию.
Intro.js поддерживает множество событий, которые можно использовать для верификации поведения тура:
onbeforechange(targetElement) — проверка перед
переходом на шаг.onchange(targetElement) — момент смены шага.onafterchange(targetElement) — после рендера
подсказки.oncomplete() — завершение тура.onexit() — принудительный выход из тура.Пример логирования всех событий для тестирования:
tour.onbeforechange(el => console.log('Перед шагом:', el.id));
tour.onchange(el => console.log('Смена шага на:', el.id));
tour.onafterchange(el => console.log('Шаг отрендерен:', el.id));
tour.oncomplete(() => console.log('Тур завершён'));
tour.onexit(() => console.log('Тур прерван'));
Тестирование через события позволяет убедиться, что сценарий выполняется в соответствии с планом и реагирует на пользовательские действия.
Для более сложных проектов используется интеграция с инструментами автоматизированного тестирования, такими как Jest, Cypress, Puppeteer. Основная цель — проверить поведение тура в различных условиях:
Пример Cypress теста для тура:
describe('Тест тура Intro.js', () => {
it('Проверяет наличие всех шагов', () => {
cy.visit('/page-with-tour');
cy.window().then(win => {
const tour = win.introJs();
tour.start();
tour._options.steps.forEach(step => {
cy.get(step.element).should('exist');
});
});
});
});
Автоматизация позволяет не только проверять корректность отображения, но и выявлять ошибки при изменениях DOM или логики приложения.
Intro.js корректно работает на различных разрешениях экрана, но туры требуют отдельной проверки:
skipStep() или условия
отображения.Качество тура определяется не только технической корректностью, но и удобством для пользователя:
Intro.js часто используется совместно с фреймворками React, Vue, Angular. Тестирование туров в этих условиях включает:
onbeforechange и
onafterchange для логирования шагов.Тестирование туров в Intro.js позволяет поддерживать стабильность интерактивных руководств, обеспечивает последовательность шагов и предсказуемость поведения интерфейса, а также минимизирует ошибки при изменениях кода или структуры страницы.