1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00

Drop modifiers shouldn't be held down at drag start

This commit is contained in:
Thomas Walpole 2020-01-25 11:04:45 -08:00
parent fa520a5c6a
commit e62a194a68
3 changed files with 30 additions and 9 deletions

View file

@ -160,6 +160,14 @@ class Capybara::Selenium::Node
var targetRect = target.getBoundingClientRect();
var sourceCenter = rectCenter(source.getBoundingClientRect());
for (var i = 0; i < drop_modifier_keys.length; i++) {
key = drop_modifier_keys[i];
if (key == "control"){
key = "ctrl"
}
opts[key + 'Key'] = true;
}
// fire 2 dragover events to simulate dragging with a direction
var entryPoint = pointOnRect(sourceCenter, targetRect)
var dragOverOpts = Object.assign({clientX: entryPoint.x, clientY: entryPoint.y}, opts);
@ -198,14 +206,6 @@ class Capybara::Selenium::Node
var dt = new DataTransfer();
var opts = { cancelable: true, bubbles: true, dataTransfer: dt };
for (var i = 0; i < drop_modifier_keys.length; i++) {
key = drop_modifier_keys[i];
if (key == "control"){
key = "ctrl"
}
opts[key + 'Key'] = true;
}
while (source && !source.draggable) {
source = source.parentElement;
}

View file

@ -1,7 +1,18 @@
var activeRequests = 0;
$(function() {
$('#change').text('I changed it');
$('#drag, #drag_scroll, #drag_link').draggable();
$('#drag, #drag_scroll, #drag_link').draggable({
start: function(event, ui){
$(document.body).append(
"<div class='drag_start'>Dragged!" +
(event.altKey ? "-alt" : "") +
(event.ctrlKey ? "-ctrl" : "") +
(event.metaKey ? "-meta" : "") +
(event.shiftKey ? "-shift" : "") +
"</div>"
);
}
});
$('#drop, #drop_scroll').droppable({
tolerance: 'touch',
drop: function(event, ui) {
@ -16,6 +27,14 @@ $(function() {
}
});
$('#drag_html5, #drag_html5_scroll').on('dragstart', function(ev){
$(document.body).append(
"<div class='drag_start'>HTML5 Dragged!" +
(event.altKey ? "-alt" : "") +
(event.ctrlKey ? "-ctrl" : "") +
(event.metaKey ? "-meta" : "") +
(event.shiftKey ? "-shift" : "") +
"</div>"
);
ev.originalEvent.dataTransfer.setData("text", ev.target.id);
});
$('#drag_html5, #drag_html5_scroll').on('dragend', function(ev){

View file

@ -481,6 +481,7 @@ Capybara::SpecHelper.spec 'node' do
target = @session.find('//div[@id="drop"]')
element.drag_to(target, drop_modifiers: modifier_key)
expect(@session).to have_css("div.drag_start", exact_text: 'Dragged!')
expect(@session).to have_xpath("//div[contains(., 'Dropped!-#{modifier_key}')]")
end
end
@ -609,6 +610,7 @@ Capybara::SpecHelper.spec 'node' do
element.drag_to(target, drop_modifiers: modifier_key)
expect(@session).to have_css('div.drag_start', exact_text: 'HTML5 Dragged!')
expect(@session).to have_xpath("//div[contains(., 'HTML5 Dropped string: text/plain drag_html5-#{modifier_key}')]")
end
end