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

Build: Switch to an alternative node:fs mocking system #24920

Closed
wants to merge 4 commits into from

Conversation

samvv
Copy link
Contributor

@samvv samvv commented Nov 20, 2023

Closes #24915

What I did

On recent versions of NodeJS, the tests failed to run due to mock-fs being outdated. This pull request should fix that by getting rid of mock-fs entirely. See backstage/backstage#20436 for some motivation why this would be a good thing.

I created a new file code/lib/core-common/src/mock.ts that performs roughly the same features as mock-fs but in a different (hopefully more stable) manner. The tests code/lib/core-common/src/utils/__tests__/interpret-files.test.ts and code/lib/core-common/src/utils/__tests__/template.test.ts were only adjusted in their import path, which now points to mock.ts. The API remains the same.

To Do Before Merge

  • Rimraf the test data when tests have completed
  • Some tests behave different with the new system. Is this expected or a bug?
  • Check whether the location of mock.ts is a good one. Do we need to create a separate package?

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

No manual testing should be necessary, as this is an issue related to the unit tests.

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>

Copy link

Removed dependencies detected. Learn more about Socket for GitHub ↗︎

🚮 Removed packages: @types/[email protected], [email protected]

@samvv
Copy link
Contributor Author

samvv commented Nov 20, 2023

Going to ask @valentinpalkovic since he merged my last pull request: who should I ask for feedback about the 'To Do Before Merge' in my pull request?

@ndelangen ndelangen self-assigned this Nov 22, 2023
@ndelangen ndelangen added build Internal-facing build tooling & test updates ci:normal labels Nov 22, 2023
@ndelangen ndelangen changed the title [WIP] Switch to an alternative node:fs mocking system Testing: Switch to an alternative node:fs mocking system Nov 22, 2023
@valentinpalkovic
Copy link
Contributor

Hi @samvv
Could you try to fix the unit tests

@samvv
Copy link
Contributor Author

samvv commented Nov 29, 2023

Hi @samvv
Could you try to fix the unit tests

I can but I'm not sure if the unit tests failed because they allowed something invalid or because the new system is broken. Does somebody know anything more about the failing test cases?

@valentinpalkovic
Copy link
Contributor

As far as I can see the mocks are not applied but the real files are loaded

@samvv
Copy link
Contributor Author

samvv commented Nov 29, 2023

Oh thanks that is actually really helpful. I will try to make some time available this evening to work on it.

@shilman shilman changed the title Testing: Switch to an alternative node:fs mocking system Build: Switch to an alternative node:fs mocking system Jan 3, 2024
@shilman
Copy link
Member

shilman commented Jan 3, 2024

@samvv We've switched the entire monorepo over to Vitest. FYI, if you're going to resume this PR!

@shilman
Copy link
Member

shilman commented Jan 3, 2024

@ndelangen would we really want to switch from a library to something we need to maintain ourselves?

@ndelangen
Copy link
Member

@shilman yes, I'm optimistic about that.
see: backstage/backstage#20436 (comment)

Copy link

nx-cloud bot commented Mar 26, 2024

☁️ Nx Cloud Report

CI is running/has finished running commands for commit 367d4c2. As they complete they will appear below. Click to see the status, the terminal output, and the build insights.

📂 See all runs for this CI Pipeline Execution


✅ Successfully ran 1 target

Sent with 💌 from NxCloud.

@ndelangen
Copy link
Member

@samvv Do you see a possibility to take this PR over the finish line?

We migrated to vitest in the mean time 😓
A few tests are failing.. Could you fix them? If so, I think we can merge this.

@ndelangen ndelangen marked this pull request as draft March 26, 2024 09:35
@ndelangen ndelangen closed this Jul 4, 2024
@ndelangen
Copy link
Member

@samvv please re-open if you're interested in pursuing this further ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Internal-facing build tooling & test updates ci:normal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: ENOENT: no such file or directory, open 'undefined/templates/base-preview-head.html'
5 participants