Storybook覆盖视图查看器插件 - 创建用于显示覆盖数据的UI

dfuffjeb  于 3个月前  发布在  其他
关注(0)|答案(1)|浏览(46)

为了提供无缝的用户体验,我们需要开发一个可以显示从Vitest收集的覆盖率数据的Storybook附加组件UI。这个UI应该以用户友好和交互式的方式为每个组件呈现全面且详细的覆盖率信息,包括所有相关文件。目标是让开发者能够快速了解其组件的测试覆盖率,并确定需要更多测试的区域。

任务

设计UI布局

  • 设计Storybook中覆盖率附加组件选项卡的基本布局。
  • 确保布局包括总体组件覆盖率、详细文件逐行覆盖率以及覆盖与未覆盖代码的视觉指示器部分。

实现覆盖率汇总部分

  • 在附加选项卡中创建一个部分来显示总体组件覆盖率指标(例如:语句、分支、函数、行)。
  • 使用视觉指示器(例如:进度条、颜色编码)突出显示覆盖率百分比。

实现详细文件覆盖率视图

  • 开发一个视图来显示与组件关联的每个文件的详细覆盖率信息。
  • 包括逐行覆盖率指示器,显示哪些行被覆盖,哪些没有被覆盖。

实时覆盖率更新

  • 集成WebSocket客户端以接收实时覆盖率更新。
  • 确保UI动态更新以反映收到的最新覆盖率数据。

文档

  • 记录覆盖率附加组件UI的使用情况,包括如何导航界面和解释覆盖率数据。
  • 提供示例和屏幕截图以说明UI的功能和功能。

验收标准

  • 为Storybook中的覆盖率附加组件选项卡实现了一个基本的UI。
  • UI显示总体组件覆盖率指标和详细文件逐行覆盖率信息。
  • UI通过WebSocket实时更新以反映收到的最新覆盖率数据。
  • 提供了详细的文档,指导用户使用覆盖率附加组件。
zpjtge22

zpjtge221#

免责声明:由于信息是自动生成的,可能存在不准确的情况。

  1. addons/coverage/src/index.ts 中注册插件:
import { addons, types } from '@storybook/addons';
import { ADDON_ID, PANEL_ID } from './constants';
import { CoveragePanel } from './CoveragePanel';

addons.register(ADDON_ID, () => {
  addons.add(PANEL_ID, {
    type: types.PANEL,
    title: 'Coverage',
    render: CoveragePanel,
  });
});
  1. 为 UI 创建 addons/coverage/src/CoveragePanel.tsx :
import React from 'react';
import { useParameter } from '@storybook/api';
import { PARAM_KEY } from './constants';

export const CoveragePanel: React.FC = () => {
  const coverageData = useParameter(PARAM_KEY, null);
  return (
    <div>
      {coverageData ? (
        <pre>{JSON.stringify(coverageData, null, 2)}</pre>
      ) : (
        <p>No coverage data available</p>
)}
</div>
  );
};
  1. 更新 addons/coverage/src/constants.ts :
export const ADDON_ID = 'storybook/coverage';
export const PANEL_ID = `${ADDON_ID}/panel`;
export const PARAM_KEY = 'coverage';
  1. 修改 addons/coverage/src/preview.ts 以设置覆盖数据:
import { addons } from '@storybook/addons';
import { PARAM_KEY } from './constants';

addons.setConfig({
  [PARAM_KEY]: window.__coverage__ || null,
});
关于 Greptile

此响应为您提供研究的起点,而非精确解决方案。
帮助我们改进!如果这有帮助,请留下一个 👍,如果无关,请留下一个 👎。

相关问题