diff --git a/.buildkite/scripts/steps/checks/check_scout_config.sh b/.buildkite/scripts/steps/checks/check_scout_config.sh index 763a3025469d8..2634fd8d3992e 100644 --- a/.buildkite/scripts/steps/checks/check_scout_config.sh +++ b/.buildkite/scripts/steps/checks/check_scout_config.sh @@ -5,4 +5,11 @@ set -euo pipefail source .buildkite/scripts/common/util.sh echo --- Check for unregistered Scout Playwright configs -node scripts/scout discover-playwright-configs --validate +node scripts/scout discover-playwright-configs --validate + +echo --- Make sure Scout config manifests are up to date +node scripts/scout update-test-config-manifests +check_for_changed_files \ + "node scripts/scout update-test-config-manifests" \ + true \ + "[Scout] Automated config manifest updates" diff --git a/.buildkite/scripts/steps/checks/quick_checks.json b/.buildkite/scripts/steps/checks/quick_checks.json index 719ba290ab1ff..679ac470ab8ec 100644 --- a/.buildkite/scripts/steps/checks/quick_checks.json +++ b/.buildkite/scripts/steps/checks/quick_checks.json @@ -75,7 +75,8 @@ "mayChangeFiles": true }, { - "script": ".buildkite/scripts/steps/checks/check_scout_config.sh" + "script": ".buildkite/scripts/steps/checks/check_scout_config.sh", + "mayChangeFiles": true }, { "script": ".buildkite/scripts/steps/checks/dependencies_diff.sh", diff --git a/src/platform/packages/private/kbn-scout-info/src/paths.ts b/src/platform/packages/private/kbn-scout-info/src/paths.ts index 17665220a2e19..207d90dee5947 100644 --- a/src/platform/packages/private/kbn-scout-info/src/paths.ts +++ b/src/platform/packages/private/kbn-scout-info/src/paths.ts @@ -13,18 +13,41 @@ import { REPO_ROOT } from '@kbn/repo-info'; export const SCOUT_OUTPUT_ROOT = path.resolve(REPO_ROOT, '.scout'); // Servers + export const SCOUT_SERVERS_ROOT = path.resolve(SCOUT_OUTPUT_ROOT, 'servers'); // Reporting + export const SCOUT_REPORT_OUTPUT_ROOT = path.resolve(SCOUT_OUTPUT_ROOT, 'reports'); export const SCOUT_TEST_CONFIG_STATS_PATH = path.resolve( SCOUT_OUTPUT_ROOT, 'test_config_stats.json' ); -// Scout playwright configs +// Scout definitions + export const SCOUT_PLAYWRIGHT_CONFIGS_PATH = path.resolve( SCOUT_OUTPUT_ROOT, 'test_configs', 'scout_playwright_configs.json' ); + +export const TESTABLE_COMPONENT_SCOUT_ROOT_PATH_GLOB = + '{src/platform,x-pack/**}/{plugins,packages}/**/test/scout'; + +export const TESTABLE_COMPONENT_SCOUT_ROOT_PATH_REGEX = new RegExp( + `(?:src|x-pack)` + + `\/(?:(platform)|solutions\/(\\w+))` + // 1: platform, 2: solution + `\/(plugins|packages)` + // 3: plugin or package + `\/?(shared|private|)` + // 4: artifact visibility + `\/([\\w|-]*)` + // 5: plugin/package name + `\/test\/scout(?:_([^\\/]*))?` // 6: custom target config set name +); +export const SCOUT_CONFIG_PATH_GLOB = + TESTABLE_COMPONENT_SCOUT_ROOT_PATH_GLOB + '/{ui,api}/{,*.}playwright.config.ts'; + +export const SCOUT_CONFIG_PATH_REGEX = new RegExp( + TESTABLE_COMPONENT_SCOUT_ROOT_PATH_REGEX.source + + `\/(api|ui)` + // 7: Scout test category + `\/(\\w*)\\.?playwright.config.ts` // 8: Scout config type +); diff --git a/src/platform/packages/private/kbn-scout-reporting/src/helpers/index.ts b/src/platform/packages/private/kbn-scout-reporting/src/helpers/index.ts index 2550c08f378f6..d6fe3a0c11033 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/helpers/index.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/helpers/index.ts @@ -10,4 +10,4 @@ export { getKibanaModuleData, type KibanaModuleMetadata } from './read_manifest'; export { excapeHtmlCharacters, stripFilePath, parseStdout } from './text_processing'; export { getRunTarget, stripRunCommand } from './cli_processing'; -export { getTestIDForTitle, generateTestRunId } from './test_id_generator'; +export { computeTestID, generateTestRunId } from './test_id_generator'; diff --git a/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.test.ts b/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.test.ts new file mode 100644 index 0000000000000..b9133466aa9fd --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.test.ts @@ -0,0 +1,44 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { generateTestRunId, computeTestID } from './test_id_generator'; +import path from 'node:path'; + +describe('generateTestRunId', () => { + it("generates random 16 char string every time it's called", () => { + const hashes: string[] = []; + + for (let i = 0; i < 10; i++) { + const hash = generateTestRunId(); + expect(hash).toHaveLength(16); + expect(hashes.includes(hash)).toBeFalsy(); + hashes.push(hash); + } + }); +}); + +describe('computeTestID', () => { + it('returns the same output every time if the inputs are the same', () => { + const getTestID = () => computeTestID(path.join('some_functionality.spec.ts'), test.name); + const expectedTestId = '5895f3c6f599ba8-9f86d081884c7d6'; // hard-coded to detect any changes in hash calculations + const testID = getTestID(); + + expect(testID).toEqual(expectedTestId); + expect(getTestID()).toEqual(testID); + }); + + it('output is two 15 char hashes joined by a dash', () => { + expect(computeTestID('foo/bar', 'baz bat')).toMatch(/\w{15}-\w{15}/); + }); + + it("doesn't accept zero-length inputs", () => { + expect(() => computeTestID('some/path', '')).toThrow(); + expect(() => computeTestID('', 'some test title')).toThrow(); + }); +}); diff --git a/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.ts b/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.ts index 525f5b46d40d8..f5444ea1ab67a 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/helpers/test_id_generator.ts @@ -13,6 +13,15 @@ export function generateTestRunId() { return randomBytes(8).toString('hex'); } -export function getTestIDForTitle(title: string) { - return createHash('sha256').update(title).digest('hex').slice(0, 31); +export function computeTestID(testFilePath: string, testTitle: string) { + if (testFilePath.length === 0 || testTitle.length === 0) { + throw new Error( + 'Inputs used to compute test IDs cannot be zero-length' + + ` (got testFilePath='${testFilePath}', testTitle='${testTitle}')` + ); + } + + return [testFilePath, testTitle] + .map((input) => createHash('sha256').update(input).digest('hex').slice(0, 15)) + .join('-'); } diff --git a/src/platform/packages/private/kbn-scout-reporting/src/registry/index.ts b/src/platform/packages/private/kbn-scout-reporting/src/registry/index.ts new file mode 100644 index 0000000000000..3e7af1c08b564 --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/registry/index.ts @@ -0,0 +1,11 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './test_config'; +export * from './testable_module'; diff --git a/src/platform/packages/private/kbn-scout-reporting/src/registry/manifest.ts b/src/platform/packages/private/kbn-scout-reporting/src/registry/manifest.ts new file mode 100644 index 0000000000000..b3446fb1464fe --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/registry/manifest.ts @@ -0,0 +1,33 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { simpleGit, type SimpleGit } from 'simple-git'; +import { REPO_ROOT } from '@kbn/repo-info'; +import type { TestCase } from '@playwright/test/reporter'; + +let git: SimpleGit; + +export const getGitSHA1ForPath = async (p: string) => { + if (git === undefined) git = simpleGit(REPO_ROOT); + return (await git.raw(['ls-tree', '--object-only', 'HEAD', p])).trim(); +}; + +export interface ScoutConfigManifest { + path: string; + exists: boolean; + lastModified: string; + sha1: string; + tests: { + id: string; + title: string; + expectedStatus: string; + tags: string[]; + location: TestCase['location']; + }[]; +} diff --git a/src/platform/packages/private/kbn-scout-reporting/src/registry/test_config.test.ts b/src/platform/packages/private/kbn-scout-reporting/src/registry/test_config.test.ts new file mode 100644 index 0000000000000..41bbf6519d51f --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/registry/test_config.test.ts @@ -0,0 +1,260 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { testConfig, testConfigs } from './test_config'; +import { REPO_ROOT } from '@kbn/repo-info'; +import fs from 'node:fs'; +import fg from 'fast-glob'; +import path from 'node:path'; + +jest.mock('node:fs'); +jest.mock('fast-glob'); + +const dummyManifestProps = { + exists: false, + lastModified: new Date(0).toISOString(), + sha1: '000000000000000-000000000000000', + tests: [], +}; + +describe('test_config module', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('testConfig.fromPath', () => { + test.each([ + { + basePath: 'src/platform', + moduleGroup: 'platform', + moduleType: 'plugin', + moduleVisibility: 'shared', + testCategory: 'api', + configType: 'standard', + }, + { + basePath: 'src/platform', + moduleGroup: 'platform', + moduleType: 'package', + moduleVisibility: 'private', + testCategory: 'ui', + configType: 'parallel', + }, + { + basePath: 'x-pack/solutions/observability', + moduleGroup: 'observability', + moduleType: 'plugin', + moduleVisibility: 'private', + testCategory: 'api', + configType: 'whatever', + }, + ])('can parse a valid config path correctly for $moduleType in $basePath', (expected) => { + const moduleName = 'moddy_mc_moduleface'; + const moduleRoot = path.join( + expected.basePath, + `${expected.moduleType}s`, + expected.moduleVisibility || '', + moduleName + ); + const scoutRoot = path.join(moduleRoot, 'test/scout'); + const validManifestContent = { + lastModified: '2025-12-03T19:04:17.097Z', + sha1: 'b72df4fa5abc546e5f21e6c2f6eaaaa523755720', + tests: [ + { + id: 'f44f18cc703276d-178a4921f7b18d0', + title: 'Module modularity should be the off the charts', + expectedStatus: 'passed', + tags: ['@svlSecurity', '@ess'], + location: { + file: path.join( + scoutRoot, + `/${expected.testCategory}/tests/modularity/connector.spec.ts` + ), + line: 45, + column: 10, + }, + }, + ], + }; + + let configFilename = 'playwright.config.ts'; + + if (expected.configType !== 'standard') { + configFilename = `${expected.configType}.${configFilename}`; + } + + const configPath = path.join(scoutRoot, expected.testCategory, configFilename); + const manifestPath = path.join( + scoutRoot, + `/.meta/${expected.testCategory}/${expected.configType}.json` + ); + + jest.spyOn(fs, 'existsSync').mockReturnValue(true); + jest.spyOn(fs, 'readFileSync').mockReturnValue(JSON.stringify(validManifestContent)); + + const config = testConfig.fromPath(configPath); + + expect(config).toEqual({ + path: configPath, + category: expected.testCategory, + type: expected.configType, + module: { + name: moduleName, + group: expected.moduleGroup, + type: expected.moduleType, + visibility: expected.moduleVisibility, + root: moduleRoot, + }, + manifest: { + path: manifestPath, + exists: true, + ...validManifestContent, + }, + }); + }); + + it('succeeds even if manifest file is missing', () => { + const moduleName = 'moddy_mc_moduleface'; + const moduleRoot = path.join('src/platform/plugins/shared', moduleName); + const scoutRoot = path.join(moduleRoot, 'test/scout'); + const configPath = path.join(scoutRoot, '/api/playwright.config.ts'); + const manifestPath = path.join(scoutRoot, '/.meta/api/standard.json'); + + jest.spyOn(fs, 'existsSync').mockReturnValue(false); + + const config = testConfig.fromPath(configPath); + + expect(config).toEqual({ + path: configPath, + category: 'api', + type: 'standard', + module: { + name: moduleName, + group: 'platform', + type: 'plugin', + visibility: 'shared', + root: moduleRoot, + }, + manifest: { + path: manifestPath, + ...dummyManifestProps, + }, + }); + }); + + it('throws if the given path is not part of the kibana repo', () => { + const configPath = + '/not/the/kibana/repo/src/platform/packages/shared/foo/test/scout/api/playwright.config.ts'; + + expect(() => testConfig.fromPath(configPath)).toThrow( + new RegExp( + `Failed to create Scout config from path '.*${configPath}': ` + + `path .*${configPath} is not part of the Kibana repository at ${REPO_ROOT}` + ) + ); + }); + + it("throws if the given path doesn't match the expected pattern", () => { + const configPath = 'this/path/definitely/will/not/match'; + expect(() => testConfig.fromPath(configPath)).toThrow( + `Failed to create Scout config from path '${configPath}': path did not match the expected regex pattern` + ); + }); + + it('throws if the manifest file is present but invalid', () => { + const moduleName = 'moddy_mc_moduleface'; + const moduleRoot = path.join('src/platform/plugins/shared', moduleName); + const scoutRoot = path.join(moduleRoot, 'test/scout'); + + jest.spyOn(fs, 'existsSync').mockReturnValue(true); + jest.spyOn(fs, 'readFileSync').mockReturnValue('{"invalid": JSON }'); + + const configPath = path.join(scoutRoot, '/api/playwright.config.ts'); + const manifestPath = path.join(scoutRoot, '/.meta/api/standard.json'); + + expect(() => testConfig.fromPath(configPath)).toThrow( + `Failed while trying to load manifest file at '${manifestPath}'` + ); + }); + }); + + describe('testConfigs', () => { + const expectedConfigs = [ + { + path: 'src/platform/plugins/shared/pluggy_mc_pluginface/test/scout/api/playwright.config.ts', + category: 'api', + type: 'standard', + module: { + name: 'pluggy_mc_pluginface', + group: 'platform', + type: 'plugin', + visibility: 'shared', + root: 'src/platform/plugins/shared/pluggy_mc_pluginface', + }, + manifest: { + path: 'src/platform/plugins/shared/pluggy_mc_pluginface/test/scout/.meta/api/standard.json', + ...dummyManifestProps, + }, + }, + { + path: 'x-pack/solutions/security/packages/halt_who_goes_there/test/scout/api/playwright.config.ts', + category: 'api', + type: 'standard', + module: { + name: 'halt_who_goes_there', + group: 'security', + type: 'package', + visibility: 'private', + root: 'x-pack/solutions/security/packages/halt_who_goes_there', + }, + manifest: { + path: 'x-pack/solutions/security/packages/halt_who_goes_there/test/scout/.meta/api/standard.json', + ...dummyManifestProps, + }, + }, + ]; + + it('are lazy loaded', () => { + jest + .spyOn(fg, 'globSync') + .mockReturnValue(expectedConfigs.map((config) => path.join(REPO_ROOT, config.path))); + jest.spyOn(fs, 'existsSync').mockReturnValue(false); + const loadSpy = jest.spyOn(testConfigs, '_load'); + + expect(testConfigs._configs).toBe(null); + expect(testConfigs.all).toEqual(expectedConfigs); + expect(loadSpy).toHaveBeenCalledTimes(1); // _load should have been called + }); + + it('are cached for later use', () => { + expect(testConfigs._configs).not.toBeNull(); // configs have been cached + }); + + it('are returning data from cache when available', () => { + const loadSpy = jest.spyOn(testConfigs, '_load'); + expect(testConfigs.all).toHaveLength(expectedConfigs.length); // configs are returned from cache + expect(loadSpy).toHaveBeenCalledTimes(0); // _load should not have been called + }); + + it('are reloaded when demanded', () => { + const loadSpy = jest.spyOn(testConfigs, '_load'); + testConfigs.reload(); + expect(loadSpy).toHaveBeenCalledTimes(1); // _load should have been called + }); + + it('can be easily filtered by plugin name', () => { + expect(testConfigs.forPlugin('pluggy_mc_pluginface')).toHaveLength(1); + }); + + it('can be easily filtered by package name', () => { + expect(testConfigs.forPackage('halt_who_goes_there')).toHaveLength(1); + }); + }); +}); diff --git a/src/platform/packages/private/kbn-scout-reporting/src/registry/test_config.ts b/src/platform/packages/private/kbn-scout-reporting/src/registry/test_config.ts new file mode 100644 index 0000000000000..e7c0219c6b663 --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/registry/test_config.ts @@ -0,0 +1,154 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { globSync } from 'fast-glob'; +import { REPO_ROOT } from '@kbn/repo-info'; +import path from 'node:path'; +import { ToolingLog } from '@kbn/tooling-log'; +import { SCOUT_CONFIG_PATH_GLOB, SCOUT_CONFIG_PATH_REGEX } from '@kbn/scout-info'; +import { existsSync, readFileSync } from 'node:fs'; +import type { ScoutTestableModule } from './testable_module'; +import type { ScoutConfigManifest } from './manifest'; + +export interface ScoutTestConfig { + path: string; + category: string; + type: string; + module: ScoutTestableModule; + manifest: ScoutConfigManifest; +} + +export const testConfig = { + fromPath(configPath: string): ScoutTestConfig { + // Make sure we're working with a path relative to the repo root + if (path.isAbsolute(configPath)) { + configPath = path.relative(REPO_ROOT, configPath); + } + + if (configPath.startsWith('..')) { + throw new Error( + `Failed to create Scout config from path '${configPath}': ` + + `path ${path.resolve(configPath)} is not part of the Kibana repository at ${REPO_ROOT}` + ); + } + + const match = configPath.match(SCOUT_CONFIG_PATH_REGEX); + + if (match == null) { + throw new Error( + `Failed to create Scout config from path '${configPath}': ` + + 'path did not match the expected regex pattern' + ); + } + + const [ + _, + platform, + solution, + moduleType, + moduleVisibility, + moduleName, + customTargetConfigSetName, + testCategory, + testConfigType, + ] = match; + + const scoutDirName = `scout${customTargetConfigSetName ? `_${customTargetConfigSetName}` : ''}`; + const moduleRoot = configPath.split('/test/scout')[0]; + + const manifestPath = path.join( + moduleRoot, + 'test', + scoutDirName, + '.meta', + testCategory, + `${testConfigType || 'standard'}.json` + ); + const absoluteManifestPath = path.join(REPO_ROOT, manifestPath); + const manifestExists = existsSync(absoluteManifestPath); + let manifestFileData; + + if (manifestExists) { + try { + manifestFileData = JSON.parse(readFileSync(absoluteManifestPath, 'utf8')); + } catch (e) { + e.message = `Failed while trying to load manifest file at '${manifestPath}': ${e.message}`; + throw e; + } + } else { + manifestFileData = { + lastModified: new Date(0).toISOString(), + sha1: '000000000000000-000000000000000', + tests: [], + }; + } + + return { + path: configPath, + category: testCategory, + type: testConfigType || 'standard', + module: { + name: moduleName, + group: platform ?? solution, + type: moduleType.slice(0, -1) as ScoutTestableModule['type'], + visibility: (moduleVisibility || 'private') as ScoutTestableModule['visibility'], + root: moduleRoot, + }, + manifest: { + path: manifestPath, + exists: manifestExists, + ...manifestFileData, + }, + }; + }, +}; + +export const testConfigs = { + _configs: null as ScoutTestConfig[] | null, + log: new ToolingLog(), + + findPaths(): string[] { + const pattern = path.join(REPO_ROOT, SCOUT_CONFIG_PATH_GLOB); + const configPaths = globSync(pattern, { onlyFiles: true }); + return configPaths.map((configPath) => path.relative(REPO_ROOT, configPath)); + }, + + _load() { + const action = this._configs === null ? 'Load' : 'Reload'; + this.log.info(`${action}ing Scout test configs`); + + const startTime = performance.now(); + this._configs = this.findPaths().map(testConfig.fromPath); + const duration = (performance.now() - startTime) / 1000; + + this.log.info(`Loaded ${this._configs.length} Scout test configs in ${duration.toFixed(2)}s`); + }, + + reload() { + this._load(); + }, + + get all(): ScoutTestConfig[] { + if (this._configs === null) this._load(); + return this._configs!; + }, + + forModule(name: string, type?: ScoutTestableModule['type']): ScoutTestConfig[] { + const configs = this.all.filter((config) => config.module.name === name); + return type ? configs.filter((config) => config.module.type === type) : configs; + }, + + forPlugin(pluginName: string): ScoutTestConfig[] { + return this.forModule(pluginName, 'plugin'); + }, + + forPackage(packageName: string): ScoutTestConfig[] { + return this.forModule(packageName, 'package'); + }, +}; diff --git a/src/platform/packages/private/kbn-scout-reporting/src/registry/testable_module.ts b/src/platform/packages/private/kbn-scout-reporting/src/registry/testable_module.ts new file mode 100644 index 0000000000000..2ef0a677359d8 --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/registry/testable_module.ts @@ -0,0 +1,61 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export interface ScoutTestableModule { + name: string; + group: string; + type: 'plugin' | 'package'; + visibility: 'shared' | 'private'; + root: string; +} + +export interface ScoutTestableModuleWithConfigs extends ScoutTestableModule { + configs: Omit[]; +} + +import { type ScoutTestConfig, testConfigs } from './test_config'; + +export const testableModules = { + get all(): ScoutTestableModule[] { + const seenModules: string[] = []; + return testConfigs.all.reduce((modules, config) => { + if (!seenModules.includes(config.module.root)) { + modules.push(config.module); + seenModules.push(config.module.root); + } + return modules; + }, []); + }, + + get allIncludingConfigs(): ScoutTestableModuleWithConfigs[] { + return this.all.map((module) => ({ + ...module, + configs: [ + ...testConfigs.forModule(module.name, module.type).map((config) => ({ + path: config.path, + category: config.category, + type: config.type, + manifest: config.manifest, + })), + ], + })); + }, + + ofType(moduleType: ScoutTestableModule['type']): ScoutTestableModule[] { + return testableModules.all.filter((module) => module.type === moduleType); + }, + + get plugins(): ScoutTestableModule[] { + return testableModules.ofType('plugin'); + }, + + get packages(): ScoutTestableModule[] { + return testableModules.ofType('package'); + }, +}; diff --git a/src/platform/packages/private/kbn-scout-reporting/src/reporting/jest/reporter.ts b/src/platform/packages/private/kbn-scout-reporting/src/reporting/jest/reporter.ts index b36abe65c15cd..f43d8ae4e6341 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/reporting/jest/reporter.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/reporting/jest/reporter.ts @@ -32,7 +32,7 @@ import type { ScoutFileInfo } from '../../..'; import { datasources, generateTestRunId, - getTestIDForTitle, + computeTestID, ScoutEventsReport, ScoutReportEventAction, type ScoutTestRunInfo, @@ -157,7 +157,7 @@ export class ScoutJestReporter extends BaseReporter { type: test.result.ancestorTitles.length <= 1 ? 'root' : 'suite', }, test: { - id: getTestIDForTitle(test.result.fullName), + id: computeTestID(path.relative(REPO_ROOT, test.filePath), test.result.fullName), title: test.result.title, tags: [], file: this.getScoutFileInfoForPath(path.relative(REPO_ROOT, test.filePath)), diff --git a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/events/playwright_reporter.ts b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/events/playwright_reporter.ts index fe9f9e5ab2cdd..42dff9db0fcd9 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/events/playwright_reporter.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/events/playwright_reporter.ts @@ -31,11 +31,16 @@ import { findAreaForCodeOwner, } from '@kbn/code-owners'; import { SCOUT_TARGET_TYPE, SCOUT_TARGET_MODE } from '@kbn/scout-info'; -import type { ScoutFileInfo } from '../../report'; -import { ScoutEventsReport, ScoutReportEventAction, type ScoutTestRunInfo } from '../../report'; +import { + ScoutEventsReport, + ScoutReportEventAction, + type ScoutTestRunInfo, + type ScoutFileInfo, + type ScoutReportEvent, +} from '../../report'; import { environmentMetadata } from '../../../datasources'; import type { ScoutPlaywrightReporterOptions } from '../scout_playwright_reporter'; -import { generateTestRunId, getTestIDForTitle } from '../../../helpers'; +import { generateTestRunId, computeTestID } from '../../../helpers'; /** * Scout Playwright reporter @@ -44,6 +49,7 @@ export class ScoutPlaywrightReporter implements Reporter { readonly log: ToolingLog; readonly name: string; readonly runId: string; + private readonly captureSteps: boolean; private report: ScoutEventsReport; private baseTestRunInfo: ScoutTestRunInfo; private readonly codeOwnersEntries: CodeOwnersEntry[]; @@ -66,6 +72,7 @@ export class ScoutPlaywrightReporter implements Reporter { this.name = this.reporterOptions.name || 'unknown'; this.runId = this.reporterOptions.runId || generateTestRunId(); + this.captureSteps = this.reporterOptions.captureSteps || false; this.log.info(`Scout test run ID: ${this.runId}`); this.report = new ScoutEventsReport(this.log); @@ -110,6 +117,44 @@ export class ScoutPlaywrightReporter implements Reporter { return ScoutTestRunConfigCategory.UNKNOWN; } + private getSuitePropsFromTest(test: TestCase): ScoutReportEvent['suite'] { + return { + title: test.parent.titlePath().slice(3).join(' '), + type: test.parent.type, + }; + } + + private getTestPropsFromTest( + test: TestCase, + step?: TestStep, + result?: TestResult + ): ScoutReportEvent['test'] { + const fullTestTitle = test.titlePath().slice(3).join(' '); + const testFilePath = path.relative(REPO_ROOT, test.location.file); + const testProps: ScoutReportEvent['test'] = { + id: computeTestID(testFilePath, fullTestTitle), + title: test.title, + tags: test.tags, + annotations: test.annotations, + expected_status: test.expectedStatus, + file: this.getScoutFileInfoForPath(testFilePath), + }; + + if (step) { + testProps.step = { + title: testProps.title, + category: step.category, + }; + } + + if (result) { + testProps.status = result.status; + testProps.duration = result.duration; + } + + return testProps; + } + /** * Root path of this reporter's output */ @@ -163,18 +208,8 @@ export class ScoutPlaywrightReporter implements Reporter { type: 'playwright', }, test_run: this.baseTestRunInfo, - suite: { - title: test.parent.titlePath().join(' '), - type: test.parent.type, - }, - test: { - id: getTestIDForTitle(test.titlePath().join(' ')), - title: test.title, - tags: test.tags, - annotations: test.annotations, - expected_status: test.expectedStatus, - file: this.getScoutFileInfoForPath(path.relative(REPO_ROOT, test.location.file)), - }, + suite: this.getSuitePropsFromTest(test), + test: this.getTestPropsFromTest(test), event: { action: ScoutReportEventAction.TEST_BEGIN, }, @@ -182,6 +217,8 @@ export class ScoutPlaywrightReporter implements Reporter { } onStepBegin(test: TestCase, _: TestResult, step: TestStep) { + if (!this.captureSteps) return; + this.report.logEvent({ '@timestamp': step.startTime, ...environmentMetadata, @@ -190,22 +227,8 @@ export class ScoutPlaywrightReporter implements Reporter { type: 'playwright', }, test_run: this.baseTestRunInfo, - suite: { - title: test.parent.titlePath().join(' '), - type: test.parent.type, - }, - test: { - id: getTestIDForTitle(test.titlePath().join(' ')), - title: test.title, - tags: test.tags, - annotations: test.annotations, - expected_status: test.expectedStatus, - step: { - title: step.titlePath().join(' '), - category: step.category, - }, - file: this.getScoutFileInfoForPath(path.relative(REPO_ROOT, test.location.file)), - }, + suite: this.getSuitePropsFromTest(test), + test: this.getTestPropsFromTest(test, step), event: { action: ScoutReportEventAction.TEST_STEP_BEGIN, }, @@ -213,6 +236,8 @@ export class ScoutPlaywrightReporter implements Reporter { } onStepEnd(test: TestCase, _: TestResult, step: TestStep) { + if (!this.captureSteps) return; + this.report.logEvent({ ...environmentMetadata, reporter: { @@ -220,23 +245,8 @@ export class ScoutPlaywrightReporter implements Reporter { type: 'playwright', }, test_run: this.baseTestRunInfo, - suite: { - title: test.parent.titlePath().join(' '), - type: test.parent.type, - }, - test: { - id: getTestIDForTitle(test.titlePath().join(' ')), - title: test.title, - tags: test.tags, - annotations: test.annotations, - expected_status: test.expectedStatus, - step: { - title: step.titlePath().join(' '), - category: step.category, - duration: step.duration, - }, - file: this.getScoutFileInfoForPath(path.relative(REPO_ROOT, test.location.file)), - }, + suite: this.getSuitePropsFromTest(test), + test: this.getTestPropsFromTest(test, step), event: { action: ScoutReportEventAction.TEST_STEP_END, error: { @@ -275,20 +285,8 @@ export class ScoutPlaywrightReporter implements Reporter { type: 'playwright', }, test_run: this.baseTestRunInfo, - suite: { - title: test.parent.titlePath().join(' '), - type: test.parent.type, - }, - test: { - id: getTestIDForTitle(test.titlePath().join(' ')), - title: test.title, - tags: test.tags, - annotations: test.annotations, - expected_status: test.expectedStatus, - status: result.status, - duration: result.duration, - file: this.getScoutFileInfoForPath(path.relative(REPO_ROOT, test.location.file)), - }, + suite: this.getSuitePropsFromTest(test), + test: this.getTestPropsFromTest(test, undefined, result), event: { action: ScoutReportEventAction.TEST_END, error: { diff --git a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/failed_test/failed_test_reporter.ts b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/failed_test/failed_test_reporter.ts index 4c54643bedf06..98e87e86dfbe9 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/failed_test/failed_test_reporter.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/failed_test/failed_test_reporter.ts @@ -26,11 +26,11 @@ import { SCOUT_REPORT_OUTPUT_ROOT } from '@kbn/scout-info'; import { ToolingLog } from '@kbn/tooling-log'; import path from 'node:path'; import { + computeTestID, excapeHtmlCharacters, generateTestRunId, getKibanaModuleData, getRunTarget, - getTestIDForTitle, parseStdout, stripFilePath, stripRunCommand, @@ -115,8 +115,13 @@ export class ScoutFailedTestReporter implements Reporter { return; } + // We don't include the first three elements in the title path (root suite, project, test file path) + // for full test titles in Scout, especially not when calculating test IDs + const fullTestTitle = test.titlePath().slice(3).join(' '); + const testFilePath = path.relative(REPO_ROOT, test.location.file); + const testFailure: TestFailure = { - id: getTestIDForTitle(test.titlePath().join(' ')), + id: computeTestID(testFilePath, fullTestTitle), suite: test.parent.title, title: test.title, target: this.target, diff --git a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater/index.ts b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater/index.ts new file mode 100644 index 0000000000000..48e625a43cead --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater/index.ts @@ -0,0 +1,12 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { ScoutManifestUpdater } from './playwright_reporter'; +// eslint-disable-next-line import/no-default-export +export default ScoutManifestUpdater; diff --git a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater/playwright_reporter.ts b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater/playwright_reporter.ts new file mode 100644 index 0000000000000..93f2c42423080 --- /dev/null +++ b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater/playwright_reporter.ts @@ -0,0 +1,77 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { FullConfig, Reporter, Suite } from '@playwright/test/reporter'; +import { ToolingLog } from '@kbn/tooling-log'; +import { mkdirSync, writeFileSync } from 'node:fs'; +import path from 'node:path'; +import { REPO_ROOT } from '@kbn/repo-info'; +import { computeTestID } from '../../../helpers/test_id_generator'; +import { getGitSHA1ForPath } from '../../../registry/manifest'; +import type { ScoutTestConfig } from '../../../registry'; +import { testConfig } from '../../../registry'; + +/** + * Scout Playwright reporter + */ +export class ScoutManifestUpdater implements Reporter { + readonly log: ToolingLog; + scoutConfig!: ScoutTestConfig; + + constructor() { + this.log = new ToolingLog({ + level: 'info', + writeTo: process.stdout, + }); + } + + onBegin(config: FullConfig, suite: Suite) { + this.scoutConfig = testConfig.fromPath(config.configFile!); + + this.scoutConfig.manifest.tests = suite.allTests().map((test) => { + // Title path + // [0] Root suite + // [1] Project + // [2] Test file + // [3] Suite file + // [4] Individual test title + const title = test.titlePath().slice(3).join(' '); + const testFilePath = path.relative(REPO_ROOT, test.location.file); + + return { + id: computeTestID(testFilePath, title), + title, + expectedStatus: test.expectedStatus, + tags: test.tags, + location: { + file: testFilePath, + line: test.location.line, + column: test.location.column, + }, + }; + }); + } + + async onExit() { + mkdirSync(path.dirname(this.scoutConfig.manifest.path), { recursive: true }); + + writeFileSync( + this.scoutConfig.manifest.path, + JSON.stringify( + { + lastModified: new Date().toISOString(), + sha1: await getGitSHA1ForPath(path.dirname(this.scoutConfig.path)), + tests: this.scoutConfig.manifest.tests, + }, + null, + 2 + ) + ); + } +} diff --git a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/scout_playwright_reporter.ts b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/scout_playwright_reporter.ts index b9c1b495ee01a..c66509c67e116 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/scout_playwright_reporter.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/scout_playwright_reporter.ts @@ -14,4 +14,5 @@ export interface ScoutPlaywrightReporterOptions { name?: string; runId?: string; outputPath?: string; + captureSteps?: boolean; } diff --git a/src/platform/packages/shared/kbn-scout/src/cli/index.ts b/src/platform/packages/shared/kbn-scout/src/cli/index.ts index d224718d595b9..a6a7c932754ac 100644 --- a/src/platform/packages/shared/kbn-scout/src/cli/index.ts +++ b/src/platform/packages/shared/kbn-scout/src/cli/index.ts @@ -8,6 +8,7 @@ */ import { RunWithCommands } from '@kbn/dev-cli-runner'; import { cli as reportingCLI } from '@kbn/scout-reporting'; +import { updateTestConfigManifests } from './manifests'; import { startServerCmd } from './start_server'; import { runTestsCmd } from './run_tests'; import { runPlaywrightTestCheckCmd } from './run_playwright_test_check'; @@ -28,6 +29,7 @@ export async function run() { reportingCLI.uploadEvents, reportingCLI.updateTestConfigStats, createTestTrack, + updateTestConfigManifests, ] ).execute(); } diff --git a/src/platform/packages/shared/kbn-scout/src/cli/manifests.ts b/src/platform/packages/shared/kbn-scout/src/cli/manifests.ts new file mode 100644 index 0000000000000..5b9e94e7327a4 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/cli/manifests.ts @@ -0,0 +1,148 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { Command } from '@kbn/dev-cli-runner'; +import type { ToolingLog } from '@kbn/tooling-log'; +import CliTable3 from 'cli-table3'; +import dedent from 'dedent'; +import path from 'path'; +import { REPO_ROOT } from '@kbn/repo-info'; +import type { ScoutTestableModuleWithConfigs } from '@kbn/scout-reporting/src/registry'; +import { testableModules, testConfigs } from '@kbn/scout-reporting/src/registry'; +import { getGitSHA1ForPath } from '@kbn/scout-reporting/src/registry/manifest'; +import { playwrightCLI } from '../playwright/cli_wrapper'; + +const manifestUpdateReporter = path.join( + REPO_ROOT, + '/src/platform/packages/private/kbn-scout-reporting/src/reporting/playwright/manifest_updater' +); + +async function generateScoutConfigManifest(configPath: string, log?: ToolingLog) { + return await playwrightCLI.test( + { config: configPath, reporters: [manifestUpdateReporter], list: true, project: 'local' }, + {}, + log + ); +} + +async function updateScoutConfigManifests(onlyOutdated: boolean, reload: boolean, log: ToolingLog) { + const updatedConfigPaths: string[] = []; + + for (const config of testConfigs.all) { + const configDirSHA1 = await getGitSHA1ForPath(path.dirname(config.path)); + + if (onlyOutdated && config.manifest.exists && config.manifest.sha1 === configDirSHA1) { + log.debug(` ✅ ${config.module.name} / ${config.category} / ${config.type}`); + continue; + } + + if (config.manifest.exists) { + if (config.manifest.sha1 !== configDirSHA1) { + log.info( + `Manifest file is outdated for Scout test config at ${config.path} ` + + `(expected parent directory git object hash '${config.manifest.sha1}' but got '${configDirSHA1}')` + ); + } + } else { + log.info(`No manifest file found for Scout test config at ${config.path}`); + } + + log.info(`Generating manifest for test config at '${config.path}'`); + await generateScoutConfigManifest(config.path, log); + updatedConfigPaths.push(config.path); + } + + if (updatedConfigPaths.length === 0) { + log.info('No Scout test config manifests were updated'); + } else { + log.info( + `${updatedConfigPaths.length} test config manifest${ + updatedConfigPaths.length > 1 ? 's have' : ' has' + } been updated.` + ); + + if (reload) testConfigs.reload(); + } + + return updatedConfigPaths; +} + +function displaySummary(modules: ScoutTestableModuleWithConfigs[], log: ToolingLog) { + const pluginTable = new CliTable3({ + head: ['#', 'Name', 'Group', 'Visibility', 'Path', 'Configs', 'Tests', 'Skipped'], + }); + const packageTable = new CliTable3({ + head: ['#', 'Name', 'Group', 'Visibility', 'Path', 'Configs', 'Tests', 'Skipped'], + }); + + modules.forEach((module) => { + const targetTable = module.type === 'plugin' ? pluginTable : packageTable; + targetTable.push([ + targetTable.length + 1, + module.name, + module.group, + module.visibility || '-', + module.root, + module.configs.length, + module.configs.reduce((testCount, config) => testCount + config.manifest.tests.length, 0), + module.configs.reduce( + (skippedCount, config) => + skippedCount + + config.manifest.tests.filter((test) => test.expectedStatus === 'skipped').length, + 0 + ), + ]); + }); + + const panel = new CliTable3(); + panel.push( + [{ content: 'Scout testable modules summary', hAlign: 'center' }], + [`Found ${modules.length} modules with Scout configs.`], + [ + dedent( + `Plugins + ${pluginTable.toString()}` + ), + ], + [ + dedent( + `Packages + ${packageTable.toString()}` + ), + ] + ); + + log.write('\n'); + log.write(panel.toString()); +} + +export const updateTestConfigManifests: Command = { + name: 'update-test-config-manifests', + description: + 'This command is used to collects and store information relating to a Scout test config ' + + "that's usually only available during Playwright runtime", + flags: { + boolean: ['includingUpToDate', 'noSummary'], + help: ` + --includingUpToDate (optional) Update all manifests, not just the ones that are outdated + --noSummary (optional) Don't display summary + `, + }, + run: async ({ flagsReader, log }) => { + testConfigs.log = log; + const shouldDisplaySummary = !flagsReader.boolean('noSummary'); + await updateScoutConfigManifests( + !flagsReader.boolean('includingUpToDate'), + shouldDisplaySummary, + log + ); + if (!shouldDisplaySummary) return; + displaySummary(testableModules.allIncludingConfigs, log); + }, +}; diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/common.ts b/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/common.ts new file mode 100644 index 0000000000000..e17adc416a12b --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/common.ts @@ -0,0 +1,57 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { REPO_ROOT } from '@kbn/repo-info'; +import { spawn, type SpawnOptions } from 'node:child_process'; +import type { ToolingLog } from '@kbn/tooling-log'; + +export interface PlaywrightCLIResult { + exitCode: number; + stdout?: string; + stderr?: string; +} + +export class PlaywrightCLIError extends Error {} + +export async function runPlaywrightCLI( + args: string[], + env?: Record, + log?: ToolingLog +): Promise { + const playwrightBinPath = './node_modules/.bin/playwright'; + const options: SpawnOptions = { + cwd: REPO_ROOT, + env: env ? { ...process.env, ...env } : process.env, + stdio: log ? 'pipe' : 'inherit', + }; + + log?.debug( + `Running Playwright in a separate shell with command:\n` + + `${playwrightBinPath} ${args.join(' ')}` + ); + + const playwrightProcess = spawn(playwrightBinPath, args, options); + + if (log) { + playwrightProcess.stdout!.on('data', (data) => { + log.write(`[🎭] ${data}`); + }); + + playwrightProcess.stderr!.on('data', (data) => { + log.error(`[🎭] ${data}`); + }); + } + + const exitCode = await new Promise((resolve, reject) => { + playwrightProcess.on('close', (code) => resolve(code ?? 1)); + playwrightProcess.on('error', (error) => reject(new PlaywrightCLIError(error.message))); + }); + + return { exitCode }; +} diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/index.ts b/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/index.ts new file mode 100644 index 0000000000000..c19548c062807 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/index.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { runPlaywrightTestCLI } from './run_tests'; +import { runPlaywrightCLI } from './common'; + +export const playwrightCLI = { + run: runPlaywrightCLI, + test: runPlaywrightTestCLI, +}; diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/run_tests.ts b/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/run_tests.ts new file mode 100644 index 0000000000000..723b68762d2c7 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/playwright/cli_wrapper/run_tests.ts @@ -0,0 +1,204 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ToolingLog } from '@kbn/tooling-log'; +import { runPlaywrightCLI } from './common'; + +export interface PlaywrightTestCLIOptions { + // Browser to use for tests (default: "chromium") + browser?: 'all' | 'chromium' | 'firefox' | 'webkit'; + + // Configuration file, or a test directory with optional "playwright.config.{m,c}?{js,ts}" + config?: string; + + // Run tests with Playwright Inspector + debug?: boolean; + + // Fail if any test is flagged as flaky (default: false) + failOnFlakyTests?: boolean; + + // Fail if test.only is called (default: false) + forbidOnly?: boolean; + + // Run all tests in parallel (default: false) + fullyParallel?: boolean; + + // Only run tests matching this regular expression (default: ".*") + grep?: string; + + // Only run tests that do not match this regular expression + grepInvert?: string; + + // Maximum time this test suite can run in milliseconds (default: unlimited) + globalTimeoutMs?: number; + + // Run tests in headed browsers (default: headless) + headed?: boolean; + + // Ignore screenshot and snapshot expectations + ignoreSnapshots?: boolean; + + // Number of concurrent workers or percentage of logical CPU cores, use 1 to run in a single worker (default: 50%) + workers?: number | string; + + // Only re-run the failures + lastFailed?: boolean; + + // Collect all the tests and report them, but do not run + list?: boolean; + + // Stop after the first N failures + maxFailures?: number; + + // Do not run project dependencies + noDeps?: boolean; + + // Only run test files that have been changed between 'HEAD' and this reference. + // Defaults to running all uncommitted changes. Only supports Git. + onlyChangedRef?: string; + + // Folder for output artifacts (default: "test-results") + outputDir?: string; + + // Makes test run succeed even if no tests were found + passWithNoTests?: boolean; + + // Only run tests from the specified list of projects, supports '*' wildcard (default: run all projects) + project?: string; + + // Suppress stdio + quiet?: boolean; + + // Run each test N times (default: 1) + repeatEach?: number; + + // Reporters to use (default: "list") + reporters?: ( + | 'list' + | 'line' + | 'dot' + | 'json' + | 'junit' + | 'null' + | 'github' + | 'html' + | 'blob' + | string + )[]; + + // Maximum retry count for flaky tests, zero for no retries (default: no retries) + retries?: number; + + // Shard tests and execute only the selected shard, specify in the form `current/all`, 1-based, for example `3/5` + shard?: string; + + // Specify test timeout threshold in milliseconds, zero for unlimited (default: 30000) + timeoutMs?: number; + + // Force tracing mode + trace?: + | 'on' + | 'off' + | 'on-first-retry' + | 'on-all-retries' + | 'retain-on-failure' + | 'retain-on-first-failure'; + + // Path to a single tsconfig applicable to all imported files + // (default: look up tsconfig for each imported file separately) + tsconfig?: string; + + // Update snapshots with actual results. Running tests without the flag defaults to "missing"; + // running tests with the flag but without a value defaults to "changed". + updateSnapshots?: 'all' | 'changed' | 'missing' | 'none'; + + // Run tests in interactive UI mode + ui?: boolean; + + // Host to serve UI on; specifying this option opens UI in a browser tab + uiHost?: string; + + // Port to serve UI on, 0 for any free port; specifying this option opens UI in a browser tab + uiPort?: number; + + // Chooses the way source is updated + updateSourceMethod?: 'overwrite' | '3way' | 'patch'; + + // Stop after the first failure + stopAfterFirstFailure?: boolean; +} + +const PLAYWRIGHT_TEST_CLI_OPTION_MAPPINGS: Record = { + browser: '--browser', + config: '--config', + debug: '--debug', + failOnFlakyTests: '--fail-on-flaky-tests', + forbidOnly: '--forbid-only', + fullyParallel: '--fully-parallel', + grep: '--grep', + grepInvert: '--grep-invert', + globalTimeoutMs: '--global-timeout', + headed: '--headed', + ignoreSnapshots: '--ignore-snapshots', + workers: '--workers', + lastFailed: '--last-failed', + list: '--list', + maxFailures: '--max-failures', + noDeps: '--no-deps', + onlyChangedRef: '--only-changed', + outputDir: '--output-dir', + passWithNoTests: '--pass-with-no-tests', + project: '--project', + quiet: '--quiet', + repeatEach: '--repeat-each', + reporters: '--reporter', + retries: '--retries', + shard: '--shard', + timeoutMs: '--timeout', + trace: '--trace', + tsconfig: '--tsconfig', + updateSnapshots: '--updateSnapshots', + ui: '--ui', + uiHost: '--ui-host', + uiPort: '--ui-port', + updateSourceMethod: '--update-source-method', + stopAfterFirstFailure: '-x', +}; + +export async function runPlaywrightTestCLI( + options: PlaywrightTestCLIOptions, + env?: Record, + log?: ToolingLog +) { + const args = ['test']; + + Object.entries(options).forEach(([option, value]) => { + const arg = PLAYWRIGHT_TEST_CLI_OPTION_MAPPINGS[option as keyof PlaywrightTestCLIOptions]; + + switch (typeof value) { + case 'string': + case 'number': + args.push(arg, value.toString()); + break; + case 'boolean': + if (!value) return; + args.push(arg); + break; + case 'object': + if (value instanceof Array) { + args.push(arg, value.join(',')); + } + break; + default: + args.push(arg, value); + } + }); + + return runPlaywrightCLI(args, env, log); +} diff --git a/src/platform/packages/shared/kbn-scout/test/scout/.meta/api/standard.json b/src/platform/packages/shared/kbn-scout/test/scout/.meta/api/standard.json new file mode 100644 index 0000000000000..df403ea5794a1 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/test/scout/.meta/api/standard.json @@ -0,0 +1,496 @@ +{ + "lastModified": "2025-12-03T19:04:17.097Z", + "sha1": "b72df4fa5abc546e5f21e6c2f6eaaaa523755720", + "tests": [ + { + "id": "f44f18cc703276d-178a4921f7b18d0", + "title": "Alerting Rules helpers should fetch alert with 'alerting.rules.get'", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 45, + "column": 10 + } + }, + { + "id": "f44f18cc703276d-33ca8fa92624a9c", + "title": "Alerting Rules helpers should update alert with 'alerting.rules.update'", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 53, + "column": 10 + } + }, + { + "id": "f44f18cc703276d-73b7d633c4103c0", + "title": "Alerting Rules helpers should enable/disable rule", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 61, + "column": 10 + } + }, + { + "id": "f44f18cc703276d-b40ee20740b3d69", + "title": "Alerting Rules helpers should find rule with 'alerting.rules.find'", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 77, + "column": 10 + } + }, + { + "id": "f44f18cc703276d-96731296a9891c1", + "title": "Alerting Rules helpers should mute/unmute rule", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 90, + "column": 10 + } + }, + { + "id": "f44f18cc703276d-ff05561b9156a5c", + "title": "Alerting Rules helpers should mute/unmute alert for rule", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 108, + "column": 10 + } + }, + { + "id": "f44f18cc703276d-5221ee78cdc80b3", + "title": "Alerting Rules helpers should snooze/unsnooze rule", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/alerting_rules.spec.ts", + "line": 128, + "column": 10 + } + }, + { + "id": "fce093fbca08710-6e904464520b5be", + "title": "Cases Helpers should fetch case with 'cases.get'", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 38, + "column": 10 + } + }, + { + "id": "fce093fbca08710-90abc09aa216d42", + "title": "Cases Helpers should update case with a new severity with 'cases.update'", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 43, + "column": 10 + } + }, + { + "id": "fce093fbca08710-5408585221b6fe5", + "title": "Cases Helpers should add a new connector to a case", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 60, + "column": 10 + } + }, + { + "id": "fce093fbca08710-ce6612540863f1f", + "title": "Cases Helpers should delete multiple cases", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 78, + "column": 10 + } + }, + { + "id": "fce093fbca08710-867e650994dc709", + "title": "Cases Helpers should delete cases by tags", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 98, + "column": 10 + } + }, + { + "id": "fce093fbca08710-f9fa16a32a85b71", + "title": "Cases Helpers should post and find a comment", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 125, + "column": 10 + } + }, + { + "id": "fce093fbca08710-e2cb6fcca5c3e88", + "title": "Cases Helpers should post an alert", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 147, + "column": 10 + } + }, + { + "id": "fce093fbca08710-c6649d9e4143889", + "title": "Cases Helpers should search for a case by category", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/cases.spec.ts", + "line": 160, + "column": 10 + } + }, + { + "id": "1ac39428f850160-0db434f3b0a7c11", + "title": "Fleet Integration Management should install a custom integration", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 24, + "column": 10 + } + }, + { + "id": "1ac39428f850160-4fbf626746dcffc", + "title": "Fleet Integration Management should delete an integration and return status code", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 30, + "column": 10 + } + }, + { + "id": "1ac39428f850160-3f9dd1df7ce971d", + "title": "Fleet Integration Management should handle delete of non-existent integration", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 40, + "column": 10 + } + }, + { + "id": "1ac39428f850160-a1fbb9043d34cc7", + "title": "Fleet Agent Policies Management should get agent policies with query parameters", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 66, + "column": 10 + } + }, + { + "id": "1ac39428f850160-2993bae6be1562a", + "title": "Fleet Agent Policies Management should create an agent policy with additional parameters", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 77, + "column": 10 + } + }, + { + "id": "1ac39428f850160-edd65cbcfec5424", + "title": "Fleet Agent Policies Management should update an agent policy", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 98, + "column": 10 + } + }, + { + "id": "1ac39428f850160-b897c3ef548d7b5", + "title": "Fleet Agent Policies Management should bulk get agent policies", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 123, + "column": 10 + } + }, + { + "id": "1ac39428f850160-2633914e42ffea8", + "title": "Fleet Agent Policies Management should delete an agent policy", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 143, + "column": 10 + } + }, + { + "id": "1ac39428f850160-1e4a39abe840169", + "title": "Fleet Agent Policies Management should delete an agent policy with force flag", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 154, + "column": 10 + } + }, + { + "id": "1ac39428f850160-041513758093b5d", + "title": "Fleet Outputs Management should get all outputs", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 177, + "column": 10 + } + }, + { + "id": "1ac39428f850160-1ceeea1f4f18b0a", + "title": "Fleet Outputs Management should get a specific output by ID", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 185, + "column": 10 + } + }, + { + "id": "1ac39428f850160-57aec8b030a14c4", + "title": "Fleet Outputs Management should create an output with additional parameters", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 199, + "column": 10 + } + }, + { + "id": "1ac39428f850160-9b6ecdc71c30d07", + "title": "Fleet Outputs Management should delete an output", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 220, + "column": 10 + } + }, + { + "id": "1ac39428f850160-2045e266f5c3994", + "title": "Fleet Server Hosts Management should get fleet server hosts", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 251, + "column": 10 + } + }, + { + "id": "1ac39428f850160-0dd9cd554941f9e", + "title": "Fleet Server Hosts Management should create a fleet server host with parameters", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 257, + "column": 10 + } + }, + { + "id": "1ac39428f850160-6a7a56d10bb14d9", + "title": "Fleet Server Hosts Management should delete a fleet server host", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 274, + "column": 10 + } + }, + { + "id": "1ac39428f850160-e7f6e669552d63a", + "title": "Fleet Agent Management should setup fleet agents", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 292, + "column": 10 + } + }, + { + "id": "1ac39428f850160-015134015804081", + "title": "Fleet Agent Management should get agents with query parameters", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 298, + "column": 10 + } + }, + { + "id": "1ac39428f850160-688642bba3fe0dc", + "title": "Fleet Agent Management should handle delete of non-existent agent", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 308, + "column": 10 + } + }, + { + "id": "1ac39428f850160-a28714e7d3e9305", + "title": "Fleet API Error Handling should handle bulk get with non-existent policy IDs", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/api/tests/api_services/fleet.spec.ts", + "line": 319, + "column": 10 + } + } + ] +} \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-scout/test/scout/.meta/ui/standard.json b/src/platform/packages/shared/kbn-scout/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..1cfee6cf3c480 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/test/scout/.meta/ui/standard.json @@ -0,0 +1,132 @@ +{ + "lastModified": "2025-12-03T19:04:20.842Z", + "sha1": "cf987cc228a08cc2083d5d705322a88092e4ba5a", + "tests": [ + { + "id": "c6ec4a747994e21-5b82e5b7ac2b08c", + "title": "runA11yScan returns violations array (empty for basic accessible markup)", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/axe.spec.ts", + "line": 13, + "column": 7 + } + }, + { + "id": "c6ec4a747994e21-6ca8b3fff58bd50", + "title": "runA11yScan returns violations related to the CSS \"include\" selector only", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/axe.spec.ts", + "line": 38, + "column": 7 + } + }, + { + "id": "cfef694ab86356f-79526e55b73e4e5", + "title": "EUI testing wrapper: EuiCheckBox checkbox", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/check_box.spec.ts", + "line": 19, + "column": 7 + } + }, + { + "id": "017789e0b431bee-3428dc06d0d6721", + "title": "EUI testing wrapper: EuiComboBox with multiple selections (pills)", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/combo_box.spec.ts", + "line": 15, + "column": 7 + } + }, + { + "id": "017789e0b431bee-5331af19c193bbb", + "title": "EUI testing wrapper: EuiComboBox with the single selection", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/combo_box.spec.ts", + "line": 60, + "column": 7 + } + }, + { + "id": "971167b9a56711d-061f9fed6becd0d", + "title": "EUI testing wrapper: EuiDataGrid data grid, run", + "expectedStatus": "skipped", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/data_grid.spec.ts", + "line": 16, + "column": 7 + } + }, + { + "id": "185afa2a6726770-da531fcc62a90e7", + "title": "EUI testing wrapper: EuiFieldText fieldText", + "expectedStatus": "skipped", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/field_text.spec.ts", + "line": 16, + "column": 7 + } + }, + { + "id": "61a2eae02548a18-ecfb93690a45e0e", + "title": "EUI testing wrapper: EuiSelectable selectable with search field", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/selectable.spec.ts", + "line": 15, + "column": 7 + } + }, + { + "id": "eb199ae3cbbe1c6-2dd52577680db76", + "title": "EUI testing wrapper: EuiToast toast", + "expectedStatus": "passed", + "tags": [ + "@svlSecurity", + "@ess" + ], + "location": { + "file": "src/platform/packages/shared/kbn-scout/test/scout/ui/tests/eui_wrappers/toast.spec.ts", + "line": 15, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts b/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts index ec0484a40a37c..4d6ccab1344d2 100644 --- a/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts +++ b/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts @@ -12,13 +12,13 @@ import { ToolingLog } from '@kbn/tooling-log'; import { SCOUT_REPORT_OUTPUT_ROOT, SCOUT_TARGET_MODE, SCOUT_TARGET_TYPE } from '@kbn/scout-info'; import { REPO_ROOT } from '@kbn/repo-info'; import type { ScoutFileInfo } from '@kbn/scout-reporting'; +import { computeTestID } from '@kbn/scout-reporting'; import { datasources, ScoutEventsReport, ScoutReportEventAction, type ScoutTestRunInfo, generateTestRunId, - getTestIDForTitle, } from '@kbn/scout-reporting'; import { type CodeOwnersEntry, @@ -149,7 +149,7 @@ export class ScoutFTRReporter { type: test.parent?.root ? 'root' : 'suite', }, test: { - id: getTestIDForTitle(test.fullTitle()), + id: computeTestID(path.relative(REPO_ROOT, test.file || ''), test.fullTitle()), title: test.title, tags: [], file: test.file @@ -178,7 +178,7 @@ export class ScoutFTRReporter { type: test.parent?.root ? 'root' : 'suite', }, test: { - id: getTestIDForTitle(test.fullTitle()), + id: computeTestID(path.relative(REPO_ROOT, test.file || ''), test.fullTitle()), title: test.title, tags: [], file: test.file diff --git a/src/platform/plugins/shared/console/test/scout/.meta/api/standard.json b/src/platform/plugins/shared/console/test/scout/.meta/api/standard.json new file mode 100644 index 0000000000000..1f77f15c7c862 --- /dev/null +++ b/src/platform/plugins/shared/console/test/scout/.meta/api/standard.json @@ -0,0 +1,22 @@ +{ + "lastModified": "2025-12-03T19:04:09.709Z", + "sha1": "925c1c391d9021f32f53761bb8f49f8d0d2d3408", + "tests": [ + { + "id": "c0a01cdf33e6b81-fab52d38008844b", + "title": "GET /api/console/api_server returns autocomplete definitions", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlOblt", + "@svlSearch" + ], + "location": { + "file": "src/platform/plugins/shared/console/test/scout/api/tests/spec_definitions.spec.ts", + "line": 22, + "column": 12 + } + } + ] +} \ No newline at end of file diff --git a/src/platform/plugins/shared/workflows_extensions/test/scout/.meta/api/standard.json b/src/platform/plugins/shared/workflows_extensions/test/scout/.meta/api/standard.json new file mode 100644 index 0000000000000..f322d406c178d --- /dev/null +++ b/src/platform/plugins/shared/workflows_extensions/test/scout/.meta/api/standard.json @@ -0,0 +1,22 @@ +{ + "lastModified": "2025-12-03T19:04:13.348Z", + "sha1": "39277f7f4322140ad25bc1f1fe33453bcdba9a9b", + "tests": [ + { + "id": "2e9661be655a029-bbe4bc87d5491d8", + "title": "Workflows Extensions - Custom Step Definitions Approval should validate that all registered custom step definitions are approved by workflows-eng team", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSearch", + "@svlSecurity", + "@svlOblt" + ], + "location": { + "file": "src/platform/plugins/shared/workflows_extensions/test/scout/api/tests/step_definitions_approval.spec.ts", + "line": 25, + "column": 12 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/.meta/ui/standard.json b/x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..181bb4f771621 --- /dev/null +++ b/x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/.meta/ui/standard.json @@ -0,0 +1,240 @@ +{ + "lastModified": "2025-12-03T19:03:01.362Z", + "sha1": "911d851d37bb1b70f191f9753808c61bc4f3220e", + "tests": [ + { + "id": "e72a87ecc0972d2-130f7b81c105899", + "title": "Discover app should display selected time range in date picker and matching docs in table", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 57, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-29bcc7e33a9f1e7", + "title": "Discover app save query should show toast message and display query name", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 72, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-16f42721fa4c1db", + "title": "Discover app should refetch when autofresh is enabled", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 78, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-d0831360c44d882", + "title": "Discover app load query should show query name", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 101, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-cd6767713d4c363", + "title": "Discover app should show the correct hit count", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 109, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-f09b8bfcbc82d39", + "title": "Discover app should show correct time range string in chart", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 113, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-9b04eb217c0f4b1", + "title": "Discover app should modify the time range when a bar is clicked", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 119, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-50a4ce44a251cec", + "title": "Discover app should show correct initial chart interval of Auto", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 138, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-8eb36762f0987a7", + "title": "Discover app should show \"no results\"", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 145, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-a5a6bea0f7a1c50", + "title": "Discover app should suggest a new time range is picked", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 153, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-db77da154902b01", + "title": "Discover app should show matches when time range is expanded", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 162, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-2641dc66666744f", + "title": "Discover app should hide and show the histogram chart when toggle is clicked", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 178, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-09ecd24c8bef3d1", + "title": "Discover app should navigate to Lens editor when edit visualization is clicked", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 193, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-01ffee8cd673d16", + "title": "Discover app drag and drop fields to grid", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 203, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-9e2ffc341ec632e", + "title": "Discover app type a search query and execute a search", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 219, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-4ecc04e7f8c88ec", + "title": "Discover app click Field Stats button and validate Document Stats is present", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 227, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-0be58f0e62a089c", + "title": "Discover app navigate to Lens from field statistics", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 234, + "column": 7 + } + }, + { + "id": "e72a87ecc0972d2-b74228ac57188fe", + "title": "Discover app download CSV report and validate row length", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/private/kbn-scout-release-testing/test/scout/ui/discovery_tests/discovery.spec.ts", + "line": 244, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/.meta/api/standard.json b/x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/.meta/api/standard.json new file mode 100644 index 0000000000000..a5d5c0250d68f --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/.meta/api/standard.json @@ -0,0 +1,3662 @@ +{ + "lastModified": "2025-12-08T16:58:32.285Z", + "sha1": "f807bf5831e2ff18c1f1ff10507788d06789ff72", + "tests": [ + { + "id": "7a50a1b508e10f4-3be34281d1d9c2c", + "title": "Cross-compatibility - Append Processor should append a value to an existing array", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/append.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "7a50a1b508e10f4-21c0fb5576c03ee", + "title": "Cross-compatibility - Append Processor should append multiple values to a non-existent field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/append.spec.ts", + "line": 40, + "column": 10 + } + }, + { + "id": "7a50a1b508e10f4-5a05a0173f4be88", + "title": "Cross-compatibility - Append Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/append.spec.ts", + "line": 79, + "column": 12 + } + }, + { + "id": "7a50a1b508e10f4-dee6afbbf9a654b", + "title": "Cross-compatibility - Append Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/append.spec.ts", + "line": 79, + "column": 12 + } + }, + { + "id": "7a50a1b508e10f4-2b8287590f76c75", + "title": "Cross-compatibility - Append Processor should result in an array in ingest, but a scalar in ES|QL for a single value", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/append.spec.ts", + "line": 106, + "column": 10 + } + }, + { + "id": "7a50a1b508e10f4-93a5b018a492b68", + "title": "Cross-compatibility - Append Processor should result in an array in ingest, but a scalar in ES|QL when deduplicating to a single value", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/append.spec.ts", + "line": 135, + "column": 10 + } + }, + { + "id": "1d73432ea89c1bb-da4e5c5a7590fee", + "title": "Cross-compatibility - Convert Processor should convert a field to a different type", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/convert.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "1d73432ea89c1bb-70690c33c4c2b97", + "title": "Cross-compatibility - Convert Processor should convert a field to a different type into a the target field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/convert.spec.ts", + "line": 42, + "column": 10 + } + }, + { + "id": "1d73432ea89c1bb-b08deb8a7646996", + "title": "Cross-compatibility - Convert Processor should convert a field to a different type into a the target field with a where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/convert.spec.ts", + "line": 77, + "column": 10 + } + }, + { + "id": "1d73432ea89c1bb-1c09741bc91e2a8", + "title": "Cross-compatibility - Convert Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/convert.spec.ts", + "line": 131, + "column": 12 + } + }, + { + "id": "1d73432ea89c1bb-f6c7fbdb8ac112a", + "title": "Cross-compatibility - Convert Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/convert.spec.ts", + "line": 131, + "column": 12 + } + }, + { + "id": "0cd771dce9a6272-05605ebbe155bba", + "title": "Cross-compatibility - Date Processor should parse a date with a single format", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "0cd771dce9a6272-bcf5343f76a106c", + "title": "Cross-compatibility - Date Processor should parse a date with multiple formats", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 45, + "column": 10 + } + }, + { + "id": "0cd771dce9a6272-6f6f483401e0fd3", + "title": "Cross-compatibility - Date Processor should use a different output format", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 80, + "column": 10 + } + }, + { + "id": "0cd771dce9a6272-d3fc2ed2b06d7d9", + "title": "Cross-compatibility - Date Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 123, + "column": 12 + } + }, + { + "id": "0cd771dce9a6272-d4386758a95c6c9", + "title": "Cross-compatibility - Date Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 123, + "column": 12 + } + }, + { + "id": "0cd771dce9a6272-270592fa014db22", + "title": "Cross-compatibility - Date Processor should parse the first matching among a list of input formats", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 151, + "column": 10 + } + }, + { + "id": "0cd771dce9a6272-1e61209a4d7a319", + "title": "Cross-compatibility - Date Processor should add error in ingest, but ES|QL ignores the document when parsing fails", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 199, + "column": 10 + } + }, + { + "id": "0cd771dce9a6272-672f2228d750d48", + "title": "Cross-compatibility - Date Processor should parse a date with locale and timezone", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/date.spec.ts", + "line": 231, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-4fb0273c079e337", + "title": "Cross-compatibility - Dissect Processor should correctly parse a log line with the dissect processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-cfe89bb892ed465", + "title": "Cross-compatibility - Dissect Processor should support append_separator in ingest as well as in ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 47, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-bfd26479ba93265", + "title": "Cross-compatibility - Dissect Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 94, + "column": 12 + } + }, + { + "id": "fea030b8f9b60d7-dcbd1cf5fc5ad46", + "title": "Cross-compatibility - Dissect Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 94, + "column": 12 + } + }, + { + "id": "fea030b8f9b60d7-03e6b961790ec7a", + "title": "Cross-compatibility - Dissect Processor should leave the source field intact if source field name is not present in pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 118, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-97da91adf0b0750", + "title": "Cross-compatibility - Dissect Processor should override the source field if source field name is present in pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 167, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-c598558b297046b", + "title": "Cross-compatibility - Dissect Processor shout not process/output the document when source field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 215, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-220027f6ef7658c", + "title": "Cross-compatibility - Dissect Processor should support where clause both in ingest as well as in ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 246, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-d61ef386e24e465", + "title": "Cross-compatibility - Dissect Processor should handle pattern matching failures differently - ingest throws errors while ES|QL returns null columns for dissected fields", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 295, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-d936de4fcf49874", + "title": "Cross-compatibility - Dissect Processor should handle complete pattern mismatches differently - ingest throws errors while ES|QL returns null columns for dissected fields", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 350, + "column": 10 + } + }, + { + "id": "fea030b8f9b60d7-4f5e24d7e52beb2", + "title": "Cross-compatibility - Dissect Processor should handle explicitly null source field values differently between transpilers (ignore_missing=true)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/dissect.spec.ts", + "line": 405, + "column": 10 + } + }, + { + "id": "dea5f43dbc8c56c-48d57c65b128534", + "title": "Cross-compatibility - Drop Document Processor should drop documents matching where condition in both ingest pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/drop_document.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "dea5f43dbc8c56c-032daf1a21e73b7", + "title": "Cross-compatibility - Drop Document Processor should raise a runtime error when where is omitted", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/drop_document.spec.ts", + "line": 72, + "column": 12 + } + }, + { + "id": "edf87fd95fcb890-def917dabb846e7", + "title": "Cross-compatibility - Filter Conditions should handle eq (equals) filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-3be12e1cc4933e0", + "title": "Cross-compatibility - Filter Conditions should handle neq (not equals) filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 66, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-258bd4de3cc0009", + "title": "Cross-compatibility - Filter Conditions should handle gt (greater than) filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 119, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-ac155606d09025e", + "title": "Cross-compatibility - Filter Conditions should handle gte (greater than or equal) filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 174, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-e00e60c1fa058ef", + "title": "Cross-compatibility - Filter Conditions should handle lt (less than) filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 227, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-8ee7725b8a16f3b", + "title": "Cross-compatibility - Filter Conditions should handle lte (less than or equal) filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 282, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-d9c376302fff80c", + "title": "Cross-compatibility - Filter Conditions should handle exists filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 332, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-f9e92d536193aaf", + "title": "Cross-compatibility - Filter Conditions should handle range filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 388, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-c8014bbd2668fd1", + "title": "Cross-compatibility - Filter Conditions should handle contains filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 451, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-f79de17a9fb8d51", + "title": "Cross-compatibility - Filter Conditions should handle startsWith filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 557, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-8a749fed0a41cbc", + "title": "Cross-compatibility - Filter Conditions should handle endsWith filter condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 624, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-0b02f378bcec5be", + "title": "Cross-compatibility - Filter Conditions should handle multiple filter conditions with AND", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 691, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-ebfdaecd828b700", + "title": "Cross-compatibility - Filter Conditions should handle NOT condition with contains filter", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 768, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-459eb5af534fbe8", + "title": "Cross-compatibility - Filter Conditions should handle OR condition with multiple patterns", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 834, + "column": 10 + } + }, + { + "id": "edf87fd95fcb890-a3031cf95d6d234", + "title": "Cross-compatibility - Filter Conditions should handle special characters in patterns", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/filter_conditions.spec.ts", + "line": 906, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-97fb765b3076eb3", + "title": "Cross-compatibility - Grok Processor should correctly parse a log line with the grok processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-4e2f8835fabd789", + "title": "Cross-compatibility - Grok Processor should support where clause both in ingest as wel as in ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 44, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-2791ed34d0e7335", + "title": "Cross-compatibility - Grok Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 103, + "column": 12 + } + }, + { + "id": "1f52ad5e337ad60-30be0e61db59f48", + "title": "Cross-compatibility - Grok Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 103, + "column": 12 + } + }, + { + "id": "1f52ad5e337ad60-65ad302af9abbda", + "title": "Cross-compatibility - Grok Processor should handle custom oniguruma patterns in both ingest and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 127, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-489ed16f69b10f3", + "title": "Cross-compatibility - Grok Processor should handle same field captured multiple times in both ingest and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 175, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-d68421c145768e4", + "title": "Cross-compatibility - Grok Processor should support special character in grok regex patterns in both ingest and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 204, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-33d4ee28ae846d5", + "title": "Cross-compatibility - Grok Processor should leave the source field intact if source field name is not present in pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 238, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-1061608f4fbba71", + "title": "Cross-compatibility - Grok Processor should override the source field if source field name is present in pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 271, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-c0463db15d160cb", + "title": "Cross-compatibility - Grok Processor should coerce int/float values to int/float when mapped type is different than the extracted type", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 307, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-c846bdbabaeceb8", + "title": "Cross-compatibility - Grok Processor should maintain order of documents consistently when using where clause with ignore_missing: true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 382, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-fa35b430b8ebb8e", + "title": "Cross-compatibility - Grok Processor should filter out the document in ingest as well as in ES|QL when ignore_missing is false and the field is missing", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 426, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-2a9f17560da487e", + "title": "Cross-compatibility - Grok Processor should nullify ungroked fields in the doc when only partial groking is possible", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 459, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-2f05143030ddc4a", + "title": "Cross-compatibility - Grok Processor should nullify ungroked fields when no groking is possible", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 502, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-8b3182e7810d765", + "title": "Cross-compatibility - Grok Processor should inline pattern definitions", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 535, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-b312f80a29ffc69", + "title": "Cross-compatibility - Grok Processor should inline nested pattern definitions", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 568, + "column": 10 + } + }, + { + "id": "1f52ad5e337ad60-bdc76f325e873ca", + "title": "Cross-compatibility - Grok Processor should inline pattern definitions with regex", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/grok.spec.ts", + "line": 604, + "column": 10 + } + }, + { + "id": "d299bffe8005f0a-7876b9a457b58a0", + "title": "Cross-compatibility - Multi-Step Pipeline with Operator Coverage should process web server access logs with comprehensive operator and processor coverage", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/multi_step.spec.ts", + "line": 27, + "column": 12 + } + }, + { + "id": "a4680a65c2cc2c2-fcfaa8c15cd7dfa", + "title": "Cross-compatibility - Operator Coercion eq boolean (strict): true matches boolean true, not string \"true\"", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/operator_coercions.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "a4680a65c2cc2c2-a2234e5ae5852ee", + "title": "Cross-compatibility - Operator Coercion eq numeric vs string against string doc: both 450 and \"450\" match", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/operator_coercions.spec.ts", + "line": 52, + "column": 10 + } + }, + { + "id": "a4680a65c2cc2c2-251e507c373d077", + "title": "Cross-compatibility - Operator Coercion eq numeric vs string against numeric doc: both 450 and \"450\" match", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/operator_coercions.spec.ts", + "line": 96, + "column": 10 + } + }, + { + "id": "a4680a65c2cc2c2-937247eaf4502b7", + "title": "Cross-compatibility - Operator Coercion contains(\"450\") matches both string and numeric 450", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/operator_coercions.spec.ts", + "line": 141, + "column": 10 + } + }, + { + "id": "a4680a65c2cc2c2-229918e37bbb2b0", + "title": "Cross-compatibility - Operator Coercion range (string bounds) matches both numeric 8500 and string '8500'", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/operator_coercions.spec.ts", + "line": 177, + "column": 10 + } + }, + { + "id": "a4680a65c2cc2c2-ce6d65fab3408b2", + "title": "Cross-compatibility - Operator Coercion range (numeric bounds) matches both numeric 8500 and string \"8500\"", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/operator_coercions.spec.ts", + "line": 216, + "column": 10 + } + }, + { + "id": "3cb715f2a60e60f-b13a5d5cb3a476e", + "title": "Cross-compatibility - RemoveByPrefix Processor should remove nested fields in both ingest pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/remove_by_prefix.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "3cb715f2a60e60f-be4066baf102d74", + "title": "Cross-compatibility - RemoveByPrefix Processor should handle flattened field structure in both transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/remove_by_prefix.spec.ts", + "line": 64, + "column": 12 + } + }, + { + "id": "3cb715f2a60e60f-9a7ef6a26ff7b64", + "title": "Cross-compatibility - RemoveByPrefix Processor should consistently reject {{ }} template syntax in both transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/remove_by_prefix.spec.ts", + "line": 118, + "column": 14 + } + }, + { + "id": "3cb715f2a60e60f-86d10540f71a019", + "title": "Cross-compatibility - RemoveByPrefix Processor should consistently reject {{{ }}} template syntax in both transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/remove_by_prefix.spec.ts", + "line": 118, + "column": 14 + } + }, + { + "id": "3cb715f2a60e60f-74e759427e1fbae", + "title": "Cross-compatibility - RemoveByPrefix Processor should consistently remove parent field and nested fields", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/remove_by_prefix.spec.ts", + "line": 141, + "column": 12 + } + }, + { + "id": "c5ffeec812d599b-45ae9b4ec861fa1", + "title": "Cross-compatibility - Rename Processor should rename a field when override is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/rename.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "c5ffeec812d599b-ef6dad51d6071a1", + "title": "Cross-compatibility - Rename Processor should not process the document when override is false and target field exists", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/rename.spec.ts", + "line": 46, + "column": 10 + } + }, + { + "id": "c5ffeec812d599b-59069d42be735e3", + "title": "Cross-compatibility - Rename Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/rename.spec.ts", + "line": 91, + "column": 12 + } + }, + { + "id": "c5ffeec812d599b-b8c4f01edfbc3e3", + "title": "Cross-compatibility - Rename Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/rename.spec.ts", + "line": 91, + "column": 12 + } + }, + { + "id": "c5ffeec812d599b-b1302c054ce2524", + "title": "Cross-compatibility - Rename Processor should be handled by both ingest and ES|QL when field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/rename.spec.ts", + "line": 115, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-a3272bb1ed29a98", + "title": "Cross-compatibility - Replace Processor should correctly replace a literal string in both Ingest Pipeline and ES|QL (in-place)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-c6a2533020ac934", + "title": "Cross-compatibility - Replace Processor should correctly replace a literal string to target field in both Ingest Pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 44, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-9e4b9127355e938", + "title": "Cross-compatibility - Replace Processor should correctly replace using regex pattern in both Ingest Pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 75, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-18214e496e97a1a", + "title": "Cross-compatibility - Replace Processor should correctly replace using regex with capture groups in both Ingest Pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 104, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-970cdb5969597ff", + "title": "Cross-compatibility - Replace Processor should support conditional replacement with where clause in both Ingest Pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 133, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-f0267cd25d33e25", + "title": "Cross-compatibility - Replace Processor should fail when source field is of non-string type (e.g., numeric) in both Ingest Pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 184, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-66faf5f1f2a29a3", + "title": "Cross-compatibility - Replace Processor should successfully overwrite non-string target field (e.g., numeric) in both Ingest Pipeline and ES|QL", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 222, + "column": 10 + } + }, + { + "id": "b3752b4b7ca3753-a24ded0042de4a9", + "title": "Cross-compatibility - Replace Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 269, + "column": 12 + } + }, + { + "id": "b3752b4b7ca3753-592fb94eaeb9a72", + "title": "Cross-compatibility - Replace Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 269, + "column": 12 + } + }, + { + "id": "b3752b4b7ca3753-324b506a740c3b0", + "title": "Cross-compatibility - Replace Processor should document multi-value array limitation: Ingest Pipeline supports arrays, ES|QL does not", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/replace.spec.ts", + "line": 298, + "column": 10 + } + }, + { + "id": "7da1882960b17a1-e3a74c98fad2619", + "title": "Cross-compatibility - Set Processor should set a field using a value", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/set.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "7da1882960b17a1-5aa7db185850547", + "title": "Cross-compatibility - Set Processor should set a field by copying from another field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/set.spec.ts", + "line": 42, + "column": 10 + } + }, + { + "id": "7da1882960b17a1-3f2e200e5e9272b", + "title": "Cross-compatibility - Set Processor should override an existing field when override is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/set.spec.ts", + "line": 69, + "column": 10 + } + }, + { + "id": "7da1882960b17a1-3b8f29b364d96a2", + "title": "Cross-compatibility - Set Processor should not override in ingest as well as in ES|QL when override is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/set.spec.ts", + "line": 97, + "column": 10 + } + }, + { + "id": "7da1882960b17a1-44cc4f33f262653", + "title": "Cross-compatibility - Set Processor should consistently reject {{ }} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/set.spec.ts", + "line": 141, + "column": 12 + } + }, + { + "id": "7da1882960b17a1-0e01d33d5791116", + "title": "Cross-compatibility - Set Processor should consistently reject {{{ }}} template syntax in both Ingest Pipeline and ES|QL transpilers", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/cross_compatibility/set.spec.ts", + "line": 141, + "column": 12 + } + }, + { + "id": "fe4a4933a3033bf-99263210ec95a67", + "title": "Streamlang to ES|QL - Append Processor should append a value to an existing field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-fa3c433812b8428", + "title": "Streamlang to ES|QL - Append Processor should append a value to a non-existent field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 34, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-4b8ed8d00e52646", + "title": "Streamlang to ES|QL - Append Processor should not append duplicate values when allow_duplicates is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 53, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-b0b6b9c74f86512", + "title": "Streamlang to ES|QL - Append Processor should append duplicate values when allow_duplicates is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 75, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-e8a86096d9996cd", + "title": "Streamlang to ES|QL - Append Processor should not append a value when where is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 97, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-99fe8f19a661a62", + "title": "Streamlang to ES|QL - Append Processor results in a scalar (single value) when dedupe outputs a single value", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 126, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-a2fb87857599a2d", + "title": "Streamlang to ES|QL - Append Processor should support nested where with not", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 150, + "column": 10 + } + }, + { + "id": "fe4a4933a3033bf-ac6ff336130c8a5", + "title": "Streamlang to ES|QL - Append Processor should reject Mustache template syntax {{ and {{{", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/append.spec.ts", + "line": 182, + "column": 10 + } + }, + { + "id": "3c78db2f3b26ebd-12523b9dc2786a8", + "title": "Streamlang to ES|QL - Convert Processor should convert a field to a different type", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/convert.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "3c78db2f3b26ebd-54242dfda0f8ec1", + "title": "Streamlang to ES|QL - Convert Processor should reject Mustache template syntax {{ and {{{", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/convert.spec.ts", + "line": 41, + "column": 10 + } + }, + { + "id": "3c78db2f3b26ebd-170875c032ff4bb", + "title": "Streamlang to ES|QL - Convert Processor should convert a field to a different type into a the target field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/convert.spec.ts", + "line": 59, + "column": 10 + } + }, + { + "id": "3c78db2f3b26ebd-8e728db4de8f8fc", + "title": "Streamlang to ES|QL - Convert Processor should throw error if to and where are present but from is the same as to", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/convert.spec.ts", + "line": 90, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-78765352aca168d", + "title": "Streamlang to ES|QL - Date Processor should parse a date and set it to @timestamp", + "expectedStatus": "passed", + "tags": [ + "@timestamp", + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-4ae1708afcd7149", + "title": "Streamlang to ES|QL - Date Processor should parse a date with multiple formats", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 37, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-aa42a071a53b297", + "title": "Streamlang to ES|QL - Date Processor should use a different to field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 65, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-16c013cdee55a15", + "title": "Streamlang to ES|QL - Date Processor should use a different output format", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 88, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-fd0c0c4280097f6", + "title": "Streamlang to ES|QL - Date Processor should not parse a date when where is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 111, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-0a0d02adc276a31", + "title": "Streamlang to ES|QL - Date Processor should leave source unchanged in case of error", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 144, + "column": 10 + } + }, + { + "id": "b8df263566f9f16-61d18c3bdc58b46", + "title": "Streamlang to ES|QL - Date Processor should reject Mustache template syntax {{ and {{{", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/date.spec.ts", + "line": 167, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-ae2dd592f3e508f", + "title": "Streamlang to ES|QL - Dissect Processor should correctly parse a log line with the dissect processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-474653ea4e4b1d9", + "title": "Streamlang to ES|QL - Dissect Processor should ignore dissected fields when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 52, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-b724cfb39fd4085", + "title": "Streamlang to ES|QL - Dissect Processor should filter the document out when ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 106, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-72c9ea1eb1ac728", + "title": "Streamlang to ES|QL - Dissect Processor should use append_separator", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 133, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-559491e7036e890", + "title": "Streamlang to ES|QL - Dissect Processor should not dissect when where is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 160, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-47afa6197f2bce5", + "title": "Streamlang to ES|QL - Dissect Processor should handle field type mismatches gracefully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 213, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-cb1c0cd90956e1d", + "title": "Streamlang to ES|QL - Dissect Processor should dissect only when both ignore_missing and where conditions match", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 315, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-6042055edee918d", + "title": "Streamlang to ES|QL - Dissect Processor should handle an exhaustive dissect pattern with modifiers and mixed documents", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 401, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-45d7885983178a9", + "title": "Streamlang to ES|QL - Dissect Processor should not be able to retain ingested precision if field is mapped as long", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 509, + "column": 10 + } + }, + { + "id": "5fbe2b736dc2a02-ab460b40a80807c", + "title": "Streamlang to ES|QL - Dissect Processor should reject Mustache template syntax {{ and {{{", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/dissect.spec.ts", + "line": 548, + "column": 10 + } + }, + { + "id": "2fa85bca5154bb7-f4c7970a78250e1", + "title": "Streamlang to ES|QL - Drop Document Processor should drop a document matching where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/drop_document.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "525ab2d1aa4c0d7-efb87aa60cf0d0e", + "title": "Streamlang to ES|QL - Grok Processor should correctly parse a log line with the grok processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 15, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-9ef858d967619d5", + "title": "Streamlang to ES|QL - Grok Processor should creates a multi-valued column if filed is repeated in a pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 47, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-fa92b7e32a9aebe", + "title": "Streamlang to ES|QL - Grok Processor should produce a column when grok pattern does not match", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 69, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-51d1b0b7f86e9ab", + "title": "Streamlang to ES|QL - Grok Processor should grok an alias-only pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 91, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-39ec448335b0e5b", + "title": "Streamlang to ES|QL - Grok Processor should ignore missing field when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 133, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-0d76a31690c137a", + "title": "Streamlang to ES|QL - Grok Processor should fail if field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 173, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-a306c99739045bf", + "title": "Streamlang to ES|QL - Grok Processor should not grok when where is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 195, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-9df5b5f8eb06be0", + "title": "Streamlang to ES|QL - Grok Processor should handle field type mismatches gracefully (pre-existing numeric vs GROK string output)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 245, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-b847c0fb2acd9a9", + "title": "Streamlang to ES|QL - Grok Processor should grok only when both ignore_missing and where conditions match (fork logic)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 308, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-2136ff0f0341a4a", + "title": "Streamlang to ES|QL - Grok Processor should handle exhaustive pattern with mixed overrides, intact values, typed fields, and skip branches without type conflicts", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 379, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-dda18764bb7c3c6", + "title": "Streamlang to ES|QL - Grok Processor should not be able to retain ingested precision if field is mapped as long", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 500, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-5ee1d192db1b834", + "title": "Streamlang to ES|QL - Grok Processor should reject Mustache template syntax {{ and {{{", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 539, + "column": 10 + } + }, + { + "id": "525ab2d1aa4c0d7-9f6f421263ca82b", + "title": "Streamlang to ES|QL - Grok Processor should parse Android log line with regex pattern containing escaped dot", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/grok.spec.ts", + "line": 560, + "column": 10 + } + }, + { + "id": "0f9ec72879e99ce-3b9fe457a49518f", + "title": "Streamlang to ES|QL - Manual Ingest Pipeline Processor (Not Supported) should handle manual_ingest_pipeline by showing warning message", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/manual_ingest_pipeline.spec.ts", + "line": 18, + "column": 12 + } + }, + { + "id": "0f9ec72879e99ce-bb67c0498650290", + "title": "Streamlang to ES|QL - Manual Ingest Pipeline Processor (Not Supported) should handle manual_ingest_pipeline with where condition (condition ignored)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/manual_ingest_pipeline.spec.ts", + "line": 70, + "column": 12 + } + }, + { + "id": "0f9ec72879e99ce-04be8fd7b26eb29", + "title": "Streamlang to ES|QL - Manual Ingest Pipeline Processor (Not Supported) should generate valid ES|QL when mixed with supported processors", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/manual_ingest_pipeline.spec.ts", + "line": 120, + "column": 12 + } + }, + { + "id": "7e7f95f940131ba-a4103e9784a7b80", + "title": "Streamlang to ES|QL - RemoveByPrefix Processor should keep the parent field when it has no nested fields", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove_by_prefix.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "7e7f95f940131ba-59c33558a799279", + "title": "Streamlang to ES|QL - RemoveByPrefix Processor should remove nested fields (parent field removed too)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove_by_prefix.spec.ts", + "line": 46, + "column": 12 + } + }, + { + "id": "7e7f95f940131ba-c92795db620bc19", + "title": "Streamlang to ES|QL - RemoveByPrefix Processor should work with dotted field names (flattened structure)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove_by_prefix.spec.ts", + "line": 89, + "column": 12 + } + }, + { + "id": "7e7f95f940131ba-2591f2cb915f98e", + "title": "Streamlang to ES|QL - RemoveByPrefix Processor should reject Mustache template syntax {{ and {{{ in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove_by_prefix.spec.ts", + "line": 127, + "column": 12 + } + }, + { + "id": "5cc125e42a6b3b3-ac97538c02aba0d", + "title": "Streamlang to ES|QL - Remove Processor should remove a field with DROP", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "5cc125e42a6b3b3-7e0ab3124421b1d", + "title": "Streamlang to ES|QL - Remove Processor should handle ignore_missing: false (default) with DROP", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove.spec.ts", + "line": 39, + "column": 10 + } + }, + { + "id": "5cc125e42a6b3b3-37c45542557894f", + "title": "Streamlang to ES|QL - Remove Processor should handle ignore_missing: true with DROP", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove.spec.ts", + "line": 65, + "column": 10 + } + }, + { + "id": "5cc125e42a6b3b3-c1e8a9d47558794", + "title": "Streamlang to ES|QL - Remove Processor should remove field conditionally with EVAL CASE", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove.spec.ts", + "line": 94, + "column": 10 + } + }, + { + "id": "5cc125e42a6b3b3-ed80430a9618619", + "title": "Streamlang to ES|QL - Remove Processor should reject Mustache template syntax {{ and {{{ in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/remove.spec.ts", + "line": 133, + "column": 10 + } + }, + { + "id": "ea9ecad05982c00-92b763d63845ec8", + "title": "Streamlang to ES|QL - Rename Processor should rename a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/rename.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "ea9ecad05982c00-9fb4d8d50eb16ad", + "title": "Streamlang to ES|QL - Rename Processor should handle ignore_missing: false, override: false (default options)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/rename.spec.ts", + "line": 40, + "column": 10 + } + }, + { + "id": "ea9ecad05982c00-9e9ed0668c874e5", + "title": "Streamlang to ES|QL - Rename Processor should handle ignore_missing: true, override: false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/rename.spec.ts", + "line": 73, + "column": 10 + } + }, + { + "id": "ea9ecad05982c00-02181c40a6af513", + "title": "Streamlang to ES|QL - Rename Processor should handle ignore_missing: false, override: true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/rename.spec.ts", + "line": 104, + "column": 10 + } + }, + { + "id": "ea9ecad05982c00-7572538340d04d2", + "title": "Streamlang to ES|QL - Rename Processor should reject Mustache template syntax {{ and {{{ in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/rename.spec.ts", + "line": 134, + "column": 10 + } + }, + { + "id": "b624876300eab90-f820134013ec994", + "title": "Streamlang to ES|QL - Replace Processor should replace a literal string with EVAL replace() (in-place)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "b624876300eab90-ba558e0aca83667", + "title": "Streamlang to ES|QL - Replace Processor should replace a literal string to target field with EVAL replace()", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 41, + "column": 10 + } + }, + { + "id": "b624876300eab90-569b7ecfbd917f3", + "title": "Streamlang to ES|QL - Replace Processor should replace using regex pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 70, + "column": 10 + } + }, + { + "id": "b624876300eab90-62412a867cd22a8", + "title": "Streamlang to ES|QL - Replace Processor should replace literal dot with escaped dot pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 94, + "column": 10 + } + }, + { + "id": "b624876300eab90-48d901c5b26a3dd", + "title": "Streamlang to ES|QL - Replace Processor should replace using regex with capture groups", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 118, + "column": 10 + } + }, + { + "id": "b624876300eab90-2061644a474c22c", + "title": "Streamlang to ES|QL - Replace Processor should handle ignore_missing: false (default) with WHERE filter", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 142, + "column": 10 + } + }, + { + "id": "b624876300eab90-5b81e301ce9ffda", + "title": "Streamlang to ES|QL - Replace Processor should handle ignore_missing: true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 173, + "column": 10 + } + }, + { + "id": "b624876300eab90-75773d160762ae4", + "title": "Streamlang to ES|QL - Replace Processor should replace field conditionally with EVAL CASE", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 204, + "column": 10 + } + }, + { + "id": "b624876300eab90-b6026ee2d3354de", + "title": "Streamlang to ES|QL - Replace Processor should replace to target field conditionally with EVAL CASE", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 244, + "column": 10 + } + }, + { + "id": "b624876300eab90-191ae09d7a8602d", + "title": "Streamlang to ES|QL - Replace Processor should reject Mustache template syntax {{ and {{{ in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/replace.spec.ts", + "line": 300, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-e296bcdb728b2c4", + "title": "Streamlang to ES|QL - Set Processor should set a field using a value", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-be5697cb62329d8", + "title": "Streamlang to ES|QL - Set Processor should reject Mustache template syntax {{ and {{{", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 41, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-90ee76f947fa595", + "title": "Streamlang to ES|QL - Set Processor should not set a field when where is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 58, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-d1d082dcb18188a", + "title": "Streamlang to ES|QL - Set Processor should set a field by copying from another field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 107, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-f701d8e1b7ef925", + "title": "Streamlang to ES|QL - Set Processor should not override an existing field when override is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 132, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-2621c335473f262", + "title": "Streamlang to ES|QL - Set Processor should override an existing field when override is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 168, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-0afcf26a02ee3f2", + "title": "Streamlang to ES|QL - Set Processor should throw error if value and copy_from are missing", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 193, + "column": 10 + } + }, + { + "id": "3b4d56ead913a9c-07b419614263b81", + "title": "Streamlang to ES|QL - Set Processor should throw error if value and copy_from are both present", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/esql/set.spec.ts", + "line": 218, + "column": 10 + } + }, + { + "id": "6c14e6e74cf08cb-443d2aa1bd8d9a1", + "title": "Streamlang to Ingest Pipeline - Append Processor should append values to a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/append.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "6c14e6e74cf08cb-dd9573aca410693", + "title": "Streamlang to Ingest Pipeline - Append Processor should append values to a non-existent field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/append.spec.ts", + "line": 40, + "column": 12 + } + }, + { + "id": "6c14e6e74cf08cb-4ed4a8529b89cbb", + "title": "Streamlang to Ingest Pipeline - Append Processor should not append duplicate values when allow_duplicates is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/append.spec.ts", + "line": 63, + "column": 12 + } + }, + { + "id": "6c14e6e74cf08cb-70500b2c62c7a8e", + "title": "Streamlang to Ingest Pipeline - Append Processor should append duplicate values when allow_duplicates is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/append.spec.ts", + "line": 90, + "column": 12 + } + }, + { + "id": "6c14e6e74cf08cb-0c9e769b4b6366f", + "title": "Streamlang to Ingest Pipeline - Append Processor should reject {{ }} template syntax", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/append.spec.ts", + "line": 127, + "column": 14 + } + }, + { + "id": "6c14e6e74cf08cb-f1ed29ae1083fe6", + "title": "Streamlang to Ingest Pipeline - Append Processor should reject {{{ }}} template syntax", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/append.spec.ts", + "line": 127, + "column": 14 + } + }, + { + "id": "95fab025e05fcb2-da7ee4a8ab20738", + "title": "Streamlang to Ingest Pipeline - Convert Processor should convert a field to a different type", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "95fab025e05fcb2-abee5bdd8b232f7", + "title": "Streamlang to Ingest Pipeline - Convert Processor should reject {{ }} template syntax", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "95fab025e05fcb2-ca4872fc9e612da", + "title": "Streamlang to Ingest Pipeline - Convert Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "95fab025e05fcb2-0d19109eca5530a", + "title": "Streamlang to Ingest Pipeline - Convert Processor should reject {{ }} template syntax in values", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "95fab025e05fcb2-ad8d6ac47132375", + "title": "Streamlang to Ingest Pipeline - Convert Processor should reject {{{ }}} template syntax", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "95fab025e05fcb2-d216ad8471f9695", + "title": "Streamlang to Ingest Pipeline - Convert Processor should convert a field to a different type into a the target field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 84, + "column": 12 + } + }, + { + "id": "95fab025e05fcb2-6c0bfb98159adc4", + "title": "Streamlang to Ingest Pipeline - Convert Processor should convert a field to a different type into a the target field with a where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/convert.spec.ts", + "line": 111, + "column": 12 + } + }, + { + "id": "bacfa02539da42e-3f17dd8d477464f", + "title": "Streamlang to Ingest Pipeline - Date Processor should parse a date and set it to @timestamp", + "expectedStatus": "passed", + "tags": [ + "@timestamp", + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 14, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-aeca8896e4caa50", + "title": "Streamlang to Ingest Pipeline - Date Processor should override the field if from and to are same", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 41, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-a4443aa5e7198ae", + "title": "Streamlang to Ingest Pipeline - Date Processor should parse a date with a specific format", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 70, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-ccc7b0cdbcfd324", + "title": "Streamlang to Ingest Pipeline - Date Processor should handle multiple formats", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 99, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-be227210e244d4f", + "title": "Streamlang to Ingest Pipeline - Date Processor should parse a date with a specific output format", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 128, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-185a498dc9e6de1", + "title": "Streamlang to Ingest Pipeline - Date Processor should fail when date format is incorrect", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 157, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-35c6041cacbb2a7", + "title": "Streamlang to Ingest Pipeline - Date Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 193, + "column": 12 + } + }, + { + "id": "bacfa02539da42e-f339229bd89eda3", + "title": "Streamlang to Ingest Pipeline - Date Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 193, + "column": 12 + } + }, + { + "id": "bacfa02539da42e-a5c56e0ab3a2b96", + "title": "Streamlang to Ingest Pipeline - Date Processor should parse a date with a specific locale and timezone", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 211, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-3be0bbf987a31a7", + "title": "Streamlang to Ingest Pipeline - Date Processor should fail when locale is not valid", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 242, + "column": 10 + } + }, + { + "id": "bacfa02539da42e-64ef161fa296031", + "title": "Streamlang to Ingest Pipeline - Date Processor should fail when timezone is not valid", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/date.spec.ts", + "line": 272, + "column": 10 + } + }, + { + "id": "fb182863413a08e-c1e4d4468702ba9", + "title": "Streamlang to Ingest Pipeline - Dissect Processor should correctly parse a log line with the dissect processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/dissect.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "fb182863413a08e-69d2d8b2f1c2bf0", + "title": "Streamlang to Ingest Pipeline - Dissect Processor should ignore missing field when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/dissect.spec.ts", + "line": 50, + "column": 12 + } + }, + { + "id": "fb182863413a08e-89a0768ac5cfe32", + "title": "Streamlang to Ingest Pipeline - Dissect Processor should fail if field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/dissect.spec.ts", + "line": 75, + "column": 12 + } + }, + { + "id": "fb182863413a08e-9a1b5e8fff00fd5", + "title": "Streamlang to Ingest Pipeline - Dissect Processor should use append_separator", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/dissect.spec.ts", + "line": 96, + "column": 12 + } + }, + { + "id": "fb182863413a08e-e3bcbbb4ec7242e", + "title": "Streamlang to Ingest Pipeline - Dissect Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/dissect.spec.ts", + "line": 131, + "column": 14 + } + }, + { + "id": "fb182863413a08e-3e893e9293f311b", + "title": "Streamlang to Ingest Pipeline - Dissect Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/dissect.spec.ts", + "line": 131, + "column": 14 + } + }, + { + "id": "eeda2c6f4be7ea5-867b832481ce72d", + "title": "Streamlang to Ingest Pipeline - Drop Document Processor should drop a document matching where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/drop_document.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "4fd036695248da1-ce9a38362d09290", + "title": "Streamlang to Ingest Pipeline - Grok Processor should correctly parse a log line with the grok processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/grok.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "4fd036695248da1-30aa5722ca83485", + "title": "Streamlang to Ingest Pipeline - Grok Processor should ignore missing field when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/grok.spec.ts", + "line": 47, + "column": 12 + } + }, + { + "id": "4fd036695248da1-60c885efe8a7db2", + "title": "Streamlang to Ingest Pipeline - Grok Processor should fail if field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/grok.spec.ts", + "line": 72, + "column": 12 + } + }, + { + "id": "4fd036695248da1-f133a30d2cf9bfd", + "title": "Streamlang to Ingest Pipeline - Grok Processor should fail when grok pattern does not match", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/grok.spec.ts", + "line": 93, + "column": 12 + } + }, + { + "id": "4fd036695248da1-5ab3509fd06101a", + "title": "Streamlang to Ingest Pipeline - Grok Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/grok.spec.ts", + "line": 123, + "column": 14 + } + }, + { + "id": "4fd036695248da1-a1774c1755c108f", + "title": "Streamlang to Ingest Pipeline - Grok Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/grok.spec.ts", + "line": 123, + "column": 14 + } + }, + { + "id": "a05d3c377701d14-9e4c34d8b9f9076", + "title": "Streamlang to Ingest Pipeline - Manual Ingest Pipeline Processor should process basic manual ingest pipeline with set processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/manual_ingest_pipeline.spec.ts", + "line": 18, + "column": 12 + } + }, + { + "id": "a05d3c377701d14-28ded69239ba75b", + "title": "Streamlang to Ingest Pipeline - Manual Ingest Pipeline Processor should process manual ingest pipeline with multiple processors", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/manual_ingest_pipeline.spec.ts", + "line": 58, + "column": 12 + } + }, + { + "id": "a05d3c377701d14-d031ad3474460ea", + "title": "Streamlang to Ingest Pipeline - Manual Ingest Pipeline Processor should process manual ingest pipeline with conditional where clause", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/manual_ingest_pipeline.spec.ts", + "line": 105, + "column": 12 + } + }, + { + "id": "a05d3c377701d14-2d88311e9b8ff95", + "title": "Streamlang to Ingest Pipeline - Manual Ingest Pipeline Processor should handle manual ingest pipeline with tag", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/manual_ingest_pipeline.spec.ts", + "line": 152, + "column": 12 + } + }, + { + "id": "a05d3c377701d14-43c40987fddc6ad", + "title": "Streamlang to Ingest Pipeline - Manual Ingest Pipeline Processor should handle complex manual ingest pipeline with grok processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/manual_ingest_pipeline.spec.ts", + "line": 188, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-f8f60a0c0f584e3", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-e7789f1053d8b8e", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove a field and all nested fields (subobjects)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 41, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-54e4608dd8a5a9d", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove flattened fields with prefix", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 82, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-0e46ef4dfed6461", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove the parent field itself when using dotted notation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 117, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-d6dcc1954b8652b", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove the parent field itself when using subobjects", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 156, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-df48c093ee326a3", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove flattened fields within a nested subobject", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 197, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-7f11ae3f0974c5d", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should remove flattened fields within a deeply nested subobject", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 238, + "column": 12 + } + }, + { + "id": "2dc8292cad1f6c3-0cde6eb82dad651", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 294, + "column": 14 + } + }, + { + "id": "2dc8292cad1f6c3-893ac27e31f7cb3", + "title": "Streamlang to Ingest Pipeline - RemoveByPrefix Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove_by_prefix.spec.ts", + "line": 294, + "column": 14 + } + }, + { + "id": "f452092549ba895-ae05c0b4fe3e8af", + "title": "Streamlang to Ingest Pipeline - Remove Processor should remove a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "f452092549ba895-10d5f48d8e82422", + "title": "Streamlang to Ingest Pipeline - Remove Processor should ignore missing field when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 41, + "column": 12 + } + }, + { + "id": "f452092549ba895-d85b4ecd0487a5e", + "title": "Streamlang to Ingest Pipeline - Remove Processor should fail if field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 65, + "column": 12 + } + }, + { + "id": "f452092549ba895-55eb48e0cae1088", + "title": "Streamlang to Ingest Pipeline - Remove Processor should remove field conditionally with where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 86, + "column": 12 + } + }, + { + "id": "f452092549ba895-3a17ed7d126a0fa", + "title": "Streamlang to Ingest Pipeline - Remove Processor default value of ignore_missing (false)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 124, + "column": 12 + } + }, + { + "id": "f452092549ba895-c9016ea65e16fa8", + "title": "Streamlang to Ingest Pipeline - Remove Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 155, + "column": 14 + } + }, + { + "id": "f452092549ba895-64aba042f660649", + "title": "Streamlang to Ingest Pipeline - Remove Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/remove.spec.ts", + "line": 155, + "column": 14 + } + }, + { + "id": "a41eb2ed154b058-0dabaf496197265", + "title": "Streamlang to Ingest Pipeline - Rename Processor should rename a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "a41eb2ed154b058-28a14c354a7fdb5", + "title": "Streamlang to Ingest Pipeline - Rename Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 54, + "column": 14 + } + }, + { + "id": "a41eb2ed154b058-e717cba2b5516b9", + "title": "Streamlang to Ingest Pipeline - Rename Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 54, + "column": 14 + } + }, + { + "id": "a41eb2ed154b058-4c7bc3be6013b42", + "title": "Streamlang to Ingest Pipeline - Rename Processor should ignore missing field when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 71, + "column": 12 + } + }, + { + "id": "a41eb2ed154b058-1b373035b6b0cef", + "title": "Streamlang to Ingest Pipeline - Rename Processor should fail if field is missing and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 96, + "column": 12 + } + }, + { + "id": "a41eb2ed154b058-f2107fcedb8b2e7", + "title": "Streamlang to Ingest Pipeline - Rename Processor should override existing field when override is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 118, + "column": 12 + } + }, + { + "id": "a41eb2ed154b058-9a6b7cb8304a8db", + "title": "Streamlang to Ingest Pipeline - Rename Processor should fail if target field exists and override is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 143, + "column": 12 + } + }, + { + "id": "a41eb2ed154b058-741b968220b5259", + "title": "Streamlang to Ingest Pipeline - Rename Processor default values of ignore_missing and override (ignore_missing: false, override: false)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/rename.spec.ts", + "line": 165, + "column": 12 + } + }, + { + "id": "214d436321f41fd-527a78f86f77511", + "title": "Streamlang to Ingest Pipeline - Replace Processor should replace a literal string (in-place)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "214d436321f41fd-474501a090d6ce7", + "title": "Streamlang to Ingest Pipeline - Replace Processor should replace a literal string to target field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 41, + "column": 12 + } + }, + { + "id": "214d436321f41fd-593ec31b029cb6c", + "title": "Streamlang to Ingest Pipeline - Replace Processor should replace using regex pattern", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 67, + "column": 12 + } + }, + { + "id": "214d436321f41fd-ab6b7f435a6fa9b", + "title": "Streamlang to Ingest Pipeline - Replace Processor should replace using regex with capture groups", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 91, + "column": 12 + } + }, + { + "id": "214d436321f41fd-c0fcce9569ace97", + "title": "Streamlang to Ingest Pipeline - Replace Processor should fail if field is missing (default value) and ignore_missing is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 115, + "column": 12 + } + }, + { + "id": "214d436321f41fd-6407d72fc6fd875", + "title": "Streamlang to Ingest Pipeline - Replace Processor should ignore missing field when ignore_missing is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 140, + "column": 12 + } + }, + { + "id": "214d436321f41fd-74e8b527c08ce02", + "title": "Streamlang to Ingest Pipeline - Replace Processor should replace field conditionally with where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 167, + "column": 12 + } + }, + { + "id": "214d436321f41fd-25e6d5f762b493a", + "title": "Streamlang to Ingest Pipeline - Replace Processor should replace to target field conditionally with where condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 207, + "column": 12 + } + }, + { + "id": "214d436321f41fd-179fdb753f5ff6d", + "title": "Streamlang to Ingest Pipeline - Replace Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 263, + "column": 14 + } + }, + { + "id": "214d436321f41fd-d405629ef1b4e84", + "title": "Streamlang to Ingest Pipeline - Replace Processor should reject {{{ }}} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/replace.spec.ts", + "line": 263, + "column": 14 + } + }, + { + "id": "e662c5633ad6530-c1283100acb8874", + "title": "Streamlang to Ingest Pipeline - Set Processor should set a field using a value", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 17, + "column": 12 + } + }, + { + "id": "e662c5633ad6530-177dd8d3279cf9f", + "title": "Streamlang to Ingest Pipeline - Set Processor should reject {{ }} template syntax", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "e662c5633ad6530-68d94689dd5eb99", + "title": "Streamlang to Ingest Pipeline - Set Processor should reject {{ }} template syntax in field names", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "e662c5633ad6530-c4000c7be5dca66", + "title": "Streamlang to Ingest Pipeline - Set Processor should reject {{ }} template syntax in values", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "e662c5633ad6530-e2ecc520ddf721f", + "title": "Streamlang to Ingest Pipeline - Set Processor should reject {{{ }}} template syntax", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 66, + "column": 14 + } + }, + { + "id": "e662c5633ad6530-ce30fe1a8b377f5", + "title": "Streamlang to Ingest Pipeline - Set Processor should set a field by copying from another field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 83, + "column": 12 + } + }, + { + "id": "e662c5633ad6530-9d799fd4eff67dc", + "title": "Streamlang to Ingest Pipeline - Set Processor should not override an existing field when override is false", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 105, + "column": 12 + } + }, + { + "id": "e662c5633ad6530-f9d520f5bc888ba", + "title": "Streamlang to Ingest Pipeline - Set Processor should override an existing field when override is true", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 128, + "column": 12 + } + }, + { + "id": "e662c5633ad6530-482c4aedcd40339", + "title": "Streamlang to Ingest Pipeline - Set Processor should throw error if value and copy_from are missing", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 151, + "column": 12 + } + }, + { + "id": "e662c5633ad6530-810415859b38553", + "title": "Streamlang to Ingest Pipeline - Set Processor should throw error if value and copy_from are both present", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/tests/ingest_pipeline/set.spec.ts", + "line": 176, + "column": 12 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/private/discover_enhanced/test/scout/.meta/ui/parallel.json b/x-pack/platform/plugins/private/discover_enhanced/test/scout/.meta/ui/parallel.json new file mode 100644 index 0000000000000..81bf8db52bb86 --- /dev/null +++ b/x-pack/platform/plugins/private/discover_enhanced/test/scout/.meta/ui/parallel.json @@ -0,0 +1,170 @@ +{ + "lastModified": "2025-12-03T19:03:09.722Z", + "sha1": "4ebdabbb2f59457a685a6b803aa5b45701dfb583", + "tests": [ + { + "id": "448e82090e00e69-f2cd2d3cdc77643", + "title": "Ingest data to Elasticsearch", + "expectedStatus": "passed", + "tags": [], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/global.setup.ts", + "line": 11, + "column": 16 + } + }, + { + "id": "06fc533cda37130-a089b9a7d2f8995", + "title": "Discover app - errors should render invalid scripted field error", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/error_handling.spec.ts", + "line": 30, + "column": 12 + } + }, + { + "id": "1c8d238ba178b3f-d0060d150395e69", + "title": "Discover app - saved searches should customize time range on dashboards", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSearch", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/saved_searches.spec.ts", + "line": 60, + "column": 14 + } + }, + { + "id": "1c8d238ba178b3f-27057c4fe6e0bd2", + "title": "Discover app - saved searches should unselect saved search when navigating to a 'new'", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSearch", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/saved_searches.spec.ts", + "line": 78, + "column": 14 + } + }, + { + "id": "ca32806d0b70e16-397bdafb1bc3201", + "title": "Discover app - value suggestions non-time based shows all auto-suggest options for a filter in discover context app", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSearch", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/value_suggestions_non_time_based.spec.ts", + "line": 32, + "column": 14 + } + }, + { + "id": "557ab66ec4c2b6c-afd734a0fe0b960", + "title": "Discover app - value suggestions: useTimeRange disabled show up if outside of range", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/value_suggestions_use_time_range_disabled.spec.ts", + "line": 36, + "column": 14 + } + }, + { + "id": "557ab66ec4c2b6c-00b97203c5962ea", + "title": "Discover app - value suggestions: useTimeRange disabled show up if in range", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/value_suggestions_use_time_range_disabled.spec.ts", + "line": 49, + "column": 14 + } + }, + { + "id": "369fdc3eaf2da20-82f641d21f82de4", + "title": "Discover app - value suggestions: useTimeRange enabled dont show up if outside of range", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/value_suggestions.spec.ts", + "line": 34, + "column": 14 + } + }, + { + "id": "369fdc3eaf2da20-c4239399eed1a5b", + "title": "Discover app - value suggestions: useTimeRange enabled show up if in range", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/value_suggestions.spec.ts", + "line": 40, + "column": 14 + } + }, + { + "id": "369fdc3eaf2da20-d6abe17e43d844f", + "title": "Discover app - value suggestions: useTimeRange enabled also displays descriptions for operators", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel_tests/value_suggestions.spec.ts", + "line": 53, + "column": 14 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/private/discover_enhanced/test/scout/.meta/ui/standard.json b/x-pack/platform/plugins/private/discover_enhanced/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..e9975903ad284 --- /dev/null +++ b/x-pack/platform/plugins/private/discover_enhanced/test/scout/.meta/ui/standard.json @@ -0,0 +1,85 @@ +{ + "lastModified": "2025-12-03T19:03:13.427Z", + "sha1": "4ebdabbb2f59457a685a6b803aa5b45701dfb583", + "tests": [ + { + "id": "451ff2b9982142c-9a17f71a4f5ef91", + "title": "Discover App - Performance Metrics & Bundle Analysis collects and validates JS Bundles loaded on page", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch", + "@perf" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/tests/discover_cdp_perf.spec.ts", + "line": 41, + "column": 9 + } + }, + { + "id": "451ff2b9982142c-0744d4070723e77", + "title": "Discover App - Performance Metrics & Bundle Analysis measures Performance Metrics before and after Discover load", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch", + "@perf" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/tests/discover_cdp_perf.spec.ts", + "line": 92, + "column": 9 + } + }, + { + "id": "ae05a311d26a5b6-12853e01d90ebcd", + "title": "Discover App - Lighthouse Performance Audit runs audit on Discover Page", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch", + "@perf" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/tests/discover_lighthouse.spec.ts", + "line": 29, + "column": 19 + } + }, + { + "id": "9028134cd73b3d5-8dadab4458b6f58", + "title": "Discover app - saved search embeddable should allow removing the dashboard panel after the underlying saved search has been deleted", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/tests/saved_search_embeddable.spec.ts", + "line": 64, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/private/painless_lab/test/scout/.meta/api/standard.json b/x-pack/platform/plugins/private/painless_lab/test/scout/.meta/api/standard.json new file mode 100644 index 0000000000000..cc74ca8709122 --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/test/scout/.meta/api/standard.json @@ -0,0 +1,101 @@ +{ + "lastModified": "2025-12-03T19:03:17.159Z", + "sha1": "940ba749df0283440c284d01665e9a21e9fa3412", + "tests": [ + { + "id": "d3b5a0b3b6b9628-a2c82aac53380fa", + "title": "POST api/painless_lab/execute with specific cluster privileges should execute a valid painless script using cluster:admin/scripts/painless/execute credentials", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api_custom_cluster_privileges.spec.ts", + "line": 15, + "column": 12 + } + }, + { + "id": "d3b5a0b3b6b9628-28a4f5cee6f0402", + "title": "POST api/painless_lab/execute with specific cluster privileges should execute a valid painless script using cluster:admin credentials", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api_custom_cluster_privileges.spec.ts", + "line": 38, + "column": 12 + } + }, + { + "id": "d3b5a0b3b6b9628-53b85251d784a49", + "title": "POST api/painless_lab/execute with specific cluster privileges should return an unauthorized status code when using monitor cluster credentials", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api_custom_cluster_privileges.spec.ts", + "line": 60, + "column": 12 + } + }, + { + "id": "d3b5a0b3b6b9628-0c96727d00db12e", + "title": "POST api/painless_lab/execute with specific cluster privileges should return an unauthorized status code when using both cluster and Kibana privileges", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api_custom_cluster_privileges.spec.ts", + "line": 79, + "column": 12 + } + }, + { + "id": "4af09aa66055223-c8b1db445416e72", + "title": "[search serverless] POST api/painless_lab/execute should return 404", + "expectedStatus": "passed", + "tags": [ + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api_disabled.spec.ts", + "line": 20, + "column": 12 + } + }, + { + "id": "56a689b42d9f50e-9b1115aefe308bc", + "title": "POST api/painless_lab/execute should execute a valid painless script using admin credentials", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api.spec.ts", + "line": 21, + "column": 12 + } + }, + { + "id": "56a689b42d9f50e-812ceacc1d23194", + "title": "POST api/painless_lab/execute should return error response for invalid painless script", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/api/tests/execute_api.spec.ts", + "line": 39, + "column": 12 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/private/painless_lab/test/scout/.meta/ui/standard.json b/x-pack/platform/plugins/private/painless_lab/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..6aa1345c5708d --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/test/scout/.meta/ui/standard.json @@ -0,0 +1,19 @@ +{ + "lastModified": "2025-12-03T19:03:20.814Z", + "sha1": "1e3519478b9e202e394166a073c62be615f4ce75", + "tests": [ + { + "id": "84b12615210c7cc-bbe9cf3613a4443", + "title": "Painless Lab validate painless lab editor and request", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/private/painless_lab/test/scout/ui/tests/painless_lab.spec.ts", + "line": 48, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/index_management/test/scout/.meta/ui/standard.json b/x-pack/platform/plugins/shared/index_management/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..0bfb45902c051 --- /dev/null +++ b/x-pack/platform/plugins/shared/index_management/test/scout/.meta/ui/standard.json @@ -0,0 +1,188 @@ +{ + "lastModified": "2025-12-03T19:03:24.591Z", + "sha1": "6441468ffb4077883ee6a6fbb942e69e8ffd91a6", + "tests": [ + { + "id": "e7ca8c886a58426-d57f60fe1d6db3b", + "title": "Home page Loads the app and renders the indices tab by default", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 27, + "column": 7 + } + }, + { + "id": "e7ca8c886a58426-27b5341489d2049", + "title": "Home page Indices - renders the indices tab", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 45, + "column": 7 + } + }, + { + "id": "e7ca8c886a58426-8af903399832657", + "title": "Home page Indices - can create an index", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 56, + "column": 7 + } + }, + { + "id": "e7ca8c886a58426-6254649b2eeb89f", + "title": "Home page Data streams - renders the data streams tab", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 66, + "column": 7 + } + }, + { + "id": "e7ca8c886a58426-c4e1c8ec6b68b76", + "title": "Home page Index templates - renders the index templates tab", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 77, + "column": 7 + } + }, + { + "id": "e7ca8c886a58426-9c13e3ee7e1f9fe", + "title": "Home page Component templates - renders the component templates tab", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 88, + "column": 7 + } + }, + { + "id": "e7ca8c886a58426-9b94d3afcaf88b6", + "title": "Home page Enrich policies - renders the enrich policies tab", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/home_page.spec.ts", + "line": 103, + "column": 7 + } + }, + { + "id": "8b2302c844751d9-97a3b7268ab4789", + "title": "Index details page Navigates to the index details page from the home page", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_details_page.spec.ts", + "line": 16, + "column": 7 + } + }, + { + "id": "b881be62b258ebc-9a7d3356056083c", + "title": "Index template wizard - Mappings step clearing up the Numeric subtype dropdown doesn't break the page", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_template_wizard_mappings.spec.ts", + "line": 42, + "column": 7 + } + }, + { + "id": "b881be62b258ebc-a615b69eb6e5911", + "title": "Index template wizard - Mappings step clearing up the Range subtype dropdown doesn't break the page", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_template_wizard_mappings.spec.ts", + "line": 61, + "column": 7 + } + }, + { + "id": "b881be62b258ebc-55c3d2b0ef98d52", + "title": "Index template wizard - Mappings step advanced options tab doesn't add default values to request by default", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_template_wizard_mappings.spec.ts", + "line": 80, + "column": 7 + } + }, + { + "id": "b881be62b258ebc-aaa3d55cabfade3", + "title": "Index template wizard - Mappings step advanced options tab adds the set values to the request", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_template_wizard_mappings.spec.ts", + "line": 99, + "column": 7 + } + }, + { + "id": "7d82deafb17121c-339a53750c46ef4", + "title": "Index template wizard - Preview template can create and preview an index template", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_template_wizard_preview.spec.ts", + "line": 22, + "column": 7 + } + }, + { + "id": "ed0c62c57a89768-1a697404152ef55", + "title": "Index template wizard - Create can walk through all wizard steps and create a template", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/index_management/test/scout/ui/tests/index_template_wizard.spec.ts", + "line": 24, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/maps/test/scout/.meta/ui/standard.json b/x-pack/platform/plugins/shared/maps/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..233c41e6e021e --- /dev/null +++ b/x-pack/platform/plugins/shared/maps/test/scout/.meta/ui/standard.json @@ -0,0 +1,25 @@ +{ + "lastModified": "2025-12-03T19:03:28.200Z", + "sha1": "74c880ce84b4ba381b42e9aebef24466a1523e54", + "tests": [ + { + "id": "0d46d86b877f63c-caca4780f786cad", + "title": "Maps Full screen mode", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity", + "@svlSecurityEssentials", + "@svlSecurityEase", + "@svlOblt", + "@svlLogsEssentials", + "@svlSearch" + ], + "location": { + "file": "x-pack/platform/plugins/shared/maps/test/scout/ui/tests/full_screen_mode.spec.ts", + "line": 28, + "column": 9 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/streams_app/test/scout/.meta/ui/standard.json b/x-pack/platform/plugins/shared/streams_app/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..7df4395aeacfb --- /dev/null +++ b/x-pack/platform/plugins/shared/streams_app/test/scout/.meta/ui/standard.json @@ -0,0 +1,2458 @@ +{ + "lastModified": "2025-12-11T10:19:20.201Z", + "sha1": "a92fb513bf08dbc38812c820341ef6565d61f809", + "tests": [ + { + "id": "3cc9409cebf2cef-744ce32675c025c", + "title": "Setup environment for streams tests", + "expectedStatus": "passed", + "tags": [], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/global.setup.ts", + "line": 10, + "column": 16 + } + }, + { + "id": "facb589480c8306-56341b35415c7bd", + "title": "Stream data mapping - schema editor - Classic Streams read-only user cannot add/edit fields", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/classic_streams_schema.spec.ts", + "line": 38, + "column": 9 + } + }, + { + "id": "facb589480c8306-6c0fa76d26f4840", + "title": "Stream data mapping - schema editor - Classic Streams copy_to advanced parameter works", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/classic_streams_schema.spec.ts", + "line": 49, + "column": 9 + } + }, + { + "id": "facb589480c8306-dd5db3aa2061b62", + "title": "Stream data mapping - schema editor - Classic Streams allows mapping a field as geo_point", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/classic_streams_schema.spec.ts", + "line": 131, + "column": 9 + } + }, + { + "id": "79cdee9afb4efe9-44ed3bb5d07afc9", + "title": "Stream data mapping - schema editor should display a list of stream mappings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/data_mapping.spec.ts", + "line": 40, + "column": 7 + } + }, + { + "id": "79cdee9afb4efe9-01d6d0b9fd4e284", + "title": "Stream data mapping - schema editor should allow searching by field name", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/data_mapping.spec.ts", + "line": 58, + "column": 7 + } + }, + { + "id": "79cdee9afb4efe9-35a0efa77620063", + "title": "Stream data mapping - schema editor should allow filtering by field type and status", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/data_mapping.spec.ts", + "line": 95, + "column": 7 + } + }, + { + "id": "79cdee9afb4efe9-2375016ad4b94bd", + "title": "Stream data mapping - schema editor should allow mapping a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/data_mapping.spec.ts", + "line": 130, + "column": 7 + } + }, + { + "id": "79cdee9afb4efe9-2974d45367725fa", + "title": "Stream data mapping - schema editor should allow unmapping a field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/data_mapping.spec.ts", + "line": 172, + "column": 7 + } + }, + { + "id": "79cdee9afb4efe9-fc62d688b507d95", + "title": "Stream data mapping - schema editor should allow manually adding a new field", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/data_mapping.spec.ts", + "line": 233, + "column": 7 + } + }, + { + "id": "f86f3e79121acd3-cda4d2c8654359b", + "title": "Stream data mapping - schema editor - Wired Streams inherited fields display with parent links", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/wired_streams_schema.spec.ts", + "line": 48, + "column": 9 + } + }, + { + "id": "f86f3e79121acd3-7e8867ed1b7384f", + "title": "Stream data mapping - schema editor - Wired Streams ECS/Otel type pre-selection for known fields", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/wired_streams_schema.spec.ts", + "line": 93, + "column": 9 + } + }, + { + "id": "f86f3e79121acd3-d2dd8bcdf8af73c", + "title": "Stream data mapping - schema editor - Wired Streams shows alias relationship in table", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_mapping/wired_streams_schema.spec.ts", + "line": 138, + "column": 9 + } + }, + { + "id": "f13bd8d34bc433f-31bdafa83ca1fdb", + "title": "Stream data processing - creating steps should create a new processor successfully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 30, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-abb5048118dbf04", + "title": "Stream data processing - creating steps should create a new condition successfully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 40, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-a5b141c2898f5e2", + "title": "Stream data processing - creating steps should be able to nest steps under conditions", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 48, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-13ae90eaf5fd0ab", + "title": "Stream data processing - creating steps should disable creating new processors while one is in progress", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 69, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-b9c9b422349c50d", + "title": "Stream data processing - creating steps should disable saving the pipeline while one is in progress", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 86, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-8837f1c5d8dcc70", + "title": "Stream data processing - creating steps should cancel creating a new processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 108, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-89b1f2fdc5f7ccc", + "title": "Stream data processing - creating steps should show validation errors for invalid processors configuration", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 123, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-37a4257cf26d535", + "title": "Stream data processing - creating steps should handle insufficient privileges gracefully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 142, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-7936c6c181e0ef7", + "title": "Stream data processing - creating steps should duplicate a processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 156, + "column": 7 + } + }, + { + "id": "f13bd8d34bc433f-ccfaa69349d0567", + "title": "Stream data processing - creating steps should duplicate a processor under a condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/create_steps.spec.ts", + "line": 170, + "column": 7 + } + }, + { + "id": "48bbe91f63b048a-858c64b8e9a75ef", + "title": "Stream data processing - data sources management should load by default a latest samples data source", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/data_sources_management.spec.ts", + "line": 35, + "column": 9 + } + }, + { + "id": "48bbe91f63b048a-595e49f9995520e", + "title": "Stream data processing - data sources management should allow adding a new kql data source", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/data_sources_management.spec.ts", + "line": 41, + "column": 9 + } + }, + { + "id": "48bbe91f63b048a-79141d3258ec2be", + "title": "Stream data processing - data sources management should allow adding a new custom data source", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/data_sources_management.spec.ts", + "line": 62, + "column": 9 + } + }, + { + "id": "48bbe91f63b048a-bf7900f66dae66c", + "title": "Stream data processing - data sources management should persist existing data sources on page reload", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/data_sources_management.spec.ts", + "line": 76, + "column": 9 + } + }, + { + "id": "b201a68947c8b96-f81a5c58b29db03", + "title": "Stream data processing - editing steps should edit an existing processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 39, + "column": 7 + } + }, + { + "id": "b201a68947c8b96-47d573eec6b7aa4", + "title": "Stream data processing - editing steps should edit an existing condition", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 50, + "column": 7 + } + }, + { + "id": "b201a68947c8b96-3283d16c261ec1e", + "title": "Stream data processing - editing steps should not let other processors be edited while one is in progress", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 61, + "column": 7 + } + }, + { + "id": "b201a68947c8b96-da344d421f66482", + "title": "Stream data processing - editing steps should cancel editing a processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 71, + "column": 7 + } + }, + { + "id": "b201a68947c8b96-c3af8f6aa0d0db9", + "title": "Stream data processing - editing steps should remove a processor with confirmation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 85, + "column": 7 + } + }, + { + "id": "b201a68947c8b96-dcd9b0d4e87dd88", + "title": "Stream data processing - editing steps should cancel a processor removal", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 95, + "column": 7 + } + }, + { + "id": "b201a68947c8b96-de4f2955b17c644", + "title": "Stream data processing - editing steps should handle insufficient privileges gracefully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/edit_steps.spec.ts", + "line": 105, + "column": 7 + } + }, + { + "id": "82b33ef5739b8e3-4c62aa445525a43", + "title": "Stream data processing - error handling and recovery should handle network failures during a processor creation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/error_handling.spec.ts", + "line": 33, + "column": 9 + } + }, + { + "id": "82b33ef5739b8e3-7103425056c7a67", + "title": "Stream data processing - error handling and recovery should recover from API errors during a processor updates", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/error_handling.spec.ts", + "line": 69, + "column": 9 + } + }, + { + "id": "05b81aec1f98f3d-dd598a15fe81173", + "title": "Stream data processing - outdated documents with outdated documents - should display warning tip for latest samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 97, + "column": 7 + } + }, + { + "id": "05b81aec1f98f3d-323ec71ba169a53", + "title": "Stream data processing - outdated documents with outdated documents - should display warning tip for kql samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 105, + "column": 7 + } + }, + { + "id": "05b81aec1f98f3d-bc1e52d3cb3934c", + "title": "Stream data processing - outdated documents with up to date documents - should not display warning tip for latest samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 120, + "column": 7 + } + }, + { + "id": "05b81aec1f98f3d-5006ed16bffd22d", + "title": "Stream data processing - outdated documents with up to date documents - should not display warning tip for kql samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 128, + "column": 7 + } + }, + { + "id": "05b81aec1f98f3d-7df840cbf9f1acf", + "title": "Stream data processing - outdated documents with empty samples - should not display warning tip for latest samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 143, + "column": 7 + } + }, + { + "id": "05b81aec1f98f3d-b1d187bdc22846e", + "title": "Stream data processing - outdated documents with empty samples - should not display warning tip for kql samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 151, + "column": 7 + } + }, + { + "id": "05b81aec1f98f3d-c7ab9991a959935", + "title": "Stream data processing - outdated documents should never display warning tip for custom samples datasource", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/outdated_documents.spec.ts", + "line": 165, + "column": 7 + } + }, + { + "id": "cafd7c07a64c62c-f8d44b650682af6", + "title": "Streams data processing permissions - viewer role (no simulate, no manage) should NOT allow viewer to add processors (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 42, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-2315daf2c42d27d", + "title": "Streams data processing permissions - viewer role (no simulate, no manage) should NOT allow viewer to edit existing processors (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 50, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-6dfdbbced407ed7", + "title": "Streams data processing permissions - viewer role (no simulate, no manage) should NOT allow viewer to duplicate processors (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 61, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-984b17bddf52f58", + "title": "Streams data processing permissions - viewer role (no simulate, no manage) should NOT allow viewer to delete processors (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 72, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-92513d001d973b8", + "title": "Streams data processing permissions - viewer role (no simulate, no manage) should NOT allow viewer to add conditions (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 89, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-54177f2f2b1d75a", + "title": "Streams data processing permissions - viewer role (no simulate, no manage) should NOT show save changes button for viewer (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 97, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-782eccbcbedcd18", + "title": "Streams data processing permissions - editor role (no simulate, no manage) should NOT allow editor to add processors (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 142, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-6dc5ca4973457c5", + "title": "Streams data processing permissions - editor role (no simulate, no manage) should NOT allow editor to edit existing processors (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 150, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-fe6cd89dee5117d", + "title": "Streams data processing permissions - editor role (no simulate, no manage) should NOT allow editor to duplicate processors (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 161, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-f898866e7c6a1f5", + "title": "Streams data processing permissions - editor role (no simulate, no manage) should NOT allow editor to delete processors (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 172, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-074bc7b5d0a9019", + "title": "Streams data processing permissions - editor role (no simulate, no manage) should NOT show save changes button for editor (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 189, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-10300c4c52ff3ef", + "title": "Streams data processing permissions - editor with conditions (no simulate, no manage) should NOT allow editor to edit existing conditions (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 237, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-c67b471c8eff15f", + "title": "Streams data processing permissions - editor with conditions (no simulate, no manage) should NOT allow editor to delete conditions (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 248, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-89774db8a07beae", + "title": "Streams data processing permissions - editor with conditions (no simulate, no manage) should NOT allow editor to add nested steps to conditions (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 264, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-5a4e6cd12593697", + "title": "Streams data processing permissions - viewer with conditions (no simulate, no manage) should NOT allow viewer to edit existing conditions (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 315, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-94be4ccd82b589f", + "title": "Streams data processing permissions - viewer with conditions (no simulate, no manage) should NOT allow viewer to delete conditions (requires manage privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 326, + "column": 9 + } + }, + { + "id": "cafd7c07a64c62c-9dd357f4eba4f70", + "title": "Streams data processing permissions - viewer with conditions (no simulate, no manage) should NOT allow viewer to add nested steps to conditions (requires simulate privilege)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/permissions.spec.ts", + "line": 342, + "column": 9 + } + }, + { + "id": "8431b9ecd24de8b-5410dfb47f53d9f", + "title": "Stream data processing - simulation preview should display default samples when no processors are configured", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 37, + "column": 7 + } + }, + { + "id": "8431b9ecd24de8b-1b67e195eca5b6c", + "title": "Stream data processing - simulation preview should display simulation preview when configuring a new processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 51, + "column": 7 + } + }, + { + "id": "8431b9ecd24de8b-4d4434a7ddc103d", + "title": "Stream data processing - simulation preview should automatically update the simulation preview when changing a new processor config", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 72, + "column": 7 + } + }, + { + "id": "8431b9ecd24de8b-659f0680e911a10", + "title": "Stream data processing - simulation preview should update the simulation preview to previous state when discarding a new processor", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 105, + "column": 7 + } + }, + { + "id": "8431b9ecd24de8b-a7813857083cd20", + "title": "Stream data processing - simulation preview should update the simulation preview with outcome of multiple new processors", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 140, + "column": 7 + } + }, + { + "id": "8431b9ecd24de8b-3346718a174e09f", + "title": "Stream data processing - simulation preview should update the simulation preview with processed dates from another locale/timezone", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 192, + "column": 7 + } + }, + { + "id": "8431b9ecd24de8b-d4e223d8a2dab6e", + "title": "Stream data processing - simulation preview should show dropped documents in the simulation preview", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_processing/processing_simulation_preview.spec.ts", + "line": 235, + "column": 7 + } + }, + { + "id": "3fffa783271190b-673bfeac807f871", + "title": "Stream data quality should show data quality metrics", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 79, + "column": 7 + } + }, + { + "id": "3fffa783271190b-ccd2761d79f84f2", + "title": "Stream data quality date picker should show same time range as Streams Main page", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 96, + "column": 7 + } + }, + { + "id": "3fffa783271190b-690079b58151ce0", + "title": "Stream data quality changing time range should also update date picker on Streams Main page", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 112, + "column": 7 + } + }, + { + "id": "3fffa783271190b-4775d23430ce410", + "title": "Stream data quality should toggle between degraded and failed docs quality issues charts", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 127, + "column": 7 + } + }, + { + "id": "3fffa783271190b-d433732b148e845", + "title": "Stream data quality should show degraded fields table with data", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 135, + "column": 7 + } + }, + { + "id": "3fffa783271190b-dd8fbacadb48e67", + "title": "Stream data quality should open and close degraded field flyout", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 158, + "column": 7 + } + }, + { + "id": "3fffa783271190b-20b23641495bf7b", + "title": "Stream data quality should navigate to Discover from degraded field flyout", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 185, + "column": 7 + } + }, + { + "id": "3fffa783271190b-27ee667d7063050", + "title": "Stream data quality should edit failure store for wired streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_quality.spec.ts", + "line": 208, + "column": 7 + } + }, + { + "id": "1590b4af49c6b0b-6b8296211e38431", + "title": "Stream data retention - custom retention periods should set and reset retention policy", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 46, + "column": 9 + } + }, + { + "id": "1590b4af49c6b0b-7bb84541041f0d9", + "title": "Stream data retention - custom retention periods should set retention with days unit", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 61, + "column": 9 + } + }, + { + "id": "1590b4af49c6b0b-3a1a9539d24c6dc", + "title": "Stream data retention - custom retention periods should set retention with hours unit", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 69, + "column": 9 + } + }, + { + "id": "1590b4af49c6b0b-2619b2671b2823d", + "title": "Stream data retention - custom retention periods should set retention with minutes unit", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 77, + "column": 9 + } + }, + { + "id": "1590b4af49c6b0b-2f8254aa46beb47", + "title": "Stream data retention - custom retention periods should set retention with seconds unit", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 85, + "column": 9 + } + }, + { + "id": "1590b4af49c6b0b-814b247f30e495c", + "title": "Stream data retention - custom retention periods should persist retention value across page refresh", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 93, + "column": 9 + } + }, + { + "id": "1590b4af49c6b0b-37ff27f069ce66d", + "title": "Stream data retention - custom retention periods should set retention on classic stream", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/data_retention.spec.ts", + "line": 107, + "column": 9 + } + }, + { + "id": "fdca40135eb0f87-90187f54e2e3a3a", + "title": "Stream data retention - updating failure store should edit failure store successfully for classic streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 59, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-e067c96dd606e40", + "title": "Stream data retention - updating failure store should disable failure store for classic streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 75, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-af8c6198fedd7c4", + "title": "Stream data retention - updating failure store should enable failure store for classic streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 88, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-1e0b24aaf005b82", + "title": "Stream data retention - updating failure store should be able to disable lifecycle for classic if is not serverless", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 104, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-eb9876f48853485", + "title": "Stream data retention - updating failure store should inherit failure store for classic streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 127, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-62f745668288e26", + "title": "Stream data retention - updating failure store should edit failure store successfully for wired streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 148, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-88fc42e9ab1cf7f", + "title": "Stream data retention - updating failure store should disable failure store for wired streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 164, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-0a9a4ab8715dfb6", + "title": "Stream data retention - updating failure store should enable failure store for wired streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 180, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-70ccfeaea8d42d9", + "title": "Stream data retention - updating failure store should be able to disable lifecycle for wired streams on ESS", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 201, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-b7373a0624e307a", + "title": "Stream data retention - updating failure store should inherit failure store for child wired streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 224, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-b153942a7c6716b", + "title": "Stream data retention - updating failure store should not inherit failure store for root wired streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 243, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-47ea8018ad86f69", + "title": "Stream data retention - updating failure store should set failure store retention to different value than main retention", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 255, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-4c350e9a6f29374", + "title": "Stream data retention - updating failure store should persist failure store retention across page reload", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 277, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-32738bf14fc677a", + "title": "Stream data retention - updating failure store should cancel failure store retention edit", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 293, + "column": 7 + } + }, + { + "id": "fdca40135eb0f87-6a00929c70c16fe", + "title": "Stream data retention - updating failure store should show failure store disabled state", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/failure_store.spec.ts", + "line": 316, + "column": 7 + } + }, + { + "id": "6ff035a70002742-8526805a8b3a237", + "title": "Stream data retention - ILM policy should show ILM policy button", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/ilm_policy_retention.spec.ts", + "line": 50, + "column": 7 + } + }, + { + "id": "6ff035a70002742-1ad0be072cb4802", + "title": "Stream data retention - ILM policy should select and save ILM policy", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/ilm_policy_retention.spec.ts", + "line": 56, + "column": 7 + } + }, + { + "id": "6ff035a70002742-4ea166585fe5924", + "title": "Stream data retention - ILM policy should display selected ILM policy name", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/ilm_policy_retention.spec.ts", + "line": 74, + "column": 7 + } + }, + { + "id": "6ff035a70002742-86cc39213ea2a61", + "title": "Stream data retention - ILM policy should persist ILM policy selection across page reload", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/ilm_policy_retention.spec.ts", + "line": 90, + "column": 7 + } + }, + { + "id": "0ed00376f219437-265885593f64678", + "title": "Stream data retention - display values should display singular and plural time units correctly", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_display_values.spec.ts", + "line": 56, + "column": 7 + } + }, + { + "id": "0ed00376f219437-9d0d861d1c08fb8", + "title": "Stream data retention - display values should display indefinite as infinity symbol", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_display_values.spec.ts", + "line": 71, + "column": 7 + } + }, + { + "id": "0ed00376f219437-792ee8fdbf8c56d", + "title": "Stream data retention - display values should show custom period badge when custom retention is set", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_display_values.spec.ts", + "line": 79, + "column": 7 + } + }, + { + "id": "0ed00376f219437-87aeb565459b7a2", + "title": "Stream data retention - display values should display all time units consistently", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_display_values.spec.ts", + "line": 87, + "column": 7 + } + }, + { + "id": "0ed00376f219437-bc04bd4267a6a8a", + "title": "Stream data retention - display values should display retention metric prominently", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_display_values.spec.ts", + "line": 96, + "column": 7 + } + }, + { + "id": "e2be9a73b184a96-2e15a2858773682", + "title": "Stream data retention - inheritance should show inherit toggle and inherit by default", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_inheritance.spec.ts", + "line": 48, + "column": 7 + } + }, + { + "id": "e2be9a73b184a96-201847ff03b1cf2", + "title": "Stream data retention - inheritance should toggle inherit mode on and off", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_inheritance.spec.ts", + "line": 69, + "column": 7 + } + }, + { + "id": "e2be9a73b184a96-ded761a5a78160c", + "title": "Stream data retention - inheritance should handle inherit for nested child streams", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_inheritance.spec.ts", + "line": 90, + "column": 7 + } + }, + { + "id": "e2be9a73b184a96-c171d6ecff0d273", + "title": "Stream data retention - inheritance should allow override on nested child stream", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_inheritance.spec.ts", + "line": 115, + "column": 7 + } + }, + { + "id": "e2be9a73b184a96-875b4d30ce1cdc6", + "title": "Stream data retention - inheritance should handle multiple child streams inheriting from same parent", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_inheritance.spec.ts", + "line": 139, + "column": 7 + } + }, + { + "id": "e2be9a73b184a96-ad9a9e20f2d1c27", + "title": "Stream data retention - inheritance should reflect parent retention changes in child when inheriting", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_inheritance.spec.ts", + "line": 161, + "column": 7 + } + }, + { + "id": "bfaa6b699422ff5-4558427c86af828", + "title": "Stream data retention - modal interactions should open and close modal", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_modal_interactions.spec.ts", + "line": 54, + "column": 7 + } + }, + { + "id": "bfaa6b699422ff5-0ebc6e2fb77c302", + "title": "Stream data retention - modal interactions should preserve values on cancel and update on save", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_modal_interactions.spec.ts", + "line": 63, + "column": 7 + } + }, + { + "id": "ac3ffa0708d8fc2-00a2ba9f8f006e3", + "title": "Stream data retention - mode switching should switch between custom and indefinite modes", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_mode_switching.spec.ts", + "line": 53, + "column": 7 + } + }, + { + "id": "ac3ffa0708d8fc2-59e67e6f1ccb9a3", + "title": "Stream data retention - mode switching should switch between different custom time units", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_mode_switching.spec.ts", + "line": 73, + "column": 7 + } + }, + { + "id": "ac3ffa0708d8fc2-ca62a176717e665", + "title": "Stream data retention - mode switching should cancel mode change without saving", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_mode_switching.spec.ts", + "line": 98, + "column": 7 + } + }, + { + "id": "ac3ffa0708d8fc2-25fe1e374a04cba", + "title": "Stream data retention - mode switching should maintain mode selection when reopening modal", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_mode_switching.spec.ts", + "line": 110, + "column": 7 + } + }, + { + "id": "ac3ffa0708d8fc2-a7237a156dc9d03", + "title": "Stream data retention - mode switching should persist indefinite retention after page refresh", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_mode_switching.spec.ts", + "line": 122, + "column": 7 + } + }, + { + "id": "7b9f1bc0367bdf5-60ee9f9e1af5c8c", + "title": "Stream data retention - storage metrics integration should update retention without affecting storage display", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_storage_metrics.spec.ts", + "line": 55, + "column": 9 + } + }, + { + "id": "7b9f1bc0367bdf5-e3d1efa7ce953e7", + "title": "Stream data retention - storage metrics integration should maintain retention display after page navigation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_retention/retention_storage_metrics.spec.ts", + "line": 68, + "column": 9 + } + }, + { + "id": "9349667e5bca40e-4c30a41802efe9b", + "title": "Stream data routing - AI suggestions button should show button when AI features are enabled", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_button.spec.ts", + "line": 41, + "column": 7 + } + }, + { + "id": "9349667e5bca40e-2cd846c5324c829", + "title": "Stream data routing - AI suggestions button should disable button when no connector is selected", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_button.spec.ts", + "line": 47, + "column": 7 + } + }, + { + "id": "9349667e5bca40e-8238485c9b8c08f", + "title": "Stream data routing - AI suggestions button should show connector dropdown when multiple connectors exist", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_button.spec.ts", + "line": 61, + "column": 7 + } + }, + { + "id": "954b6fa16b3e83e-098e105b5880d71", + "title": "Stream data routing - AI suggestions editing validation should show error when editing suggestion with empty name", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_editing_validation.spec.ts", + "line": 58, + "column": 7 + } + }, + { + "id": "954b6fa16b3e83e-c9fb9d27893c2ba", + "title": "Stream data routing - AI suggestions editing validation should show error when editing suggestion with name containing dots", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_editing_validation.spec.ts", + "line": 70, + "column": 7 + } + }, + { + "id": "954b6fa16b3e83e-fe89c36564d8512", + "title": "Stream data routing - AI suggestions editing validation should show error when editing suggestion with name exceeding max length", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_editing_validation.spec.ts", + "line": 86, + "column": 7 + } + }, + { + "id": "954b6fa16b3e83e-c0db288e902915d", + "title": "Stream data routing - AI suggestions editing validation should show error when editing suggestion with duplicate name", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_editing_validation.spec.ts", + "line": 103, + "column": 7 + } + }, + { + "id": "954b6fa16b3e83e-255ea6600fc8ce1", + "title": "Stream data routing - AI suggestions editing validation should allow editing suggestion with valid condition", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_editing_validation.spec.ts", + "line": 139, + "column": 7 + } + }, + { + "id": "41f986dc7d507af-177423f5f28279b", + "title": "Stream data routing - AI suggestions generation should successfully generate and display suggestions", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_generation.spec.ts", + "line": 45, + "column": 7 + } + }, + { + "id": "41f986dc7d507af-6a6bd738cf29b44", + "title": "Stream data routing - AI suggestions generation should handle empty suggestions response", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_generation.spec.ts", + "line": 55, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-0033ff890a80016", + "title": "Stream data routing - AI suggestions interactions should preview suggestion", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 50, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-59031b3e126feaa", + "title": "Stream data routing - AI suggestions interactions should edit suggestion", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 57, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-481f21a0ac903d1", + "title": "Stream data routing - AI suggestions interactions should reject suggestion", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 66, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-25b391c252a342c", + "title": "Stream data routing - AI suggestions interactions should regenerate suggestions", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 75, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-599c1773006248e", + "title": "Stream data routing - AI suggestions interactions should update suggestion name when editing and accepting", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 95, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-8a8b94aca37cb16", + "title": "Stream data routing - AI suggestions interactions should update suggestion condition when editing and accepting", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 125, + "column": 7 + } + }, + { + "id": "bc6ace18083cf6a-b1112374737687d", + "title": "Stream data routing - AI suggestions interactions should cancel editing and revert to original suggestion", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/ai_suggestions_interactions.spec.ts", + "line": 159, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-d6a33115c877fb0", + "title": "Stream data routing - creating routing rules should create a new routing rule successfully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 24, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-0c3ef633653b792", + "title": "Stream data routing - creating routing rules should cancel creating new routing rule", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 59, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-82d35404a0a3a9b", + "title": "Stream data routing - creating routing rules should not let creating new routing rule while one is in progress", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 72, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-d8dbc074e0c1e71", + "title": "Stream data routing - creating routing rules should show validation errors for invalid stream names verified on the client", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 90, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-615e268c0f49a9b", + "title": "Stream data routing - creating routing rules should show validation errors for invalid stream names verified on the server", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 118, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-fd9312e87fee662", + "title": "Stream data routing - creating routing rules should handle insufficient privileges gracefully", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 140, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-e923f38f4a41c9e", + "title": "Stream data routing - creating routing rules should not allow creating a routing rule that is not a child of the current stream", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 154, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-3e6f87ceb325a39", + "title": "Stream data routing - creating routing rules should navigate to child stream when clicking on stream name link", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 167, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-b9aa65a4bbda14a", + "title": "Stream data routing - creating routing rules should show \"Open stream in new tab\" button in success toast", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 192, + "column": 7 + } + }, + { + "id": "92d7bc6cddf5121-e8a7dfb80f49956", + "title": "Stream data routing - creating routing rules should attempt to create stream with duplicate name and fail", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/create_routing_rules.spec.ts", + "line": 217, + "column": 7 + } + }, + { + "id": "8b3ac79cea06244-33d0da79e3f24c6", + "title": "Stream data routing - editing routing rules should edit an existing routing rule", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/edit_routing_rules.spec.ts", + "line": 33, + "column": 7 + } + }, + { + "id": "8b3ac79cea06244-57a411e3e4bc68c", + "title": "Stream data routing - editing routing rules should cancel editing routing rule", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/edit_routing_rules.spec.ts", + "line": 54, + "column": 7 + } + }, + { + "id": "8b3ac79cea06244-cf44e6676b24845", + "title": "Stream data routing - editing routing rules should switch between editing different rules", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/edit_routing_rules.spec.ts", + "line": 75, + "column": 7 + } + }, + { + "id": "8b3ac79cea06244-771dc75d68b0d17", + "title": "Stream data routing - editing routing rules should remove routing rule with confirmation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/edit_routing_rules.spec.ts", + "line": 96, + "column": 7 + } + }, + { + "id": "8b3ac79cea06244-cba3626ffb6d749", + "title": "Stream data routing - editing routing rules should cancel rule removal", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/edit_routing_rules.spec.ts", + "line": 108, + "column": 7 + } + }, + { + "id": "5d93a0b19f57b3a-ac51baef7d2cf31", + "title": "Stream data routing - error handling and recovery should handle network failures during rule creation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/error_handling.spec.ts", + "line": 25, + "column": 9 + } + }, + { + "id": "5d93a0b19f57b3a-334158f6dc990bc", + "title": "Stream data routing - error handling and recovery should recover from API errors during rule updates", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/error_handling.spec.ts", + "line": 52, + "column": 9 + } + }, + { + "id": "3a7b6b834964a95-ab28fcdb550305f", + "title": "Stream data routing - reordering routing rules should reorder routing rules via drag and drop", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/reorder_routing_rules.spec.ts", + "line": 39, + "column": 9 + } + }, + { + "id": "3a7b6b834964a95-cde215023713a6f", + "title": "Stream data routing - reordering routing rules should cancel reordering", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/reorder_routing_rules.spec.ts", + "line": 50, + "column": 9 + } + }, + { + "id": "3a7b6b834964a95-e9352d9c400a8bd", + "title": "Stream data routing - reordering routing rules should handle multiple reorder operations", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/reorder_routing_rules.spec.ts", + "line": 60, + "column": 9 + } + }, + { + "id": "3a7b6b834964a95-2669d197625bc9c", + "title": "Stream data routing - reordering routing rules should not allow editing while reordering is in progress", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/reorder_routing_rules.spec.ts", + "line": 76, + "column": 9 + } + }, + { + "id": "3a7b6b834964a95-2d74d9fca7b147f", + "title": "Stream data routing - reordering routing rules should persist order after page refresh", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/reorder_routing_rules.spec.ts", + "line": 94, + "column": 9 + } + }, + { + "id": "3a7b6b834964a95-db6790c00519821", + "title": "Stream data routing - reordering routing rules should allow reordering only when multiple rules exist", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/reorder_routing_rules.spec.ts", + "line": 107, + "column": 9 + } + }, + { + "id": "643cc1fa64531d4-49d9709df875b65", + "title": "Stream data routing - previewing data should show preview during rule creation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 34, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-62ad3f359fa395f", + "title": "Stream data routing - previewing data should update preview when condition changes", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 57, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-139dd7ff9652bca", + "title": "Stream data routing - previewing data should show no matches when condition matches nothing", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 98, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-9def95b321f56b6", + "title": "Stream data routing - previewing data should show document filter controls when there is data by default", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 113, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-d43cfd4a66c1632", + "title": "Stream data routing - previewing data should select matched filter by default when condition is set", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 123, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-7cef89995c1f2da", + "title": "Stream data routing - previewing data should maintain filter state when condition changes", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 154, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-f1f288a666d7e38", + "title": "Stream data routing - previewing data should handle \"no data\" when date range has no documents", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 191, + "column": 7 + } + }, + { + "id": "643cc1fa64531d4-88492370b51e126", + "title": "Stream data routing - previewing data should display child stream count badge for nested routing rules", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/data_routing/routing_data_preview.spec.ts", + "line": 214, + "column": 7 + } + }, + { + "id": "03508c4611980e7-07c04439e965fa4", + "title": "Stream detail header shows correct badges", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/streams_header.spec.ts", + "line": 35, + "column": 7 + } + }, + { + "id": "03508c4611980e7-11d7b61a786cb4d", + "title": "Stream detail header shows Wired badge on wired stream", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/streams_header.spec.ts", + "line": 55, + "column": 7 + } + }, + { + "id": "03508c4611980e7-03b7182c894994c", + "title": "Stream detail header transitions data quality from Good -> Degraded -> Poor for stream", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/data_management/streams_header.spec.ts", + "line": 60, + "column": 7 + } + }, + { + "id": "9bed38de37d9c53-4a006e49a0c4672", + "title": "Stream list view - expand and collapse streams in the table should expand and collapse", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/streams_list_view/streams_collapsible_rows.spec.ts", + "line": 45, + "column": 9 + } + }, + { + "id": "5cc5f39235bac27-cbc15fc0aafc245", + "title": "Stream list view - table values should display correct doc count in the table", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/streams_list_view/streams_table_values.spec.ts", + "line": 112, + "column": 7 + } + }, + { + "id": "5cc5f39235bac27-33b9b0d2d910060", + "title": "Stream list view - table values should display correct data quality badge", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/streams_list_view/streams_table_values.spec.ts", + "line": 123, + "column": 7 + } + }, + { + "id": "5cc5f39235bac27-960cbddcfc2d99e", + "title": "Stream list view - table values should display correct retention in the table", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/streams_list_view/streams_table_values.spec.ts", + "line": 129, + "column": 7 + } + }, + { + "id": "5cc5f39235bac27-273d9e3abd6bc69", + "title": "Stream list view - table values should provide Discover actions with correct ESQL queries", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/platform/plugins/shared/streams_app/test/scout/ui/tests/streams_list_view/streams_table_values.spec.ts", + "line": 139, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/apm/test/scout/.meta/ui/parallel.json b/x-pack/solutions/observability/plugins/apm/test/scout/.meta/ui/parallel.json new file mode 100644 index 0000000000000..65f76d314a1f8 --- /dev/null +++ b/x-pack/solutions/observability/plugins/apm/test/scout/.meta/ui/parallel.json @@ -0,0 +1,469 @@ +{ + "lastModified": "2025-12-11T10:19:24.838Z", + "sha1": "c00251da300c2224a40813ed0c213db64b446a4c", + "tests": [ + { + "id": "5e91b4cbd08e25e-f2cd2d3cdc77643", + "title": "Ingest data to Elasticsearch", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/global.setup.ts", + "line": 14, + "column": 16 + } + }, + { + "id": "4918e092a0b8903-d077d1deb960c5c", + "title": "Service Groups When navigating to service groups", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/service_groups/service_groups.spec.ts", + "line": 19, + "column": 7 + } + }, + { + "id": "0d134541f1c6605-c9e5c18b97827e4", + "title": "Service inventory renders page with selected date range", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/service_inventory/service_inventory.spec.ts", + "line": 19, + "column": 7 + } + }, + { + "id": "0d134541f1c6605-4b430080d829f58", + "title": "Service inventory loads the service overview for a service when clicking on it", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/service_inventory/service_inventory.spec.ts", + "line": 39, + "column": 7 + } + }, + { + "id": "0d134541f1c6605-b2261999afe14e2", + "title": "Service inventory shows the correct environment when changing the environment", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/service_inventory/service_inventory.spec.ts", + "line": 45, + "column": 7 + } + }, + { + "id": "0d134541f1c6605-eb4017d5ced9479", + "title": "Service inventory shows the filtered services when using the service name fast filter", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/service_inventory/service_inventory.spec.ts", + "line": 54, + "column": 7 + } + }, + { + "id": "89c8ff66ee766e0-93d765a7c716612", + "title": "Agent Configuration Viewer should not be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_configuration.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "89c8ff66ee766e0-09b8159d2323da0", + "title": "Agent Configuration APM All Privileges Without Write Settings should not be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_configuration.spec.ts", + "line": 22, + "column": 7 + } + }, + { + "id": "89c8ff66ee766e0-9ba74430ee8ac12", + "title": "Agent Configuration Privileged user should be able to configure, create and delete an agent configuration with all services and production environment", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_configuration.spec.ts", + "line": 32, + "column": 7 + } + }, + { + "id": "df2473acd821008-2c7791699f57a60", + "title": "Agent Explorer Viewer should be able to view the agent list", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_explorer.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "df2473acd821008-b66f5a8295933ce", + "title": "Agent Explorer Editor should be able to access agent explorer", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_explorer.spec.ts", + "line": 26, + "column": 7 + } + }, + { + "id": "df2473acd821008-a96eed7edb57f36", + "title": "Agent Explorer APM Read Privileges With Write Settings should be able to access agent explorer", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_explorer.spec.ts", + "line": 41, + "column": 7 + } + }, + { + "id": "df2473acd821008-be4130d8df990d7", + "title": "Agent Explorer APM All Privileges Without Write Settings should be able to view agent explorer but with limited functionality", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_explorer.spec.ts", + "line": 60, + "column": 7 + } + }, + { + "id": "f43f55c4b87ada1-d4bc402fe5eb1ce", + "title": "Agent Keys Viewer should see missing privileges message", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_keys.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "f43f55c4b87ada1-71dabd3e9acc532", + "title": "Agent Keys Admin User should be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/agent_keys.spec.ts", + "line": 22, + "column": 7 + } + }, + { + "id": "01ea78763124721-b5f438e39d8d665", + "title": "Anomaly Detection Viewer should not be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/anomaly_detection.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "01ea78763124721-33d6a15705dd230", + "title": "Anomaly Detection Privileged User should be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/anomaly_detection.spec.ts", + "line": 22, + "column": 7 + } + }, + { + "id": "01ea78763124721-c5bb5d1bcaddc75", + "title": "Anomaly Detection Admin should be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/anomaly_detection.spec.ts", + "line": 42, + "column": 7 + } + }, + { + "id": "01ea78763124721-9785a7919050c13", + "title": "Anomaly Detection APM Read Privileges With Write Settings should be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/anomaly_detection.spec.ts", + "line": 60, + "column": 7 + } + }, + { + "id": "01ea78763124721-46465c39e998aa3", + "title": "Anomaly Detection APM All Privileges Without Write Settings should not be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/anomaly_detection.spec.ts", + "line": 78, + "column": 7 + } + }, + { + "id": "a2babb42e998789-794ce71f366cded", + "title": "Custom links Viewer should show disabled create button and no edit button", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/custom_links.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "a2babb42e998789-c6e98077141d93f", + "title": "Custom links Privileged User should be able to create custom link and delete the created custom link", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/custom_links.spec.ts", + "line": 26, + "column": 7 + } + }, + { + "id": "d7e8e912f1cfcc9-75b6a16cd11bf3c", + "title": "General Settings Viewer should not be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/general_settings.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "d7e8e912f1cfcc9-aeec9b7497f090c", + "title": "General Settings Privileged User should be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/general_settings.spec.ts", + "line": 26, + "column": 7 + } + }, + { + "id": "bbc57c9a34f643a-b116664ca4ec8e6", + "title": "Indices Viewer should not be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/indices.spec.ts", + "line": 12, + "column": 7 + } + }, + { + "id": "bbc57c9a34f643a-606d5d75c14092e", + "title": "Indices Privileged user should be able to modify settings", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/indices.spec.ts", + "line": 26, + "column": 7 + } + }, + { + "id": "cde77c8f7532390-11cea7a9a84eac7", + "title": "Settings - Serverless Privileged User: The indices settings page is not available in serverless", + "expectedStatus": "passed", + "tags": [ + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/serverless_settings.spec.ts", + "line": 16, + "column": 7 + } + }, + { + "id": "cde77c8f7532390-baeeb2b04e9cbc0", + "title": "Settings - Serverless Viewer: The agent configuration settings page is not available in serverless", + "expectedStatus": "passed", + "tags": [ + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/serverless_settings.spec.ts", + "line": 25, + "column": 7 + } + }, + { + "id": "cde77c8f7532390-54b857ae9939d83", + "title": "Settings - Serverless Privileged User: The agent configuration settings page is not available in serverless", + "expectedStatus": "passed", + "tags": [ + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/settings/serverless_settings.spec.ts", + "line": 37, + "column": 7 + } + }, + { + "id": "bb77c5fe685c994-820ffa8139e87c1", + "title": "Service map renders page with selected date range", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/sevice_map/service_map.spec.ts", + "line": 16, + "column": 7 + } + }, + { + "id": "bb77c5fe685c994-9d4b191090eb231", + "title": "Service map shows a detailed service map", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/sevice_map/service_map.spec.ts", + "line": 31, + "column": 7 + } + }, + { + "id": "bb77c5fe685c994-bebd132799161c0", + "title": "Service map shows empty state when there is no data", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/sevice_map/service_map.spec.ts", + "line": 44, + "column": 7 + } + }, + { + "id": "b823835fc8ed203-c0d7ecffab644e9", + "title": "Storage Explorer - Admin User user navigates and explores storage explorer functionality", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/storage_explorer/storage_explorer_functionality.spec.ts", + "line": 22, + "column": 7 + } + }, + { + "id": "c3f1c3da077a5f2-53f098b0f4c049f", + "title": "Storage Explorer - Viewer (No Permissions) displays permission denied message", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel_tests/storage_explorer/storage_explorer_permissions.spec.ts", + "line": 16, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/infra/test/scout/.meta/ui/parallel.json b/x-pack/solutions/observability/plugins/infra/test/scout/.meta/ui/parallel.json new file mode 100644 index 0000000000000..ecba57d254cea --- /dev/null +++ b/x-pack/solutions/observability/plugins/infra/test/scout/.meta/ui/parallel.json @@ -0,0 +1,34 @@ +{ + "lastModified": "2025-12-11T10:19:28.330Z", + "sha1": "74b8bec2b85a64707503f6c2fb28e9c6bf8fdd99", + "tests": [ + { + "id": "50b3a018a3d8e65-f2cd2d3cdc77643", + "title": "Ingest data to Elasticsearch", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/infra/test/scout/ui/parallel_tests/global.setup.ts", + "line": 10, + "column": 16 + } + }, + { + "id": "d1550ceb9b2efd9-25aa9590269dd52", + "title": "Infrastructure Inventory Page should load", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/infra/test/scout/ui/parallel_tests/inventory/inventory.spec.ts", + "line": 12, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/observability/test/scout/.meta/ui/standard.json b/x-pack/solutions/observability/plugins/observability/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..cc1bf2d606471 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/test/scout/.meta/ui/standard.json @@ -0,0 +1,76 @@ +{ + "lastModified": "2025-12-03T19:03:45.191Z", + "sha1": "4e28fc89c7aef69501d9b4110c9d5ab54d73fffa", + "tests": [ + { + "id": "16bb4a7ec47d274-1887bb9ce43cc37", + "title": "Observability Landing Page redirects to page specified in defaultRoute uiSetting", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability/test/scout/ui/tests/landing.spec.ts", + "line": 27, + "column": 7 + } + }, + { + "id": "16bb4a7ec47d274-b4d285151fca090", + "title": "Observability Landing Page redirects to Discover logs when logs data exists", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability/test/scout/ui/tests/landing.spec.ts", + "line": 50, + "column": 7 + } + }, + { + "id": "16bb4a7ec47d274-1089e5f36b13719", + "title": "Observability Landing Page redirects to APM services when only APM data exists", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability/test/scout/ui/tests/landing.spec.ts", + "line": 65, + "column": 7 + } + }, + { + "id": "16bb4a7ec47d274-b8a96bff3cd83db", + "title": "Observability Landing Page redirects to Discover logs when both logs and APM data exist (logs priority)", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability/test/scout/ui/tests/landing.spec.ts", + "line": 80, + "column": 7 + } + }, + { + "id": "16bb4a7ec47d274-00e86e3614855e3", + "title": "Observability Landing Page redirects to onboarding when no data exists", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability/test/scout/ui/tests/landing.spec.ts", + "line": 97, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/observability_onboarding/test/scout/.meta/ui/parallel.json b/x-pack/solutions/observability/plugins/observability_onboarding/test/scout/.meta/ui/parallel.json new file mode 100644 index 0000000000000..51dea3fe90d3d --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_onboarding/test/scout/.meta/ui/parallel.json @@ -0,0 +1,5 @@ +{ + "lastModified": "2025-12-03T19:03:48.973Z", + "sha1": "177cf203c38bada6044e3cafaac912f2988d1228", + "tests": [] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/observability_onboarding/test/scout/.meta/ui/standard.json b/x-pack/solutions/observability/plugins/observability_onboarding/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..2af0be8a5488e --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_onboarding/test/scout/.meta/ui/standard.json @@ -0,0 +1,123 @@ +{ + "lastModified": "2025-12-03T19:03:52.851Z", + "sha1": "177cf203c38bada6044e3cafaac912f2988d1228", + "tests": [ + { + "id": "bd77233fbb28a70-b95459eaf733782", + "title": "Onboarding UI Validation validates main page structure and navigation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 20, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-695767ca8777609", + "title": "Onboarding UI Validation completes Host onboarding flow", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 52, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-73e0d6347f10e9d", + "title": "Onboarding UI Validation completes Host OTel integration navigation", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 81, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-d387a4fb8535ded", + "title": "Onboarding UI Validation completes Kubernetes onboarding flow", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 100, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-b3ddfca777e40b8", + "title": "Onboarding UI Validation completes Kubernetes onboarding flow with the keyboard only", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 124, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-9f3cdcd52e2e897", + "title": "Onboarding UI Validation completes Cloud onboarding flow", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt", + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 157, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-2293012f3ea6874", + "title": "Onboarding UI Validation completes Application onboarding flow in complete tier", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 180, + "column": 7 + } + }, + { + "id": "bd77233fbb28a70-e9264fd8f89345b", + "title": "Onboarding UI Validation validates logs-essentials tier restrictions", + "expectedStatus": "passed", + "tags": [ + "@svlLogsEssentials" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/tests/onboarding_ui_validation.spec.ts", + "line": 202, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/profiling/test/scout/.meta/ui/parallel.json b/x-pack/solutions/observability/plugins/profiling/test/scout/.meta/ui/parallel.json new file mode 100644 index 0000000000000..487416f9fa222 --- /dev/null +++ b/x-pack/solutions/observability/plugins/profiling/test/scout/.meta/ui/parallel.json @@ -0,0 +1,266 @@ +{ + "lastModified": "2025-12-11T10:19:33.520Z", + "sha1": "94c8c7b5ebaa78824c2f7c5684d4d6a4bff4842c", + "tests": [ + { + "id": "01827b5a57152a5-eaaf5032684392c", + "title": "Set up Profiling Resources and Data", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/global.setup.ts", + "line": 11, + "column": 16 + } + }, + { + "id": "d98c57e1953dc47-aec54210c2810f2", + "title": "Differential Functions page show gained performance when comparison data has less samples than baseline", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/differential_functions/differential_functions.spec.ts", + "line": 20, + "column": 7 + } + }, + { + "id": "d98c57e1953dc47-e98cbdab8d1ec4f", + "title": "Differential Functions page show lost performance when comparison data has more samples than baseline", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/differential_functions/differential_functions.spec.ts", + "line": 69, + "column": 7 + } + }, + { + "id": "d98c57e1953dc47-ce1e51bfb71094b", + "title": "Differential Functions page adds kql filter", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/differential_functions/differential_functions.spec.ts", + "line": 110, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-a490e16215fa2ba", + "title": "Functions page opens /topN page when navigating to /functions page", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 18, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-b54e4b2da09157c", + "title": "Functions page validates and interacts with TopN functions table and its content and actions", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 25, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-28db990655994b4", + "title": "Functions page shows function details when action button is clicked on the table", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 50, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-d2413e2dd1b3e6e", + "title": "Functions page adds kql filter", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 95, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-f8c131d07e37a2d", + "title": "Functions page accesses settings page", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 115, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-3ae31564b9d6ca4", + "title": "Functions page navigates to differential functions tab", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 125, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-99b16c3ffe76602", + "title": "Functions page accesses frame information window", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 140, + "column": 7 + } + }, + { + "id": "44123cecfea96cf-942f2ecbbb7c5dc", + "title": "Functions page accesses settings modal and updates CO2 settings", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/functions/functions.spec.ts", + "line": 151, + "column": 7 + } + }, + { + "id": "e2da91fd632ab33-6a3f8a608897db9", + "title": "Home page opens Profiling UI when user has privileges", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/home/home.spec.ts", + "line": 19, + "column": 7 + } + }, + { + "id": "e2da91fd632ab33-49af245124c6c66", + "title": "Home page navigates through the tabs", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/home/home.spec.ts", + "line": 31, + "column": 7 + } + }, + { + "id": "b9e0526c7514a6f-6c222ce2b7c614d", + "title": "Settings page opens setting page", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/settings/settings.spec.ts", + "line": 21, + "column": 7 + } + }, + { + "id": "b9e0526c7514a6f-2fbfbbd77c430b0", + "title": "Settings page updates values", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/settings/settings.spec.ts", + "line": 43, + "column": 7 + } + }, + { + "id": "98843aa33e8d554-fa37d28186e1665", + "title": "Storage explorer page loads storage explorer with real data", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/storage_explorer/storage_explorer.spec.ts", + "line": 18, + "column": 7 + } + }, + { + "id": "98843aa33e8d554-86ca10f6a422863", + "title": "Storage explorer page Host agent breakdown tab displays host agent details", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/storage_explorer/storage_explorer.spec.ts", + "line": 29, + "column": 7 + } + }, + { + "id": "98843aa33e8d554-45172bb362490e8", + "title": "Storage explorer page Summary stats tab will still load with kuery", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/storage_explorer/storage_explorer.spec.ts", + "line": 51, + "column": 7 + } + }, + { + "id": "98843aa33e8d554-1aa8dab6b101396", + "title": "Storage explorer page Data breakdown tab displays correct values per index", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/profiling/test/scout/ui/parallel_tests/storage_explorer/storage_explorer.spec.ts", + "line": 62, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/slo/test/scout/.meta/ui/standard.json b/x-pack/solutions/observability/plugins/slo/test/scout/.meta/ui/standard.json new file mode 100644 index 0000000000000..68f2d9a7a44b1 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/test/scout/.meta/ui/standard.json @@ -0,0 +1,98 @@ +{ + "lastModified": "2025-12-08T16:58:37.117Z", + "sha1": "bf0aa4087bc3474f73e1703271bfa2af80018f45", + "tests": [ + { + "id": "27cb3cfb52afaa0-d4057e4746e6d25", + "title": "Annotations List create an annotation", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/annotation_list.spec.ts", + "line": 22, + "column": 7 + } + }, + { + "id": "27cb3cfb52afaa0-4a66eac20dcf4de", + "title": "Annotations List validate annotation list", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/annotation_list.spec.ts", + "line": 35, + "column": 7 + } + }, + { + "id": "27cb3cfb52afaa0-b222cbd20756cd5", + "title": "Annotations List Go to slos", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/annotation_list.spec.ts", + "line": 48, + "column": 7 + } + }, + { + "id": "27cb3cfb52afaa0-22c9a04a2fb76de", + "title": "Annotations List check that annotation is displayed", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/annotation_list.spec.ts", + "line": 56, + "column": 7 + } + }, + { + "id": "27cb3cfb52afaa0-2d4124b6ff8f776", + "title": "Annotations List update annotation", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/annotation_list.spec.ts", + "line": 65, + "column": 7 + } + }, + { + "id": "27cb3cfb52afaa0-c180b803b4e7cdb", + "title": "Annotations List delete annotation", + "expectedStatus": "passed", + "tags": [ + "@ess" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/annotation_list.spec.ts", + "line": 84, + "column": 7 + } + }, + { + "id": "448f08951b285c6-2f7c95082c6900b", + "title": "SLOs Overview Go to slos overview and validate data retention tab", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlOblt" + ], + "location": { + "file": "x-pack/solutions/observability/plugins/slo/test/scout/ui/tests/slos_overview.spec.ts", + "line": 28, + "column": 7 + } + } + ] +} \ No newline at end of file diff --git a/x-pack/solutions/security/plugins/security_solution/test/scout/.meta/ui/parallel.json b/x-pack/solutions/security/plugins/security_solution/test/scout/.meta/ui/parallel.json new file mode 100644 index 0000000000000..b9a1136c572ab --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/test/scout/.meta/ui/parallel.json @@ -0,0 +1,31 @@ +{ + "lastModified": "2025-12-11T10:19:36.976Z", + "sha1": "050fbd89767a4b4212b0fdb34e7f27beb9bc57a5", + "tests": [ + { + "id": "4402bb6f4421c38-1054e603e578b92", + "title": "Ingest archives to Elasticsearch", + "expectedStatus": "passed", + "tags": [], + "location": { + "file": "x-pack/solutions/security/plugins/security_solution/test/scout/ui/parallel_tests/global.setup.ts", + "line": 11, + "column": 16 + } + }, + { + "id": "fe3e133d0c0af03-3916e4686fbd655", + "title": "Expandable flyout state sync should test flyout url sync", + "expectedStatus": "passed", + "tags": [ + "@ess", + "@svlSecurity" + ], + "location": { + "file": "x-pack/solutions/security/plugins/security_solution/test/scout/ui/parallel_tests/flyout/alert_details_url_sync.spec.ts", + "line": 25, + "column": 12 + } + } + ] +} \ No newline at end of file