Driver.js — это библиотека для создания интерактивных пошаговых руководств и подсветки элементов на веб-странице. Она позволяет автоматизировать визуальные проверки интерфейса, выделяя ключевые элементы и предоставляя инструкции пользователю. Основной функционал строится вокруг создания последовательностей шагов с указанием целевых DOM-элементов.
Каждый шаг описывается объектом с набором свойств:
const steps = [
{
element: '#submit-button',
popover: {
title: 'Кнопка отправки',
description: 'Нажмите здесь, чтобы отправить форму',
position: 'bottom'
}
},
{
element: '#username-input',
popover: {
title: 'Поле логина',
description: 'Введите ваш логин',
position: 'right'
}
}
];
element — селектор DOM-элемента, который будет
подсвечен.popover.title — заголовок всплывающей подсказки.popover.description — текст описания.popover.position — положение подсказки относительно
элемента (top, bottom, left,
right, auto).Для создания экземпляра Driver.js используется класс
Driver:
import Driver from 'driver.js';
import 'driver.js/dist/driver.min.css';
const driver = new Driver({
allowClose: false,
overlayClickNext: true,
doneBtnText: 'Завершить',
closeBtnText: 'Закрыть',
nextBtnText: 'Далее',
prevBtnText: 'Назад',
});
Ключевые параметры конструктора:
allowClose — разрешает закрытие руководства через
кнопку закрытия.overlayClickNext — переход к следующему шагу при клике
на затемнённый фон.doneBtnText, closeBtnText,
nextBtnText, prevBtnText — текст кнопок
навигации.Запуск последовательности шагов производится методом
defineSteps и start:
driver.defineSteps(steps);
driver.start();
Driver.js поддерживает тонкую настройку поведения и внешнего вида:
const driver = new Driver({
className: 'custom-driver-popover',
stageBackground: '#00000088', // затемнение фона
});
driver = new Driver({
scrollIntoViewOptions: { beh * avior: 'smooth', block: 'center' }
});
Управление фокусом: библиотека автоматически фокусируется на выделенном элементе, что удобно для тестирования доступности.
События жизненного цикла:
onHighlightStarted(element) — срабатывает при начале
подсветки элемента.onNext(element) — при переходе к следующему шагу.onReset() — при завершении или сбросе руководства.Пример подписки на события:
driver.on('onNext', (element) => {
console.log('Переход к следующему шагу:', element);
});
Driver.js может использоваться для тестирования состояния элементов, что полезно при автоматизации QA-процессов:
const steps = [
{
element: '#submit-button',
popover: {
title: 'Кнопка отправки',
description: 'Проверка видимости элемента',
position: 'bottom'
},
onNext: (element) => {
if (!element.offsetParent) {
console.warn('Элемент скрыт!');
}
}
}
];
driver.defineSteps([
{
element: '#username-label',
popover: {
title: 'Лейбл пользователя',
description: 'Проверяем текст',
position: 'right'
},
onNext: (element) => {
if (element.textContent.trim() !== 'Имя пользователя') {
console.error('Текст не соответствует ожиданиям');
}
}
}
]);
Driver.js позволяет строить шаги на лету, что важно для страниц с динамическим контентом:
const dynamicSteps = Array.from(document.querySelectorAll('.feature')).map((el, index) => ({
element: el,
popover: {
title: `Функция ${index + 1}`,
description: 'Описание функции',
position: 'bottom'
}
}));
driver.defineSteps(dynamicSteps);
driver.start();
Такой подход позволяет автоматизировать проверки на страницах, где элементы создаются после загрузки данных.
Для сложных интерфейсов Driver.js может быть частью пошагового QA-сценария:
Пример сценария с условным переходом:
driver.defineSteps([
{
element: '#login-button',
popover: {
title: 'Кнопка логина',
description: 'Проверяем доступность кнопки',
position: 'top'
},
onNext: (element) => {
if (element.disabled) {
console.warn('Кнопка недоступна, пропуск шага');
driver.moveNext();
}
}
}
]);
driver.start();
Такой метод позволяет автоматизировать QA-процессы, не только визуально проверяя элементы, но и фиксируя их состояние в логах.