При запуске тестов взаимодействия пользовательского интерфейса с использованием Vitest и @testing-library/user-event я постоянно получаю следующую ошибку:
Код: Выделить всё
target.hasPointerCapture is not a function
- Изменил тестовую среду на Happy-dom в vitest.config.mts.
- Инициализировал userEvent с помощью pointerEventsCheck: 0:
Код: Выделить всё
const user = userEvent.setup({ pointerEventsCheck: 0 });
Единственное решение, которое (я нашел), похоже, работает, — это заполнение отсутствующих DOM API:
Код: Выделить всё
beforeAll(() => {
if (!Element.prototype.hasPointerCapture) {
Element.prototype.hasPointerCapture = vi.fn().mockReturnValue(false);
}
if (!Element.prototype.setPointerCapture) {
Element.prototype.setPointerCapture = vi.fn();
}
if (!Element.prototype.releasePointerCapture) {
Element.prototype.releasePointerCapture = vi.fn();
}
if (!Element.prototype.scrollIntoView) {
Element.prototype.scrollIntoView = vi.fn();
}
});
Вопрос:
Существует ли какой-либо другой подход (кроме добавления этих ручных полифилов), чтобы избежать ошибок, связанных с hasPointerCapture, при тестировании компонентов Radix UI/shadcn с помощью Vitest и userEvent?
Подробнее здесь: https://stackoverflow.com/questions/797 ... radix-ui-s