Respect maxlength when doing rapid set
This commit is contained in:
parent
1a748f21eb
commit
65d43316d0
|
@ -281,7 +281,7 @@ private
|
|||
driver.execute_script 'arguments[0].select()', self unless clear == :none
|
||||
if rapid == true || (value.length > 30 && rapid != false)
|
||||
send_keys(value[0..3])
|
||||
driver.execute_script 'arguments[0].value += arguments[1]', self, value[4...-3]
|
||||
driver.execute_script RAPID_SET_TEXT, self, value[4...-3]
|
||||
send_keys(value[-3..-1])
|
||||
else
|
||||
send_keys(value)
|
||||
|
@ -530,6 +530,16 @@ private
|
|||
})(arguments[0], arguments[1], arguments[2])
|
||||
JS
|
||||
|
||||
RAPID_SET_TEXT = <<~'JS'
|
||||
(function(el, val) {
|
||||
var value = el.value + val;
|
||||
if (el.maxLength != -1){
|
||||
value = value.slice(0, el.maxLength);
|
||||
}
|
||||
el.value = value;
|
||||
})(arguments[0], arguments[1])
|
||||
JS
|
||||
|
||||
# SettableValue encapsulates time/date field formatting
|
||||
class SettableValue
|
||||
attr_reader :value
|
||||
|
|
|
@ -143,6 +143,10 @@
|
|||
<input type="text" maxlength="5" name="form[zipcode]" id="form_zipcode" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input maxlength="35" id="long_length" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="form_tendency">Tendency</label>
|
||||
<select name="form[tendency]" id="form_tendency"></select>
|
||||
|
|
|
@ -35,6 +35,16 @@ RSpec.shared_examples 'Capybara::Node' do |session, _mode|
|
|||
end
|
||||
end
|
||||
|
||||
describe '#set' do
|
||||
it 'respects maxlength when using rapid set' do
|
||||
session.visit('/form')
|
||||
inp = session.find(:css, '#long_length')
|
||||
value = (0...50).map { |i| ((i % 26) + 65).chr }.join
|
||||
inp.set(value, rapid: true)
|
||||
expect(inp.value).to eq value[0...35]
|
||||
end
|
||||
end
|
||||
|
||||
describe '#visible?' do
|
||||
let(:bridge) do
|
||||
session.driver.browser.send(:bridge)
|
||||
|
|
Loading…
Reference in New Issue