Coverage отчеты — это инструмент анализа, который позволяет оценивать полноту тестирования компонентов и модулей проекта, написанных с использованием MDX. В контексте JavaScript и MDX coverage отчеты помогают определить, какие части кода были затронуты тестами, а какие остаются непроверенными, что критично для поддержания качества документации и тестируемого функционала.
Coverage (покрытие кода) отражает степень, с которой тесты проверяют исходный код. В MDX файлах это включает:
Типы покрытия кода:
if, switch, тернарные выражения).MDX отличается тем, что традиционное покрытие кода в тестах
JavaScript необходимо интегрировать с JSX-разметкой и Markdown-блоками.
Для этого используются инструменты, такие как Jest с
плагинами для работы с MDX (@testing-library/react,
babel-plugin-transform-mdx).
Чтобы получить coverage отчеты для MDX файлов, необходимо настроить сбор данных:
module.exports = {
transform: {
'^.+\\.mdx$': '@storybook/addon-docs/jest-transform-mdx',
'^.+\\.[jt]sx?$': 'babel-jest'
},
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'mdx'],
collectCoverage: true,
collectCoverageFrom: [
'src/**/*.{js,jsx,ts,tsx,mdx}',
'!src/**/*.stories.{js,jsx,ts,tsx,mdx}'
]
};
collectCoverage включает сбор данных о покрытии.collectCoverageFrom определяет файлы для анализа.
Обычно исключают stories и тестовые файлы, оставляя только исходный
код.MDX файлы должны быть транспилированы в JSX/JS перед сбором coverage. Для этого используется:
Пример измерения покрытия для компонента MDX:
import { Button } from './Button';
# Заголовок
<Button onCl ick={() => console.log('clicked')}>Нажми меня</Button>
Для такого файла coverage отчет покажет:
Button) — функция и рендеринг
компонента.<Button> в
разметке.onClick.Если добавить тест:
import { render, fireEvent } from '@testing-library/react';
import MyComponent from './MyComponent.mdx';
test('Button click triggers console.log', () => {
const { getByText } = render(<MyComponent />);
fireEvent.click(getByText('Нажми меня'));
});
Отчет coverage теперь покажет:
onClick.<Button>.Результаты собираются в нескольких форматах:
Пример конфигурации для Jest:
coverageReporters: ['html', 'text-summary', 'json']
После запуска jest --coverage будет создан каталог
coverage, содержащий:
index.html — визуальный отчет с подсветкой строк.lcov-report/ — полный HTML с детализацией по файлам
MDX.coverage-summary.json — суммарные показатели для
скриптов CI.Coverage отчеты для MDX файлов полезны в автоматизированных пайплайнах:
coverageThreshold):coverageThreshold: {
global: {
branches: 80,
functions: 85,
lines: 90,
statements: 90
}
}
Codecov, Coveralls.Coverage отчеты в MDX позволяют глубоко контролировать качество тестирования документации и интерактивных компонентов, интегрируя Markdown, JSX и JavaScript в единый процесс анализа покрытия кода. Это критически важно для поддержания стабильности больших проектов с динамическим контентом и компонентной архитектурой.