Skip to content

refactor(test): remove jest-specific setup file#19

Merged
chenjiahan merged 3 commits intomainfrom
test_setup_0314
Mar 15, 2026
Merged

refactor(test): remove jest-specific setup file#19
chenjiahan merged 3 commits intomainfrom
test_setup_0314

Conversation

@chenjiahan
Copy link
Member

  • replace jest.fn() and jest.spyOn() with rstest equivalents
  • update test configuration to use rstest
  • convert callback-based tests to async/await
  • add utility functions for test synchroniz

Copilot AI review requested due to automatic review settings March 14, 2026 14:02
@gemini-code-assist
Copy link

Summary of Changes

Hello, 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 significantly refactors the testing infrastructure by migrating away from Jest-specific setup and utilities towards rstest equivalents. The changes involve updating test configurations, removing a dedicated setup file, and modernizing asynchronous tests to use async/await patterns. This effort aims to enhance test consistency, simplify test code, and improve overall maintainability by leveraging rstest's native capabilities for mocking and asynchronous operations.

Highlights

  • Test Framework Migration: Replaced Jest-specific utility functions like jest.fn() and jest.spyOn() with their rstest equivalents (rs.fn() and rs.spyOn()) across multiple test files.
  • Removed Jest Setup File: Eliminated the dedicated setupTest.js file, which contained logic for done-style test wrapping and global Jest patching, streamlining the test setup process.
  • Asynchronous Test Modernization: Converted numerous callback-based asynchronous tests to use modern async/await syntax, improving readability and maintainability. New utility functions like waitUntilValid and waitForCompilerDone were introduced to facilitate this.
  • Test Configuration Update: Updated rstest.config.mjs to remove the setupFiles entry for the now-removed setupTest.js and explicitly set a testTimeout.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • rstest.config.mjs
    • Removed 'setupTest.js' from the 'setupFiles' configuration.
    • Added a 'testTimeout' of 20000ms to the configuration.
  • setupTest.js
    • Removed the entire file, which previously handled Jest-specific global setup and done-style test wrapping.
  • test/helpers/listenAndCompile.js
    • Renamed the 'done' callback parameter to 'callback' for clarity and consistency.
  • test/middleware.test.js
    • Replaced jest.spyOn with rs.spyOn for mocking console output and compiler methods.
    • Added new utility functions waitUntilValid and waitForCompilerDone to assist with asynchronous test synchronization.
    • Converted multiple callback-based it tests to async/await syntax, utilizing the new synchronization utilities.
  • test/utils/ready.test.js
    • Replaced jest.fn() with rs.fn() for mock functions.
  • test/utils/setupHooks.test.js
    • Replaced jest.spyOn() with rs.spyOn() and jest.fn() with rs.fn() for mock functions and spies.
  • test/utils/setupOutputFileSystem.test.js
    • Replaced jest.spyOn() with rs.spyOn() for mocking createFsFromVolume.
  • test/utils/setupWriteToDisk.test.js
    • Replaced jest.spyOn() with rs.spyOn() and jest.fn() with rs.fn() for mock functions and spies.
Activity
  • The author, chenjiahan, initiated this refactoring to align testing practices with rstest.
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 is a significant and well-executed refactoring of the test suite. It successfully removes the dependency on Jest-specific setup files and APIs, replacing them with rstest equivalents. The conversion of callback-based asynchronous tests to use modern async/await syntax, along with the introduction of helper functions like waitUntilValid and waitForCompilerDone, greatly improves the readability, maintainability, and reliability of the tests. The changes are consistent and thorough. I have one suggestion to improve the robustness of a new test helper to prevent a potential memory leak.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 78866b276d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the test suite to remove the custom setupTest.js harness (including the done-style wrapper and globalThis.jest alias) and modernizes several tests to use async/await-style flow and the new test runner configuration.

Changes:

  • Removed setupTest.js and migrated timeout configuration into rstest.config.mjs.
  • Replaced jest.* usages with rs.* across multiple test files.
  • Converted several callback-based middleware tests to async/await helpers (waitUntilValid, waitForCompilerDone) to reduce manual interval polling.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
test/utils/setupWriteToDisk.test.js Switches mocks/spies from jest to rs.
test/utils/setupOutputFileSystem.test.js Switches memfs spy from jest to rs.
test/utils/setupHooks.test.js Switches mocks/spies from jest to rs.
test/utils/ready.test.js Switches mocks from jest to rs.
test/middleware.test.js Converts multiple tests from done callbacks to async/await; introduces helper Promises; switches spies to rs.
test/helpers/listenAndCompile.js Renames callback parameter (donecallback) and clarifies comment.
setupTest.js Deleted prior test setup that configured timeouts and aliased jest to the runner API.
rstest.config.mjs Moves testTimeout into config and removes setupFiles entry.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@chenjiahan chenjiahan merged commit db74d85 into main Mar 15, 2026
5 checks passed
@chenjiahan chenjiahan deleted the test_setup_0314 branch March 15, 2026 01:08
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