Skip to content

Conversation

@zombieJ
Copy link
Member

@zombieJ zombieJ commented Oct 22, 2025

Summary by CodeRabbit

  • Tests

    • 将测试从 Enzyme 迁移到 React Testing Library,统一使用 DOM 查询与事件以提高可靠性。
    • 新增并强化测试工具(打开、断言打开状态、搜索、清除选择、选择节点等),并在多处使用假定时钟以稳定异步行为。
    • 保持对外接口不变,仅调整测试交互实现。
  • Chores

    • 优化测试环境初始化,新增 MessageChannel 模拟以支持异步交互。
  • Examples

    • 示例中改为直接使用图标节点以简化图标配置。

@vercel
Copy link

vercel bot commented Oct 22, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
tree-select Error Error Oct 22, 2025 9:31am

@coderabbitai
Copy link

coderabbitai bot commented Oct 22, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

将测试从 Enzyme 迁移到 React Testing Library,替换交互为 DOM 查询与 fireEvent/act;新增测试工具与 jest 假定时器;在测试环境中注入 MessageChannel 全局模拟;调整示例中图标为直接节点引用。

Changes

变更分组/文件 变更摘要
测试 Enzyme→RTL 迁移
tests/Select.checkable.spec.tsx, tests/Select.multiple.spec.js, tests/Select.props.spec.js, tests/Select.spec.tsx, tests/Select.tree.spec.js
将 Enzyme 的 mount/wrapper/模拟调用替换为 React Testing Library 的 render + container 查询;用 fireEvent/act 与 DOM 查询替代 wrapper 操作;引入并使用测试工具(triggerOpenselectNodesearchclearSelectionexpectOpen);在若干测试中使用 jest 假定时器并在结束时恢复真实计时器。
测试配置与全局模拟
tests/setup.js
更新选择器引用(.rc-tree-select-selector.rc-tree-selectinput.rc-tree-select-selection-search-inputinput.rc-tree-select-input);调整 isOpen 检测;注入 window.MessageChannel 的双端口模拟实现(port1/port2,支持 postMessage/onmessage)。
测试工具函数
tests/util.tsx
新增并导出工具:triggerOpen(element)expectOpen(element, open)search(element, value)clearSelection(element, index),这些工具使用 act 与定时器推进以同步异步 UI 行为。
示例调整(图标示例)
examples/custom-icons.tsx
将 icon 工厂函数(返回节点的函数)替换为直接引用图标节点(suffixIconclearIconremoveIcon),保留 switcherIcon 不变。
包版本更新
package.json
@rc-component/select 版本从 ~1.2.0-alpha.0 更新为 ~1.2.0-alpha.3

Sequence Diagram(s)

sequenceDiagram
  participant Test as 测试用例
  participant RTL as React Testing Library
  participant Component as TreeSelect
  participant Timer as Jest Timer

  rect rgb(240,248,255)
    Note over Test,RTL: 渲染与打开流程
    Test->>RTL: render(Component, props)
    Test->>RTL: triggerOpen(container)
    activate Timer
    Timer-->>Component: advanceTimers (act)
    Component-->>RTL: 下拉渲染完成
  end

  rect rgb(245,255,240)
    Note over RTL,Component: 搜索与选择
    RTL->>Component: search(container, "query")
    Timer-->>Component: advanceTimers (过滤/异步)
    Component-->>RTL: 更新列表
    RTL->>Component: selectNode(index)
    Component-->>Test: 触发 onSelect/onChange
  end
Loading

Estimated code review effort

🎯 3 (中等) | ⏱️ ~25 分钟

诗歌

🐰 我在测试林间轻跳,旧酶落叶随风飘,
用 RTL 的光照亮每一条断言的角落,
定时器敲门,MessageChannel 低语,
小工具跳跃把操作串联,
新的绿意在测试里轻声微笑。

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title Check ❓ Inconclusive PR 标题"test: Fix test case"与变更集确实相关,因为该 PR 的主要内容是修复和改进测试代码。然而,标题过于模糊和通用,使用了"Fix test case"这样的非描述性术语,没有传达具体的改动内容。从变更摘要来看,该 PR 的核心工作是将多个测试文件从 Enzyme 框架迁移到 React Testing Library,这是一个重要的测试架构升级,但标题没有体现这一关键信息。一个清晰的标题应该让团队成员快速了解本次变更的具体内容。 建议将 PR 标题更新为更具描述性的内容,例如"test: Migrate tests from Enzyme to React Testing Library"或"test: Update test utilities and migrate to RTL",以便准确反映该 PR 的主要目的——将测试框架从 Enzyme 迁移到 React Testing Library,同时引入新的测试辅助工具。
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix-test

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a7ebb12 and 5f3fed4.

