From 645e881b19392ae2ab473a62528d9609ee56b136 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 10 Jan 2023 10:56:07 +0800 Subject: [PATCH 1/3] Telemetry: Filter out example stories/docs from summary --- .../core-server/src/utils/summarizeIndex.ts | 30 +++++++++++++++++-- scripts/event-log-checker.ts | 4 +++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/code/lib/core-server/src/utils/summarizeIndex.ts b/code/lib/core-server/src/utils/summarizeIndex.ts index 98eb65ba655b..be2cad4175ed 100644 --- a/code/lib/core-server/src/utils/summarizeIndex.ts +++ b/code/lib/core-server/src/utils/summarizeIndex.ts @@ -1,4 +1,4 @@ -import type { StoryIndex } from '@storybook/types'; +import type { IndexEntry, StoryIndex } from '@storybook/types'; import { STORIES_MDX_TAG, isMdxEntry, AUTODOCS_TAG, PLAY_FN_TAG } from './StoryIndexGenerator'; @@ -6,15 +6,39 @@ const PAGE_REGEX = /(page|screen)/i; export const isPageStory = (storyId: string) => PAGE_REGEX.test(storyId); +/** + * Filter out example stories that are generated by the CLI + */ +const isExampleEntry = (entry: IndexEntry) => { + return [ + 'example-introduction--docs', + 'example-button--docs', + 'example-button--primary', + 'example-button--secondary', + 'example-button--large', + 'example-button--small', + 'example-header--docs', + 'example-header--logged-in', + 'example-header--logged-out', + 'example-page--logged-in', + 'example-page--logged-out', + ].includes(entry.id); +}; + export function summarizeIndex(storyIndex: StoryIndex) { let storyCount = 0; + let exampleStoryCount = 0; + let exampleDocsCount = 0; let pageStoryCount = 0; let playStoryCount = 0; let autodocsCount = 0; let storiesMdxCount = 0; let mdxCount = 0; Object.values(storyIndex.entries).forEach((entry) => { - if (entry.type === 'story') { + if (isExampleEntry(entry)) { + if (entry.type === 'story') exampleStoryCount += 1; + if (entry.type === 'docs') exampleDocsCount += 1; + } else if (entry.type === 'story') { storyCount += 1; if (isPageStory(entry.title)) { pageStoryCount += 1; @@ -39,6 +63,8 @@ export function summarizeIndex(storyIndex: StoryIndex) { autodocsCount, storiesMdxCount, mdxCount, + exampleStoryCount, + exampleDocsCount, version: storyIndex.v, }; } diff --git a/scripts/event-log-checker.ts b/scripts/event-log-checker.ts index d4df26aa7827..bc8738fbf0c0 100644 --- a/scripts/event-log-checker.ts +++ b/scripts/event-log-checker.ts @@ -32,6 +32,10 @@ async function run() { assert.equal(bootEvent.eventType, 'boot'); assert.equal(bootEvent.payload?.eventType, eventType); + const { exampleStoryCount, exampleDocsCount } = mainEvent.payload?.storyIndex || {}; + assert.equal(exampleStoryCount, 8); + assert.equal(exampleDocsCount, 3); + assert.equal(mainEvent.eventType, eventType); assert.notEqual(mainEvent.eventId, bootEvent.eventId); assert.equal(mainEvent.sessionId, bootEvent.sessionId); From 32ccd8230a3a693116bd2ddf443c06536df2e67b Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 10 Jan 2023 14:43:48 +0800 Subject: [PATCH 2/3] CLI: Fix missing autodocs tags --- code/frameworks/ember/template/cli/Button.stories.js | 2 ++ code/renderers/react/template/cli/ts-legacy/Button.stories.ts | 2 ++ code/renderers/react/template/cli/ts-legacy/Header.stories.ts | 2 ++ 3 files changed, 6 insertions(+) diff --git a/code/frameworks/ember/template/cli/Button.stories.js b/code/frameworks/ember/template/cli/Button.stories.js index 92d4eb67f58f..00b73d23e627 100644 --- a/code/frameworks/ember/template/cli/Button.stories.js +++ b/code/frameworks/ember/template/cli/Button.stories.js @@ -12,6 +12,8 @@ export default { argTypes: { label: { control: 'text' }, }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/7.0/react/writing-docs/docs-page + tags: ['autodocs'], }; // More on writing stories with args: https://storybook.js.org/docs/7.0/ember/writing-stories/args diff --git a/code/renderers/react/template/cli/ts-legacy/Button.stories.ts b/code/renderers/react/template/cli/ts-legacy/Button.stories.ts index 846a6ac4c5a7..1d40efc1ce7b 100644 --- a/code/renderers/react/template/cli/ts-legacy/Button.stories.ts +++ b/code/renderers/react/template/cli/ts-legacy/Button.stories.ts @@ -6,6 +6,8 @@ import { Button } from './Button'; const meta: Meta = { title: 'Example/Button', component: Button, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/7.0/react/writing-docs/docs-page + tags: ['autodocs'], // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { backgroundColor: { control: 'color' }, diff --git a/code/renderers/react/template/cli/ts-legacy/Header.stories.ts b/code/renderers/react/template/cli/ts-legacy/Header.stories.ts index c49a9b7a4e01..7d1554e575e8 100644 --- a/code/renderers/react/template/cli/ts-legacy/Header.stories.ts +++ b/code/renderers/react/template/cli/ts-legacy/Header.stories.ts @@ -4,6 +4,8 @@ import { Header } from './Header'; const meta: Meta = { title: 'Example/Header', component: Header, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/7.0/react/writing-docs/docs-page + tags: ['autodocs'], parameters: { // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout layout: 'fullscreen', From b4565aa0192d5fd2b39713fe24432e21d245cd19 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 10 Jan 2023 14:44:14 +0800 Subject: [PATCH 3/3] Only assert example counts on build/dev events --- scripts/event-log-checker.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/event-log-checker.ts b/scripts/event-log-checker.ts index bc8738fbf0c0..316f4103b42a 100644 --- a/scripts/event-log-checker.ts +++ b/scripts/event-log-checker.ts @@ -33,8 +33,10 @@ async function run() { assert.equal(bootEvent.payload?.eventType, eventType); const { exampleStoryCount, exampleDocsCount } = mainEvent.payload?.storyIndex || {}; - assert.equal(exampleStoryCount, 8); - assert.equal(exampleDocsCount, 3); + if (['build', 'dev'].includes(eventType)) { + assert.equal(exampleStoryCount, 8); + assert.equal(exampleDocsCount, 3); + } assert.equal(mainEvent.eventType, eventType); assert.notEqual(mainEvent.eventId, bootEvent.eventId);