Skip to content

Conversation

@ndelangen
Copy link
Member

@ndelangen ndelangen commented Oct 21, 2025

Closes #32459

What I did

When users wrap their addons-strings using getAbsolutePath, node (sometimes?) no longer uses the exportMap defined in package.json of out package, and so root files are needed to have our preset loading code "see" these as managerEntries it needs to add to the list.

I check if any other addons had their missing, but that didn't seem like the case.

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

  • A repo (preferably a monorepo) using storybook & vite is needed.
  • Add (or ensure it's added) the addon-vitest, and it's all correctly setup.
  • Add the a11y addon.
  • Ensure the main.ts files had wrapped the addon-string with getAbsolutePath
  • Run the storybook in dev mode and absolute the checkboxes in the testing module.
  • You can check the issue linked above, for extra details.
  • You should no longer be able to reproduce the bug after this change.

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-storybook/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 publish.yml --field pr=<PR_NUMBER>

Summary by CodeRabbit

  • Chores
    • Updated the accessibility addon manager module structure to improve export handling.

… no longer uses the exportMap defined in package.json, and so root files are needed to have our preset loading code "see" these as managerEntries it needs to add to the list.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 21, 2025

📝 Walkthrough

Walkthrough

A re-export statement has been added to the a11y manager module, exposing all exports from the built dist/manager.js file through the primary manager entry point.

Changes

Cohort / File(s) Summary
A11y manager re-export
code/addons/a11y/manager.js
Added re-export of all exports from ./dist/manager.js to expose built manager module contents

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch norbert/add-manager-entrypoint-a11y

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

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 (1)
code/addons/a11y/manager.js (1)

1-1: Add an inline comment to document the purpose of this entry file.

This re-export file exists as a workaround to make the a11y addon manager discoverable when addon paths are wrapped with getAbsolutePath (which can bypass package exports/exportMap). Adding a brief inline comment would clarify this intent for future maintainers.

+// Re-export manager to ensure entry point is discoverable when addon paths
+// are wrapped with getAbsolutePath, which may bypass package exports/exportMap.
export * from './dist/manager.js';
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8f66a21 and 6336aa0.

📒 Files selected for processing (1)
  • code/addons/a11y/manager.js (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{js,jsx,json,html,ts,tsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{js,jsx,json,html,ts,tsx,mjs}: Run Prettier formatting on changed files before committing
Run ESLint on changed files and fix all errors/warnings before committing (use yarn lint:js:cmd <file>)

Files:

  • code/addons/a11y/manager.js
**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Export functions from modules when they need to be unit-tested

Files:

  • code/addons/a11y/manager.js
code/**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

In application code, use Storybook loggers instead of console.* (client code: storybook/internal/client-logger; server code: storybook/internal/node-logger)

Files:

  • code/addons/a11y/manager.js
{code/**,scripts/**}/**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Do not use console.log, console.warn, or console.error directly unless in isolated files where importing loggers would significantly increase bundle size

Files:

  • code/addons/a11y/manager.js
⏰ 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). (1)
  • GitHub Check: Core Unit Tests, windows-latest
🔇 Additional comments (1)
code/addons/a11y/manager.js (1)

1-1: dist/manager.js is a build-time artifact; verification should focus on build process execution.

The file code/addons/a11y/manager.js exists and follows the established re-export pattern consistently used across all addons in the codebase (docs, themes, onboarding, vitest, pseudo-states, links). The single-line export statement is properly formatted.

However, the dist/manager.js target file is generated during the build process and does not exist in source control (expected behavior). ESLint/Prettier compliance for this file cannot be verified in the current environment since actual build/lint tooling is unavailable.

Before committing, manually verify:

  1. The build process successfully generates code/addons/a11y/dist/manager.js
  2. ESLint and Prettier have been run on the file per coding guidelines

@nx-cloud
Copy link

nx-cloud bot commented Oct 21, 2025

View your CI Pipeline Execution ↗ for commit 4611f75

Command Status Duration Result
nx run-many -t build --parallel=3 ✅ Succeeded 51s View ↗

☁️ Nx Cloud last updated this comment at 2025-10-21 10:52:17 UTC

@ndelangen ndelangen merged commit cf268ca into next Oct 21, 2025
58 of 59 checks passed
@ndelangen ndelangen deleted the norbert/add-manager-entrypoint-a11y branch October 21, 2025 10:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Storybook 10 migration - monorepo issue

3 participants