⛔ Files ignored due to path filters (3)
  • tests/__snapshots__/Select.checkable.spec.tsx.snap is excluded by !**/*.snap
  • tests/__snapshots__/Select.multiple.spec.js.snap is excluded by !**/*.snap
  • tests/__snapshots__/Select.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (1)
  • package.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Socket Security: Pull Request Alerts
  • GitHub Check: Socket Security: Project Report
🔇 Additional comments (2)
package.json (2)

67-69: 原评论不正确 — Enzyme 包仍在活跃使用中。

验证结果显示 Enzyme 在测试套件中仍被广泛使用:mount 从 Enzyme 导入在至少 10 个测试文件中,tests/setup.js 配置了 Enzyme 和适配器,jest.config.js 使用 enzyme-to-json 序列化器。虽然部分测试已迁移至 RTL,但许多测试仍依赖 Enzyme,这些包目前不能移除。

Likely an incorrect or invalid review comment.


47-47: 验证 @rc-component/select@1.2.0-alpha.3 的版本真实性和兼容性。

版本 @rc-component/select@1.2.0-alpha.3 已在 npm 注册表确认存在,由活跃维护者 zombiej 于 17 小时前发布,并标记为最新的 dist-tag。然而,GitHub 仓库中未发现该 alpha 版本的公开发布说明或更新日志(这对 alpha 版本较为常见)。

由于缺乏公开的变更文档,无法通过官方渠道确认该版本是否包含与 React Testing Library 相关的兼容性改进。建议通过实际运行测试来确保 RTL 迁移在该新版本下正常工作。


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

Hello @zombieJ, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on enhancing the testing infrastructure by refactoring existing test cases to leverage @testing-library/react instead of enzyme for component rendering and interaction. This change promotes a more robust and user-centric testing methodology, ensuring that tests more accurately reflect how users interact with the components. The update involves migrating test logic, standardizing interaction utilities, and updating snapshots to match the new testing environment.

Highlights

  • Test Suite Migration: Migrated numerous test cases across Select.checkable.spec.tsx, Select.multiple.spec.js, Select.props.spec.js, Select.spec.tsx, and Select.tree.spec.js from enzyme's mount and custom wrapper methods to @testing-library/react's render and a new set of shared utility functions.
  • Standardized Test Utilities: Introduced new helper functions (triggerOpen, expectOpen, search, clearSelection) in tests/util.tsx to standardize common testing interactions, improving consistency and readability across the test suite.
  • Test Setup Updates: Updated tests/setup.js to modify Enzyme.ReactWrapper.prototype methods (openSelect, search, isOpen) to align with the new DOM structure and input class names introduced by the @testing-library/react migration. A mock window.MessageChannel was also added.
  • Snapshot Updates: Updated existing snapshots in tests/__snapshots__/ files to reflect the changes in the rendered HTML structure and class names resulting from the test migration.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors a significant portion of the test suite to use React Testing Library instead of Enzyme, which is a great move for modernizing the tests. The introduction of shared utility functions in tests/util.tsx improves maintainability.

My review focuses on ensuring consistency and correctness during this large-scale refactoring. I've identified a couple of key areas for improvement:

  • Timer Mocking: There are inconsistencies in how Jest's fake timers are managed across different test files. Some files are missing timer mocks entirely for tests that need them, which could lead to flaky tests. I've recommended a consistent approach using beforeEach and afterEach.
  • Test Utilities: The new timer-based utilities could be made more efficient and robust by using jest.runAllTimers() instead of advancing by a large, arbitrary amount of time.
  • Code Style: A minor comment about a non-English comment in the code.

Overall, this is a solid refactoring. Addressing these points will make the test suite more robust and consistent.

});

