All files / app/assets/javascripts/test_utils simulate_input.js

0% Statements 0/13
0% Branches 0/6
0% Functions 0/3
0% Lines 0/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24                                               
function triggerEvents(input) {
  input.dispatchEvent(new Event('keydown'));
  input.dispatchEvent(new Event('keypress'));
  input.dispatchEvent(new Event('input'));
  input.dispatchEvent(new Event('keyup'));
}
 
export default function simulateInput(target, text) {
  const input = document.querySelector(target);
  if (!input || !input.matches('textarea, input')) {
    return false;
  }
 
  if (text.length > 0) {
    Array.prototype.forEach.call(text, (char) => {
      input.value += char;
      triggerEvents(input);
    });
  } else {
    triggerEvents(input);
  }
  return true;
}