Layout-компоненты — это компоненты, которые определяют структуру и расположение других компонентов на странице. Они обычно включают в себя шапку, футер, боковую панель и другие элементы, которые повторяются на нескольких страницах. Тестирование layout-компонентов важно для обеспечения правильного отображения и расположения элементов на странице.

Основные аспекты тестирования layout-компонентов:

  1. Проверка наличия основных элементов: Убедитесь, что все основные элементы, такие как шапка, футер, боковая панель и т.д., присутствуют на странице.
  2. Проверка расположения элементов: Убедитесь, что элементы расположены правильно относительно друг друга.
  3. Проверка стилей и классов: Убедитесь, что элементы имеют правильные классы и стили.
  4. Проверка адаптивного дизайна: Убедитесь, что layout-компоненты правильно отображаются на разных устройствах и в разных разрешениях экрана.

Инструменты для тестирования layout-компонентов:

  • React Testing Library: Утилита для тестирования компонентов React.
  • Jest: Фреймворк для тестирования.
  • Cypress: Фреймворк для E2E тестирования, который также можно использовать для проверки layout-компонентов в реальном браузере.
  • Storybook: Инструмент для разработки и тестирования компонентов в изоляции, который также можно использовать для проверки layout-компонентов.

Пример layout-компонента Layout.js:

import React from 'react';
import Header from './Header';
import Footer from './Footer';
import Sidebar from './Sidebar';
 
const Layout = ({ children }) => {
  return (
    <div className="layout">
      <Header />
      <div className="content">
        <Sidebar />
        <main>{children}</main>
      </div>
      <Footer />
    </div>
  );
};
 
export default Layout;

Пример тестового файла Layout.test.js:

import { render, screen } from '@testing-library/react';
import Layout from './Layout';
import Header from './Header';
import Footer from './Footer';
import Sidebar from './Sidebar';
 
// Имитация компонентов Header, Footer и Sidebar
jest.mock('./Header', () => () => <header data-testid="header">Header</header>);
jest.mock('./Footer', () => () => <footer data-testid="footer">Footer</footer>);
jest.mock('./Sidebar', () => () => <aside data-testid="sidebar">Sidebar</aside>);
 
test('renders layout with header, footer, sidebar, and main content', () => {
  render(
    <Layout>
      <div data-testid="main-content">Main Content</div>
    </Layout>
  );
 
  // Проверка наличия основных элементов
  expect(screen.getByTestId('header')).toBeInTheDocument();
  expect(screen.getByTestId('footer')).toBeInTheDocument();
  expect(screen.getByTestId('sidebar')).toBeInTheDocument();
  expect(screen.getByTestId('main-content')).toBeInTheDocument();
 
  // Проверка расположения элементов
  expect(screen.getByTestId('header')).toHaveClass('header');
  expect(screen.getByTestId('footer')).toHaveClass('footer');
  expect(screen.getByTestId('sidebar')).toHaveClass('sidebar');
  expect(screen.getByTestId('main-content')).toHaveClass('main-content');
});

Назад