Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,19 @@ describe('getIncompatibleStorybookPackages', () => {
vi.mocked(packageManagerMock.getModulePackageJSON).mockReturnValue({ version: '9.0.0' });
});

it('succeeds if only core storybook packages used', async () => {
vi.mocked(packageManagerMock.getAllDependencies).mockReturnValueOnce({
storybook: '9.0.0',
});

const result = await getIncompatibleStorybookPackages({
currentStorybookVersion: '9.0.0',
packageManager: packageManagerMock as JsPackageManager,
});

expect(result).toHaveLength(0);
});

it('returns an array of incompatible packages', async () => {
// Mock a non-core storybook package that would be found
vi.mocked(packageManagerMock.getAllDependencies).mockReturnValueOnce({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable local-rules/no-uncategorized-errors */
import type { JsPackageManager } from 'storybook/internal/common';
import { versions as storybookCorePackages, versions } from 'storybook/internal/common';
import { versions as storybookCorePackages } from 'storybook/internal/common';
import { logger } from 'storybook/internal/node-logger';

import picocolors from 'picocolors';
Expand Down Expand Up @@ -102,13 +102,15 @@ export const getIncompatibleStorybookPackages = async (
context: Context
): Promise<AnalysedPackage[]> => {
const allDeps = context.packageManager.getAllDependencies();
const storybookLikeDeps = Object.keys(allDeps).filter(
(dep) => dep.includes('storybook') && !versions[dep as keyof typeof versions]
);
const storybookLikeDeps = Object.keys(allDeps).filter((dep) => dep.includes('storybook'));
if (storybookLikeDeps.length === 0 && !context.skipErrors) {
throw new Error('No Storybook dependencies found in the package.json');
}
return Promise.all(storybookLikeDeps.map((dep) => checkPackageCompatibility(dep, context)));
return Promise.all(
storybookLikeDeps
.filter((dep) => !storybookCorePackages[dep as keyof typeof storybookCorePackages])
.map((dep) => checkPackageCompatibility(dep, context))
);
};

export const getIncompatiblePackagesSummary = (
Expand Down
Loading