Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setup of vitest #3238

Conversation

NishantSinghhhhh
Copy link
Contributor

@NishantSinghhhhh NishantSinghhhhh commented Jan 10, 2025

PR Description for vitest.setup.ts Changes

What kind of change does this PR introduce?
Testing configuration: Adding/modifying Vitest setup configuration for the project.

Issue Number:
Fixes : #2753

Did you add tests for your changes?
Yes, the changes are related to the testing infrastructure itself.

Snapshots/Videos:
Screencast from 2025-01-10 12-03-08.webm
jest tests are passing

vitests are passing too
https://github.com/user-attachments/assets/bd6c6d90-ee7b-4f7d-884c-bc8e114d2dfa

If relevant, did you update the documentation?
No

Summary
This PR introduces/modifies the vitest.setup.ts file which configures the testing environment for the project. The changes include:

  • Setting up testing utilities (@testing-library/jest-dom)
  • Configuring cleanup procedures
  • Handling React 18 specific warnings
  • Error handling setup for tests

These changes ensure consistent and reliable test execution across the project.

Does this PR introduce a breaking change?
No

Other information
The setup file follows Vitest best practices and maintains compatibility with existing test suites.

Have you read the contributing guide?
Yes


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Tests**
	- Enhanced testing setup for React 18
	- Improved test cleanup and error handling mechanisms
	- Added custom console error filtering to reduce unnecessary warnings during testing

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: NishantSinghhhhh <nishantsingh_230137@aitpune.edu.in>
Copy link
Contributor

coderabbitai bot commented Jan 10, 2025

Walkthrough

The pull request modifies the vitest.setup.ts file to improve testing setup for React 18. The changes introduce a cleanup mechanism using @testing-library/react and implement custom error handling for console warnings. A new afterEach hook ensures test isolation by cleaning up after each test, while a beforeAll hook filters out specific React 18 warnings related to deprecated ReactDOM.render method, preventing console clutter during test execution.

Changes

File Change Summary
vitest.setup.ts - Added import for cleanup from @testing-library/react
- Implemented afterEach hook to run cleanup() after each test
- Added beforeAll hook to override console.error and filter React 18 warnings
- Included afterAll hook to restore original console.error method

Possibly related issues

Possibly related PRs

Suggested labels

refactor

Suggested reviewers

  • palisadoes
  • disha1202

Poem

🐰 In the realm of tests, a rabbit's delight,
Vitest setup now shines so bright!
Warnings filtered, cleanup in place,
React 18 tests run with grace.
A testing dance, both clean and neat! 🧪✨

Finishing Touches

  • 📝 Generate Docstrings (Beta)

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

Our Pull Request Approval Process

Thanks for contributing!

Testing Your Code

Remember, your PRs won't be reviewed until these criteria are met:

  1. We don't merge PRs with poor code quality.
    1. Follow coding best practices such that CodeRabbit.ai approves your PR.
  2. We don't merge PRs with failed tests.
    1. When tests fail, click on the Details link to learn more.
    2. Write sufficient tests for your changes (CodeCov Patch Test). Your testing level must be better than the target threshold of the repository
    3. Tests may fail if you edit sensitive files. Ask to add the ignore-sensitive-files-pr label if the edits are necessary.
  3. We cannot merge PRs with conflicting files. These must be fixed.

Our policies make our code better.

Reviewers

Do not assign reviewers. Our Queue Monitors will review your PR and assign them.
When your PR has been assigned reviewers contact them to get your code reviewed and approved via:

  1. comments in this PR or
  2. our slack channel

Reviewing Your Code

Your reviewer(s) will have the following roles:

  1. arbitrators of future discussions with other contributors about the validity of your changes
  2. point of contact for evaluating the validity of your work
  3. person who verifies matching issues by others that should be closed.
  4. person who gives general guidance in fixing your tests

CONTRIBUTING.md

Read our CONTRIBUTING.md file. Most importantly:

  1. PRs with issues not assigned to you will be closed by the reviewer
  2. Fix the first comment in the PR so that each issue listed automatically closes

Other

  1. 🎯 Please be considerate of our volunteers' time. Contacting the person who assigned the reviewers is not advised unless they ask for your input. Do not @ the person who did the assignment otherwise.
  2. Read the CONTRIBUTING.md file make

@NishantSinghhhhh
Copy link
Contributor Author

