From f2461b9b6fb7cd04418a44c07c63d2f7dd083906 Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Tue, 29 Apr 2025 17:14:28 -0700 Subject: [PATCH] [Core Rendering Service] Mark KibanaRenderContextProvider as deprecated (#219313) ## Summary Set `KibanaRenderContextProvider` as deprecated and comment that consumers should use `core.rendering.addContext` instead. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Christiane (Tina) Heiligers --- .../writing_stable_functional_tests.mdx | 2 +- .../__snapshots__/error_toast.test.tsx.snap | 44 ++++++++++--------- .../toasts_service.test.tsx.snap | 42 ++++++++++-------- ...ice.mock.ts => rendering_service.mock.tsx} | 9 +++- .../rendering/browser-mocks/tsconfig.json | 3 +- .../kibana_context/render/render_provider.tsx | 2 + .../datasources/common/field_item.test.tsx | 17 +++---- 7 files changed, 66 insertions(+), 53 deletions(-) rename src/core/packages/rendering/browser-mocks/src/{rendering_service.mock.ts => rendering_service.mock.tsx} (81%) diff --git a/dev_docs/operations/writing_stable_functional_tests.mdx b/dev_docs/operations/writing_stable_functional_tests.mdx index 42aadf702ba9..27587a9f98f7 100644 --- a/dev_docs/operations/writing_stable_functional_tests.mdx +++ b/dev_docs/operations/writing_stable_functional_tests.mdx @@ -77,7 +77,7 @@ Even if you are very careful, the more UI automation you do the more likely you ## Incorrect usage of EUI components in React code will cause a functional test failure -For EUI to support theming and internationalization, EUI components in your React application must be wrapped in `EuiProvider` (more preferably, use the `KibanaRenderContextProvider` wrapper). The functional test runner treats EUI as a first-class citizen and will throw an error when incorrect usage of EUI is detected. However, experiencing this type of failure in a test run is unlikely: in dev mode, a toast message alerts developers of incorrect EUI usage in real-time. +For EUI to support theming and internationalization, EUI components in your React application must be wrapped in `EuiProvider` (more preferably, use the ) wrapper. The functional test runner treats EUI as a first-class citizen and will throw an error when incorrect usage of EUI is detected. However, experiencing this type of failure in a test run is unlikely: in dev mode, a toast message alerts developers of incorrect EUI usage in real-time. ## Do you really need a functional test for this? diff --git a/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/error_toast.test.tsx.snap b/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/error_toast.test.tsx.snap index 6c91293f6830..2c90434d83e5 100644 --- a/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/error_toast.test.tsx.snap +++ b/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/error_toast.test.tsx.snap @@ -1,26 +1,28 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`renders matching snapshot 1`] = ` - -

- This is the toast message -

-
- + +

- - -

-
+ This is the toast message +

+
+ + + +
+ + `; diff --git a/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/toasts_service.test.tsx.snap b/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/toasts_service.test.tsx.snap index 6187810ecdd4..143cc4887f8c 100644 --- a/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/toasts_service.test.tsx.snap +++ b/src/core/packages/notifications/browser-internal/src/toasts/__snapshots__/toasts_service.test.tsx.snap @@ -3,31 +3,35 @@ exports[`#start() renders the GlobalToastList into the targetDomElement param 1`] = ` Array [ Array [ - + + , + } + } + /> + + ,
, diff --git a/src/core/packages/rendering/browser-mocks/src/rendering_service.mock.ts b/src/core/packages/rendering/browser-mocks/src/rendering_service.mock.tsx similarity index 81% rename from src/core/packages/rendering/browser-mocks/src/rendering_service.mock.ts rename to src/core/packages/rendering/browser-mocks/src/rendering_service.mock.tsx index cf9a2c8c605d..561363276621 100644 --- a/src/core/packages/rendering/browser-mocks/src/rendering_service.mock.ts +++ b/src/core/packages/rendering/browser-mocks/src/rendering_service.mock.tsx @@ -7,7 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import React from 'react'; import type { RenderingService } from '@kbn/core-rendering-browser'; +import { EuiProvider } from '@elastic/eui'; +import { I18nProvider } from '@kbn/i18n-react'; /** * This is declared internally to avoid a circular dependency issue @@ -27,7 +30,11 @@ const createMockInternal = () => { const createMock = () => { const mocked: jest.Mocked = { - addContext: jest.fn().mockImplementation((element) => element), + addContext: jest.fn().mockImplementation((element) => ( + + {element} + + )), }; return mocked; }; diff --git a/src/core/packages/rendering/browser-mocks/tsconfig.json b/src/core/packages/rendering/browser-mocks/tsconfig.json index 09761afb8329..9473334a2e78 100644 --- a/src/core/packages/rendering/browser-mocks/tsconfig.json +++ b/src/core/packages/rendering/browser-mocks/tsconfig.json @@ -12,7 +12,8 @@ "**/*.tsx" ], "kbn_references": [ - "@kbn/core-rendering-browser" + "@kbn/core-rendering-browser", + "@kbn/i18n-react" ], "exclude": [ "target/**/*" diff --git a/src/platform/packages/shared/react/kibana_context/render/render_provider.tsx b/src/platform/packages/shared/react/kibana_context/render/render_provider.tsx index f9762d08d7a5..9e907d14b5dc 100644 --- a/src/platform/packages/shared/react/kibana_context/render/render_provider.tsx +++ b/src/platform/packages/shared/react/kibana_context/render/render_provider.tsx @@ -21,7 +21,9 @@ export type KibanaRenderContextProviderProps = Omit diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx index 7260672b6435..3935aca56cd4 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx @@ -21,7 +21,6 @@ import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks' import { IndexPattern } from '../../types'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { documentField } from '../form_based/document_field'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; jest.mock('@kbn/unified-field-list/src/services/field_stats', () => ({ loadFieldStats: jest.fn().mockResolvedValue({}), @@ -156,13 +155,11 @@ describe('Lens Field Item', () => { const Wrapper: React.FC<{ children: React.ReactNode; }> = ({ children }) => { - return ( - - - - {children} - - + return mockedServices.core.rendering.addContext( + + + {children} + ); }; @@ -396,11 +393,11 @@ describe('Lens Field Item', () => { }; render( - + mockedServices.core.rendering.addContext( - + ) ); await waitFor(() => { expect(screen.getByTestId('field-bytes-showDetails')).toBeInTheDocument();