it('clear selected value and input value', () => {
jest.useFakeTimers();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

While adding fake timers here is correct for this test, several other tests in this file are also being refactored to use utilities like search and triggerOpen which rely on fake timers. Some of them are missing the timer setup (e.g., the 'remove in filtered tree' test). To ensure consistency and prevent future errors, it would be better to manage timers at the describe block level using beforeEach and afterEach, as done in tests/Select.multiple.spec.js.

This would involve:

  1. Adding beforeEach(() => { jest.useFakeTimers(); }); and afterEach(() => { jest.useRealTimers(); }); at the top of the describe('TreeSelect.checkable', ...) block.
  2. Removing individual jest.useFakeTimers() and jest.useRealTimers() calls from this test and others.

Comment on lines +49 to +52
search(container, 'Title 1');
expect(
container.querySelectorAll('.rc-tree-select-tree-treenode:not([aria-hidden="true"])'),
).toHaveLength(1);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The search utility function relies on fake timers to work correctly, but timer mocking (jest.useFakeTimers()) is not enabled for this test file. This could lead to unreliable test results. Please add beforeEach and afterEach hooks to the main describe block to manage fake timers for all tests in this file, like this:

  beforeEach(() => {
    jest.useFakeTimers();
  });

  afterEach(() => {
    jest.useRealTimers();
  });

Comment on lines +11 to +18
beforeEach(() => {
jest.useFakeTimers();
});

afterEach(() => {
jest.clearAllTimers();
jest.useRealTimers();
});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

It's great that you're using beforeEach and afterEach to manage fake timers. However, jest.clearAllTimers() in afterEach is not strictly necessary when you are calling jest.useRealTimers(), as useRealTimers restores the original timer functions and clears any existing fake timers. You can simplify the afterEach block.

Suggested change
beforeEach(() => {
jest.useFakeTimers();
});
afterEach(() => {
jest.clearAllTimers();
jest.useRealTimers();
});
afterEach(() => {
jest.useRealTimers();
});

const itemTitle = container.querySelector('.rc-tree-select-tree-title');
const item = container.querySelector(`.${customClassNames.popup.item}`);

// 如果suffix还是找不到,就跳过这个检查

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This comment is in Chinese, while the rest of the codebase and PR are in English. For consistency, please translate it to English.

Suggested change
// 如果suffix还是找不到,就跳过这个检查
// If suffix is still not found, skip this check

export function triggerOpen(element: HTMLElement) {
fireEvent.mouseDown(element.querySelector('.rc-tree-select')!);
act(() => {
jest.advanceTimersByTime(10000);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Advancing timers by a large, arbitrary number like 10000ms can make tests slower and might hide issues related to specific timer durations. It's generally better to use jest.runAllTimers() to flush all timers. This change should be applied to all jest.advanceTimersByTime(10000) calls in this file.

Suggested change
jest.advanceTimersByTime(10000);
jest.runAllTimers();

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
tests/util.tsx (1)

20-21: 建议将硬编码的计时器时间提取为常量。

在多个工具函数中使用硬编码的 10000 毫秒可能不够灵活。考虑将此值提取为命名常量(例如 TIMER_ADVANCE_MS),以便于维护和调整。

应用此差异以提取常量:

+const TIMER_ADVANCE_MS = 10000;
+
 export function triggerOpen(element: HTMLElement) {
   fireEvent.mouseDown(element.querySelector('.rc-tree-select')!);
   act(() => {
-    jest.advanceTimersByTime(10000);
+    jest.advanceTimersByTime(TIMER_ADVANCE_MS);
   });
 }
 
 export function expectOpen(element: HTMLElement, open = true) {
   act(() => {
-    jest.advanceTimersByTime(10000);
+    jest.advanceTimersByTime(TIMER_ADVANCE_MS);
   });
   return expect(!!element.querySelector('.rc-tree-select-open')).toBe(open);
 }
 
 export function search(element: HTMLElement, value: string) {
   const input = element.querySelector('input')!;
   fireEvent.change(input, { target: { value } });
   act(() => {
-    jest.advanceTimersByTime(10000);
+    jest.advanceTimersByTime(TIMER_ADVANCE_MS);
   });
 }

Also applies to: 27-27, 36-36

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f6fadac and f5ed7f3.

⛔ Files ignored due to path filters (3)
  • tests/__snapshots__/Select.checkable.spec.tsx.snap is excluded by !**/*.snap
  • tests/__snapshots__/Select.multiple.spec.js.snap is excluded by !**/*.snap
  • tests/__snapshots__/Select.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (7)
  • tests/Select.checkable.spec.tsx (16 hunks)
  • tests/Select.multiple.spec.js (4 hunks)
  • tests/Select.props.spec.js (10 hunks)
  • tests/Select.spec.tsx (12 hunks)
  • tests/Select.tree.spec.js (6 hunks)
  • tests/setup.js (2 hunks)
  • tests/util.tsx (2 hunks)
🧰 Additional context used
🧬 Code graph analysis (4)
tests/Select.checkable.spec.tsx (1)
tests/util.tsx (4)
  • triggerOpen (18-23)
  • selectNode (3-6)
  • search (32-38)
  • clearSelection (40-43)
tests/Select.multiple.spec.js (1)
tests/util.tsx (5)
  • triggerOpen (18-23)
  • selectNode (3-6)
  • clearSelection (40-43)
  • expectOpen (25-30)
  • search (32-38)
tests/Select.props.spec.js (1)
tests/util.tsx (1)
  • search (32-38)
tests/Select.spec.tsx (1)
tests/util.tsx (3)
  • selectNode (3-6)
  • triggerOpen (18-23)
  • expectOpen (25-30)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Socket Security: Pull Request Alerts
  • GitHub Check: Socket Security: Project Report
🔇 Additional comments (10)
tests/setup.js (1)

52-76: LGTM! MessageChannel mock 实现正确。

MessageChannel mock 的实现正确模拟了双向通信,使用 setTimeout 异步传递消息。这对于不支持 MessageChannel API 的测试环境是必要的。

tests/Select.tree.spec.js (1)

114-116: LGTM! 正确使用可选链和 textContent。

使用可选链操作符 ?. 访问 textContent 可以安全处理元素不存在的情况,与 RTL 的最佳实践保持一致。

tests/Select.spec.tsx (1)

407-422: LGTM! 正确使用新的测试工具。

测试正确地使用了 triggerOpenexpectOpen 工具函数来管理异步打开状态,并验证了滚动行为。

tests/Select.multiple.spec.js (2)

11-18: LGTM! 假计时器的设置和清理正确。

beforeEach 中启用假计时器,在 afterEach 中清理和恢复真实计时器。这确保了测试之间的隔离性和确定性计时行为。


141-165: 测试迁移到 RTL 后逻辑清晰。

测试正确地使用了新的工具函数(triggerOpenselectNodeclearSelectionexpectOpen),并通过容器查询进行断言。代码注释清楚地解释了每个步骤。

tests/Select.props.spec.js (2)

48-57: LGTM! 正确使用 search 工具和可见节点过滤。

测试正确地使用了 search 工具函数,并通过排除 aria-hidden="true" 的节点来统计可见节点,这与 RTL 的可访问性最佳实践一致。


138-148: 正确处理异步 treeData 更新。

测试正确地使用 rerender 更新 props,并通过过滤可见节点来验证搜索过滤的行为。这确保了测试只断言用户可见的内容。

tests/Select.checkable.spec.tsx (3)

214-249: LGTM! 假计时器的局部使用正确。

测试在开始时启用假计时器,在结束时恢复真实计时器。使用 RTL 工具函数和容器查询正确地验证了清除选择和输入值的行为。


319-363: 测试正确验证了过滤场景中的复选框行为。

测试使用假计时器、searchselectNode 工具函数正确地模拟了在过滤结果中选择节点的场景,并验证了选择项的数量。


692-695: 使用过滤可见节点的辅助函数很好。

getTreeNode 函数通过排除 aria-hidden 节点来获取可见的树节点,这是一个好的实践,确保测试只针对用户可见的元素进行断言。

Comment on lines 711 to 734
const prefix = container.querySelector('.rc-tree-select-prefix');
const input = container.querySelector('.rc-tree-select-selection-search-input');
const suffix = container.querySelector('.rc-tree-select-arrow');
const input = container.querySelector('.rc-tree-select-input');
const suffix =
container.querySelector('.rc-tree-select-content-item-suffix') ||
container.querySelector('[class*="suffix"]');
const itemTitle = container.querySelector('.rc-tree-select-tree-title');
const item = container.querySelector(`.${customClassNames.popup.item}`);

// 如果suffix还是找不到,就跳过这个检查
expect(prefix).toHaveClass(customClassNames.prefix);
expect(input).toHaveClass(customClassNames.input);
expect(suffix).toHaveClass(customClassNames.suffix);
if (suffix) {
expect(suffix).toHaveClass(customClassNames.suffix);
}
expect(itemTitle).toHaveClass(customClassNames.popup.itemTitle);

expect(prefix).toHaveStyle(customStyles.prefix);
expect(input).toHaveStyle(customStyles.input);
expect(suffix).toHaveStyle(customStyles.suffix);
if (suffix) {
expect(suffix).toHaveStyle(customStyles.suffix);
}
expect(itemTitle).toHaveStyle(customStyles.popup.itemTitle);
expect(item).toHaveStyle(customStyles.popup.item);
});
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

条件断言可能隐藏潜在问题。

Lines 722-724 和 729-731 在 suffix 元素不存在时跳过断言。如果 suffix 元素预期应该存在(因为提供了 suffixIcon prop),那么跳过断言可能会隐藏真实的 bug。

考虑以下方案之一:

  1. 如果 suffix 必须存在,则断言其存在性:
-    if (suffix) {
-      expect(suffix).toHaveClass(customClassNames.suffix);
-    }
+    expect(suffix).toBeTruthy();
+    expect(suffix).toHaveClass(customClassNames.suffix);
  1. 或者使用更明确的选择器来确保找到正确的元素:
-    const suffix =
-      container.querySelector('.rc-tree-select-content-item-suffix') ||
-      container.querySelector('[class*="suffix"]');
+    const suffix = container.querySelector('.rc-tree-select-suffix');
+    expect(suffix).toBeTruthy();
+    expect(suffix).toHaveClass(customClassNames.suffix);

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In tests/Select.spec.tsx around lines 711 to 734, the test currently skips
assertions when the suffix element is missing which can hide real bugs; change
the test to explicitly assert the suffix exists when suffixIcon prop is provided
(i.e., replace the conditional checks with an existence expectation) and then
run the style and class assertions on that found element, or if the suffix may
legitimately be absent, replace the permissive query with a stricter selector
that uniquely targets the expected suffix element (for example a specific
data-testid or exact class) and assert either its presence or absence
accordingly before checking classes/styles.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
examples/custom-icons.tsx (1)

73-78: 考虑移除重复代码并统一图标配置。

变更后,iconPropsFunctioniconProps(第 66-71 行)完全相同,造成了代码重复。此外,iconPropsFunction 这个命名暗示其包含函数,但实际上现在包含的是直接引用,容易造成误解。

建议移除 iconPropsFunction,在两个 TreeSelect 示例中都使用 iconProps

可以应用以下修改来消除重复:

-const iconPropsFunction = {
-  suffixIcon,
-  clearIcon,
-  removeIcon,
-  switcherIcon,
-};
-
 function Demo() {
   return (
     <div className="custom-icon-demo">

同时更新第 105 行:

-        {...iconPropsFunction}
+        {...iconProps}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f5ed7f3 and a7ebb12.

📒 Files selected for processing (1)
  • examples/custom-icons.tsx (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Socket Security: Pull Request Alerts
  • GitHub Check: Socket Security: Project Report

@codecov
Copy link

codecov bot commented Oct 22, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.83%. Comparing base (37d94ae) to head (5f3fed4).
⚠️ Report is 3 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #650   +/-   ##
=======================================
  Coverage   99.83%   99.83%           
=======================================
  Files          17       17           
  Lines         603      619   +16     
  Branches      186      177    -9     
=======================================
+ Hits          602      618   +16     
  Misses          1        1           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@zombieJ zombieJ merged commit d65883d into master Oct 22, 2025
12 of 13 checks passed
@zombieJ zombieJ deleted the fix-test branch October 22, 2025 09:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant