Module: Capybara::Playwright::Node::UpdateValueJS

Included in:
DateInput, DateTimeInput, JSValueInput, TimeInput
Defined in:
lib/capybara/playwright/node.rb

Instance Method Summary collapse

Instance Method Details

#update_value_js(element, value) ⇒ Object



253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/capybara/playwright/node.rb', line 253

def update_value_js(element, value)
  # ref: https://github.com/teamcapybara/capybara/blob/f7ab0b5cd5da86185816c2d5c30d58145fe654ed/lib/capybara/selenium/node.rb#L343
  js = <<~JAVASCRIPT
  (el, value) => {
    if (el.readOnly) { return };
    if (document.activeElement !== el){
      el.focus();
    }
    if (el.value != value) {
      el.value = value;
      el.dispatchEvent(new InputEvent('input'));
      el.dispatchEvent(new Event('change', { bubbles: true }));
    }
  }
  JAVASCRIPT
  element.evaluate(js, arg: value)
end