From 4f4ea53c5b0a0d692cd99adc8cc3e73c9f9e29a0 Mon Sep 17 00:00:00 2001 From: Yuliia Fryshko Date: Fri, 27 Jun 2025 21:22:06 +0200 Subject: [PATCH] Move test utils from legacy api to agnostic (#224381) ## Summary Closes [219684](https://github.com/elastic/kibana/issues/219684) This PR removes the `observability_ai_assistant_api_integration` folder, relocating its tests and dependencies into relevant functional test directories or agnostic api tests. Common utilities used across both (functional and agnostic) suites have been moved to the agnostic folder. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit 994ebc0f9c51e92e0725675b550255cb486fde6a) --- .buildkite/ftr_oblt_serverless_configs.yml | 1 - .buildkite/ftr_oblt_stateful_configs.yml | 1 - .github/CODEOWNERS | 2 - .github/paths-labeller.yml | 1 - .../anonymization/anonymization.spec.ts | 5 +- .../ai_assistant/chat/chat.spec.ts | 5 +- .../ai_assistant/complete/complete.spec.ts | 5 +- .../complete/functions/alerts.spec.ts | 5 +- .../complete/functions/context.spec.ts | 6 +- .../complete/functions/elasticsearch.spec.ts | 5 +- .../complete/functions/execute_query.spec.ts | 5 +- .../functions/get_alerts_dataset_info.spec.ts | 6 +- .../functions/get_dataset_info.spec.ts | 6 +- .../functions/retrieve_elastic_doc.spec.ts | 5 +- .../complete/functions/summarize.spec.ts | 5 +- .../functions/title_conversation.spec.ts | 5 +- .../functions/visualize_query.spec.ts | 5 +- .../knowledge_base_user_instructions.spec.ts | 5 +- .../public_complete/public_complete.spec.ts | 5 +- .../ai_assistant/utils}/create_llm_proxy.ts | 0 .../utils}/create_openai_chunk.ts | 0 .../observability_ai_assistant_api_client.ts | 0 .../playground_overview.ess.ts | 2 +- .../utils/create_openai_connector.ts | 2 +- .../common/action_connectors.ts | 63 ----- .../common/config.ts | 123 --------- .../common/ftr_provider_context.ts | 20 -- .../configs/index.ts | 47 ---- .../enterprise/config.ts | 11 - .../tests/index.ts | 33 --- .../common/config.ts | 125 ++++++--- .../common/connectors.ts | 2 +- .../common/create_synthtrace_client.ts | 2 +- .../common/ui/index.ts | 2 +- .../common/users/create_users_and_roles.ts | 2 +- .../common/users/roles.ts | 0 .../common/users/users.ts | 13 +- .../configs/index.ts | 2 +- .../tests/contextual_insights/index.spec.ts | 2 +- .../tests/conversations/archiving.spec.ts | 2 +- .../tests/conversations/index.spec.ts | 4 +- .../tests/conversations/sharing.spec.ts | 2 +- .../assistant_security.spec.ts | 2 +- .../tests/index.ts | 4 +- .../tests/knowledge_base/index.spec.ts | 2 +- .../knowledge_base_management/index.spec.ts | 2 +- .../change_knowledge_base_model.spec.ts | 2 +- .../common/ftr_provider_context.ts | 18 -- .../observability_ai_assistant_api_client.ts | 242 ------------------ .../observability/ai_assistant/config.ts | 30 --- .../observability/ai_assistant/tests/index.ts | 26 -- x-pack/test_serverless/tsconfig.json | 1 - 52 files changed, 119 insertions(+), 752 deletions(-) rename x-pack/test/{observability_ai_assistant_api_integration/common => api_integration/deployment_agnostic/apis/observability/ai_assistant/utils}/create_llm_proxy.ts (100%) rename x-pack/test/{observability_ai_assistant_api_integration/common => api_integration/deployment_agnostic/apis/observability/ai_assistant/utils}/create_openai_chunk.ts (100%) rename x-pack/test/{observability_ai_assistant_api_integration/common => api_integration/deployment_agnostic/apis/observability/ai_assistant/utils}/observability_ai_assistant_api_client.ts (100%) delete mode 100644 x-pack/test/observability_ai_assistant_api_integration/common/action_connectors.ts delete mode 100644 x-pack/test/observability_ai_assistant_api_integration/common/config.ts delete mode 100644 x-pack/test/observability_ai_assistant_api_integration/common/ftr_provider_context.ts delete mode 100644 x-pack/test/observability_ai_assistant_api_integration/configs/index.ts delete mode 100644 x-pack/test/observability_ai_assistant_api_integration/enterprise/config.ts delete mode 100644 x-pack/test/observability_ai_assistant_api_integration/tests/index.ts rename x-pack/test/{observability_ai_assistant_api_integration => observability_ai_assistant_functional}/common/create_synthtrace_client.ts (92%) rename x-pack/test/{observability_ai_assistant_api_integration => observability_ai_assistant_functional}/common/users/create_users_and_roles.ts (92%) rename x-pack/test/{observability_ai_assistant_api_integration => observability_ai_assistant_functional}/common/users/roles.ts (100%) rename x-pack/test/{observability_ai_assistant_api_integration => observability_ai_assistant_functional}/common/users/users.ts (68%) delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/ftr_provider_context.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/observability_ai_assistant_api_client.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/config.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/tests/index.ts diff --git a/.buildkite/ftr_oblt_serverless_configs.yml b/.buildkite/ftr_oblt_serverless_configs.yml index 33ff3a3337c56..de6ad30af22cd 100644 --- a/.buildkite/ftr_oblt_serverless_configs.yml +++ b/.buildkite/ftr_oblt_serverless_configs.yml @@ -14,7 +14,6 @@ enabled: - x-pack/test_serverless/api_integration/test_suites/observability/common_configs/config.group1.ts - x-pack/test_serverless/api_integration/test_suites/observability/common_configs/config.logs_essentials.group1.ts - x-pack/test_serverless/api_integration/test_suites/observability/fleet/config.ts - - x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/config.ts - x-pack/test_serverless/functional/test_suites/observability/config.ts - x-pack/test_serverless/functional/test_suites/observability/config.logs_essentials.ts - x-pack/test_serverless/functional/test_suites/observability/config.examples.ts diff --git a/.buildkite/ftr_oblt_stateful_configs.yml b/.buildkite/ftr_oblt_stateful_configs.yml index d27dc531a92e9..7b1d9df53aad3 100644 --- a/.buildkite/ftr_oblt_stateful_configs.yml +++ b/.buildkite/ftr_oblt_stateful_configs.yml @@ -40,7 +40,6 @@ enabled: - x-pack/test/observability_functional/with_rac_write.config.ts - x-pack/test/observability_onboarding_api_integration/basic/config.ts - x-pack/test/observability_onboarding_api_integration/cloud/config.ts - - x-pack/test/observability_ai_assistant_api_integration/enterprise/config.ts - x-pack/test/observability_ai_assistant_functional/enterprise/config.ts - x-pack/solutions/observability/test/api_integration/profiling/cloud/config.ts - x-pack/test/functional/apps/apm/config.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 929d971019ac6..bbd6cef7b6a46 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1352,9 +1352,7 @@ x-pack/solutions/observability/plugins/observability/server/lib/esql_extensions /x-pack/test_serverless/api_integration/test_suites/common/data_usage @elastic/kibana-management /x-pack/test_serverless/functional/test_suites/common/data_usage @elastic/kibana-management /x-pack/test_serverless/functional/page_objects/svl_data_usage.ts @elastic/kibana-management -/x-pack/test/observability_ai_assistant_api_integration @elastic/obs-ai-assistant /x-pack/test/observability_ai_assistant_functional @elastic/obs-ai-assistant -/x-pack/test_serverless/**/test_suites/observability/ai_assistant @elastic/obs-ai-assistant /x-pack/test/functional/es_archives/observability/ai_assistant @elastic/obs-ai-assistant /x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant @elastic/obs-ai-assistant # Infra Obs diff --git a/.github/paths-labeller.yml b/.github/paths-labeller.yml index 00cc41418908d..1348dd1506dec 100644 --- a/.github/paths-labeller.yml +++ b/.github/paths-labeller.yml @@ -26,7 +26,6 @@ - 'Team:Obs AI Assistant': - 'x-pack/platform/plugins/shared/observability_ai_assistant/**/*.*' - 'x-pack/plugins/observability_solution/observability_ai_assistant_*/**/*.*' - - 'x-pack/test/observability_ai_assistant_api_integration/**/*.*' - 'x-pack/test/observability_ai_assistant_functional/**/*.*' - 'ci:project-deploy-observability': - 'packages/kbn-apm-*/**/*.*' diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/anonymization/anonymization.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/anonymization/anonymization.spec.ts index c9042b30ebb23..4fe82ee3b5d63 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/anonymization/anonymization.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/anonymization/anonymization.spec.ts @@ -6,10 +6,7 @@ */ import expect from '@kbn/expect'; import { MessageRole, type Message } from '@kbn/observability-ai-assistant-plugin/common'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../utils/create_llm_proxy'; import { setAdvancedSettings } from '../utils/advanced_settings'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { clearConversations } from '../utils/conversation'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts index f9f001a95c8d1..159eb1a56bbaf 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts @@ -9,10 +9,7 @@ import expect from '@kbn/expect'; import { MessageRole, type Message } from '@kbn/observability-ai-assistant-plugin/common'; import { PassThrough } from 'stream'; import { times } from 'lodash'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { createLlmProxy, LlmProxy } from '../utils/create_llm_proxy'; import { SupertestWithRoleScope } from '../../../../services/role_scoped_supertest'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts index f875f360af491..f2eddfc9c3856 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts @@ -17,10 +17,7 @@ import { StreamingChatResponseEventType, } from '@kbn/observability-ai-assistant-plugin/common/conversation_complete'; import { ObservabilityAIAssistantScreenContextRequest } from '@kbn/observability-ai-assistant-plugin/common/types'; -import { - createLlmProxy, - LlmProxy, -} from '../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { createLlmProxy, LlmProxy } from '../utils/create_llm_proxy'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { SupertestWithRoleScope } from '../../../../services/role_scoped_supertest'; import { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/alerts.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/alerts.spec.ts index 76f1ea4aaf251..ecb4c6dbc8c34 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/alerts.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/alerts.spec.ts @@ -11,10 +11,7 @@ import { InternalRequestHeader, RoleCredentials } from '@kbn/ftr-common-function import { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { ApmRuleType } from '@kbn/rule-data-utils'; import { SearchAlertsResult } from '@kbn/alerts-ui-shared/src/common/apis/search_alerts/search_alerts'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import { getMessageAddedEvents, invokeChatCompleteWithFunctionRequest, diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/context.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/context.spec.ts index c99038201698c..84b896fe397ae 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/context.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/context.spec.ts @@ -17,11 +17,7 @@ import { CONTEXT_FUNCTION_NAME } from '@kbn/observability-ai-assistant-plugin/se import { Instruction } from '@kbn/observability-ai-assistant-plugin/common/types'; import { RecalledSuggestion } from '@kbn/observability-ai-assistant-plugin/server/functions/context/utils/recall_and_score'; import { SCORE_SUGGESTIONS_FUNCTION_NAME } from '@kbn/observability-ai-assistant-plugin/server/functions/context/utils/score_suggestions'; -import { - KnowledgeBaseDocument, - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { KnowledgeBaseDocument, LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; import { addSampleDocsToInternalKb, clearKnowledgeBase } from '../../utils/knowledge_base'; import { chatComplete } from '../../utils/conversation'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/elasticsearch.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/elasticsearch.spec.ts index 9aa3f2b375e8a..17331ba832d9d 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/elasticsearch.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/elasticsearch.spec.ts @@ -10,10 +10,7 @@ import expect from '@kbn/expect'; import { apm, timerange } from '@kbn/apm-synthtrace-client'; import { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { ELASTICSEARCH_FUNCTION_NAME } from '@kbn/observability-ai-assistant-plugin/server/functions/elasticsearch'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import { getMessageAddedEvents, invokeChatCompleteWithFunctionRequest, diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/execute_query.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/execute_query.spec.ts index 04e06a7e9ba61..13b32c4a3fa7b 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/execute_query.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/execute_query.spec.ts @@ -11,10 +11,7 @@ import { LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { last } from 'lodash'; import { ChatCompletionStreamParams } from 'openai/lib/ChatCompletionStream'; import { type EsqlToRecords } from '@elastic/elasticsearch/lib/helpers'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import { chatComplete } from '../../utils/conversation'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; import { createSimpleSyntheticLogs } from '../../synthtrace_scenarios/simple_logs'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_alerts_dataset_info.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_alerts_dataset_info.spec.ts index d04052c2f8c99..459fbbde90479 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_alerts_dataset_info.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_alerts_dataset_info.spec.ts @@ -13,11 +13,7 @@ import { InternalRequestHeader, RoleCredentials } from '@kbn/ftr-common-function import { last } from 'lodash'; import { GET_RELEVANT_FIELD_NAMES_SYSTEM_MESSAGE } from '@kbn/observability-ai-assistant-plugin/server/functions/get_dataset_info/get_relevant_field_names'; import { ChatCompletionStreamParams } from 'openai/lib/ChatCompletionStream'; -import { - LlmProxy, - RelevantField, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, RelevantField, createLlmProxy } from '../../utils/create_llm_proxy'; import { createSyntheticApmData } from '../../synthtrace_scenarios/create_synthetic_apm_data'; import { chatComplete, getSystemMessage, systemMessageSorted } from '../../utils/conversation'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_dataset_info.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_dataset_info.spec.ts index 6a9a72788f856..35f0483ecd887 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_dataset_info.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/get_dataset_info.spec.ts @@ -11,11 +11,7 @@ import { LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { last } from 'lodash'; import { GET_RELEVANT_FIELD_NAMES_SYSTEM_MESSAGE } from '@kbn/observability-ai-assistant-plugin/server/functions/get_dataset_info/get_relevant_field_names'; import { ChatCompletionStreamParams } from 'openai/lib/ChatCompletionStream'; -import { - LlmProxy, - RelevantField, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, RelevantField, createLlmProxy } from '../../utils/create_llm_proxy'; import { chatComplete, getSystemMessage, systemMessageSorted } from '../../utils/conversation'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; import { createSimpleSyntheticLogs } from '../../synthtrace_scenarios/simple_logs'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/retrieve_elastic_doc.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/retrieve_elastic_doc.spec.ts index 5ba3a04ca2356..e4f8490b47925 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/retrieve_elastic_doc.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/retrieve_elastic_doc.spec.ts @@ -10,10 +10,7 @@ import { ChatCompletionStreamParams } from 'openai/lib/ChatCompletionStream'; import { ChatCompletionMessageParam } from 'openai/resources'; import { last } from 'lodash'; import { MessageAddEvent, MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import { chatComplete } from '../../utils/conversation'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; import { installProductDoc, uninstallProductDoc } from '../../utils/product_doc_base'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts index 6287b26b69ef1..8d4d468226a0e 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts @@ -7,10 +7,7 @@ import { MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; import expect from '@kbn/expect'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; import { invokeChatCompleteWithFunctionRequest } from '../../utils/conversation'; import { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/title_conversation.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/title_conversation.spec.ts index b13c3bdf3d93a..734c1a058ef0a 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/title_conversation.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/title_conversation.spec.ts @@ -12,10 +12,7 @@ import { TITLE_SYSTEM_MESSAGE, } from '@kbn/observability-ai-assistant-plugin/server/service/client/operators/get_generated_title'; import { MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import { chatComplete, clearConversations } from '../../utils/conversation'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/visualize_query.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/visualize_query.spec.ts index 59ba78627d4da..e872e6e178fd5 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/visualize_query.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/visualize_query.spec.ts @@ -8,10 +8,7 @@ import expect from '@kbn/expect'; import { MessageAddEvent, MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; import { VisualizeESQLUserIntention } from '@kbn/observability-ai-assistant-plugin/common/functions/visualize_esql'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../../utils/create_llm_proxy'; import { getMessageAddedEvents, invokeChatCompleteWithFunctionRequest, diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts index ec1e58229be67..d620bd113a08b 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts @@ -13,10 +13,7 @@ import { Instruction } from '@kbn/observability-ai-assistant-plugin/common/types import pRetry from 'p-retry'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { clearKnowledgeBase } from '../utils/knowledge_base'; -import { - LlmProxy, - createLlmProxy, -} from '../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy, createLlmProxy } from '../utils/create_llm_proxy'; import { clearConversations, getConversationCreatedEvent } from '../utils/conversation'; import { deployTinyElserAndSetupKb, diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts index f8ab59b30572d..28c22a5e1908b 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts @@ -15,10 +15,7 @@ import { type StreamingChatResponseEvent, } from '@kbn/observability-ai-assistant-plugin/common/conversation_complete'; import { type Instruction } from '@kbn/observability-ai-assistant-plugin/common/types'; -import { - createLlmProxy, - LlmProxy, -} from '../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { createLlmProxy, LlmProxy } from '../utils/create_llm_proxy'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { decodeEvents } from '../utils/conversation'; diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/create_llm_proxy.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy.ts similarity index 100% rename from x-pack/test/observability_ai_assistant_api_integration/common/create_llm_proxy.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy.ts diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/create_openai_chunk.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_openai_chunk.ts similarity index 100% rename from x-pack/test/observability_ai_assistant_api_integration/common/create_openai_chunk.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_openai_chunk.ts diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/observability_ai_assistant_api_client.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/observability_ai_assistant_api_client.ts similarity index 100% rename from x-pack/test/observability_ai_assistant_api_integration/common/observability_ai_assistant_api_client.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/observability_ai_assistant_api_client.ts diff --git a/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts b/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts index 909158bb82b46..419bed905f9a2 100644 --- a/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts +++ b/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts @@ -12,7 +12,7 @@ import { MachineLearningCommonAPIProvider } from '../../services/ml/common_api'; import { createLlmProxy, LlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; const esArchiveIndex = 'src/platform/test/api_integration/fixtures/es_archiver/index_patterns/basic_index'; diff --git a/x-pack/test/functional/apps/search_playground/utils/create_openai_connector.ts b/x-pack/test/functional/apps/search_playground/utils/create_openai_connector.ts index ed8c81eda0491..ddbe83605454f 100644 --- a/x-pack/test/functional/apps/search_playground/utils/create_openai_connector.ts +++ b/x-pack/test/functional/apps/search_playground/utils/create_openai_connector.ts @@ -6,7 +6,7 @@ */ import type SuperTest from 'supertest'; -import { LlmProxy } from '../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy } from '../../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; export async function createOpenAIConnector({ supertest, diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/action_connectors.ts b/x-pack/test/observability_ai_assistant_api_integration/common/action_connectors.ts deleted file mode 100644 index b577ef03c5eb6..0000000000000 --- a/x-pack/test/observability_ai_assistant_api_integration/common/action_connectors.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ToolingLog } from '@kbn/tooling-log'; -import { Agent } from 'supertest'; - -export async function deleteActionConnector({ - supertest, - connectorId, - log, -}: { - supertest: Agent; - connectorId: string; - log: ToolingLog; -}) { - try { - await supertest - .delete(`/api/actions/connector/${connectorId}`) - .set('kbn-xsrf', 'foo') - .expect(204); - } catch (e) { - log.error(`Failed to delete action connector with id ${connectorId} due to: ${e}`); - throw e; - } -} - -export async function createProxyActionConnector({ - log, - supertest, - port, -}: { - log: ToolingLog; - supertest: Agent; - port: number; -}) { - try { - const res = await supertest - .post('/api/actions/connector') - .set('kbn-xsrf', 'foo') - .send({ - name: 'OpenAI Proxy', - connector_type_id: '.gen-ai', - config: { - apiProvider: 'OpenAI', - apiUrl: `http://localhost:${port}`, - }, - secrets: { - apiKey: 'my-api-key', - }, - }) - .expect(200); - - const connectorId = res.body.id as string; - return connectorId; - } catch (e) { - log.error(`Failed to create action connector due to: ${e}`); - throw e; - } -} diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/config.ts b/x-pack/test/observability_ai_assistant_api_integration/common/config.ts deleted file mode 100644 index 6505ad3e94d64..0000000000000 --- a/x-pack/test/observability_ai_assistant_api_integration/common/config.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Config, FtrConfigProviderContext } from '@kbn/test'; -import { UrlObject } from 'url'; -import { ObservabilityAIAssistantFtrConfigName } from '../configs'; -import { getApmSynthtraceEsClient } from './create_synthtrace_client'; -import { InheritedFtrProviderContext, InheritedServices } from './ftr_provider_context'; -import { getScopedApiClient } from './observability_ai_assistant_api_client'; -import { editor, secondaryEditor, unauthorizedUser, viewer } from './users/users'; - -export interface ObservabilityAIAssistantFtrConfig { - name: ObservabilityAIAssistantFtrConfigName; - license: 'basic' | 'trial'; - kibanaConfig?: Record; -} - -export type CreateTestConfig = ReturnType; - -export type CreateTest = ReturnType; - -export type ObservabilityAIAssistantApiClients = Awaited< - ReturnType ->; - -export type ObservabilityAIAssistantAPIClient = Awaited< - ReturnType ->; - -export type ObservabilityAIAssistantServices = Awaited>['services']; - -export class ForbiddenApiError extends Error { - status: number; - - constructor(message: string = 'Forbidden') { - super(message); - this.name = 'ForbiddenApiError'; - this.status = 403; - } -} - -export function createObservabilityAIAssistantAPIConfig({ - config, - license, - name, - kibanaConfig, -}: { - config: Config; - license: 'basic' | 'trial'; - name: string; - kibanaConfig?: Record; -}) { - const services = config.get('services') as InheritedServices; - const servers = config.get('servers'); - const kibanaServer = servers.kibana as UrlObject; - const apmSynthtraceKibanaClient = services.apmSynthtraceKibanaClient(); - const allConfigs = config.getAll() as Record; - - const getScopedApiClientForUsername = (username: string) => - getScopedApiClient(kibanaServer, username); - - return { - ...allConfigs, - servers, - services: { - ...services, - getScopedApiClientForUsername: () => getScopedApiClientForUsername, - apmSynthtraceEsClient: (context: InheritedFtrProviderContext) => - getApmSynthtraceEsClient(context, apmSynthtraceKibanaClient), - observabilityAIAssistantAPIClient: async () => { - return { - admin: getScopedApiClientForUsername('elastic'), - viewer: getScopedApiClientForUsername(viewer.username), - editor: getScopedApiClientForUsername(editor.username), - secondaryEditor: getScopedApiClientForUsername(secondaryEditor.username), - unauthorizedUser: getScopedApiClientForUsername(unauthorizedUser.username), - }; - }, - }, - junit: { - reportName: `Observability AI Assistant API Integration tests (${name})`, - }, - esTestCluster: { - ...config.get('esTestCluster'), - license, - }, - kbnTestServer: { - ...config.get('kbnTestServer'), - serverArgs: [ - ...config.get('kbnTestServer.serverArgs'), - ...(kibanaConfig - ? Object.entries(kibanaConfig).map(([key, value]) => - Array.isArray(value) ? `--${key}=${JSON.stringify(value)}` : `--${key}=${value}` - ) - : []), - ], - }, - }; -} - -export function createTestConfig(config: ObservabilityAIAssistantFtrConfig) { - const { license, name, kibanaConfig } = config; - - return async ({ readConfigFile }: FtrConfigProviderContext) => { - const xPackAPITestsConfig = await readConfigFile( - require.resolve('../../api_integration/config.ts') - ); - - return { - ...createObservabilityAIAssistantAPIConfig({ - config: xPackAPITestsConfig, - name, - license, - kibanaConfig, - }), - testFiles: [require.resolve('../tests')], - }; - }; -} diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/ftr_provider_context.ts b/x-pack/test/observability_ai_assistant_api_integration/common/ftr_provider_context.ts deleted file mode 100644 index 1c0277c210d61..0000000000000 --- a/x-pack/test/observability_ai_assistant_api_integration/common/ftr_provider_context.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { GenericFtrProviderContext } from '@kbn/test'; -import { FtrProviderContext as InheritedFtrProviderContext } from '../../api_integration/ftr_provider_context'; -import { ObservabilityAIAssistantServices } from './config'; - -export type InheritedServices = InheritedFtrProviderContext extends GenericFtrProviderContext< - infer TServices, - {} -> - ? TServices - : {}; - -export type { InheritedFtrProviderContext }; -export type FtrProviderContext = GenericFtrProviderContext; diff --git a/x-pack/test/observability_ai_assistant_api_integration/configs/index.ts b/x-pack/test/observability_ai_assistant_api_integration/configs/index.ts deleted file mode 100644 index d31f13d546bf9..0000000000000 --- a/x-pack/test/observability_ai_assistant_api_integration/configs/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { mapValues } from 'lodash'; -import path from 'path'; -import { createTestConfig, CreateTestConfig } from '../common/config'; - -export const observabilityAIAssistantDebugLogger = { - name: 'plugins.observabilityAIAssistant', - level: 'debug', - appenders: ['console'], -}; - -export const observabilityAIAssistantFtrConfigs = { - basic: { - license: 'basic' as const, - kibanaConfig: { - 'logging.loggers': [observabilityAIAssistantDebugLogger], - }, - }, - enterprise: { - license: 'trial' as const, - kibanaConfig: { - 'logging.loggers': [observabilityAIAssistantDebugLogger], - 'plugin-path': path.resolve( - __dirname, - '../../../../src/platform/test/analytics/plugins/analytics_ftr_helpers' - ), - }, - }, -}; - -export type ObservabilityAIAssistantFtrConfigName = keyof typeof observabilityAIAssistantFtrConfigs; - -export const configs: Record = mapValues( - observabilityAIAssistantFtrConfigs, - (value, key) => { - return createTestConfig({ - name: key as ObservabilityAIAssistantFtrConfigName, - ...value, - }); - } -); diff --git a/x-pack/test/observability_ai_assistant_api_integration/enterprise/config.ts b/x-pack/test/observability_ai_assistant_api_integration/enterprise/config.ts deleted file mode 100644 index 598ecae70efbb..0000000000000 --- a/x-pack/test/observability_ai_assistant_api_integration/enterprise/config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { configs } from '../configs'; - -// eslint-disable-next-line import/no-default-export -export default configs.enterprise; diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/index.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/index.ts deleted file mode 100644 index e0312d2f76019..0000000000000 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import globby from 'globby'; -import path from 'path'; -import { createUsersAndRoles } from '../common/users/create_users_and_roles'; -import { FtrProviderContext } from '../common/ftr_provider_context'; - -const cwd = path.join(__dirname); - -export default function observabilityAIAssistantApiIntegrationTests({ - getService, - loadTestFile, -}: FtrProviderContext) { - describe('Observability AI Assistant API tests', function () { - const filePattern = '**/*.spec.ts'; - const tests = globby.sync(filePattern, { cwd }); - - // Creates roles and users before running tests - before(async () => { - await createUsersAndRoles(getService); - }); - - tests.forEach((testName) => { - describe(testName, () => { - loadTestFile(require.resolve(`./${testName}`)); - }); - }); - }); -} diff --git a/x-pack/test/observability_ai_assistant_functional/common/config.ts b/x-pack/test/observability_ai_assistant_functional/common/config.ts index eb267123adf2b..bee949cbeb19f 100644 --- a/x-pack/test/observability_ai_assistant_functional/common/config.ts +++ b/x-pack/test/observability_ai_assistant_functional/common/config.ts @@ -6,24 +6,50 @@ */ import { FtrConfigProviderContext } from '@kbn/test'; -import { merge } from 'lodash'; import { UrlObject } from 'url'; import { KibanaEBTServerProvider, KibanaEBTUIProvider, } from '@kbn/test-suites-src/analytics/services/kibana_ebt'; -import { - secondaryEditor, - editor, - viewer, -} from '../../observability_ai_assistant_api_integration/common/users/users'; -import { - ObservabilityAIAssistantFtrConfig, - createObservabilityAIAssistantAPIConfig, -} from '../../observability_ai_assistant_api_integration/common/config'; -import { getScopedApiClient } from '../../observability_ai_assistant_api_integration/common/observability_ai_assistant_api_client'; +import path from 'path'; +import { secondaryEditor, editor, viewer } from './users/users'; +import { getScopedApiClient } from '../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/observability_ai_assistant_api_client'; import { InheritedFtrProviderContext, InheritedServices } from '../ftr_provider_context'; import { ObservabilityAIAssistantUIProvider } from './ui'; +import { getApmSynthtraceEsClient } from './create_synthtrace_client'; + +export interface ObservabilityAIAssistantFtrConfig { + name: ObservabilityAIAssistantFtrConfigName; + license: 'basic' | 'trial'; + kibanaConfig?: Record; +} + +export const observabilityAIAssistantDebugLogger = { + name: 'plugins.observabilityAIAssistant', + level: 'debug', + appenders: ['console'], +}; + +export const observabilityAIAssistantFtrConfigs = { + basic: { + license: 'basic' as const, + kibanaConfig: { + 'logging.loggers': [observabilityAIAssistantDebugLogger], + }, + }, + enterprise: { + license: 'trial' as const, + kibanaConfig: { + 'logging.loggers': [observabilityAIAssistantDebugLogger], + 'plugin-path': path.resolve( + __dirname, + '../../../../src/platform/test/analytics/plugins/analytics_ftr_helpers' + ), + }, + }, +}; + +export type ObservabilityAIAssistantFtrConfigName = keyof typeof observabilityAIAssistantFtrConfigs; export type CreateTestConfig = ReturnType; export type TestConfig = Awaited>; @@ -41,38 +67,55 @@ async function getTestConfig({ }) { const testConfig = await readConfigFile(require.resolve('../../functional/config.base.js')); - const baseConfig = createObservabilityAIAssistantAPIConfig({ - config: testConfig, - license, - name, - kibanaConfig, - }); - - const kibanaServer = baseConfig.servers.kibana as UrlObject; + const getScopedApiClientForUsername = (username: string) => + getScopedApiClient(kibanaServer, username); + const servers = testConfig.get('servers'); + const kibanaServer = servers.kibana as UrlObject; + const services = testConfig.get('services') as InheritedServices; + const apmSynthtraceKibanaClient = services.apmSynthtraceKibanaClient(); + const allConfigs = testConfig.getAll() as Record; - return merge( - { - services: testConfig.get('services') as InheritedServices, - }, - baseConfig, - { - testFiles: [require.resolve('../tests')], - services: { - observabilityAIAssistantUI: (context: InheritedFtrProviderContext) => - ObservabilityAIAssistantUIProvider(context), - observabilityAIAssistantApi: async () => { - return { - admin: getScopedApiClient(kibanaServer, 'elastic'), - viewer: getScopedApiClient(kibanaServer, viewer.username), - editor: getScopedApiClient(kibanaServer, editor.username), - secondaryEditor: getScopedApiClient(kibanaServer, secondaryEditor.username), - }; - }, - kibana_ebt_server: KibanaEBTServerProvider, - kibana_ebt_ui: KibanaEBTUIProvider, + return { + ...allConfigs, + servers, + testFiles: [require.resolve('../tests')], + services: { + ...services, + getScopedApiClientForUsername: () => getScopedApiClientForUsername, + kibana_ebt_server: KibanaEBTServerProvider, + kibana_ebt_ui: KibanaEBTUIProvider, + apmSynthtraceEsClient: (context: InheritedFtrProviderContext) => + getApmSynthtraceEsClient(context, apmSynthtraceKibanaClient), + observabilityAIAssistantUI: (context: InheritedFtrProviderContext) => + ObservabilityAIAssistantUIProvider(context), + observabilityAIAssistantApi: async () => { + return { + admin: getScopedApiClient(kibanaServer, 'elastic'), + viewer: getScopedApiClient(kibanaServer, viewer.username), + editor: getScopedApiClient(kibanaServer, editor.username), + secondaryEditor: getScopedApiClient(kibanaServer, secondaryEditor.username), + }; }, - } - ); + }, + junit: { + reportName: `Chrome X-Pack Observability AI Assistant Functional Tests (${name})`, + }, + esTestCluster: { + ...testConfig.get('esTestCluster'), + license, + }, + kbnTestServer: { + ...testConfig.get('kbnTestServer'), + serverArgs: [ + ...testConfig.get('kbnTestServer.serverArgs'), + ...(kibanaConfig + ? Object.entries(kibanaConfig).map(([key, value]) => + Array.isArray(value) ? `--${key}=${JSON.stringify(value)}` : `--${key}=${value}` + ) + : []), + ], + }, + }; } export function createTestConfig(config: ObservabilityAIAssistantFtrConfig) { diff --git a/x-pack/test/observability_ai_assistant_functional/common/connectors.ts b/x-pack/test/observability_ai_assistant_functional/common/connectors.ts index fc06a33cd0d72..eff4f0aca57dd 100644 --- a/x-pack/test/observability_ai_assistant_functional/common/connectors.ts +++ b/x-pack/test/observability_ai_assistant_functional/common/connectors.ts @@ -6,7 +6,7 @@ */ import { Agent as SuperTestAgent } from 'supertest'; -import { LlmProxy } from '../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +import { LlmProxy } from '../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; export async function createConnector(proxy: LlmProxy, supertest: SuperTestAgent) { await supertest diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/create_synthtrace_client.ts b/x-pack/test/observability_ai_assistant_functional/common/create_synthtrace_client.ts similarity index 92% rename from x-pack/test/observability_ai_assistant_api_integration/common/create_synthtrace_client.ts rename to x-pack/test/observability_ai_assistant_functional/common/create_synthtrace_client.ts index 5e2497a0342a7..de78cb581e289 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/common/create_synthtrace_client.ts +++ b/x-pack/test/observability_ai_assistant_functional/common/create_synthtrace_client.ts @@ -10,7 +10,7 @@ import { createLogger, LogLevel, } from '@kbn/apm-synthtrace'; -import { InheritedFtrProviderContext } from './ftr_provider_context'; +import { InheritedFtrProviderContext } from '../ftr_provider_context'; export async function getApmSynthtraceEsClient( context: InheritedFtrProviderContext, diff --git a/x-pack/test/observability_ai_assistant_functional/common/ui/index.ts b/x-pack/test/observability_ai_assistant_functional/common/ui/index.ts index eb37742b58f1f..a222d9110c389 100644 --- a/x-pack/test/observability_ai_assistant_functional/common/ui/index.ts +++ b/x-pack/test/observability_ai_assistant_functional/common/ui/index.ts @@ -9,7 +9,7 @@ import type { PathsOf, TypeAsArgs, TypeOf } from '@kbn/typed-react-router-config import { kbnTestConfig } from '@kbn/test'; import type { ObservabilityAIAssistantRoutes } from '@kbn/observability-ai-assistant-app-plugin/public/routes/config'; import qs from 'query-string'; -import { User } from '../../../observability_ai_assistant_api_integration/common/users/users'; +import { User } from '../users/users'; import type { InheritedFtrProviderContext } from '../../ftr_provider_context'; export interface ObservabilityAIAssistantUIService { diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/users/create_users_and_roles.ts b/x-pack/test/observability_ai_assistant_functional/common/users/create_users_and_roles.ts similarity index 92% rename from x-pack/test/observability_ai_assistant_api_integration/common/users/create_users_and_roles.ts rename to x-pack/test/observability_ai_assistant_functional/common/users/create_users_and_roles.ts index 1492fa68114a2..d031134d9d4e1 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/common/users/create_users_and_roles.ts +++ b/x-pack/test/observability_ai_assistant_functional/common/users/create_users_and_roles.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { InheritedFtrProviderContext } from '../ftr_provider_context'; +import { InheritedFtrProviderContext } from '../../ftr_provider_context'; import { allUsers } from './users'; import { allRoles } from './roles'; diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/users/roles.ts b/x-pack/test/observability_ai_assistant_functional/common/users/roles.ts similarity index 100% rename from x-pack/test/observability_ai_assistant_api_integration/common/users/roles.ts rename to x-pack/test/observability_ai_assistant_functional/common/users/roles.ts diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/users/users.ts b/x-pack/test/observability_ai_assistant_functional/common/users/users.ts similarity index 68% rename from x-pack/test/observability_ai_assistant_api_integration/common/users/users.ts rename to x-pack/test/observability_ai_assistant_functional/common/users/users.ts index 2dc5a433517f3..82a89d9d8230a 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/common/users/users.ts +++ b/x-pack/test/observability_ai_assistant_functional/common/users/users.ts @@ -9,11 +9,8 @@ import { kbnTestConfig } from '@kbn/test'; const password = kbnTestConfig.getUrlParts().password!; -export const UNAUTHORIZED_USERNAME = 'unauthorized_user'; -export const UNAUTHORIZED_USER_PASSWORD = 'unauthorized_password'; - export interface User { - username: 'elastic' | 'editor' | 'viewer' | 'secondary_editor' | 'unauthorized_user'; + username: 'elastic' | 'editor' | 'viewer' | 'secondary_editor'; password: string; roles: string[]; } @@ -36,10 +33,4 @@ export const viewer: User = { roles: ['viewer'], }; -export const unauthorizedUser: User = { - username: UNAUTHORIZED_USERNAME, - password: UNAUTHORIZED_USER_PASSWORD, - roles: [], -}; - -export const allUsers = [editor, secondaryEditor, viewer, unauthorizedUser]; +export const allUsers = [editor, secondaryEditor, viewer]; diff --git a/x-pack/test/observability_ai_assistant_functional/configs/index.ts b/x-pack/test/observability_ai_assistant_functional/configs/index.ts index 22096dff2a47e..4c9566ab6ba42 100644 --- a/x-pack/test/observability_ai_assistant_functional/configs/index.ts +++ b/x-pack/test/observability_ai_assistant_functional/configs/index.ts @@ -9,7 +9,7 @@ import { mapValues } from 'lodash'; import { ObservabilityAIAssistantFtrConfigName, observabilityAIAssistantFtrConfigs, -} from '../../observability_ai_assistant_api_integration/configs'; +} from '../common/config'; import { createTestConfig, CreateTestConfig } from '../common/config'; export const configs: Record = mapValues( diff --git a/x-pack/test/observability_ai_assistant_functional/tests/contextual_insights/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/contextual_insights/index.spec.ts index d0e01f2f90d27..7b59cab352742 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/contextual_insights/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/contextual_insights/index.spec.ts @@ -11,7 +11,7 @@ import moment from 'moment'; import { createLlmProxy, LlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { FtrProviderContext } from '../../ftr_provider_context'; import { deleteConnectors, createConnector } from '../../common/connectors'; diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/archiving.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/archiving.spec.ts index 5be4b085fe9f2..a18dc8074fd79 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/archiving.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/archiving.spec.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { createLlmProxy, LlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { FtrProviderContext } from '../../ftr_provider_context'; import { createConnector, deleteConnectors } from '../../common/connectors'; import { deleteConversations } from '../../common/conversations'; diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts index 89b47023fee06..3b652f18f7336 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts @@ -15,10 +15,10 @@ import { systemMessageSorted } from '../../../api_integration/deployment_agnosti import { createLlmProxy, LlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { FtrProviderContext } from '../../ftr_provider_context'; -import { editor } from '../../../observability_ai_assistant_api_integration/common/users/users'; +import { editor } from '../../common/users/users'; import { deleteConnectors } from '../../common/connectors'; import { deleteConversations } from '../../common/conversations'; diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/sharing.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/sharing.spec.ts index ac72fcec28ad1..6c8abf525e0cb 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/sharing.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/sharing.spec.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { createLlmProxy, LlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { FtrProviderContext } from '../../ftr_provider_context'; import { createConnector, deleteConnectors } from '../../common/connectors'; import { deleteConversations } from '../../common/conversations'; diff --git a/x-pack/test/observability_ai_assistant_functional/tests/feature_controls/assistant_security.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/feature_controls/assistant_security.spec.ts index 117a9f11b316e..60c4c369879ba 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/feature_controls/assistant_security.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/feature_controls/assistant_security.spec.ts @@ -10,7 +10,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; import { createLlmProxy, LlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { createConnector, deleteConnectors } from '../../common/connectors'; import { createAndLoginUserWithCustomRole, deleteAndLogoutUser } from './helpers'; diff --git a/x-pack/test/observability_ai_assistant_functional/tests/index.ts b/x-pack/test/observability_ai_assistant_functional/tests/index.ts index 07e81d9488592..76f7a98a07aa2 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/index.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/index.ts @@ -7,8 +7,8 @@ import globby from 'globby'; import path from 'path'; -import { createUsersAndRoles } from '../../observability_ai_assistant_api_integration/common/users/create_users_and_roles'; -import { FtrProviderContext } from '../../observability_ai_assistant_api_integration/common/ftr_provider_context'; +import { createUsersAndRoles } from '../common/users/create_users_and_roles'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; const cwd = path.join(__dirname); diff --git a/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base/index.spec.ts index 7675e710eb690..4ec26fdcb46d2 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base/index.spec.ts @@ -10,7 +10,7 @@ import { KnowledgeBaseState } from '@kbn/observability-ai-assistant-plugin/commo import { LlmProxy, createLlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { FtrProviderContext } from '../../ftr_provider_context'; import { deployTinyElserAndSetupKb, diff --git a/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts index 0abd47f06f705..8e51217c4a3c8 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts @@ -15,7 +15,7 @@ import { teardownTinyElserModelAndInferenceEndpoint, } from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/model_and_inference'; import { clearKnowledgeBase } from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/knowledge_base'; -import { ObservabilityAIAssistantApiClient } from '../../../observability_ai_assistant_api_integration/common/observability_ai_assistant_api_client'; +import { ObservabilityAIAssistantApiClient } from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/observability_ai_assistant_api_client'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ApiTest({ getService, getPageObjects }: FtrProviderContext) { diff --git a/x-pack/test/observability_ai_assistant_functional/tests/settings/change_knowledge_base_model.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/settings/change_knowledge_base_model.spec.ts index ee640f0a01017..12173f7c51727 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/settings/change_knowledge_base_model.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/settings/change_knowledge_base_model.spec.ts @@ -12,7 +12,7 @@ import { createConnector, deleteConnectors } from '../../common/connectors'; import { LlmProxy, createLlmProxy, -} from '../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +} from '../../../api_integration/deployment_agnostic/apis/observability/ai_assistant/utils/create_llm_proxy'; import { deployTinyElserAndSetupKb, stopTinyElserModel, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/ftr_provider_context.ts b/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/ftr_provider_context.ts deleted file mode 100644 index dc8dbbed7536e..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/ftr_provider_context.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { GenericFtrProviderContext } from '@kbn/test'; -import { InheritedServices, InheritedFtrProviderContext } from '../../../../services'; -import { ObservabilityAIAssistantApiClient } from './observability_ai_assistant_api_client'; - -export type ObservabilityAIAssistantServices = InheritedServices & { - observabilityAIAssistantAPIClient: ( - context: InheritedFtrProviderContext - ) => Promise; -}; - -export type FtrProviderContext = GenericFtrProviderContext; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/observability_ai_assistant_api_client.ts b/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/observability_ai_assistant_api_client.ts deleted file mode 100644 index 061175872380f..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/common/observability_ai_assistant_api_client.ts +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - APIReturnType, - ObservabilityAIAssistantAPIClientRequestParamsOf, - ObservabilityAIAssistantAPIEndpoint, -} from '@kbn/observability-ai-assistant-plugin/public'; -import { formatRequest } from '@kbn/server-route-repository'; -import supertest from 'supertest'; -import { Subtract } from 'utility-types'; -import { format } from 'url'; -import { Config } from '@kbn/test'; -import { InheritedFtrProviderContext, SupertestWithRoleScopeType } from '../../../../services'; -import type { InternalRequestHeader, RoleCredentials } from '../../../../../shared/services'; - -export function getObservabilityAIAssistantApiClient({ - svlSharedConfig, - supertestUserWithCookieCredentials, -}: { - svlSharedConfig: Config; - supertestUserWithCookieCredentials?: SupertestWithRoleScopeType; -}) { - if (supertestUserWithCookieCredentials) { - return createObservabilityAIAssistantApiClient(supertestUserWithCookieCredentials); - } else { - const kibanaServer = svlSharedConfig.get('servers.kibana'); - const cAuthorities = svlSharedConfig.get('servers.kibana.certificateAuthorities'); - - const url = format({ - ...kibanaServer, - auth: false, // don't use auth in serverless - }); - return createObservabilityAIAssistantApiClient(supertest.agent(url, { ca: cAuthorities })); - } -} - -type ObservabilityAIAssistantApiClientKey = - | 'slsAdmin' - | 'slsEditor' - | 'slsUser' - | 'slsUnauthorized'; - -export type ObservabilityAIAssistantApiClient = Record< - ObservabilityAIAssistantApiClientKey, - Awaited> ->; - -export function createObservabilityAIAssistantApiClient( - st: SupertestWithRoleScopeType | supertest.Agent -) { - return ( - options: { - type?: 'form-data'; - endpoint: TEndpoint; - roleAuthc?: RoleCredentials; - internalReqHeader?: InternalRequestHeader; - } & ObservabilityAIAssistantAPIClientRequestParamsOf & { - params?: { query?: { _inspect?: boolean } }; - } - ): SupertestReturnType => { - const { endpoint, type, roleAuthc, internalReqHeader } = options; - - const params = 'params' in options ? (options.params as Record) : {}; - - const { method, pathname, version } = formatRequest(endpoint, params.path); - const url = format({ pathname, query: params?.query }); - - const headers: Record = - roleAuthc && internalReqHeader ? { ...internalReqHeader, ...roleAuthc.apiKeyHeader } : {}; - - if (version) { - headers['Elastic-Api-Version'] = version; - } - - let res: supertest.Test; - if (type === 'form-data') { - const fields: Array<[string, any]> = Object.entries(params.body); - const formDataRequest = st[method](url) - .set(headers) - .set('Content-type', 'multipart/form-data'); - for (const field of fields) { - void formDataRequest.field(field[0], field[1]); - } - - res = formDataRequest; - } else if (params.body) { - res = st[method](url).send(params.body).set(headers); - } else { - res = st[method](url).set(headers); - } - - return res as unknown as SupertestReturnType; - }; -} - -export type ObservabilityAIAssistantAPIClient = ReturnType< - typeof createObservabilityAIAssistantApiClient ->; - -type WithoutPromise> = Subtract>; - -// this is a little intense, but without it, method overrides are lost -// e.g., { -// end(one:string) -// end(one:string, two:string) -// } -// would lose the first signature. This keeps up to eight signatures. -type OverloadedParameters = T extends { - (...args: infer A1): any; - (...args: infer A2): any; - (...args: infer A3): any; - (...args: infer A4): any; - (...args: infer A5): any; - (...args: infer A6): any; - (...args: infer A7): any; - (...args: infer A8): any; -} - ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 - : T extends { - (...args: infer A1): any; - (...args: infer A2): any; - (...args: infer A3): any; - (...args: infer A4): any; - (...args: infer A5): any; - (...args: infer A6): any; - (...args: infer A7): any; - } - ? A1 | A2 | A3 | A4 | A5 | A6 | A7 - : T extends { - (...args: infer A1): any; - (...args: infer A2): any; - (...args: infer A3): any; - (...args: infer A4): any; - (...args: infer A5): any; - (...args: infer A6): any; - } - ? A1 | A2 | A3 | A4 | A5 | A6 - : T extends { - (...args: infer A1): any; - (...args: infer A2): any; - (...args: infer A3): any; - (...args: infer A4): any; - (...args: infer A5): any; - } - ? A1 | A2 | A3 | A4 | A5 - : T extends { - (...args: infer A1): any; - (...args: infer A2): any; - (...args: infer A3): any; - (...args: infer A4): any; - } - ? A1 | A2 | A3 | A4 - : T extends { - (...args: infer A1): any; - (...args: infer A2): any; - (...args: infer A3): any; - } - ? A1 | A2 | A3 - : T extends { - (...args: infer A1): any; - (...args: infer A2): any; - } - ? A1 | A2 - : T extends (...args: infer A) => any - ? A - : any; - -type OverrideReturnType any, TNextReturnType> = ( - ...args: OverloadedParameters -) => WithoutPromise> & TNextReturnType; - -type OverwriteThisMethods, TNextReturnType> = TNextReturnType & { - [key in keyof T]: T[key] extends (...args: infer TArgs) => infer TReturnType - ? TReturnType extends Promise - ? OverrideReturnType - : (...args: TArgs) => TReturnType - : T[key]; -}; - -export type SupertestReturnType = - OverwriteThisMethods< - WithoutPromise, - Promise<{ - text: string; - status: number; - body: APIReturnType; - }> - >; - -export async function getObservabilityAIAssistantApiClientService({ - getService, -}: InheritedFtrProviderContext): Promise { - const svlSharedConfig = getService('config'); - const roleScopedSupertest = getService('roleScopedSupertest'); - - // admin user - const supertestAdminWithCookieCredentials: SupertestWithRoleScopeType = - await roleScopedSupertest.getSupertestWithRoleScope('admin', { - useCookieHeader: true, - withInternalHeaders: true, - }); - - // editor user - const supertestEditorWithCookieCredentials: SupertestWithRoleScopeType = - await roleScopedSupertest.getSupertestWithRoleScope('editor', { - useCookieHeader: true, - withInternalHeaders: true, - }); - - // unauthorized user - const supertestUnauthorizedWithCookieCredentials: SupertestWithRoleScopeType = - await roleScopedSupertest.getSupertestWithRoleScope('viewer', { - useCookieHeader: false, - withInternalHeaders: true, - }); - - return { - // defaults to elastic_admin user when used without auth - slsUser: await getObservabilityAIAssistantApiClient({ - svlSharedConfig, - }), - // cookie auth for internal apis - slsAdmin: await getObservabilityAIAssistantApiClient({ - svlSharedConfig, - supertestUserWithCookieCredentials: supertestAdminWithCookieCredentials, - }), - // cookie auth for internal apis - slsEditor: await getObservabilityAIAssistantApiClient({ - svlSharedConfig, - supertestUserWithCookieCredentials: supertestEditorWithCookieCredentials, - }), - slsUnauthorized: await getObservabilityAIAssistantApiClient({ - svlSharedConfig, - supertestUserWithCookieCredentials: supertestUnauthorizedWithCookieCredentials, - }), - }; -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/config.ts b/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/config.ts deleted file mode 100644 index 01e470d2a7d88..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/config.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createTestConfig } from '../../../config.base'; -import { ObservabilityAIAssistantServices } from './common/ftr_provider_context'; -import { services as inheritedServices } from '../../../services'; -import { getObservabilityAIAssistantApiClientService } from './common/observability_ai_assistant_api_client'; - -export const services: ObservabilityAIAssistantServices = { - ...inheritedServices, - observabilityAIAssistantAPIClient: getObservabilityAIAssistantApiClientService, -}; - -export default createTestConfig({ - serverlessProject: 'oblt', - testFiles: [require.resolve('./tests')], - junit: { - reportName: 'Observability AI Assistant API Integration tests', - }, - suiteTags: { exclude: ['skipSvlOblt'] }, - services, - - // include settings from project controller - // https://github.com/elastic/project-controller/blob/main/internal/project/observability/config/elasticsearch.yml - esServerArgs: ['xpack.ml.dfa.enabled=false'], -}); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/tests/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/tests/index.ts deleted file mode 100644 index 26c8a7b2839a9..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/ai_assistant/tests/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import globby from 'globby'; -import path from 'path'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; - -const cwd = path.join(__dirname); - -export default function observabilityAIAssistantApiIntegrationTests({ - loadTestFile, -}: FtrProviderContext) { - describe('Observability AI Assistant API tests', function () { - const filePattern = '**/*.spec.ts'; - const tests = globby.sync(filePattern, { cwd }); - - tests.forEach((testName) => { - describe(testName, () => { - loadTestFile(require.resolve(`./${testName}`)); - }); - }); - }); -} diff --git a/x-pack/test_serverless/tsconfig.json b/x-pack/test_serverless/tsconfig.json index 06136551ec365..18ce563f97982 100644 --- a/x-pack/test_serverless/tsconfig.json +++ b/x-pack/test_serverless/tsconfig.json @@ -81,7 +81,6 @@ "@kbn/search-types", "@kbn/config-schema", "@kbn/features-plugin", - "@kbn/observability-ai-assistant-plugin", "@kbn/test-suites-src", "@kbn/console-plugin", "@kbn/cloud-security-posture-common",