diff --git a/datahub-graphql-core/src/main/resources/app.graphql b/datahub-graphql-core/src/main/resources/app.graphql index 531bb5c835..01b06e8c18 100644 --- a/datahub-graphql-core/src/main/resources/app.graphql +++ b/datahub-graphql-core/src/main/resources/app.graphql @@ -834,6 +834,11 @@ type FeatureFlagsConfig { """ datasetSummaryPageV1: Boolean! + """ + Enables displaying the ingestion onboarding redesign + """ + ingestionOnboardingRedesignV1: Boolean! + """ If enabled, allows uploading of files for documentation. """ diff --git a/datahub-web-react/src/app/ingestV2/hooks/__tests__/useIngestionOnboardingRedesignV1.test.ts b/datahub-web-react/src/app/ingestV2/hooks/__tests__/useIngestionOnboardingRedesignV1.test.ts new file mode 100644 index 0000000000..bc79ffc923 --- /dev/null +++ b/datahub-web-react/src/app/ingestV2/hooks/__tests__/useIngestionOnboardingRedesignV1.test.ts @@ -0,0 +1,55 @@ +import { renderHook } from '@testing-library/react-hooks'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import { useIngestionOnboardingRedesignV1 } from '@app/ingestV2/hooks/useIngestionOnboardingRedesignV1'; +import { useAppConfig } from '@app/useAppConfig'; + +vi.mock('@app/useAppConfig', () => ({ + useAppConfig: vi.fn(), +})); + +describe('useIngestionOnboardingRedesignV1', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should return the feature flag value from app config when loaded', () => { + (useAppConfig as any).mockReturnValue({ + loaded: true, + config: { + featureFlags: { + ingestionOnboardingRedesignV1: true, + }, + }, + }); + + const { result } = renderHook(() => useIngestionOnboardingRedesignV1()); + expect(result.current).toBe(true); + }); + + it('should return false when feature flag is disabled in app config', () => { + (useAppConfig as any).mockReturnValue({ + loaded: true, + config: { + featureFlags: { + ingestionOnboardingRedesignV1: false, + }, + }, + }); + + const { result } = renderHook(() => useIngestionOnboardingRedesignV1()); + expect(result.current).toBe(false); + }); + + it('should return undefined if feature flag is not present in config', () => { + (useAppConfig as any).mockReturnValue({ + loaded: true, + config: { + featureFlags: {}, + }, + }); + + const { result } = renderHook(() => useIngestionOnboardingRedesignV1()); + expect(result.current).toBe(undefined); + }); +}); diff --git a/datahub-web-react/src/app/ingestV2/hooks/useIngestionOnboardingRedesignV1.ts b/datahub-web-react/src/app/ingestV2/hooks/useIngestionOnboardingRedesignV1.ts new file mode 100644 index 0000000000..7ba56b0a86 --- /dev/null +++ b/datahub-web-react/src/app/ingestV2/hooks/useIngestionOnboardingRedesignV1.ts @@ -0,0 +1,6 @@ +import { useFeatureFlag } from '@app/sharedV2/hooks/useFeatureFlag'; + +export function useIngestionOnboardingRedesignV1() { + const ingestionOnboardingRedesignV1 = useFeatureFlag('ingestionOnboardingRedesignV1'); + return ingestionOnboardingRedesignV1; +} diff --git a/datahub-web-react/src/appConfigContext.tsx b/datahub-web-react/src/appConfigContext.tsx index ab98543bab..32344e9555 100644 --- a/datahub-web-react/src/appConfigContext.tsx +++ b/datahub-web-react/src/appConfigContext.tsx @@ -85,6 +85,7 @@ export const DEFAULT_APP_CONFIG = { showManageTags: false, showIntroducePage: false, showIngestionPageRedesign: false, + ingestionOnboardingRedesignV1: false, showLineageExpandMore: false, showDefaultExternalLinks: true, showStatsTabRedesign: false, diff --git a/datahub-web-react/src/graphql/app.graphql b/datahub-web-react/src/graphql/app.graphql index c4e765e6be..9334271cd5 100644 --- a/datahub-web-react/src/graphql/app.graphql +++ b/datahub-web-react/src/graphql/app.graphql @@ -118,6 +118,7 @@ query appConfig { showHomepageUserRole assetSummaryPageV1 datasetSummaryPageV1 + ingestionOnboardingRedesignV1 documentationFileUploadV1 contextDocumentsEnabled } diff --git a/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java b/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java index 3db5eddffa..8289e9669f 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java @@ -500,6 +500,7 @@ public class PropertiesCollectorConfigurationTest extends AbstractTestNGSpringCo "featureFlags.showHomePageRedesign", "featureFlags.showHomepageUserRole", "featureFlags.showIngestionPageRedesign", + "featureFlags.ingestionOnboardingRedesignV1", "featureFlags.showIntroducePage", "featureFlags.showLineageExpandMore", "featureFlags.showManageStructuredProperties", diff --git a/metadata-service/configuration/src/main/java/com/linkedin/datahub/graphql/featureflags/FeatureFlags.java b/metadata-service/configuration/src/main/java/com/linkedin/datahub/graphql/featureflags/FeatureFlags.java index 860ee343a7..47ab17ceb9 100644 --- a/metadata-service/configuration/src/main/java/com/linkedin/datahub/graphql/featureflags/FeatureFlags.java +++ b/metadata-service/configuration/src/main/java/com/linkedin/datahub/graphql/featureflags/FeatureFlags.java @@ -41,6 +41,7 @@ public class FeatureFlags { private boolean showManageTags = false; private boolean showIntroducePage = false; private boolean showIngestionPageRedesign = false; + private boolean ingestionOnboardingRedesignV1 = false; private boolean showLineageExpandMore = true; private boolean showStatsTabRedesign = false; private boolean showHomePageRedesign = false; diff --git a/metadata-service/configuration/src/main/resources/application.yaml b/metadata-service/configuration/src/main/resources/application.yaml index c8f3b309f2..0bf24ae377 100644 --- a/metadata-service/configuration/src/main/resources/application.yaml +++ b/metadata-service/configuration/src/main/resources/application.yaml @@ -861,6 +861,7 @@ featureFlags: showManageTags: ${SHOW_MANAGE_TAGS:true} # If turned on, allow users to manage tags in the UI showIntroducePage: ${SHOW_INTRODUCE_PAGE:true} # If turned on, we will show the introduce page in the V2 UI experience to add a title and select platforms showIngestionPageRedesign: ${SHOW_INGESTION_PAGE_REDESIGN:false} # If turned on, show the re-designed Ingestion page + ingestionOnboardingRedesignV1: ${INGESTION_ONBOARDING_REDESIGN_V1:false} # If turned on, show the redesigned ingestion onboarding experience showLineageExpandMore: ${SHOW_LINEAGE_EXPAND_MORE:true} # If turned on, show the expand more button (>>) in the lineage graph showStatsTabRedesign: ${SHOW_STATS_TAB_REDESIGN:true} # If turned on, show the re-designed Stats tab on the entity page showHomePageRedesign: ${SHOW_HOME_PAGE_REDESIGN:false} # If turned on, show the re-designed home page