@palisadoes , I have added the setup file for vitest

Copy link
Contributor

@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 (2)
vitest.setup.ts (2)

12-23: Consider improving type safety and error handling.

The current implementation could be enhanced for better type safety and more comprehensive error handling.

Consider these improvements:

-  console.error = (...args: unknown[]) => {
-    const firstArg = args[0];
-    if (
-      typeof firstArg === 'string' &&
-      /Warning: ReactDOM.render is no longer supported in React 18./.test(
-        firstArg,
-      )
-    ) {
+  console.error = (...args: unknown[]) => {
+    const [firstArg, ...rest] = args;
+    const REACT_18_WARNINGS = [
+      'Warning: ReactDOM.render is no longer supported in React 18.',
+      // Add other React 18 warnings here
+    ];
+    if (
+      typeof firstArg === 'string' &&
+      REACT_18_WARNINGS.some(warning => firstArg.includes(warning))
+    ) {

4-5: Consider enhancing documentation.

While the current comments are helpful, consider adding more detailed documentation about:

  • Why specific React 18 warnings are being suppressed
  • The importance of the cleanup process
  • Any potential side effects of these configurations

Example documentation:

-// Basic cleanup after each test
+/**
+ * Cleanup after each test
+ * This ensures that:
+ * 1. DOM is cleared between tests
+ * 2. No test side-effects leak into other tests
+ * 3. Each test starts with a fresh environment
+ */

-// Simple console error handler for React 18 warnings
+/**
+ * Custom console error handler for React 18
+ * Suppresses specific React 18 migration warnings during testing
+ * while preserving other important error messages
+ * @see https://react.dev/blog/2022/03/08/react-18-upgrade-guide
+ */

Also applies to: 9-10

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between eceaad9 and 30f973c.

📒 Files selected for processing (1)
  • vitest.setup.ts (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Test Application
🔇 Additional comments (3)
vitest.setup.ts (3)

1-8: Well-structured test cleanup implementation!

The cleanup setup follows testing-library best practices by ensuring each test starts with a clean DOM state.


26-28: LGTM! Proper cleanup of console overrides.

The afterAll hook correctly restores the original console.error functionality, ensuring a clean test environment.


9-24: Verify the impact of suppressing React 18 warnings.

While suppressing the ReactDOM.render warning is reasonable for React 18 migration, ensure this doesn't hide other important warnings.

Let's check for other potential React 18 warnings that might need handling:

✅ Verification successful

Warning suppression is properly implemented and scoped

The warning suppression is specifically targeting only the ReactDOM.render deprecation warning in React 18, while properly preserving all other console errors. This is a safe and common practice during React 18 migration, especially in test environments.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for React 18 related warnings in test files
rg -i "warning.*react 18" --type ts --type tsx

Length of output: 76


Script:

#!/bin/bash
# Find all TypeScript and test setup files
echo "=== TypeScript and Setup Files ==="
fd "\.(ts|tsx)$"

# Search for React 18 related warnings and patterns
echo -e "\n=== React 18 Related Patterns ==="
rg -i "react 18|reactdom\.render"

# Look for console.error interceptors
echo -e "\n=== Console Error Interceptors ==="
rg "console\.error.*=.*\(" -A 5

Length of output: 31912

Copy link

codecov bot commented Jan 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.17%. Comparing base (eceaad9) to head (30f973c).
Report is 5 commits behind head on develop-postgres.

Additional details and impacted files
@@                  Coverage Diff                  @@
##           develop-postgres    #3238       +/-   ##
=====================================================
+ Coverage             10.74%   90.17%   +79.43%     
=====================================================
  Files                   309      330       +21     
  Lines                  7802     8488      +686     
  Branches               1729     1933      +204     
=====================================================
+ Hits                    838     7654     +6816     
+ Misses                 6900      604     -6296     
- Partials                 64      230      +166     

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

@palisadoes
Copy link
Contributor

How will this affect all the jest testing?

@NishantSinghhhhh
Copy link
Contributor Author

NishantSinghhhhh commented Jan 10, 2025

@palisadoes , This is not affecting jest testing in any way , the jestTest setup file that was made , I have not changed any code in that , I have just added code to the pre-existing file vitest.setup.ts

@palisadoes palisadoes merged commit ea2f4ea into PalisadoesFoundation:develop-postgres Jan 10, 2025
18 checks passed
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.

2 participants