diff --git a/galasa-ui/messages/de.json b/galasa-ui/messages/de.json index ddbecb6a..f9fcc810 100644 --- a/galasa-ui/messages/de.json +++ b/galasa-ui/messages/de.json @@ -30,7 +30,6 @@ "title": "Experimentelle Funktionen", "description": "Früher Zugriff auf neue Funktionen. Diese Funktionen sind experimentell und können sich ändern oder entfernt werden.", "features": { - "testRunSearch": "Testlauf-Suche und Anzeige", "graph": "Testlauf-Diagramm" } }, diff --git a/galasa-ui/messages/en.json b/galasa-ui/messages/en.json index e0827c42..22e96615 100644 --- a/galasa-ui/messages/en.json +++ b/galasa-ui/messages/en.json @@ -30,7 +30,6 @@ "title": "Experimental Features", "description": "Early access to new features. These are experimental and subject to change or removal.", "features": { - "testRunSearch": "Test Run searching and viewing", "graph": "Test Run Graphs" } }, diff --git a/galasa-ui/src/components/headers/PageHeader.tsx b/galasa-ui/src/components/headers/PageHeader.tsx index d43e62a2..98546059 100644 --- a/galasa-ui/src/components/headers/PageHeader.tsx +++ b/galasa-ui/src/components/headers/PageHeader.tsx @@ -17,12 +17,9 @@ import PageHeaderMenu from './PageHeaderMenu'; import Image from 'next/image'; import galasaLogo from '@/assets/images/galasaLogo.png'; import Link from 'next/link'; -import { useFeatureFlags } from '@/contexts/FeatureFlagContext'; -import { FEATURE_FLAGS } from '@/utils/featureFlags'; import { useTranslations } from 'next-intl'; export default function PageHeader({ galasaServiceName }: { galasaServiceName: string }) { - const { isFeatureEnabled } = useFeatureFlags(); const translations = useTranslations('PageHeader'); return ( @@ -39,11 +36,8 @@ export default function PageHeader({ galasaServiceName }: { galasaServiceName: s {translations('users')} - {isFeatureEnabled(FEATURE_FLAGS.TEST_RUNS) && ( - {translations('testRuns')} - )} + {translations('testRuns')} - diff --git a/galasa-ui/src/components/mysettings/ExperimentalFeaturesSection.tsx b/galasa-ui/src/components/mysettings/ExperimentalFeaturesSection.tsx index fa087319..5fe0c460 100644 --- a/galasa-ui/src/components/mysettings/ExperimentalFeaturesSection.tsx +++ b/galasa-ui/src/components/mysettings/ExperimentalFeaturesSection.tsx @@ -16,10 +16,6 @@ export default function ExperimentalFeaturesSection() { // Feature configuration for easier management and display const featureConfig = [ - { - key: FEATURE_FLAGS.TEST_RUNS, - label: translations(`features.testRunSearch`), - }, { key: FEATURE_FLAGS.GRAPH, label: translations('features.graph'), diff --git a/galasa-ui/src/components/mysettings/ResultsTablePageSizeSetting.tsx b/galasa-ui/src/components/mysettings/ResultsTablePageSizeSetting.tsx index 2086a0d1..6b2b06e6 100644 --- a/galasa-ui/src/components/mysettings/ResultsTablePageSizeSetting.tsx +++ b/galasa-ui/src/components/mysettings/ResultsTablePageSizeSetting.tsx @@ -10,35 +10,30 @@ import { Dropdown } from '@carbon/react'; import { useTranslations } from 'next-intl'; import styles from '@/styles/mysettings/ResultsTablePageSizingSetting.module.css'; import useResultsTablePageSize from '@/hooks/useResultsTablePageSize'; -import { useFeatureFlags } from '@/contexts/FeatureFlagContext'; -import { FEATURE_FLAGS } from '@/utils/featureFlags'; export default function ResultsTablePageSizingSetting() { const translations = useTranslations('ResultsTablePageSizingSetting'); - const { isFeatureEnabled } = useFeatureFlags(); const { defaultPageSize, setDefaultPageSize } = useResultsTablePageSize(); return ( <> - {isFeatureEnabled(FEATURE_FLAGS.TEST_RUNS) && ( -
-

{translations('title')}

-
-

{translations('description')}

-
-

{translations('defaultTestRunsLabel')}

- item.toString()} - selectedItem={defaultPageSize} - onChange={(e: { selectedItem: number }) => setDefaultPageSize(e.selectedItem)} - size="md" - /> -
+
+

{translations('title')}

+
+

{translations('description')}

+
+

{translations('defaultTestRunsLabel')}

+ item.toString()} + selectedItem={defaultPageSize} + onChange={(e: { selectedItem: number }) => setDefaultPageSize(e.selectedItem)} + size="md" + />
-
- )} +
+
); } diff --git a/galasa-ui/src/tests/__snapshots__/layout.test.tsx.snap b/galasa-ui/src/tests/__snapshots__/layout.test.tsx.snap index 13368474..7cceada2 100644 --- a/galasa-ui/src/tests/__snapshots__/layout.test.tsx.snap +++ b/galasa-ui/src/tests/__snapshots__/layout.test.tsx.snap @@ -74,6 +74,19 @@ exports[`Layout renders the web UI layout 1`] = ` +
  • + + + Test runs + + +
  • +
  • + + + Test runs + + +
  • { expect(headerMenu).toBeInTheDocument(); }); -test('does NOT render the "Test runs" link by default', () => { +test('renders the "Test runs" link by default', () => { render( @@ -67,18 +67,5 @@ test('does NOT render the "Test runs" link by default', () => { ); const testRunsLink = screen.queryByText('Test runs'); - expect(testRunsLink).not.toBeInTheDocument(); -}); - -test('renders the "Test runs" link when the feature flag is enabled via prop', () => { - const initialFlags = JSON.stringify({ [FEATURE_FLAGS.TEST_RUNS]: true }); - - render( - - - - ); - - const testRunsLink = screen.getByText('Test runs'); expect(testRunsLink).toBeInTheDocument(); }); diff --git a/galasa-ui/src/tests/components/mysettings/ExperimentalFeaturesSection.test.tsx b/galasa-ui/src/tests/components/mysettings/ExperimentalFeaturesSection.test.tsx index 3d936519..64934a95 100644 --- a/galasa-ui/src/tests/components/mysettings/ExperimentalFeaturesSection.test.tsx +++ b/galasa-ui/src/tests/components/mysettings/ExperimentalFeaturesSection.test.tsx @@ -15,15 +15,15 @@ jest.mock('next-intl', () => ({ title: 'Experimental Features', description: 'Early access to new features. These are experimental and subject to change or removal.', - 'features.testRunSearch': 'Test Run searching and viewing', + 'features.graph': 'Test Run Graphs', }; return translations[key] || key; }, })); describe('ExperimentalFeaturesSection', () => { - test('Renders correctly when "testRuns" flag is disabled: Checkbox is unchecked', () => { - const mockIsFeatureEnabled = (key: string) => key !== FEATURE_FLAGS.TEST_RUNS; + test('Renders correctly when "graph" flag is disabled: Checkbox is unchecked', () => { + const mockIsFeatureEnabled = (key: string) => key !== FEATURE_FLAGS.GRAPH; render( { ); - const checkbox = screen.getByLabelText(/Test Run/i); + const checkbox = screen.getByLabelText(/Test Run Graphs/i); expect(checkbox).not.toBeChecked(); }); - test('Renders correctly when a "testRuns" enabled: Checkbox is checked', () => { + test('Renders correctly when a "graph" enabled: Checkbox is checked', () => { const mockIsFeatureEnabled = (key: string) => { - return key === FEATURE_FLAGS.TEST_RUNS; + return key === FEATURE_FLAGS.GRAPH; }; render( @@ -49,7 +49,7 @@ describe('ExperimentalFeaturesSection', () => { ); - const checkbox = screen.getByLabelText(/Test Run/i); + const checkbox = screen.getByLabelText(/Test Run Graphs/i); expect(checkbox).toBeChecked(); }); @@ -64,10 +64,10 @@ describe('ExperimentalFeaturesSection', () => { ); - const checkbox = screen.getByRole('checkbox', { name: /Test Run/i }); + const checkbox = screen.getByRole('checkbox', { name: /Test Run Graphs/i }); fireEvent.click(checkbox); expect(mockToggle).toHaveBeenCalledTimes(1); - expect(mockToggle).toHaveBeenCalledWith(FEATURE_FLAGS.TEST_RUNS); + expect(mockToggle).toHaveBeenCalledWith(FEATURE_FLAGS.GRAPH); }); }); diff --git a/galasa-ui/src/tests/components/mysettings/ResultsTablePageSizingSetting.test.tsx b/galasa-ui/src/tests/components/mysettings/ResultsTablePageSizingSetting.test.tsx index 4788aa0e..79b11ae5 100644 --- a/galasa-ui/src/tests/components/mysettings/ResultsTablePageSizingSetting.test.tsx +++ b/galasa-ui/src/tests/components/mysettings/ResultsTablePageSizingSetting.test.tsx @@ -79,18 +79,4 @@ describe('ResultsTablePageSizingSetting', () => { expect(mockSetDefaultPageSize).toHaveBeenCalledWith(50); }); }); - - describe('when feature flag is disabled', () => { - beforeEach(() => { - mockIsFeatureEnabled.mockReturnValue(false); - }); - - test('does not render the component', () => { - render(); - - expect(screen.queryByText('Test Run Query Results')).toBeNull(); - expect(screen.queryByText('Configure the number of results displayed per page.')).toBeNull(); - expect(screen.queryByTestId('custom-items-per-page-dropdown-test')).toBeNull(); - }); - }); }); diff --git a/galasa-ui/src/tests/contexts/feature-flag-context.test.tsx b/galasa-ui/src/tests/contexts/feature-flag-context.test.tsx index 1a484293..3a4a01d5 100644 --- a/galasa-ui/src/tests/contexts/feature-flag-context.test.tsx +++ b/galasa-ui/src/tests/contexts/feature-flag-context.test.tsx @@ -16,8 +16,8 @@ const TestComponent = () => { return (
    -

    Test Runs Enabled: {isFeatureEnabled(FEATURE_FLAGS.TEST_RUNS).toString()}

    - +

    Test Run Graphs Enabled: {isFeatureEnabled(FEATURE_FLAGS.GRAPH).toString()}

    +
    ); }; @@ -40,42 +40,41 @@ describe('Feature Flags Provider and useFeatureFlags Hook', () => {
    ); - expect(screen.getByText('Test Runs Enabled: false')).toBeInTheDocument(); + expect(screen.getByText('Test Run Graphs Enabled: false')).toBeInTheDocument(); }); test('initializes with provided props from the server', () => { - const initialFlags = JSON.stringify({ [FEATURE_FLAGS.TEST_RUNS]: true }); + const initialFlags = JSON.stringify({ [FEATURE_FLAGS.GRAPH]: true }); render( ); - expect(screen.getByText('Test Runs Enabled: true')).toBeInTheDocument(); + expect(screen.getByText('Test Run Graphs Enabled: true')).toBeInTheDocument(); }); test('verifies feature flag toggling and updates cookie correctly', () => { - const initialFlags = JSON.stringify({ [FEATURE_FLAGS.TEST_RUNS]: false }); + const initialFlags = JSON.stringify({ [FEATURE_FLAGS.GRAPH]: false }); render( ); - expect(screen.getByText('Test Runs Enabled: false')).toBeInTheDocument(); + expect(screen.getByText('Test Run Graphs Enabled: false')).toBeInTheDocument(); // Due to React's strict mode cookieSpy.mockClear(); - const toggleButton = screen.getByText('Toggle Test Runs'); + const toggleButton = screen.getByText('Toggle Test Run Graphs'); fireEvent.click(toggleButton); - expect(screen.getByText('Test Runs Enabled: true')).toBeInTheDocument(); + expect(screen.getByText('Test Run Graphs Enabled: true')).toBeInTheDocument(); const expectedCookieVal = JSON.stringify({ - [FEATURE_FLAGS.TEST_RUNS]: true, - [FEATURE_FLAGS.GRAPH]: false, + [FEATURE_FLAGS.GRAPH]: true, }); expect(cookieSpy).toHaveBeenCalledTimes(1); diff --git a/galasa-ui/src/tests/mysettings.test.tsx b/galasa-ui/src/tests/mysettings.test.tsx index ac2c9347..fc1190a9 100644 --- a/galasa-ui/src/tests/mysettings.test.tsx +++ b/galasa-ui/src/tests/mysettings.test.tsx @@ -41,7 +41,7 @@ jest.mock('next-intl', () => ({ title: 'Experimental Features', description: 'Early access to new features. These are experimental and subject to change or removal.', - 'features.testRunSearch': 'Test Run searching and viewing', + 'features.graph': 'Test Run Graphs', errorTitle: 'Something went wrong!', errorDescription: 'Please report the problem to your Galasa Ecosystem administrator.', }; diff --git a/galasa-ui/src/utils/featureFlags.ts b/galasa-ui/src/utils/featureFlags.ts index 3b803e4d..395faf81 100644 --- a/galasa-ui/src/utils/featureFlags.ts +++ b/galasa-ui/src/utils/featureFlags.ts @@ -6,13 +6,11 @@ // Centralized feature flags export const FEATURE_FLAGS = { - TEST_RUNS: 'testRuns', GRAPH: 'graph', // Add other feature flags here } as const; export const DEFAULT_FEATURE_FLAGS = { - testRuns: false, graph: false, // Add other feature flags here } as const;