Согласно этот ответ , вы можете создать объект Event и использовать его для запуска события input
, выполнив JS.
Поскольку вы используете JSDOM, вы можно сделать это в контексте страницы через eval
.
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
const dom = new JSDOM(
`<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<input>
<p>Hello world</p>
<script>
document.querySelector("input").addEventListener("input", event =>
document.querySelector("p").textContent = event.target.value
);
</script>`,
{
runScripts: 'dangerously',
resources: 'usable',
}
);
dom.window.eval(`
const input = document.querySelector("input");
input.value = "New value";
const event = new Event('input', {
bubbles: true,
cancelable: true
});
input.dispatchEvent(event);
`);
console.log(dom.serialize());