Skip to content

Commit

Permalink
Merge pull request #1004 from chromaui/reuben/ap-4683-chromatic-is-no…
Browse files Browse the repository at this point in the history
…t-detecting-changed-files-when-turbosnap

Chore: Update the RegEx filter to pull out empty strings
  • Loading branch information
ghengeveld authored Jun 6, 2024
2 parents 7728406 + 9ad8076 commit bdc899a
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 39 deletions.
72 changes: 38 additions & 34 deletions node-src/lib/getStorybookInfo.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe('getStorybookInfo', () => {
expect.objectContaining({
viewLayer: 'react',
version: expect.any(String),
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
Expand Down Expand Up @@ -72,7 +72,7 @@ describe('getStorybookInfo', () => {
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
Expand All @@ -82,20 +82,20 @@ describe('getStorybookInfo', () => {
// We're getting the result of tracing chromatic-cli's node_modules here.
expect.objectContaining({
viewLayer: 'react',
version: '8.1.5',
addons: expect.arrayContaining([
expect.objectContaining({
version: expect.any(String),
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: expect.any(String),
}),
expect.objectContaining({
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: expect.any(String),
}),
]),
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
expect(log.info).toHaveBeenCalledWith(
Expand All @@ -112,7 +112,7 @@ describe('getStorybookInfo', () => {
expect.objectContaining({
viewLayer: 'react',
version: '3.2.1',
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
Expand All @@ -123,7 +123,7 @@ describe('getStorybookInfo', () => {
expect.objectContaining({
viewLayer: 'react',
version: '3.2.1',
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
Expand All @@ -132,17 +132,19 @@ describe('getStorybookInfo', () => {
const ctx = getContext({ env: { CHROMATIC_STORYBOOK_VERSION: '3.2.1' } });
expect(await getStorybookInfo(ctx)).toEqual(
expect.objectContaining({
addons: expect.arrayContaining([
expect.objectContaining({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
}),
expect.objectContaining({
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
}),
]),
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
Expand All @@ -151,17 +153,19 @@ describe('getStorybookInfo', () => {
const ctx = getContext({ env: { CHROMATIC_STORYBOOK_VERSION: '@storybook/native@3.2.1' } });
expect(await getStorybookInfo(ctx)).toEqual(
expect.objectContaining({
addons: expect.arrayContaining([
expect.objectContaining({
addons: [
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
}),
expect.objectContaining({
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
}),
]),
builder: { name: '@storybook/react-webpack5', packageVersion: '8.1.5' },
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/react-webpack5', packageVersion: expect.any(String) },
})
);
});
Expand All @@ -178,16 +182,16 @@ describe('getStorybookInfo', () => {
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: '8.1.5',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: '1.0.2',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/builder-webpack5', packageVersion: '8.1.5' },
version: '8.1.5',
builder: { name: '@storybook/builder-webpack5', packageVersion: expect.any(String) },
version: expect.any(String),
viewLayer: '@storybook/react-webpack5',
});
});
Expand Down Expand Up @@ -215,16 +219,16 @@ describe('getStorybookInfo', () => {
{
name: 'essentials',
packageName: '@storybook/addon-essentials',
packageVersion: '8.1.5',
packageVersion: expect.any(String),
},
{
name: 'compiler-swc',
packageName: '@storybook/addon-webpack5-compiler-swc',
packageVersion: '1.0.2',
packageVersion: expect.any(String),
},
],
builder: { name: '@storybook/builder-webpack5', packageVersion: '8.1.5' },
version: '8.1.5',
builder: { name: '@storybook/builder-webpack5', packageVersion: expect.any(String) },
version: expect.any(String),
viewLayer: '@storybook/react-webpack5',
});
});
Expand Down
10 changes: 8 additions & 2 deletions node-src/tasks/upload.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,10 @@ describe('traceChangedFiles', () => {
});

it('escapes special characters on context', async () => {
const deps = { './example-(new).stories.js': ['./example-(new).stories.js'] };
const deps = {
'./example-(new).stories.js': ['./example-(new).stories.js'],
'./example[[lang=language]].stories.js': ['./example[[lang=language]].stories.js'],
};
findChangedDependencies.mockResolvedValue([]);
findChangedPackageFiles.mockResolvedValue([]);
getDependentStoryFiles.mockResolvedValue(deps);
Expand All @@ -182,7 +185,10 @@ describe('traceChangedFiles', () => {
} as any;
await traceChangedFiles(ctx, {} as any);

expect(ctx.onlyStoryFiles).toStrictEqual(["./example-\\(\\new\\)\\.stories.js"]);
expect(ctx.onlyStoryFiles).toStrictEqual([
'./example-\\(\\new\\)\\.stories.js',
'./example\\[\\[\\lang=language\\]\\]\\.stories.js',
]);
});

it('does not run package dependency analysis if there are no metadata changes', async () => {
Expand Down
7 changes: 4 additions & 3 deletions node-src/tasks/upload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,10 @@ export const traceChangedFiles = async (ctx: Context, task: Task) => {
);
if (onlyStoryFiles) {
// Escape special characters in the filename so it does not conflict with picomatch
ctx.onlyStoryFiles = Object.keys(onlyStoryFiles).map((key) =>
key.split(SPECIAL_CHARS_REGEXP).join('\\')
);
ctx.onlyStoryFiles = Object.keys(onlyStoryFiles).map((key) => {
const filteredArray = key.split(SPECIAL_CHARS_REGEXP).filter((item) => item !== '');
return filteredArray.join('\\');
});

if (!ctx.options.interactive) {
if (!ctx.options.traceChanged) {
Expand Down

0 comments on commit bdc899a

Please sign in to comment.