Test click offsets are from top left

This commit is contained in:
Thomas Walpole 2019-06-15 13:48:57 -07:00
parent 4401f862d7
commit 34889915f7
3 changed files with 104 additions and 0 deletions

View File

@ -0,0 +1,6 @@
$(function() {
$(document).on('click dblclick contextmenu', function(e){
e.preventDefault();
$(document.body).append('<div id="has-been-clicked">Has been clicked at ' + e.clientX + ',' + e.clientY + '</div>');
})
})

View File

@ -635,6 +635,28 @@ Capybara::SpecHelper.spec 'node' do
JS
expect { obscured.click(wait: 0) }.to(raise_error { |e| expect(e).to be_an_invalid_element_error(@session) })
end
context "offset" do
before do
@session.visit('/offset')
@clicker = @session.find(:id, 'clicker')
end
it 'should offset from top left of element' do
@clicker.click(x: 10, y: 5)
expect(@session).to have_text(/clicked at 110,105/)
end
it 'should offset outside the element' do
@clicker.click(x: -15, y: -10)
expect(@session).to have_text(/clicked at 85,90/)
end
it 'should default to click the middle' do
@clicker.click
expect(@session).to have_text(/clicked at 150,150/)
end
end
end
describe '#double_click', requires: [:js] do
@ -669,6 +691,28 @@ Capybara::SpecHelper.spec 'node' do
JS
expect { obscured.double_click }.not_to raise_error
end
context "offset" do
before do
@session.visit('/offset')
@clicker = @session.find(:id, 'clicker')
end
it 'should offset from top left of element' do
@clicker.click(x: 10, y: 5)
expect(@session).to have_text(/clicked at 110,105/)
end
it 'should offset outside the element' do
@clicker.click(x: -15, y: -10)
expect(@session).to have_text(/clicked at 85,90/)
end
it 'should default to click the middle' do
@clicker.click
expect(@session).to have_text(/clicked at 150,150/)
end
end
end
describe '#right_click', requires: [:js] do
@ -703,6 +747,28 @@ Capybara::SpecHelper.spec 'node' do
JS
expect { obscured.right_click }.not_to raise_error
end
context "offset" do
before do
@session.visit('/offset')
@clicker = @session.find(:id, 'clicker')
end
it 'should offset from top left of element' do
@clicker.click(x: 10, y: 5)
expect(@session).to have_text(/clicked at 110,105/)
end
it 'should offset outside the element' do
@clicker.click(x: -15, y: -10)
expect(@session).to have_text(/clicked at 85,90/)
end
it 'should default to click the middle' do
@clicker.click
expect(@session).to have_text(/clicked at 150,150/)
end
end
end
describe '#send_keys', requires: [:send_keys] do

View File

@ -0,0 +1,32 @@
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title>Offset</title>
<style>
body {
margin: 0px;
}
#wrapper {
width: 300px;
height: 300px;
margin: 0px;
}
#clicker {
position: relative;
width: 100px;
height: 100px;
top: 100px;
left: 100px;
background-color: red;
margin: 0px;
}
</style>
<script src="/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="/offset.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="wrapper">
<div id="clicker"></div>
</div>
</body>
</html>