Fix storybook and chromatic tests and fix Block editor custom slash menu positioning (#11580)

Storybook / Chromatic fixes:
- fix linaria twenty-ui style loading (since twenty-ui prebuild
refactoring)
- update prefetch view mocks
- add ability to disable hotkeys initialization in storybook to avoid
race condition

Custom slash menu positioning fix
This commit is contained in:
Charles Bochet
2025-04-15 14:57:35 +02:00
committed by GitHub
parent 9da2a74d9e
commit 7bab6cab41
6 changed files with 47 additions and 81 deletions

View File

@ -20,6 +20,7 @@ import { ClientConfigProvider } from '~/modules/client-config/components/ClientC
import { UserProvider } from '~/modules/users/components/UserProvider';
import { mockedApolloClient } from '~/testing/mockedApolloClient';
import { MainContextStoreProvider } from '@/context-store/components/MainContextStoreProvider';
import { RecoilDebugObserverEffect } from '@/debug/components/RecoilDebugObserver';
import { ObjectMetadataItemsLoadEffect } from '@/object-metadata/components/ObjectMetadataItemsLoadEffect';
import { ObjectMetadataItemsProvider } from '@/object-metadata/components/ObjectMetadataItemsProvider';
@ -118,6 +119,7 @@ const Providers = () => {
</HelmetProvider>
</FullHeightStorybookLayout>
</ObjectMetadataItemsProvider>
<MainContextStoreProvider />
</ApolloMetadataClientMockedProvider>
</UserProvider>
</ClientConfigProvider>

View File

@ -7,13 +7,21 @@ import { ApolloMetadataClientMockedProvider } from '@/object-metadata/hooks/__mo
import { InitializeHotkeyStorybookHookEffect } from '../InitializeHotkeyStorybookHook';
import { mockedApolloClient } from '../mockedApolloClient';
export const RootDecorator: Decorator = (Story) => (
<RecoilRoot>
<ApolloProvider client={mockedApolloClient}>
<ApolloMetadataClientMockedProvider>
<InitializeHotkeyStorybookHookEffect />
<Story />
</ApolloMetadataClientMockedProvider>
</ApolloProvider>
</RecoilRoot>
);
export const RootDecorator: Decorator = (Story, context) => {
const { parameters } = context;
const disableHotkeyInitialization = parameters.disableHotkeyInitialization;
return (
<RecoilRoot>
<ApolloProvider client={mockedApolloClient}>
<ApolloMetadataClientMockedProvider>
{!disableHotkeyInitialization && (
<InitializeHotkeyStorybookHookEffect />
)}
<Story />
</ApolloMetadataClientMockedProvider>
</ApolloProvider>
</RecoilRoot>
);
};

View File

@ -22,6 +22,7 @@ import { mockWorkspaceMembers } from '~/testing/mock-data/workspace-members';
import { GET_PUBLIC_WORKSPACE_DATA_BY_DOMAIN } from '@/auth/graphql/queries/getPublicWorkspaceDataByDomain';
import { GET_ROLES } from '@/settings/roles/graphql/queries/getRolesQuery';
import { isDefined } from 'twenty-shared/utils';
import { mockedStandardObjectMetadataQueryResult } from '~/testing/mock-data/generated/mock-metadata-query-result';
import { getRolesMock } from '~/testing/mock-data/roles';
import { mockedTasks } from '~/testing/mock-data/tasks';
@ -236,11 +237,26 @@ export const graphqlMocks = {
edges: mockedViewsData
.filter(
(view) =>
view?.objectMetadataId === objectMetadataId &&
view?.type === viewType,
(isDefined(objectMetadataId)
? view?.objectMetadataId === objectMetadataId
: true) &&
(isDefined(viewType) ? view?.type === viewType : true),
)
.map((view) => ({
node: view,
node: {
...view,
viewFields: {
edges: mockedViewFieldsData
.filter((viewField) => viewField.viewId === view.id)
.map((viewField) => ({
node: viewField,
cursor: null,
})),
totalCount: mockedViewFieldsData.filter(
(viewField) => viewField.viewId === view.id,
).length,
},
},
cursor: null,
})),
pageInfo: {
@ -321,69 +337,6 @@ export const graphqlMocks = {
},
});
}),
graphql.query('CombinedFindManyRecords', () => {
return HttpResponse.json({
data: {
favorites: {
edges: mockedFavoritesData.map((favorite) => ({
node: favorite,
cursor: null,
})),
totalCount: mockedFavoritesData.length,
pageInfo: {
hasNextPage: false,
hasPreviousPage: false,
startCursor: null,
endCursor: null,
},
},
favoriteFolders: {
edges: [],
pageInfo: {
hasNextPage: false,
hasPreviousPage: false,
startCursor: null,
endCursor: null,
},
},
views: {
edges: mockedViewsData.map((view) => ({
node: {
...view,
viewFilters: {
edges: [],
totalCount: 0,
},
viewSorts: {
edges: [],
totalCount: 0,
},
viewFields: {
edges: mockedViewFieldsData
.filter((viewField) => viewField.viewId === view.id)
.map((viewField) => ({
node: viewField,
cursor: null,
})),
totalCount: mockedViewFieldsData.filter(
(viewField) => viewField.viewId === view.id,
).length,
},
},
cursor: null,
})),
pageInfo: {
hasNextPage: false,
hasPreviousPage: false,
startCursor: null,
endCursor: null,
totalCount: mockedViewsData.length,
},
totalCount: mockedViewsData.length,
},
},
});
}),
graphql.query('FindManyCompanies', ({ variables }) => {
const mockedData = variables.limit
? companiesMock.slice(0, variables.limit)