Для использования Driver.js необходимо установить библиотеку через npm или подключить её напрямую через CDN. В случае npm:
npm install driver.js
После установки подключение в проекте выглядит следующим образом:
import Driver from 'driver.js';
import 'driver.js/dist/driver.min.css';
Для CDN:
<link rel="stylesheet" href="https://unpkg.com/driver.js/dist/driver.min.css">
<script src="https://unpkg.com/driver.js/dist/driver.min.js"></script>
После подключения можно создавать экземпляр Driver и настраивать его параметры.
Экземпляр Driver создаётся с объектом конфигурации, который определяет поведение всех шагов тура:
const driver = new Driver({
animate: true, // плавная анимация переходов
opacity: 0.75, // затемнение фона
padding: 10, // отступ вокруг выделенного элемента
allowClose: false, // запрещает закрывать тур кликом по затемнённой области
overlayClickNext: true // переход к следующему шагу при клике на оверлей
});
Каждый шаг тура задаётся методом defineSteps и содержит
ссылку на элемент, заголовок и описание:
driver.defineSteps([
{
element: '#menu-button',
popover: {
title: 'Меню',
description: 'Кнопка открытия главного меню приложения',
position: 'bottom'
}
},
{
element: '#profile-link',
popover: {
title: 'Профиль пользователя',
description: 'Переход к личным настройкам',
position: 'left'
}
}
]);
Driver.js позволяет задавать позицию подсказки относительно
элемента: top, bottom,
left, right, а также auto, чтобы
библиотека автоматически выбирала оптимальное место. Для адаптивных
интерфейсов рекомендуется использовать auto, что
предотвращает выход подсказки за границы окна.
position: 'auto'
Для мобильных устройств можно использовать медиа-запросы в CSS для корректировки стилей оверлея и поповера, либо динамически менять размеры и отступы через JavaScript.
Driver.js поддерживает переход к следующему шагу кликом на подсказку или кнопку:
driver.start(); // запуск тура
driver.on('next', (step) => {
console.log('Переход к следующему шагу:', step);
});
driver.on('close', () => {
console.log('Тур завершён');
});
Кнопки в подсказках можно кастомизировать через CSS или использовать встроенные:
popover: {
title: 'Элемент',
description: 'Описание шага',
buttons: [
{ text: 'Назад', action: driver.previous },
{ text: 'Далее', action: driver.next },
{ text: 'Закрыть', action: driver.close }
]
}
Driver.js часто интегрируют в автоматизированные E2E тесты для проверки корректности отображения и поведения интерфейса при интерактивных турах. Пример с Cypress:
describe('Тур интерфейса', () => {
it('должен пройти все шаги тура', () => {
cy.visit('/dashboard');
cy.window().then((win) => {
const driver = new win.Driver({
animate: false,
opacity: 0
});
driver.defineSteps([
{ element: '#menu-button', popover: { title: 'Меню', description: '' } },
{ element: '#profile-link', popover: { title: 'Профиль', description: '' } }
]);
driver.start();
cy.get('#menu-button').should('exist');
cy.get('#profile-link').should('exist');
driver.next();
cy.get('#profile-link').should('be.visible');
});
});
});
Основные задачи при E2E тестировании тура:
Если элементы появляются динамически после загрузки страницы,
рекомендуется использовать wait или проверку через
MutationObserver:
const observer = new MutationObserver(() => {
if (document.querySelector('#dynamic-element')) {
driver.start();
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
Это гарантирует, что тур не начнётся до появления всех необходимых элементов.
Driver.js поддерживает локализацию заголовков и описаний, что важно для международных приложений:
driver.defineSteps([
{
element: '#menu-button',
popover: {
title: i18n.t('menu.title'),
description: i18n.t('menu.description'),
position: 'bottom'
}
}
]);
Стилизация осуществляется через CSS-классы
.driver-target для элементов и .driver-popover
для подсказок. Можно менять цвета, шрифты, размеры, а также добавлять
кастомные анимации.
start(), next(), previous(),
reset() позволяют управлять туром из кода.driver.on('eventName', callback) для интеграции с логикой
приложения или тестами.driver.defineSteps([...]) можно вызывать после старта,
чтобы добавлять новые шаги.Эта структура позволяет использовать Driver.js не только для ознакомительных туров, но и как инструмент для E2E тестирования интерфейса, обеспечивая надежную проверку последовательности действий, видимости элементов и корректности интерактивных подсказок.