diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts index e1defe714a342..bbf19c7aff462 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts @@ -416,16 +416,18 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D migrationGuide: `${ELASTICSEARCH_DOCS}breaking-changes.html`, }, siem: { - guide: `${SECURITY_SOLUTION_DOCS}index.html`, - gettingStarted: `${SECURITY_SOLUTION_DOCS}index.html`, - privileges: `${SECURITY_SOLUTION_DOCS}sec-requirements.html`, - ml: `${SECURITY_SOLUTION_DOCS}machine-learning.html`, - ruleChangeLog: `${SECURITY_SOLUTION_DOCS}prebuilt-rules-downloadable-updates.html`, - detectionsReq: `${SECURITY_SOLUTION_DOCS}detections-permissions-section.html`, - networkMap: `${SECURITY_SOLUTION_DOCS}conf-map-ui.html`, - troubleshootGaps: `${SECURITY_SOLUTION_DOCS}alerts-ui-monitor.html#troubleshoot-gaps`, - ruleApiOverview: `${SECURITY_SOLUTION_DOCS}rule-api-overview.html`, - configureAlertSuppression: `${SECURITY_SOLUTION_DOCS}alert-suppression.html#_configure_alert_suppression`, + guide: `${ELASTIC_DOCS}solutions/security`, + gettingStarted: `${ELASTIC_DOCS}solutions/security`, + privileges: `${ELASTIC_DOCS}solutions/security/get-started/elastic-security-requirements`, + ml: `${ELASTIC_DOCS}solutions/security/advanced-entity-analytics/anomaly-detection`, + ruleChangeLog: `https://www.elastic.co/guide/en/security/current/prebuilt-rules-downloadable-updates.html`, + detectionsReq: `${ELASTIC_DOCS}solutions/security/detect-and-alert/detections-requirements`, + networkMap: `${ELASTIC_DOCS}solutions/security/explore/configure-network-map-data`, + troubleshootGaps: `${ELASTIC_DOCS}troubleshoot/security/detection-rules#troubleshoot-gaps`, + ruleApiOverview: isServerless + ? `${KIBANA_APIS}group/endpoint-security-detections-api` + : `${KIBANA_SERVERLESS_APIS}group/endpoint-security-detections-api`, + configureAlertSuppression: `${ELASTIC_DOCS}solutions/security/detect-and-alert/suppress-detection-alerts#security-alert-suppression-configure-alert-suppression`, }, server: { protocol: `${KIBANA_DOCS}settings.html#server-protocol`, @@ -434,49 +436,49 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D enableDeprecationHttpDebugLogs: `${KIBANA_DOCS}logging-settings.html#enable-http-debug-logs`, }, securitySolution: { - artifactControl: `${SECURITY_SOLUTION_DOCS}artifact-control.html`, - avcResults: `${ELASTIC_WEBSITE_URL}blog/elastic-security-av-comparatives-business-test`, - bidirectionalIntegrations: `${SECURITY_SOLUTION_DOCS}third-party-actions.html`, - trustedApps: `${SECURITY_SOLUTION_DOCS}trusted-apps-ov.html`, - eventFilters: `${SECURITY_SOLUTION_DOCS}event-filters.html`, - blocklist: `${SECURITY_SOLUTION_DOCS}blocklist.html`, - threatIntelInt: `${SECURITY_SOLUTION_DOCS}es-threat-intel-integrations.html`, - endpointArtifacts: `${SECURITY_SOLUTION_DOCS}endpoint-artifacts.html`, - eventMerging: `${SECURITY_SOLUTION_DOCS}endpoint-data-volume.html`, + artifactControl: `${ELASTIC_DOCS}solutions/security/configure-elastic-defend/configure-updates-for-protection-artifacts`, + avcResults: `https://www.elastic.co/blog/elastic-security-av-comparatives-business-test`, + bidirectionalIntegrations: `${ELASTIC_DOCS}solutions/security/endpoint-response-actions/third-party-response-actions`, + trustedApps: `${ELASTIC_DOCS}solutions/security/manage-elastic-defend/trusted-applications`, + eventFilters: `${ELASTIC_DOCS}solutions/security/manage-elastic-defend/event-filters`, + blocklist: `${ELASTIC_DOCS}solutions/security/manage-elastic-defend/blocklist`, + threatIntelInt: `${ELASTIC_DOCS}solutions/security/get-started/enable-threat-intelligence-integrations`, + endpointArtifacts: `${ELASTIC_DOCS}solutions/security/manage-elastic-defend/optimize-elastic-defend`, + eventMerging: `${ELASTIC_DOCS}solutions/security/configure-elastic-defend/configure-data-volume-for-elastic-endpoint`, policyResponseTroubleshooting: { - full_disk_access: `${SECURITY_SOLUTION_DOCS}deploy-elastic-endpoint.html#enable-fda-endpoint`, - macos_system_ext: `${SECURITY_SOLUTION_DOCS}deploy-elastic-endpoint.html#system-extension-endpoint`, - linux_deadlock: `${SECURITY_SOLUTION_DOCS}ts-management.html#linux-deadlock`, + full_disk_access: `${ELASTIC_DOCS}solutions/security/configure-elastic-defend/enable-access-for-macos-monterey#enable-fda-endpoint`, + macos_system_ext: `${ELASTIC_DOCS}solutions/security/configure-elastic-defend/enable-access-for-macos-monterey#system-extension-endpoint`, + linux_deadlock: `${ELASTIC_DOCS}troubleshoot/security/elastic-defend#linux-deadlock`, }, packageActionTroubleshooting: { - es_connection: `${SECURITY_SOLUTION_DOCS}ts-management.html`, + es_connection: `${ELASTIC_DOCS}troubleshoot/security/elastic-defend`, }, - responseActions: `${SECURITY_SOLUTION_DOCS}response-actions.html`, - configureEndpointIntegrationPolicy: `${SECURITY_SOLUTION_DOCS}configure-endpoint-integration-policy.html`, + responseActions: `${ELASTIC_DOCS}solutions/security/endpoint-response-actions`, + configureEndpointIntegrationPolicy: `${ELASTIC_DOCS}solutions/security/configure-elastic-defend/configure-an-integration-policy-for-elastic-defend`, exceptions: { - value_lists: `${SECURITY_SOLUTION_DOCS}value-lists-exceptions.html`, + value_lists: `${ELASTIC_DOCS}solutions/security/detect-and-alert/create-manage-value-lists`, }, - privileges: `${SECURITY_SOLUTION_DOCS}endpoint-management-req.html`, - manageDetectionRules: `${SECURITY_SOLUTION_DOCS}rules-ui-management.html`, - createDetectionRules: `${SECURITY_SOLUTION_DOCS}rules-ui-create.html`, - updatePrebuiltDetectionRules: isServerless - ? `${SERVERLESS_DOCS}security-prebuilt-rules-management.html#update-prebuilt-rules` - : `${SECURITY_SOLUTION_DOCS}prebuilt-rules-management.html#update-prebuilt-rules`, - prebuiltRuleCustomizationPromoBlog: `${ELASTIC_WEBSITE_URL}blog/security-prebuilt-rules-editing`, - createEsqlRuleType: `${SECURITY_SOLUTION_DOCS}rules-ui-create.html#create-esql-rule`, - ruleUiAdvancedParams: `${SECURITY_SOLUTION_DOCS}rules-ui-create.html#rule-ui-advanced-params`, + privileges: `${ELASTIC_DOCS}solutions/security/configure-elastic-defend/elastic-defend-feature-privileges`, + manageDetectionRules: `${ELASTIC_DOCS}solutions/security/detect-and-alert/manage-detection-rules`, + createDetectionRules: `${ELASTIC_DOCS}solutions/security/detect-and-alert/create-detection-rule`, + updatePrebuiltDetectionRules: `${ELASTIC_DOCS}solutions/security/detect-and-alert/install-manage-elastic-prebuilt-rules#update-prebuilt-rules`, + prebuiltRuleCustomizationPromoBlog: isServerless + ? '' // URL for Serverless to be added later, once the blog post is published. Issue: https://github.com/elastic/kibana/issues/209000 + : `https://www.elastic.co/blog/security-prebuilt-rules-editing`, + createEsqlRuleType: `${ELASTIC_DOCS}solutions/security/detect-and-alert/create-detection-rule#create-esql-rule`, + ruleUiAdvancedParams: `${ELASTIC_DOCS}solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params`, entityAnalytics: { - riskScorePrerequisites: `${SECURITY_SOLUTION_DOCS}ers-requirements.html`, - entityRiskScoring: `${SECURITY_SOLUTION_DOCS}entity-risk-scoring.html`, - assetCriticality: `${SECURITY_SOLUTION_DOCS}asset-criticality.html`, + riskScorePrerequisites: `${ELASTIC_DOCS}solutions/security/advanced-entity-analytics/entity-risk-scoring-requirements`, + entityRiskScoring: `${ELASTIC_DOCS}solutions/security/advanced-entity-analytics/entity-risk-scoring`, + assetCriticality: `${ELASTIC_DOCS}solutions/security/advanced-entity-analytics/asset-criticality`, }, - detectionEngineOverview: `${SECURITY_SOLUTION_DOCS}detection-engine-overview.html`, - aiAssistant: `${SECURITY_SOLUTION_DOCS}security-assistant.html`, - signalsMigrationApi: `${SECURITY_SOLUTION_DOCS}signals-migration-api.html`, - legacyEndpointManagementApiDeprecations: `${KIBANA_DOCS}breaking-changes-summary.html#breaking-199598`, - legacyRuleManagementBulkApiDeprecations: `${KIBANA_DOCS}breaking-changes-summary.html#breaking-207091`, - siemMigrations: `${SECURITY_SOLUTION_DOCS}siem-migration.html`, - llmPerformanceMatrix: `${SECURITY_SOLUTION_DOCS}llm-performance-matrix.html`, + detectionEngineOverview: `${ELASTIC_DOCS}solutions/security/detect-and-alert`, + aiAssistant: `${ELASTIC_DOCS}solutions/security/ai/ai-assistant`, + signalsMigrationApi: isServerless + ? `${KIBANA_APIS}group/endpoint-security-detections-api` + : `${KIBANA_SERVERLESS_APIS}group/endpoint-security-detections-api`, + siemMigrations: `${ELASTIC_DOCS}solutions/security/get-started/automatic-migration`, + llmPerformanceMatrix: `${ELASTIC_DOCS}solutions/security/ai/large-language-model-performance-matrix`, }, query: { eql: `${ELASTICSEARCH_DOCS}eql.html`, @@ -679,20 +681,19 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D browserSandboxDependencies: `${ELASTIC_DOCS}explore-analyze/report-and-share/reporting-troubleshooting-pdf#reporting-troubleshooting-sandbox-dependency`, }, security: { - apiKeyServiceSettings: `${ELASTICSEARCH_DOCS}security-settings.html#api-key-service-settings`, - clusterPrivileges: `${ELASTICSEARCH_DOCS}security-privileges.html#privileges-list-cluster`, - definingRoles: `${ELASTICSEARCH_DOCS}defining-roles.html`, - elasticsearchSettings: `${ELASTICSEARCH_DOCS}security-settings.html`, - elasticsearchEnableSecurity: `${ELASTICSEARCH_DOCS}configuring-stack-security.html`, - elasticsearchEnableApiKeys: `${ELASTICSEARCH_DOCS}security-settings.html#api-key-service-settings`, - indicesPrivileges: `${ELASTICSEARCH_DOCS}security-privileges.html#privileges-list-indices`, - kibanaTLS: `${ELASTICSEARCH_DOCS}security-basic-setup.html#encrypt-internode-communication`, - kibanaPrivileges: `${KIBANA_DOCS}kibana-privileges.html`, - mappingRoles: `${ELASTICSEARCH_DOCS}mapping-roles.html`, - mappingRolesFieldRules: `${ELASTICSEARCH_DOCS}role-mapping-resources.html#mapping-roles-rule-field`, - runAsPrivilege: `${ELASTICSEARCH_DOCS}security-privileges.html#_run_as_privilege`, - deprecatedV1Endpoints: `${KIBANA_DOCS}breaking-changes-summary.html#breaking-199656`, - enableElasticSearchSecurityFeatures: `${ELASTICSEARCH_DOCS}security-minimal-setup.html#_enable_elasticsearch_security_features`, + apiKeyServiceSettings: `${ELASTIC_DOCS}reference/elasticsearch/configuration-reference/security-settings#api-key-service-settings`, + clusterPrivileges: `${ELASTIC_DOCS}reference/elasticsearch/security-privileges#privileges-list-cluster`, + definingRoles: `${ELASTIC_DOCS}deploy-manage/users-roles/cluster-or-deployment-auth/defining-roles`, + elasticsearchSettings: `${ELASTIC_DOCS}reference/elasticsearch/configuration-reference/security-settings`, + elasticsearchEnableSecurity: `${ELASTIC_DOCS}deploy-manage/deploy/self-managed/installing-elasticsearch`, + elasticsearchEnableApiKeys: `${ELASTIC_DOCS}reference/elasticsearch/configuration-reference/security-settings#api-key-service-settings`, + indicesPrivileges: `${ELASTIC_DOCS}reference/elasticsearch/security-privileges#privileges-list-indices`, + kibanaTLS: `${ELASTIC_DOCS}deploy-manage/security/set-up-basic-security#encrypt-internode-communication`, + kibanaPrivileges: `${ELASTIC_DOCS}deploy-manage/users-roles/cluster-or-deployment-auth/kibana-privileges`, + mappingRoles: `${ELASTIC_DOCS}deploy-manage/users-roles/cluster-or-deployment-auth/mapping-users-groups-to-roles`, + mappingRolesFieldRules: `${ELASTIC_DOCS}deploy-manage/users-roles/cluster-or-deployment-auth/role-mapping-resources#mapping-roles-rule-field`, + runAsPrivilege: `${ELASTIC_DOCS}reference/elasticsearch/security-privileges#_run_as_privilege`, + enableElasticSearchSecurityFeatures: `${ELASTIC_DOCS}deploy-manage/security/set-up-minimal-security#_enable_es_security_features`, }, spaces: { kibanaLegacyUrlAliases: `${KIBANA_DOCS}legacy-url-aliases.html`, @@ -999,7 +1000,7 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D gettingStartedSearch: `${SERVERLESS_DOCS}elasticsearch-get-started.html`, }, serverlessSecurity: { - apiKeyPrivileges: `${SERVERLESS_DOCS}api-keys.html#api-keys-restrict-privileges`, + apiKeyPrivileges: `${ELASTIC_DOCS}deploy-manage/api-keys/serverless-project-api-keys#api-keys-restrict-privileges`, }, synthetics: { featureRoles: isServerless diff --git a/src/platform/packages/shared/kbn-doc-links/src/types.ts b/src/platform/packages/shared/kbn-doc-links/src/types.ts index 4a24ed97621eb..f0ce55ed949c3 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/types.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/types.ts @@ -325,8 +325,6 @@ export interface DocLinks { }; readonly detectionEngineOverview: string; readonly signalsMigrationApi: string; - readonly legacyEndpointManagementApiDeprecations: string; - readonly legacyRuleManagementBulkApiDeprecations: string; readonly siemMigrations: string; readonly llmPerformanceMatrix: string; }; @@ -463,7 +461,6 @@ export interface DocLinks { mappingRoles: string; mappingRolesFieldRules: string; runAsPrivilege: string; - deprecatedV1Endpoints: string; enableElasticSearchSecurityFeatures: string; }>; readonly spaces: Readonly<{ diff --git a/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx index 98e18182500a0..7330c2870f1ea 100644 --- a/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx +++ b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx @@ -93,13 +93,9 @@ describe('AiAssistantSelectionPage', () => { it('renders the documentation links correctly', () => { renderComponent(testCapabilities); - - expect( - screen.getByTestId('pluginsAiAssistantSelectionPageDocumentationLink') - ).toHaveAttribute( - 'href', - 'https://www.elastic.co/guide/en/observability/current/obs-ai-assistant.html' - ); + const docLink = screen.getByTestId('pluginsAiAssistantSelectionPageDocumentationLink'); + expect(docLink).toBeInTheDocument(); + expect(docLink.getAttribute('href')).toContain('obs-ai-assistant'); }); }); }); @@ -139,13 +135,9 @@ describe('AiAssistantSelectionPage', () => { it('renders the documentation links correctly', () => { renderComponent(testCapabilities); - - expect( - screen.getByTestId('securityAiAssistantSelectionPageDocumentationLink') - ).toHaveAttribute( - 'href', - 'https://www.elastic.co/guide/en/security/current/security-assistant.html' - ); + const docLink = screen.getByTestId('securityAiAssistantSelectionPageDocumentationLink'); + expect(docLink).toBeInTheDocument(); + expect(docLink.getAttribute('href')).toContain('ai-assistant'); }); }); }); diff --git a/x-pack/platform/plugins/shared/features/common/feature_elasticsearch_privileges.ts b/x-pack/platform/plugins/shared/features/common/feature_elasticsearch_privileges.ts index c5f0bcebcd0f0..e2a90892b8509 100644 --- a/x-pack/platform/plugins/shared/features/common/feature_elasticsearch_privileges.ts +++ b/x-pack/platform/plugins/shared/features/common/feature_elasticsearch_privileges.ts @@ -11,14 +11,14 @@ export interface FeatureElasticsearchPrivileges { /** * A set of Elasticsearch cluster privileges which are required for this feature to be enabled. - * See https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html + * See https://www.elastic.co/docs/reference/elasticsearch/security-privileges * */ requiredClusterPrivileges: string[]; /** * A set of Elasticsearch index privileges which are required for this feature to be enabled, keyed on index name or pattern. - * See https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html#privileges-list-indices + * See https://www.elastic.co/docs/reference/elasticsearch/security-privileges#privileges-list-indices * * @example * diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/components/bidirectional_integrations_callout.test.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/components/bidirectional_integrations_callout.test.tsx index 0e0cc283e9f45..7193ead369735 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/components/bidirectional_integrations_callout.test.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/components/bidirectional_integrations_callout.test.tsx @@ -48,7 +48,7 @@ describe('BidirectionalIntegrationsBanner', () => { const docLink = renderResult.getByTestId('bidirectionalIntegrationDocLink'); expect(docLink).toBeInTheDocument(); - expect(docLink.getAttribute('href')).toContain('third-party-actions.html'); + expect(docLink.getAttribute('href')).toContain('third-party-response-actions'); }); it('should remove the callout when the dismiss button is clicked', async () => { diff --git a/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/es/__snapshots__/elasticsearch_privileges.test.tsx.snap b/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/es/__snapshots__/elasticsearch_privileges.test.tsx.snap index ce6c7d3543aa4..287fc8685c702 100644 --- a/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/es/__snapshots__/elasticsearch_privileges.test.tsx.snap +++ b/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/es/__snapshots__/elasticsearch_privileges.test.tsx.snap @@ -14,7 +14,7 @@ exports[`it renders correctly in serverless mode 1`] = ` /> { class="css-qvyf25-redirectAppLinksStyles" data-test-subj="kbnRedirectAppLink" > - Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"serverBasePath":"","http":{"basePath":{"basePath":"","serverBasePath":"","assetsHrefBase":""},"anonymousPaths":{},"externalUrl":{},"staticAssets":{}},"overlays":{"banners":{}},"notifications":{"toasts":{}},"userProfile":{},"theme":{"theme$":{}},"i18n":{},"logger":{"context":[]},"spacesManager":{"onActiveSpaceChange$":{}},"spaceId":"some-space","history":{"action":"PUSH","length":1,"location":{"pathname":"/edit/some-space","search":"","hash":""}},"allowFeatureVisibility":true,"allowSolutionVisibility":true,"enableSecurityLink":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/security-minimal-setup.html#_enable_elasticsearch_security_features"} + Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"serverBasePath":"","http":{"basePath":{"basePath":"","serverBasePath":"","assetsHrefBase":""},"anonymousPaths":{},"externalUrl":{},"staticAssets":{}},"overlays":{"banners":{}},"notifications":{"toasts":{}},"userProfile":{},"theme":{"theme$":{}},"i18n":{},"logger":{"context":[]},"spacesManager":{"onActiveSpaceChange$":{}},"spaceId":"some-space","history":{"action":"PUSH","length":1,"location":{"pathname":"/edit/some-space","search":"","hash":""}},"allowFeatureVisibility":true,"allowSolutionVisibility":true,"enableSecurityLink":"https://www.elastic.co/docs/deploy-manage/security/set-up-minimal-security#_enable_es_security_features"} `); diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx index b36975ee9b0be..c5b806b0cee5d 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx @@ -32,7 +32,7 @@ describe('EventMergingBanner component', () => { const docLink = renderResult.getByTestId('eventMergingDocLink'); expect(docLink).toBeInTheDocument(); - expect(docLink.getAttribute('href')).toContain('endpoint-data-volume.html'); + expect(docLink.getAttribute('href')).toContain('configure-data-volume-for-elastic-endpoint'); }); it('should call `onDismiss` callback when user clicks dismiss', () => { diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx index d742f27b2fc18..e3617d6f9b655 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx @@ -38,6 +38,6 @@ describe('Policy form RelatedDetectionRulesCallout component', () => { render(); const anchor: HTMLAnchorElement = renderResult.getByTestId('test-link') as HTMLAnchorElement; - expect(anchor.href).toContain('detection-engine-overview.html'); + expect(anchor.href).toContain('detect-and-alert'); }); });