Skip to content

Remove unused viewLayer and addons from CLI metadata #1167

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

Merged
merged 2 commits into from
Apr 3, 2025
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
49 changes: 0 additions & 49 deletions node-src/lib/getPrebuiltStorybookMetadata.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,11 @@ describe('getStorybookMetadataFromProjectJson', () => {
const metadata = await getStorybookMetadataFromProjectJson(projectJsonPath);

expect(metadata).toEqual({
viewLayer: '@storybook/react-webpack5',
version: '8.1.5',
builder: {
name: '@storybook/builder-webpack5',
packageVersion: '8.1.5',
},
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: '8.1.5',
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: '1.0.2',
},
],
});
});

Expand All @@ -34,29 +21,11 @@ describe('getStorybookMetadataFromProjectJson', () => {
const metadata = await getStorybookMetadataFromProjectJson(projectJsonPath);

expect(metadata).toEqual({
viewLayer: 'react',
version: '6.5.16',
builder: {
name: 'webpack4',
packageVersion: '6.5.16',
},
addons: [
{
name: 'links',
packageName: '@storybook/addon-links',
packageVersion: '6.5.16',
},
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: '6.5.16',
},
{
name: 'interactions',
packageName: '@storybook/addon-interactions',
packageVersion: '6.5.16',
},
],
});
});

Expand All @@ -65,29 +34,11 @@ describe('getStorybookMetadataFromProjectJson', () => {
const metadata = await getStorybookMetadataFromProjectJson(projectJsonPath);

expect(metadata).toEqual({
viewLayer: 'react',
version: '6.5.16',
builder: {
name: 'webpack4',
packageVersion: '6.5.16',
},
addons: [
{
name: 'links',
packageName: '@storybook/addon-links',
packageVersion: '6.5.16',
},
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: '6.5.16',
},
{
name: 'interactions',
packageName: '@storybook/addon-interactions',
packageVersion: '6.5.16',
},
],
});
});
});
9 changes: 0 additions & 9 deletions node-src/lib/getPrebuiltStorybookMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { readFile } from 'jsonfile';

import { Context } from '../types';
import { builders } from './builders';
import { supportedAddons } from './supportedAddons';
import { viewLayers } from './viewLayers';

/*
Expand Down Expand Up @@ -43,15 +42,7 @@ export const getStorybookMetadataFromProjectJson = async (
: '';

return {
viewLayer: sbProjectJson.framework.name,
version,
builder,
addons: Object.entries(sbProjectJson.addons)
.filter(([packageName]) => supportedAddons[packageName])
.map(([packageName, addon]) => ({
name: supportedAddons[packageName],
packageName,
packageVersion: addon.version,
})),
};
};
115 changes: 4 additions & 111 deletions node-src/lib/getStorybookInfo.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,14 @@ describe('getStorybookInfo', () => {
vi.clearAllTimers();
});

it('returns viewLayer and version', async () => {
it('returns version', async () => {
const ctx = getContext({ packageJson: { dependencies: REACT } });
const sbInfo = await getStorybookInfo(ctx);
expect(sbInfo).toEqual(
// We're getting the result of tracing chromatic-cli's node_modules here.
expect.objectContaining({
// We're currently using `react` and `@storybook/react-webpack5` so the we can end up with
// either one based on when those promises resolve.
viewLayer: expect.stringMatching(/(react|@storybook\/react-webpack5)/),
version: expect.any(String),
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
Expand Down Expand Up @@ -62,18 +61,6 @@ describe('getStorybookInfo', () => {
const ctx = getContext({ packageJson: { dependencies: VUE } });
await expect(getStorybookInfo(ctx)).resolves.toEqual(
expect.objectContaining({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
Expand All @@ -85,20 +72,7 @@ describe('getStorybookInfo', () => {
expect.objectContaining({
// We're currently using `react` and `@storybook/react-webpack5` so the we can end up with
// either one based on when those promises resolve.
viewLayer: expect.stringMatching(/(react|@storybook\/react-webpack5)/),
version: expect.any(String),
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
Expand All @@ -108,13 +82,12 @@ describe('getStorybookInfo', () => {
});

describe('with CHROMATIC_STORYBOOK_VERSION', () => {
it('returns viewLayer and version from env', async () => {
it('returns version from env', async () => {
const ctx = getContext({
env: { CHROMATIC_STORYBOOK_VERSION: '@storybook/[email protected]' },
});
expect(await getStorybookInfo(ctx)).toEqual(
expect.objectContaining({
viewLayer: 'react',
version: '3.2.1',
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
Expand All @@ -125,29 +98,16 @@ describe('getStorybookInfo', () => {
const ctx = getContext({ env: { CHROMATIC_STORYBOOK_VERSION: '[email protected]' } });
expect(await getStorybookInfo(ctx)).toEqual(
expect.objectContaining({
viewLayer: 'react',
version: '3.2.1',
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});

it('still returns addons and builder for invalid version value', async () => {
it('still returns builder for invalid version value', async () => {
const ctx = getContext({ env: { CHROMATIC_STORYBOOK_VERSION: '3.2.1' } });
expect(await getStorybookInfo(ctx)).toEqual(
expect.objectContaining({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
Expand All @@ -157,46 +117,21 @@ describe('getStorybookInfo', () => {
const ctx = getContext({ env: { CHROMATIC_STORYBOOK_VERSION: '@storybook/[email protected]' } });
expect(await getStorybookInfo(ctx)).toEqual(
expect.objectContaining({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
});

describe('with --storybook-build-dir', () => {
it('returns viewLayer and version from packageJson', async () => {
it('returns version from packageJson', async () => {
const ctx = getContext({
options: { storybookBuildDir: 'bin-src/__mocks__/normalProjectJson' },
packageJson: { dependencies: REACT },
});
expect(await getStorybookInfo(ctx)).toEqual({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/builder-webpack5', packageVersion: expect.any(String) },
version: expect.any(String),
viewLayer: '@storybook/react-webpack5',
});
});

Expand All @@ -208,56 +143,14 @@ describe('getStorybookInfo', () => {
expect(await getStorybookInfo(ctx)).toEqual({});
});

it('does not return unsupported addons in metadata', async () => {
const ctx = getContext({
options: { storybookBuildDir: 'bin-src/__mocks__/unsupportedAddons' },
packageJson: { dependencies: REACT },
});
expect(await getStorybookInfo(ctx)).toEqual({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/builder-webpack5', packageVersion: expect.any(String) },
version: expect.any(String),
viewLayer: '@storybook/react-webpack5',
});
});

it('returns the correct metadata for Storybook 6', async () => {
const ctx = getContext({
options: { storybookBuildDir: 'bin-src/__mocks__/sb6ProjectJson' },
packageJson: { dependencies: REACT },
});
expect(await getStorybookInfo(ctx)).toEqual({
addons: [
{
name: 'links',
packageName: '@storybook/addon-links',
packageVersion: '6.5.16',
},
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: '6.5.16',
},
{
name: 'interactions',
packageName: '@storybook/addon-interactions',
packageVersion: '6.5.16',
},
],
builder: { name: 'webpack4', packageVersion: '6.5.16' },
version: '6.5.16',
viewLayer: 'react',
});
});
});
Expand Down
Loading