Перетаскивание капибары в место мыши вместо цели - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь написать тест, который включает в себя перетаскивание (через SortableJS), чтобы упорядочить некоторые вещи на столе.

Вот в основном то, что сейчас находится в моем тесте:

handle = find("[data-item-id='#{itemA.id}'] [data-js-sortable-handle]")
targetRow = find("[data-item-id='#{itemB.id}']")

handle.drag_to(targetRow)

Этот вид работы, за исключением того, что вместо перетаскивания на targetRow он перетаскивается туда, где на самом деле моя мышь.Поэтому мой тест проходит только в том случае, если я поместил свою мышь в нужное место, и если я не запускаю их без головы.

Я не уверен, является ли это большей проблемой с Капибарой, Селеном или просто потому, чтобиблиотеки, которую я использую.

1 Ответ

1 голос
/ 08 июня 2019

В зависимости от того, какой именно тип перетаскивания (эмуляция JS или HTML5) библиотека sortablejs использует, Capybara может выполнять разные задачи.Я действительно не вижу, как какой-либо из используемых им методов может перетаскивать не тот элемент (где происходит событие drop / mouse_up), но вполне возможно, что позиции, о которых сообщается в событиях, могут быть отключены, если ваше приложение зависит от этих позиций.В наборе тестов Capybara есть тесты для обоих типов перетаскивания, которые проходят в режимах без головы и во главе, поэтому он определенно должен работать по крайней мере в основных случаях.Если вы можете предоставить простой пример, который показывает вашу проблему, пожалуйста, сообщите о проблеме в проекте Capybara, и я посмотрю.

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

...