Skip to content

Commit 17b7512

Browse files
authored
Merge pull request #27708 from storybookjs/yann/add-tags-to-portable-stories
Portable Stories: Add tags to composed story
2 parents 615d0d1 + 60db7ba commit 17b7512

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

code/lib/preview-api/src/modules/store/csf/portable-stories.test.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ describe('composeStory', () => {
2323
label: 'Hello World',
2424
primary: true,
2525
},
26+
tags: ['metaTag'],
2627
};
2728

2829
it('should compose project annotations in all module formats', () => {
@@ -40,15 +41,16 @@ describe('composeStory', () => {
4041
it('should return story with composed annotations from story, meta and project', () => {
4142
const decoratorFromProjectAnnotations = vi.fn((StoryFn) => StoryFn());
4243
const decoratorFromStoryAnnotations = vi.fn((StoryFn) => StoryFn());
43-
setProjectAnnotations([
44-
{
45-
parameters: { injected: true },
46-
globalTypes: {
47-
locale: { defaultValue: 'en' },
48-
},
49-
decorators: [decoratorFromProjectAnnotations],
44+
const projectAnnotations = {
45+
parameters: { injected: true },
46+
globalTypes: {
47+
locale: { defaultValue: 'en' },
5048
},
51-
]);
49+
decorators: [decoratorFromProjectAnnotations],
50+
tags: ['projectTag'],
51+
};
52+
53+
setProjectAnnotations(projectAnnotations);
5254

5355
const Story: Story = {
5456
render: () => {},
@@ -57,13 +59,15 @@ describe('composeStory', () => {
5759
secondAddon: true,
5860
},
5961
decorators: [decoratorFromStoryAnnotations],
62+
tags: ['storyTag'],
6063
};
6164

6265
const composedStory = composeStory(Story, meta);
6366
expect(composedStory.args).toEqual({ ...Story.args, ...meta.args });
6467
expect(composedStory.parameters).toEqual(
6568
expect.objectContaining({ ...Story.parameters, ...meta.parameters })
6669
);
70+
expect(composedStory.tags).toEqual(['dev', 'test', 'projectTag', 'metaTag', 'storyTag']);
6771

6872
composedStory();
6973

code/lib/preview-api/src/modules/store/csf/portable-stories.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ export function composeStory<TRenderer extends Renderer = Renderer, TArgs extend
172172
parameters: story.parameters as Parameters,
173173
argTypes: story.argTypes as StrictArgTypes<TArgs>,
174174
play: playFunction as ComposedStoryPlayFn<TRenderer, TArgs> | undefined,
175+
tags: story.tags,
175176
}
176177
);
177178

code/lib/types/src/modules/composedStory.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type {
66
Renderer,
77
StoryId,
88
StrictArgTypes,
9+
Tag,
910
} from '@storybook/csf';
1011

1112
import type {
@@ -56,6 +57,7 @@ export type ComposedStoryFn<
5657
storyName: string;
5758
parameters: Parameters;
5859
argTypes: StrictArgTypes<TArgs>;
60+
tags: Tag[];
5961
};
6062
/**
6163
* Based on a module of stories, it returns all stories within it, filtering non-stories

0 commit comments

Comments
 (0)