В зависимости от того, какой именно тип перетаскивания (эмуляция JS или HTML5) библиотека sortablejs использует, Capybara может выполнять разные задачи.Я действительно не вижу, как какой-либо из используемых им методов может перетаскивать не тот элемент (где происходит событие drop / mouse_up), но вполне возможно, что позиции, о которых сообщается в событиях, могут быть отключены, если ваше приложение зависит от этих позиций.В наборе тестов Capybara есть тесты для обоих типов перетаскивания, которые проходят в режимах без головы и во главе, поэтому он определенно должен работать по крайней мере в основных случаях.Если вы можете предоставить простой пример, который показывает вашу проблему, пожалуйста, сообщите о проблеме в проекте Capybara, и я посмотрю.
ОБНОВЛЕНИЕ: Я взглянул на код SortableJS
и обнаружил хотя бы одну причину, по которой эмуляция HTML5 DND Capybaras не совместима с ним.SortableJS обрабатывает событие dragstart, выполняя некоторый код установки через setTimeout
.Поскольку весь код Capybaras был в одном сценарии, код установки Dragstart SortableJS не будет выполняться до тех пор, пока не произойдет событие удаления, которое не позволит перемещать элементы.Я сделал некоторые изменения в Capybara и выпустил 3.23.0, который должен играть лучше с SortableJS.