Пользовательские действия — это действия, которые пользователь выполняет в интерфейсе приложения, такие как клики, ввод текста, наведение курсора и другие. Тестирование этих действий важно для обеспечения правильного поведения приложения.

Основные пользовательские действия:

  1. Клик (Click): Нажатие на кнопку, ссылку или другой интерактивный элемент.
  2. Двойной клик (Double Click): Два быстрых нажатия на элемент.
  3. Наведение курсора (Hover): Наведение курсора мыши на элемент.
  4. Ввод текста (Input): Ввод текста в текстовое поле.
  5. Скроллинг (Scroll): Прокрутка страницы или элемента.
  6. Перетаскивание (Drag and Drop): Перетаскивание элемента с одного места на другое.
  7. Выбор (Select): Выбор элемента из выпадающего списка или списка.
  8. Нажатие клавиш (Keyboard Events): Нажатие клавиш на клавиатуре, таких как Enter, Esc, Tab и других.

Тестирование пользовательских действий:

Для тестирования пользовательских действий в React можно использовать библиотеки, такие как React Testing Library и Enzyme. Эти библиотеки предоставляют утилиты для имитации пользовательских действий и проверки результатов.

1. Клик (Click):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles click event', () => {
  render(<MyComponent />);
  const button = screen.getByText('Click me');
  fireEvent.click(button);
  expect(screen.getByText('Clicked!')).toBeInTheDocument();
});

2. Двойной клик (Double Click):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles double click event', () => {
  render(<MyComponent />);
  const button = screen.getByText('Double Click me');
  fireEvent.doubleClick(button);
  expect(screen.getByText('Double Clicked!')).toBeInTheDocument();
});

3. Наведение курсора (Hover):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles hover event', () => {
  render(<MyComponent />);
  const element = screen.getByText('Hover me');
  fireEvent.mouseOver(element);
  expect(screen.getByText('Hovered!')).toBeInTheDocument();
});

4. Ввод текста (Input):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles input event', () => {
  render(<MyComponent />);
  const input = screen.getByPlaceholderText('Enter text');
  fireEvent.change(input, { target: { value: 'Hello, World!' } });
  expect(input.value).toBe('Hello, World!');
});

5. Скроллинг (Scroll):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles scroll event', () => {
  render(<MyComponent />);
  const container = screen.getByTestId('scroll-container');
  fireEvent.scroll(container, { target: { scrollTop: 100 } });
  expect(screen.getByText('Scrolled!')).toBeInTheDocument();
});

6. Перетаскивание (Drag and Drop):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles drag and drop event', () => {
  render(<MyComponent />);
  const source = screen.getByText('Drag me');
  const target = screen.getByText('Drop here');
 
  fireEvent.dragStart(source);
  fireEvent.dragEnter(target);
  fireEvent.dragOver(target);
  fireEvent.drop(target);
 
  expect(screen.getByText('Dropped!')).toBeInTheDocument();
});

7. Выбор (Select):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles select event', () => {
  render(<MyComponent />);
  const select = screen.getByRole('combobox');
  fireEvent.change(select, { target: { value: 'option2' } });
  expect(screen.getByText('Selected: option2')).toBeInTheDocument();
});

8. Нажатие клавиш (Keyboard Events):

import { render, screen, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent';
 
test('handles key press event', () => {
  render(<MyComponent />);
  const input = screen.getByPlaceholderText('Enter text');
  fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' });
  expect(screen.getByText('Enter key pressed!')).toBeInTheDocument();
});

Назад