При переходе на новую версию библиотеки Gridstack.js критически важно проводить тщательное тестирование всех функциональных блоков интерфейса, использующих сетку. Основная цель — убедиться, что новые версии компонентов корректно обрабатывают drag & drop, ресайз, сохранение состояния и совместимость с существующими виджетами.
Инициализация сетки в Gridstack.js после миграции может претерпеть изменения в параметрах конфигурации. Необходимо убедиться в корректной работе следующих аспектов:
GridStack.init(options) должен корректно создавать сетку.
Следует проверить, что контейнер получает правильные размеры и
классы.float,
cellHeight, column, margin и
disableOneColumnMode — их значения могут отличаться между
версиями. Любое расхождение может привести к смещению виджетов.added, removed,
change: после миграции необходимо убедиться, что
события по-прежнему вызываются и содержат корректные данные о положении
виджетов.Пример проверки инициализации:
const grid = GridStack.init({
column: 12,
float: true,
cellHeight: 80,
margin: 5
});
console.assert(grid.engine.nodes.length === 0, "Сетка должна быть пустой после инициализации");
Drag & drop — ключевой элемент функционала Gridstack.js. Основные моменты, на которые стоит обратить внимание после миграции:
dragstart, drag,
dragstop: проверка корректной генерации событий и
передачи правильных координат.Для автоматизации тестирования можно использовать скрипты, имитирующие движение мыши и проверяющие итоговые координаты:
const node = grid.getNodeById('widget1');
grid.move(node, 2, 3);
console.assert(node.x === 2 && node.y === 3, "Виджет должен корректно перемещаться");
Изменение размеров виджетов после миграции может вызвать ошибки отображения. Основные параметры, которые проверяются:
minWidth, minHeight, maxWidth,
maxHeight.resizestart, resize,
resizestop: корректная генерация событий и
передача актуальных размеров.Пример проверки ресайза:
const node = grid.getNodeById('widget2');
grid.resize(node, 4, 2);
console.assert(node.w === 4 && node.h === 2, "Виджет должен изменять размер корректно");
После миграции особенно важно проверить сохранение состояния сетки, так как формат хранения данных может измениться:
save() и load():
проверка того, что виджеты возвращаются в исходное положение и
размер.x, y, w,
h, id) сохраняются корректно.Пример сохранения и восстановления:
const serialized = grid.save();
grid.removeAll();
grid.load(serialized);
console.assert(grid.engine.nodes.length === serialized.length, "Все виджеты должны быть восстановлены");
Gridstack.js активно используется в адаптивных интерфейсах, поэтому необходимо проверить поведение сетки при изменении размеров окна:
oneColumnMode): проверка корректного стека
виджетов.column):
убедиться, что виджеты не перекрываются и сохраняют пропорции.change при ресайзе окна:
должно правильно отражать новые координаты виджетов.Для крупных проектов рекомендуется использовать автоматизацию тестирования:
snapshot) для
визуальной регрессии при изменении версий Gridstack.js.Пример unit-теста на Jest:
test('Добавление нового виджета', () => {
const grid = GridStack.init();
const node = grid.addWidget('<div class="grid-stack-item"></div>', {x:0, y:0, w:2, h:2});
expect(grid.engine.nodes).toContain(node);
});
Если сетка содержит кастомные виджеты с собственным DOM и скриптами, необходимо проверить:
Для выявления проблем после миграции целесообразно подключать расширенное логирование:
console.log(grid.engine.nodes) после ключевых
операций.grid.on('change', (event, items) => console.table(items));
Тщательное соблюдение всех этих процедур обеспечивает стабильную работу интерфейсов на Gridstack.js после обновления версии, минимизируя риск возникновения скрытых багов и нарушений пользовательского опыта.