mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 10:40:07 -04:00
[workchat] Initial FTR test setup (#216828)
## Summary This PR adds the structure for workchat FTR tests and adds a few initial tests as an example. ### Details about initially added tests New test directories: - `x-pack/test_serverless/api_integration/test_suites/chat` - load a few common tests (that run on all project types) - run `platform` security tests (taken over from `search` project type) - `x-pack/test_serverless/functional/services/svl_chat_navigation.ts` - load the `home page` common test - run a simple navigation test, using the `svlChatNavigation` service that has been introduced as an example Note that these tests mostly serve as examples to prove things are actually running and will have to be adjusted / removed / extended over time. The purpose of this PR is NOT to add proper test coverage. Closes #213469 --------- Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>
This commit is contained in:
parent
4302da3b6d
commit
e710e98fe0
38 changed files with 2497 additions and 34 deletions
11
.buildkite/ftr_chat_serverless_configs.yml
Normal file
11
.buildkite/ftr_chat_serverless_configs.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
disabled:
|
||||||
|
# Base config files, only necessary to inform config finding script
|
||||||
|
|
||||||
|
defaultQueue: 'n2-4-spot'
|
||||||
|
enabled:
|
||||||
|
- x-pack/test_serverless/api_integration/test_suites/chat/config.ts
|
||||||
|
- x-pack/test_serverless/api_integration/test_suites/chat/config.feature_flags.ts
|
||||||
|
- x-pack/test_serverless/api_integration/test_suites/chat/common_configs/config.group1.ts
|
||||||
|
- x-pack/test_serverless/functional/test_suites/chat/config.ts
|
||||||
|
- x-pack/test_serverless/functional/test_suites/chat/config.feature_flags.ts
|
||||||
|
- x-pack/test_serverless/functional/test_suites/chat/common_configs/config.group1.ts
|
|
@ -9,6 +9,7 @@
|
||||||
".buildkite/ftr_base_serverless_configs.yml",
|
".buildkite/ftr_base_serverless_configs.yml",
|
||||||
".buildkite/ftr_oblt_serverless_configs.yml",
|
".buildkite/ftr_oblt_serverless_configs.yml",
|
||||||
".buildkite/ftr_security_serverless_configs.yml",
|
".buildkite/ftr_security_serverless_configs.yml",
|
||||||
".buildkite/ftr_search_serverless_configs.yml"
|
".buildkite/ftr_search_serverless_configs.yml",
|
||||||
|
".buildkite/ftr_chat_serverless_configs.yml"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
6
.github/CODEOWNERS
vendored
6
.github/CODEOWNERS
vendored
|
@ -2104,6 +2104,12 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints
|
||||||
/x-pack/test_serverless/functional/page_objects/svl_search_* @elastic/search-kibana
|
/x-pack/test_serverless/functional/page_objects/svl_search_* @elastic/search-kibana
|
||||||
/x-pack/test/functional_search/ @elastic/search-kibana
|
/x-pack/test/functional_search/ @elastic/search-kibana
|
||||||
|
|
||||||
|
# workchat
|
||||||
|
/x-pack/test_serverless/api_integration/test_suites/chat @elastic/search-kibana
|
||||||
|
/x-pack/test_serverless/api_integration/test_suites/chat/config.ts @elastic/search-kibana @elastic/appex-qa
|
||||||
|
/x-pack/test_serverless/functional/test_suites/chat/ @elastic/search-kibana
|
||||||
|
/x-pack/test_serverless/functional/test_suites/chat/config.ts @elastic/search-kibana @elastic/appex-qa
|
||||||
|
|
||||||
# Management Experience - Deployment Management
|
# Management Experience - Deployment Management
|
||||||
/src/platform/test/functional/fixtures/kbn_archiver/management.json @elastic/kibana-management @elastic/kibana-data-discovery # Assigned per 2 uses: test/functional/apps/management/_import_objects.ts && test/functional/apps/management/data_views/_scripted_fields_filter.ts
|
/src/platform/test/functional/fixtures/kbn_archiver/management.json @elastic/kibana-management @elastic/kibana-data-discovery # Assigned per 2 uses: test/functional/apps/management/_import_objects.ts && test/functional/apps/management/data_views/_scripted_fields_filter.ts
|
||||||
/x-pack/test/functional/fixtures/kbn_archiver/home/feature_controls/security/security.json @elastic/kibana-management
|
/x-pack/test/functional/fixtures/kbn_archiver/home/feature_controls/security/security.json @elastic/kibana-management
|
||||||
|
|
|
@ -39,6 +39,7 @@ const projectToAlias = new Map<string, string>([
|
||||||
// TODO add new 'chat' solution
|
// TODO add new 'chat' solution
|
||||||
// https://elastic.slack.com/archives/C04HT4P1YS3/p1741690997400059
|
// https://elastic.slack.com/archives/C04HT4P1YS3/p1741690997400059
|
||||||
// https://github.com/elastic/kibana/issues/213469
|
// https://github.com/elastic/kibana/issues/213469
|
||||||
|
// requires update of config/serverless.chat.yml (currently uses projectType 'search')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const readServerlessRoles = (projectType: string) => {
|
const readServerlessRoles = (projectType: string) => {
|
||||||
|
|
|
@ -4,7 +4,7 @@ The resources in this directory are used for seeding Elasticsearch Serverless im
|
||||||
|
|
||||||
## Roles
|
## Roles
|
||||||
|
|
||||||
Roles are defined in `roles.yml` for each project under 'es' | 'oblt' | 'security' folder respectively and intended to mock a Serverless deployment. It must be in sync with `project-controller` defined roles and used in real (MKI) environments. In case of some differences tests may pass against Serverless snapshot environment but fail against MKI environments creating confusion.
|
Roles are defined in `roles.yml` for each project under 'es' | 'oblt' | 'security' | 'chat' folder respectively and intended to mock a Serverless deployment. It must be in sync with `elasticsearch-controller` defined roles and used in real (MKI) environments. In case of some differences tests may pass against Serverless snapshot environment but fail against MKI environments creating confusion.
|
||||||
|
|
||||||
### Why `security_roles.json` is here?
|
### Why `security_roles.json` is here?
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
# -----
|
||||||
|
# Copy from internal roles config in elasticsearch-controller
|
||||||
|
# -----
|
||||||
|
viewer:
|
||||||
|
cluster: ['manage_own_api_key', 'read_pipeline']
|
||||||
|
indices:
|
||||||
|
- names:
|
||||||
|
- '*'
|
||||||
|
privileges:
|
||||||
|
- 'read'
|
||||||
|
- 'view_index_metadata'
|
||||||
|
applications:
|
||||||
|
- application: 'kibana-.kibana'
|
||||||
|
privileges:
|
||||||
|
- 'read'
|
||||||
|
resources:
|
||||||
|
- '*'
|
||||||
|
developer:
|
||||||
|
cluster: ['all']
|
||||||
|
indices:
|
||||||
|
- names:
|
||||||
|
- '*'
|
||||||
|
privileges:
|
||||||
|
- 'all'
|
||||||
|
applications:
|
||||||
|
- application: 'kibana-.kibana'
|
||||||
|
privileges:
|
||||||
|
- 'all'
|
||||||
|
resources:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
# admin role defined in elasticsearch controller
|
||||||
|
admin:
|
||||||
|
cluster: ['all']
|
||||||
|
indices:
|
||||||
|
- names: ['*']
|
||||||
|
privileges: ['all']
|
||||||
|
allow_restricted_indices: false
|
||||||
|
applications:
|
||||||
|
- application: '*'
|
||||||
|
privileges: ['*']
|
||||||
|
resources: ['*']
|
||||||
|
|
||||||
|
# temporarily added for testing purpose
|
||||||
|
system_indices_superuser:
|
||||||
|
cluster: ['all']
|
||||||
|
indices:
|
||||||
|
- names: ['*']
|
||||||
|
privileges: ['all']
|
||||||
|
allow_restricted_indices: true
|
||||||
|
applications:
|
||||||
|
- application: '*'
|
||||||
|
privileges: ['*']
|
||||||
|
resources: ['*']
|
||||||
|
run_as: ['*']
|
|
@ -1,5 +1,5 @@
|
||||||
# -----
|
# -----
|
||||||
# Source: project-controller/blob/main/internal/project/esproject/config/roles.yml
|
# Copy from internal roles config in elasticsearch-controller
|
||||||
# -----
|
# -----
|
||||||
viewer:
|
viewer:
|
||||||
cluster: ['manage_own_api_key', 'read_pipeline']
|
cluster: ['manage_own_api_key', 'read_pipeline']
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -----
|
# -----
|
||||||
# Source: project-controller/blob/main/internal/project/security/config/roles.yml
|
# Copy from internal roles config in elasticsearch-controller
|
||||||
# -----
|
# -----
|
||||||
viewer:
|
viewer:
|
||||||
cluster: []
|
cluster: []
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -----
|
# -----
|
||||||
# Source: project-controller/blob/main/internal/project/security/config/roles.yml
|
# Copy from internal roles config in elasticsearch-controller
|
||||||
# -----
|
# -----
|
||||||
# modeled after the t1_analyst minus osquery run saved queries privilege
|
# modeled after the t1_analyst minus osquery run saved queries privilege
|
||||||
viewer:
|
viewer:
|
||||||
|
|
|
@ -63,12 +63,12 @@ interface BaseOptions extends ImageOptions {
|
||||||
files?: string | string[];
|
files?: string | string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const serverlessProjectTypes = new Set<string>(['es', 'oblt', 'security']);
|
export const serverlessProjectTypes = new Set<string>(['es', 'oblt', 'security', 'chat']);
|
||||||
export const isServerlessProjectType = (value: string): value is ServerlessProjectType => {
|
export const isServerlessProjectType = (value: string): value is ServerlessProjectType => {
|
||||||
return serverlessProjectTypes.has(value);
|
return serverlessProjectTypes.has(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
export type ServerlessProjectType = 'es' | 'oblt' | 'security';
|
export type ServerlessProjectType = 'es' | 'oblt' | 'security' | 'chat';
|
||||||
|
|
||||||
export interface DockerOptions extends EsClusterExecOptions, BaseOptions {
|
export interface DockerOptions extends EsClusterExecOptions, BaseOptions {
|
||||||
dockerCmd?: string;
|
dockerCmd?: string;
|
||||||
|
|
|
@ -23,6 +23,7 @@ const projectDefaultRoles = new Map<string, Role>([
|
||||||
['es', 'developer'],
|
['es', 'developer'],
|
||||||
['security', 'editor'],
|
['security', 'editor'],
|
||||||
['oblt', 'editor'],
|
['oblt', 'editor'],
|
||||||
|
['chat', 'developer'], // TODO: double check if it's really 'developer'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const projectTypesWithCustomRolesEnabled = ['es', 'security'];
|
const projectTypesWithCustomRolesEnabled = ['es', 'security'];
|
||||||
|
|
|
@ -7,9 +7,10 @@
|
||||||
* License v3.0 only", or the "Server Side Public License, v 1".
|
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const SERVERLESS_ONLY = ['@svlSecurity', '@svlOblt', '@svlSearch'];
|
const SERVERLESS_ONLY = ['@svlSecurity', '@svlOblt', '@svlSearch', '@svlChat'];
|
||||||
const ESS_ONLY = ['@ess'];
|
const ESS_ONLY = ['@ess'];
|
||||||
const DEPLOYMENT_AGNOSTIC = SERVERLESS_ONLY.concat(ESS_ONLY);
|
// svlChat is truly serverless only and doesn't have a stateful counterpart
|
||||||
|
const DEPLOYMENT_AGNOSTIC = ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'];
|
||||||
const PERFORMANCE = ['@perf'];
|
const PERFORMANCE = ['@perf'];
|
||||||
|
|
||||||
export const tags = {
|
export const tags = {
|
||||||
|
@ -22,6 +23,7 @@ export const tags = {
|
||||||
export const tagsByMode = {
|
export const tagsByMode = {
|
||||||
stateful: '@ess',
|
stateful: '@ess',
|
||||||
serverless: {
|
serverless: {
|
||||||
|
chat: '@svlChat',
|
||||||
es: '@svlSearch',
|
es: '@svlSearch',
|
||||||
oblt: '@svlOblt',
|
oblt: '@svlOblt',
|
||||||
security: '@svlSecurity',
|
security: '@svlSecurity',
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { HomeIntegrationSection } from './home_integration_section';
|
||||||
|
|
||||||
export const WorkChatHomeView: React.FC<{}> = () => {
|
export const WorkChatHomeView: React.FC<{}> = () => {
|
||||||
return (
|
return (
|
||||||
<KibanaPageTemplate panelled>
|
<KibanaPageTemplate panelled data-test-subj="workChatHomePage">
|
||||||
<KibanaPageTemplate.Header pageTitle="WorkChat" />
|
<KibanaPageTemplate.Header pageTitle="WorkChat" />
|
||||||
|
|
||||||
<HomeAgentSection />
|
<HomeAgentSection />
|
||||||
|
|
|
@ -36,6 +36,7 @@ const esServerArgsFromController = {
|
||||||
'xpack.ml.dfa.enabled=false',
|
'xpack.ml.dfa.enabled=false',
|
||||||
],
|
],
|
||||||
security: ['xpack.security.authc.api_key.cache.max_keys=70000'],
|
security: ['xpack.security.authc.api_key.cache.max_keys=70000'],
|
||||||
|
chat: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
// include settings from kibana controller
|
// include settings from kibana controller
|
||||||
|
@ -55,6 +56,7 @@ const kbnServerArgsFromController = {
|
||||||
// disable fleet task that writes to metrics.fleet_server.* data streams, impacting functional tests
|
// disable fleet task that writes to metrics.fleet_server.* data streams, impacting functional tests
|
||||||
`--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['Fleet-Metrics-Task'])}`,
|
`--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['Fleet-Metrics-Task'])}`,
|
||||||
],
|
],
|
||||||
|
chat: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
export function createServerlessTestConfig<T extends DeploymentAgnosticCommonServices>(
|
export function createServerlessTestConfig<T extends DeploymentAgnosticCommonServices>(
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
|
|
||||||
The tests and helper methods (services, page objects) defined here in
|
The tests and helper methods (services, page objects) defined here in
|
||||||
`x-pack/test_serverless` cover the serverless functionality introduced by the
|
`x-pack/test_serverless` cover the serverless functionality introduced by the
|
||||||
`serverless`, `serverless_observability`, `serverless_search` and
|
`serverless`, `serverless_observability`, `serverless_search`, `security_solution_serverless` and `serverless_chat` plugins.
|
||||||
`serverless_security` plugins.
|
|
||||||
|
|
||||||
For how to set up Docker for serverless ES images, please refer to
|
For how to set up Docker for serverless ES images, please refer to
|
||||||
[src/platform/packages/shared/kbn-es/README](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-es/README.mdx).
|
[src/platform/packages/shared/kbn-es/README](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-es/README.mdx).
|
||||||
|
@ -19,6 +18,7 @@ set of helper methods and sub-directories for
|
||||||
- `observability` project specific functionality
|
- `observability` project specific functionality
|
||||||
- `search` project specific functionality
|
- `search` project specific functionality
|
||||||
- `security` project specific functionality
|
- `security` project specific functionality
|
||||||
|
- `chat` project specific functionality
|
||||||
|
|
||||||
The `shared` directory contains fixtures, services, ... that are shared across
|
The `shared` directory contains fixtures, services, ... that are shared across
|
||||||
`api_integration` abd `functional` tests.
|
`api_integration` abd `functional` tests.
|
||||||
|
@ -28,6 +28,7 @@ x-pack/test_serverless/
|
||||||
├─ api_integration
|
├─ api_integration
|
||||||
│ ├─ services
|
│ ├─ services
|
||||||
│ ├─ test_suites
|
│ ├─ test_suites
|
||||||
|
│ │ ├─ chat
|
||||||
│ │ ├─ common
|
│ │ ├─ common
|
||||||
│ │ ├─ observability
|
│ │ ├─ observability
|
||||||
│ │ ├─ search
|
│ │ ├─ search
|
||||||
|
@ -36,6 +37,7 @@ x-pack/test_serverless/
|
||||||
│ ├─ page_objects
|
│ ├─ page_objects
|
||||||
│ ├─ services
|
│ ├─ services
|
||||||
│ ├─ test_suites
|
│ ├─ test_suites
|
||||||
|
│ │ ├─ chat
|
||||||
│ │ ├─ common
|
│ │ ├─ common
|
||||||
│ │ ├─ observability
|
│ │ ├─ observability
|
||||||
│ │ ├─ search
|
│ │ ├─ search
|
||||||
|
@ -52,25 +54,25 @@ covering functionality that's shared across serverless projects. That's why thes
|
||||||
don't have a dedicated config file and instead need to be included in project specific
|
don't have a dedicated config file and instead need to be included in project specific
|
||||||
configurations.
|
configurations.
|
||||||
|
|
||||||
**If you add a new `api_integration` or `functional` `common` sub-directory, remember to add it to the corresponding `common_configs` of all projects (`x-pack/test_serverless/[api_integration|functional]/test_suites/[observability|search|security]/common_configs`).**
|
**If you add a new `api_integration` or `functional` `common` sub-directory, remember to add it to the corresponding `common_configs` of all projects (`x-pack/test_serverless/[api_integration|functional]/test_suites/[chat|observability|search|security]/common_configs`).**
|
||||||
|
|
||||||
In case a common test needs to be skipped for one of the projects
|
In case a common test needs to be skipped for one of the projects
|
||||||
(in both regular pipelines that start KBN in serverless mode [against serverless ES] & pipelines creating serverless projects in MKI [Cloud]),
|
(in both regular pipelines that start KBN in serverless mode [against serverless ES] & pipelines creating serverless projects in MKI [Cloud]),
|
||||||
there are the following suite tags available to do so:
|
there are the following suite tags available to do so:
|
||||||
`skipSvlOblt`, `skipSvlSearch`, `skipSvlSec`, which can be added like this to a test suite:
|
`skipSvlChat`, `skipSvlOblt`, `skipSvlSearch`, `skipSvlSec`, which can be added like this to a test suite:
|
||||||
|
|
||||||
```
|
```
|
||||||
describe('my test suite', function () {
|
describe('my test suite', function () {
|
||||||
this.tags(['skipSvlOblt', 'skipSvlSearch', 'skipSvlSec']);
|
this.tags(['skipSvlChat', 'skipSvlOblt', 'skipSvlSearch', 'skipSvlSec']);
|
||||||
// or for a single tag: this.tags('skipSvlSec');
|
// or for a single tag: this.tags('skipSvlSec');
|
||||||
[...]
|
[...]
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
Tests that are designed to only run in one of the projects should be added to the project
|
Tests that are designed to only run in one of the projects should be added to the project
|
||||||
specific test directory and not to `common` with two skips.
|
specific test directory and not to `common` with three skips.
|
||||||
|
|
||||||
Note, that `common` tests are invoked three times in a full test run: once per project to make
|
Note, that `common` tests are invoked up to four times in a full test run: once per project to make
|
||||||
sure the covered shared functionality works correctly in every project. So when writing tests there, be mindful about the test run time.
|
sure the covered shared functionality works correctly in every project. So when writing tests there, be mindful about the test run time.
|
||||||
|
|
||||||
See also the README files for [Serverless Common API Integration Tests](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/api_integration/test_suites/common/README.md) and [Serverless Common Functional Tests](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/functional/test_suites/common/README.md).
|
See also the README files for [Serverless Common API Integration Tests](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/api_integration/test_suites/common/README.md) and [Serverless Common Functional Tests](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/functional/test_suites/common/README.md).
|
||||||
|
@ -93,6 +95,7 @@ following namespaces:
|
||||||
| observability | svlOblt |
|
| observability | svlOblt |
|
||||||
| search | svlSearch |
|
| search | svlSearch |
|
||||||
| security | svlSec |
|
| security | svlSec |
|
||||||
|
| chat | svlChat |
|
||||||
|
|
||||||
### Adding Serverless Tests
|
### Adding Serverless Tests
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrConfigProviderContext } from '@kbn/test';
|
||||||
|
|
||||||
|
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||||
|
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
|
||||||
|
|
||||||
|
return {
|
||||||
|
...baseTestConfig.getAll(),
|
||||||
|
testFiles: [
|
||||||
|
require.resolve('../../common/core'),
|
||||||
|
require.resolve('../../common/elasticsearch_api'),
|
||||||
|
],
|
||||||
|
junit: {
|
||||||
|
reportName: 'Serverless Chat API Integration Tests - Common Group 1',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* 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';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
|
* These tests most likely will fail on default MKI project
|
||||||
|
*/
|
||||||
|
export default createTestConfig({
|
||||||
|
serverlessProject: 'chat',
|
||||||
|
junit: {
|
||||||
|
reportName: 'Serverless Chat Feature Flags API Integration Tests',
|
||||||
|
},
|
||||||
|
suiteTags: { exclude: ['skipSvlChat'] },
|
||||||
|
// add feature flags
|
||||||
|
kbnServerArgs: [
|
||||||
|
// e.g. `--xpack.searchIndices.enabled=true`, // global empty state FF
|
||||||
|
],
|
||||||
|
// load tests in the index file
|
||||||
|
testFiles: [require.resolve('./index.feature_flags.ts')],
|
||||||
|
|
||||||
|
// include settings from project controller
|
||||||
|
esServerArgs: [],
|
||||||
|
});
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* 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';
|
||||||
|
|
||||||
|
export default createTestConfig({
|
||||||
|
serverlessProject: 'chat',
|
||||||
|
testFiles: [require.resolve('.')],
|
||||||
|
junit: {
|
||||||
|
reportName: 'Serverless Chat API Integration Tests',
|
||||||
|
},
|
||||||
|
suiteTags: { exclude: ['skipSvlChat'] },
|
||||||
|
|
||||||
|
// include settings from project controller
|
||||||
|
esServerArgs: [],
|
||||||
|
kbnServerArgs: [],
|
||||||
|
});
|
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
|
export default function ({ loadTestFile }: FtrProviderContext) {
|
||||||
|
describe('Serverless chat API - feature flags', function () {
|
||||||
|
// loadTestFile(require.resolve('./path/to/tests'));
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
|
export default function ({ loadTestFile }: FtrProviderContext) {
|
||||||
|
describe('Serverless chat API', function () {
|
||||||
|
this.tags(['esGate']);
|
||||||
|
|
||||||
|
loadTestFile(require.resolve('./platform_security'));
|
||||||
|
});
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../../../ftr_provider_context';
|
||||||
|
|
||||||
|
export default function ({ loadTestFile }: FtrProviderContext) {
|
||||||
|
describe('Platform security APIs', function () {
|
||||||
|
loadTestFile(require.resolve('./authorization'));
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,11 +1,11 @@
|
||||||
# Kibana Serverless Common API Integration Tests
|
# Kibana Serverless Common API Integration Tests
|
||||||
|
|
||||||
The `common` tests in this directory are not project specific and are running
|
The `common` tests in this directory are not project specific and are running
|
||||||
in two or three of the projects. You can use tags to exclude one of the
|
in two or more of the projects. You can use tags to exclude one of the
|
||||||
projects: `skipSvlOblt`, `skipSvlSearch`, `skipSvlSec`. If no such tag is added,
|
projects: `skipSvlChat`, `skipSvlOblt`, `skipSvlSearch`, `skipSvlSec`. If no such tag is added,
|
||||||
the test will run in all three projects.
|
the test will run in all projects that load this test file in a common config.
|
||||||
Tests that are designed to only run in one of the projects should be added to
|
Tests that are designed to only run in one of the projects should be added to
|
||||||
the project specific test directory and not to `common` with two skips.
|
the project specific test directory and not to `common` with three skips.
|
||||||
|
|
||||||
For more information about serverless tests please refer to
|
For more information about serverless tests please refer to
|
||||||
[x-pack/test_serverless/README](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/README.md).
|
[x-pack/test_serverless/README](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/README.md).
|
||||||
|
@ -16,7 +16,7 @@ For more information about serverless tests please refer to
|
||||||
configs.
|
configs.
|
||||||
- There's no top level index file and tests are organized in sub-directories in
|
- There's no top level index file and tests are organized in sub-directories in
|
||||||
order to better group them based on test run time.
|
order to better group them based on test run time.
|
||||||
- **If you add a new `common` sub-directory, remember to add it to the `common_configs` of all projects (`x-pack/test_serverless/api_integration/test_suites/[observability|search|security]/common_configs`)**
|
- **If you add a new `common` sub-directory, remember to add it to the `common_configs` of applicable projects (`x-pack/test_serverless/api_integration/test_suites/[chat|observability|search|security]/common_configs`)**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { services } from './apm_api_integration/common/services';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
* This tests most likely will fail on default MKI project
|
* These tests most likely will fail on default MKI project
|
||||||
*/
|
*/
|
||||||
export default createTestConfig({
|
export default createTestConfig({
|
||||||
serverlessProject: 'oblt',
|
serverlessProject: 'oblt',
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { createTestConfig } from '../../config.base';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
* This tests most likely will fail on default MKI project
|
* These tests most likely will fail on default MKI project
|
||||||
*/
|
*/
|
||||||
export default createTestConfig({
|
export default createTestConfig({
|
||||||
serverlessProject: 'es',
|
serverlessProject: 'es',
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { createTestConfig } from '../../config.base';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
* This tests most likely will fail on default MKI project
|
* These tests most likely will fail on default MKI project
|
||||||
*/
|
*/
|
||||||
export default createTestConfig({
|
export default createTestConfig({
|
||||||
serverlessProject: 'security',
|
serverlessProject: 'security',
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
import { ComboBoxService } from '@kbn/test-suites-src/functional/services/combo_box';
|
import { ComboBoxService } from '@kbn/test-suites-src/functional/services/combo_box';
|
||||||
import { services as deploymentAgnosticFunctionalServices } from './deployment_agnostic_services';
|
import { services as deploymentAgnosticFunctionalServices } from './deployment_agnostic_services';
|
||||||
import { services as svlSharedServices } from '../../shared/services';
|
import { services as svlSharedServices } from '../../shared/services';
|
||||||
|
import { SvlChatNavigationServiceProvider } from './svl_chat_navigation';
|
||||||
import { SvlCommonNavigationServiceProvider } from './svl_common_navigation';
|
import { SvlCommonNavigationServiceProvider } from './svl_common_navigation';
|
||||||
import { SvlObltNavigationServiceProvider } from './svl_oblt_navigation';
|
import { SvlObltNavigationServiceProvider } from './svl_oblt_navigation';
|
||||||
import { SvlSearchNavigationServiceProvider } from './svl_search_navigation';
|
import { SvlSearchNavigationServiceProvider } from './svl_search_navigation';
|
||||||
|
@ -25,6 +26,7 @@ export const services = {
|
||||||
|
|
||||||
// serverless FTR services
|
// serverless FTR services
|
||||||
...svlSharedServices,
|
...svlSharedServices,
|
||||||
|
svlChatNavigation: SvlChatNavigationServiceProvider,
|
||||||
svlCommonNavigation: SvlCommonNavigationServiceProvider,
|
svlCommonNavigation: SvlCommonNavigationServiceProvider,
|
||||||
svlObltNavigation: SvlObltNavigationServiceProvider,
|
svlObltNavigation: SvlObltNavigationServiceProvider,
|
||||||
svlSearchNavigation: SvlSearchNavigationServiceProvider,
|
svlSearchNavigation: SvlSearchNavigationServiceProvider,
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../ftr_provider_context';
|
||||||
|
|
||||||
|
export function SvlChatNavigationServiceProvider({
|
||||||
|
getService,
|
||||||
|
getPageObjects,
|
||||||
|
}: FtrProviderContext) {
|
||||||
|
const retry = getService('retry');
|
||||||
|
const PageObjects = getPageObjects(['common']);
|
||||||
|
const testSubjects = getService('testSubjects');
|
||||||
|
|
||||||
|
return {
|
||||||
|
async navigateToLandingPage() {
|
||||||
|
await retry.tryForTime(60 * 1000, async () => {
|
||||||
|
await PageObjects.common.navigateToApp('landingPage');
|
||||||
|
await testSubjects.existOrFail('workChatHomePage', { timeout: 2000 });
|
||||||
|
await testSubjects.existOrFail('projectLayoutSideNav', { timeout: 2000 });
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrConfigProviderContext } from '@kbn/test';
|
||||||
|
|
||||||
|
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||||
|
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
|
||||||
|
|
||||||
|
return {
|
||||||
|
...baseTestConfig.getAll(),
|
||||||
|
testFiles: [require.resolve('../../common/home_page')],
|
||||||
|
junit: {
|
||||||
|
reportName: 'Serverless Chat Functional Tests - Common Group 1',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* 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';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
|
* These tests most likely will fail on default MKI project
|
||||||
|
*/
|
||||||
|
export default createTestConfig({
|
||||||
|
serverlessProject: 'chat',
|
||||||
|
junit: {
|
||||||
|
reportName: 'Serverless Chat Feature Flags Functional Tests',
|
||||||
|
},
|
||||||
|
suiteTags: { exclude: ['skipSvlChat'] },
|
||||||
|
// add feature flags
|
||||||
|
kbnServerArgs: [
|
||||||
|
// e.g. `--xpack.cloud.id=ES3_FTR_TESTS:ZmFrZS1kb21haW4uY2xkLmVsc3RjLmNvJGZha2Vwcm9qZWN0aWQuZXMkZmFrZXByb2plY3RpZC5rYg==`,
|
||||||
|
],
|
||||||
|
// load tests in the index file
|
||||||
|
testFiles: [require.resolve('./index.feature_flags.ts')],
|
||||||
|
|
||||||
|
// include settings from project controller
|
||||||
|
esServerArgs: [],
|
||||||
|
|
||||||
|
apps: {},
|
||||||
|
});
|
23
x-pack/test_serverless/functional/test_suites/chat/config.ts
Normal file
23
x-pack/test_serverless/functional/test_suites/chat/config.ts
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* 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';
|
||||||
|
|
||||||
|
export default createTestConfig({
|
||||||
|
serverlessProject: 'chat',
|
||||||
|
testFiles: [require.resolve('.')],
|
||||||
|
junit: {
|
||||||
|
reportName: 'Serverless Chat Functional Tests',
|
||||||
|
},
|
||||||
|
suiteTags: { exclude: ['skipSvlChat'] },
|
||||||
|
|
||||||
|
// include settings from project controller
|
||||||
|
esServerArgs: [],
|
||||||
|
kbnServerArgs: [],
|
||||||
|
|
||||||
|
apps: {},
|
||||||
|
});
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
|
export default function ({ loadTestFile }: FtrProviderContext) {
|
||||||
|
describe('serverless chat UI - feature flags', function () {
|
||||||
|
// add tests that require feature flags, defined in config.feature_flags.ts
|
||||||
|
// loadTestFile(require.resolve('./path/to/tests'));
|
||||||
|
});
|
||||||
|
}
|
16
x-pack/test_serverless/functional/test_suites/chat/index.ts
Normal file
16
x-pack/test_serverless/functional/test_suites/chat/index.ts
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../../ftr_provider_context';
|
||||||
|
|
||||||
|
export default function ({ loadTestFile }: FtrProviderContext) {
|
||||||
|
describe('serverless chat UI', function () {
|
||||||
|
this.tags(['esGate']);
|
||||||
|
|
||||||
|
loadTestFile(require.resolve('./navigation/navigation.ts'));
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* 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 { FtrProviderContext } from '../../../ftr_provider_context';
|
||||||
|
|
||||||
|
export default function ({ getPageObject, getService }: FtrProviderContext) {
|
||||||
|
const svlChatNavigation = getService('svlChatNavigation');
|
||||||
|
const svlCommonPage = getPageObject('svlCommonPage');
|
||||||
|
|
||||||
|
describe('navigation', function () {
|
||||||
|
before(async () => {
|
||||||
|
await svlCommonPage.loginWithRole('developer');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('navigates to landing page', async () => {
|
||||||
|
await svlChatNavigation.navigateToLandingPage();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,11 +1,11 @@
|
||||||
# Kibana Serverless Common Functional Tests
|
# Kibana Serverless Common Functional Tests
|
||||||
|
|
||||||
The `common` tests in this directory are not project specific and are running
|
The `common` tests in this directory are not project specific and are running
|
||||||
in two or three of the projects. You can use tags to exclude one of the
|
in two or more of the projects. You can use tags to exclude one of the
|
||||||
projects: `skipSvlOblt`, `skipSvlSearch`, `skipSvlSec`. If no such tag is added,
|
projects: `skipSvlChat`, `skipSvlOblt`, `skipSvlSearch`, `skipSvlSec`. If no such tag is added,
|
||||||
the test will run in all three projects.
|
the test will run in all projects that load this test file in a common config.
|
||||||
Tests that are designed to only run in one of the projects should be added to
|
Tests that are designed to only run in one of the projects should be added to
|
||||||
the project specific test directory and not to `common` with two skips.
|
the project specific test directory and not to `common` with three skips.
|
||||||
|
|
||||||
For more information about serverless tests please refer to
|
For more information about serverless tests please refer to
|
||||||
[x-pack/test_serverless/README](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/README.md).
|
[x-pack/test_serverless/README](https://github.com/elastic/kibana/blob/main/x-pack/test_serverless/README.md).
|
||||||
|
@ -16,7 +16,7 @@ For more information about serverless tests please refer to
|
||||||
configs.
|
configs.
|
||||||
- There's no top level index file and tests are organized in sub-directories in
|
- There's no top level index file and tests are organized in sub-directories in
|
||||||
order to better group them based on test run time.
|
order to better group them based on test run time.
|
||||||
- **If you add a new `common` sub-directory, remember to add it to the `common_configs` of all projects (`x-pack/test_serverless/functional/test_suites/[observability|search|security]/common_configs`)**
|
- **If you add a new `common` sub-directory, remember to add it to the `common_configs` of applicable projects (`x-pack/test_serverless/functional/test_suites/[chat|observability|search|security]/common_configs`)**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { createTestConfig } from '../../config.base';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
* This tests most likely will fail on default MKI project
|
* These tests most likely will fail on default MKI project
|
||||||
*/
|
*/
|
||||||
export default createTestConfig({
|
export default createTestConfig({
|
||||||
serverlessProject: 'oblt',
|
serverlessProject: 'oblt',
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { createTestConfig } from '../../config.base';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
* This tests most likely will fail on default MKI project
|
* These tests most likely will fail on default MKI project
|
||||||
*/
|
*/
|
||||||
export default createTestConfig({
|
export default createTestConfig({
|
||||||
serverlessProject: 'es',
|
serverlessProject: 'es',
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { createTestConfig } from '../../config.base';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
* Make sure to create a MKI deployment with custom Kibana image, that includes feature flags arguments
|
||||||
* This tests most likely will fail on default MKI project
|
* These tests most likely will fail on default MKI project
|
||||||
*/
|
*/
|
||||||
export default createTestConfig({
|
export default createTestConfig({
|
||||||
serverlessProject: 'security',
|
serverlessProject: 'security',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue