Jest provides a simulated DOM via jsdom:
test('button click updates text', () => {
document.body.innerHTML = '<button id="btn">Click</button>';
const btn = document.getElementById('btn');
btn.addEventListener('click', () => btn.textContent = 'Clicked');
btn.click();
expect(btn.textContent).toBe('Clicked');
});