mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
* Plugging in DashboardStart dependency * Create embeddable by reference and navigate back to dashboard * Trying to feature flag the new flow * Feature flagging new visualize flow * Removing unnecessary console statement * Fixing typescript errors * Adding a functional test for new functionality * Adding a functional test for new functionality * Fixing test name * Changing test name * Moving functional test to a separate folder * Trying to fix the config file * Adding an index file * Remove falsly included file * Adding aggs and params to vis input * Serializing vis before passing it as an input * Incorporating new state transfer logic * Remove dashboardStart as a dependency * Trying to get the test to run * Remove unused import * Readding spaces * Fixing type errors * Incorporating new changes # Conflicts: # scripts/functional_tests.js # tasks/function_test_groups.js
This commit is contained in:
parent
9d0ee6a42e
commit
95da850ab6
15 changed files with 870 additions and 16 deletions
|
@ -25,4 +25,5 @@ require('@kbn/test').runTestsCli([
|
|||
require.resolve('../test/interpreter_functional/config.ts'),
|
||||
require.resolve('../test/ui_capabilities/newsfeed_err/config.ts'),
|
||||
require.resolve('../test/examples/config.js'),
|
||||
require.resolve('../test/new_visualize_flow/config.js'),
|
||||
]);
|
||||
|
|
|
@ -58,7 +58,6 @@ import {
|
|||
isErrorEmbeddable,
|
||||
openAddPanelFlyout,
|
||||
ViewMode,
|
||||
SavedObjectEmbeddableInput,
|
||||
ContainerOutput,
|
||||
EmbeddableInput,
|
||||
} from '../../../embeddable/public';
|
||||
|
@ -432,14 +431,16 @@ export class DashboardAppController {
|
|||
.getIncomingEmbeddablePackage();
|
||||
if (incomingState) {
|
||||
if ('id' in incomingState) {
|
||||
container.addNewEmbeddable<SavedObjectEmbeddableInput>(incomingState.type, {
|
||||
container.addNewEmbeddable<EmbeddableInput>(incomingState.type, {
|
||||
savedObjectId: incomingState.id,
|
||||
});
|
||||
} else if ('input' in incomingState) {
|
||||
container.addNewEmbeddable<EmbeddableInput>(
|
||||
incomingState.type,
|
||||
incomingState.input
|
||||
);
|
||||
const input = incomingState.input;
|
||||
delete input.id;
|
||||
const explicitInput = {
|
||||
savedVis: input,
|
||||
};
|
||||
container.addNewEmbeddable<EmbeddableInput>(incomingState.type, explicitInput);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ import {
|
|||
import { DisabledLabEmbeddable } from './disabled_lab_embeddable';
|
||||
import { VisualizeEmbeddable, VisualizeInput, VisualizeOutput } from './visualize_embeddable';
|
||||
import { VISUALIZE_EMBEDDABLE_TYPE } from './constants';
|
||||
import { Vis } from '../vis';
|
||||
import { SerializedVis, Vis } from '../vis';
|
||||
import {
|
||||
getCapabilities,
|
||||
getTypes,
|
||||
|
@ -124,13 +124,20 @@ export class VisualizeEmbeddableFactory
|
|||
}
|
||||
}
|
||||
|
||||
public async create() {
|
||||
public async create(input: VisualizeInput & { savedVis?: SerializedVis }, parent?: IContainer) {
|
||||
// TODO: This is a bit of a hack to preserve the original functionality. Ideally we will clean this up
|
||||
// to allow for in place creation of visualizations without having to navigate away to a new URL.
|
||||
showNewVisModal({
|
||||
originatingApp: await this.getCurrentAppId(),
|
||||
outsideVisualizeApp: true,
|
||||
});
|
||||
return undefined;
|
||||
if (input.savedVis) {
|
||||
const visState = input.savedVis;
|
||||
const vis = new Vis(visState.type, visState);
|
||||
await vis.setState(visState);
|
||||
return createVisEmbeddableFromObject(this.deps)(vis, input, parent);
|
||||
} else {
|
||||
showNewVisModal({
|
||||
originatingApp: await this.getCurrentAppId(),
|
||||
outsideVisualizeApp: true,
|
||||
});
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
26
src/plugins/visualize/config.ts
Normal file
26
src/plugins/visualize/config.ts
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import { schema, TypeOf } from '@kbn/config-schema';
|
||||
|
||||
export const configSchema = schema.object({
|
||||
showNewVisualizeFlow: schema.boolean({ defaultValue: false }),
|
||||
});
|
||||
|
||||
export type ConfigSchema = TypeOf<typeof configSchema>;
|
|
@ -44,6 +44,7 @@ import { SharePluginStart } from 'src/plugins/share/public';
|
|||
import { SavedObjectsStart, SavedObject } from 'src/plugins/saved_objects/public';
|
||||
import { EmbeddableStart } from 'src/plugins/embeddable/public';
|
||||
import { KibanaLegacyStart } from 'src/plugins/kibana_legacy/public';
|
||||
import { ConfigSchema } from '../../config';
|
||||
|
||||
export type PureVisState = SavedVisState;
|
||||
|
||||
|
@ -110,6 +111,7 @@ export interface VisualizeServices extends CoreStart {
|
|||
createVisEmbeddableFromObject: VisualizationsStart['__LEGACY']['createVisEmbeddableFromObject'];
|
||||
restorePreviousUrl: () => void;
|
||||
scopedHistory: ScopedHistory;
|
||||
featureFlagConfig: ConfigSchema;
|
||||
}
|
||||
|
||||
export interface SavedVisInstance {
|
||||
|
|
|
@ -21,6 +21,7 @@ import React from 'react';
|
|||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import { TopNavMenuData } from 'src/plugins/navigation/public';
|
||||
import uuid from 'uuid';
|
||||
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../../../visualizations/public';
|
||||
import {
|
||||
showSaveModal,
|
||||
|
@ -33,7 +34,6 @@ import { unhashUrl } from '../../../../kibana_utils/public';
|
|||
import { SavedVisInstance, VisualizeServices, VisualizeAppStateContainer } from '../types';
|
||||
import { VisualizeConstants } from '../visualize_constants';
|
||||
import { getEditBreadcrumbs } from './breadcrumbs';
|
||||
|
||||
interface TopNavConfigParams {
|
||||
hasUnsavedChanges: boolean;
|
||||
setHasUnsavedChanges: (value: boolean) => void;
|
||||
|
@ -66,6 +66,7 @@ export const getTopNavConfig = (
|
|||
toastNotifications,
|
||||
visualizeCapabilities,
|
||||
i18n: { Context: I18nContext },
|
||||
featureFlagConfig,
|
||||
}: VisualizeServices
|
||||
) => {
|
||||
/**
|
||||
|
@ -234,6 +235,19 @@ export const getTopNavConfig = (
|
|||
return response;
|
||||
};
|
||||
|
||||
const createVisReference = () => {
|
||||
if (!originatingApp) {
|
||||
return;
|
||||
}
|
||||
const input = {
|
||||
...vis.serialize(),
|
||||
id: uuid.v4(),
|
||||
};
|
||||
embeddable.getStateTransfer().navigateToWithEmbeddablePackage(originatingApp, {
|
||||
state: { input, type: VISUALIZE_EMBEDDABLE_TYPE },
|
||||
});
|
||||
};
|
||||
|
||||
const saveModal = (
|
||||
<SavedObjectSaveModalOrigin
|
||||
documentInfo={savedVis}
|
||||
|
@ -243,7 +257,11 @@ export const getTopNavConfig = (
|
|||
originatingApp={originatingApp}
|
||||
/>
|
||||
);
|
||||
showSaveModal(saveModal, I18nContext);
|
||||
if (originatingApp === 'dashboards' && featureFlagConfig.showNewVisualizeFlow) {
|
||||
createVisReference();
|
||||
} else {
|
||||
showSaveModal(saveModal, I18nContext);
|
||||
}
|
||||
},
|
||||
},
|
||||
]
|
||||
|
|
|
@ -60,6 +60,10 @@ export interface VisualizePluginSetupDependencies {
|
|||
data: DataPublicPluginSetup;
|
||||
}
|
||||
|
||||
export interface FeatureFlagConfig {
|
||||
showNewVisualizeFlow: boolean;
|
||||
}
|
||||
|
||||
export class VisualizePlugin
|
||||
implements
|
||||
Plugin<void, void, VisualizePluginSetupDependencies, VisualizePluginStartDependencies> {
|
||||
|
@ -165,6 +169,7 @@ export class VisualizePlugin
|
|||
savedObjectsPublic: pluginsStart.savedObjects,
|
||||
scopedHistory: params.history,
|
||||
restorePreviousUrl,
|
||||
featureFlagConfig: this.initializerContext.config.get<FeatureFlagConfig>(),
|
||||
};
|
||||
|
||||
params.element.classList.add('visAppWrapper');
|
||||
|
|
|
@ -17,8 +17,17 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import { PluginInitializerContext } from 'kibana/server';
|
||||
import { PluginInitializerContext, PluginConfigDescriptor } from 'kibana/server';
|
||||
import { VisualizeServerPlugin } from './plugin';
|
||||
|
||||
import { ConfigSchema, configSchema } from '../config';
|
||||
|
||||
export const config: PluginConfigDescriptor<ConfigSchema> = {
|
||||
exposeToBrowser: {
|
||||
showNewVisualizeFlow: true,
|
||||
},
|
||||
schema: configSchema,
|
||||
};
|
||||
|
||||
export const plugin = (initContext: PluginInitializerContext) =>
|
||||
new VisualizeServerPlugin(initContext);
|
||||
|
|
|
@ -45,6 +45,8 @@ export function getFunctionalTestGroupRunConfigs({ kibanaInstallDir } = {}) {
|
|||
'test/functional/config.js',
|
||||
'--config',
|
||||
'test/ui_capabilities/newsfeed_err/config.ts',
|
||||
'--config',
|
||||
'test/new_visualize_flow/config.js',
|
||||
// '--config', 'test/functional/config.firefox.js',
|
||||
'--bail',
|
||||
'--debug',
|
||||
|
|
|
@ -139,5 +139,31 @@ export function DashboardVisualizationProvider({ getService, getPageObjects }: F
|
|||
redirectToOrigin: true,
|
||||
});
|
||||
}
|
||||
|
||||
async createAndEmbedMetric(name: string) {
|
||||
log.debug(`createAndEmbedMetric(${name})`);
|
||||
const inViewMode = await PageObjects.dashboard.getIsInViewMode();
|
||||
if (inViewMode) {
|
||||
await PageObjects.dashboard.switchToEditMode();
|
||||
}
|
||||
await this.ensureNewVisualizationDialogIsShowing();
|
||||
await PageObjects.visualize.clickMetric();
|
||||
await find.clickByCssSelector('li.euiListGroupItem:nth-of-type(2)');
|
||||
await testSubjects.exists('visualizeSaveButton');
|
||||
await testSubjects.click('visualizeSaveButton');
|
||||
}
|
||||
|
||||
async createAndEmbedMarkdown({ name, markdown }: { name: string; markdown: string }) {
|
||||
log.debug(`createAndEmbedMarkdown(${markdown})`);
|
||||
const inViewMode = await PageObjects.dashboard.getIsInViewMode();
|
||||
if (inViewMode) {
|
||||
await PageObjects.dashboard.switchToEditMode();
|
||||
}
|
||||
await this.ensureNewVisualizationDialogIsShowing();
|
||||
await PageObjects.visualize.clickMarkdownWidget();
|
||||
await PageObjects.visEditor.setMarkdownTxt(markdown);
|
||||
await PageObjects.visEditor.clickGo();
|
||||
await testSubjects.click('visualizeSaveButton');
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
|
157
test/new_visualize_flow/config.js
Normal file
157
test/new_visualize_flow/config.js
Normal file
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import { pageObjects } from '../functional/page_objects';
|
||||
import { services } from '../functional/services';
|
||||
|
||||
export default async function ({ readConfigFile }) {
|
||||
const commonConfig = await readConfigFile(require.resolve('../functional/config.js'));
|
||||
|
||||
return {
|
||||
testFiles: [require.resolve('./dashboard_embedding')],
|
||||
pageObjects,
|
||||
services,
|
||||
servers: commonConfig.get('servers'),
|
||||
|
||||
esTestCluster: commonConfig.get('esTestCluster'),
|
||||
|
||||
kbnTestServer: {
|
||||
...commonConfig.get('kbnTestServer'),
|
||||
serverArgs: [
|
||||
...commonConfig.get('kbnTestServer.serverArgs'),
|
||||
'--oss',
|
||||
'--telemetry.optIn=false',
|
||||
'--visualize.showNewVisualizeFlow=true',
|
||||
],
|
||||
},
|
||||
|
||||
uiSettings: {
|
||||
defaults: {
|
||||
'accessibility:disableAnimations': true,
|
||||
'dateFormat:tz': 'UTC',
|
||||
},
|
||||
},
|
||||
|
||||
apps: {
|
||||
kibana: {
|
||||
pathname: '/app/kibana',
|
||||
},
|
||||
status_page: {
|
||||
pathname: '/status',
|
||||
},
|
||||
discover: {
|
||||
pathname: '/app/discover',
|
||||
hash: '/',
|
||||
},
|
||||
context: {
|
||||
pathname: '/app/discover',
|
||||
hash: '/context',
|
||||
},
|
||||
visualize: {
|
||||
pathname: '/app/visualize',
|
||||
hash: '/',
|
||||
},
|
||||
dashboard: {
|
||||
pathname: '/app/dashboards',
|
||||
hash: '/list',
|
||||
},
|
||||
management: {
|
||||
pathname: '/app/management',
|
||||
},
|
||||
console: {
|
||||
pathname: '/app/dev_tools',
|
||||
hash: '/console',
|
||||
},
|
||||
home: {
|
||||
pathname: '/app/home',
|
||||
hash: '/',
|
||||
},
|
||||
},
|
||||
junit: {
|
||||
reportName: 'Chrome UI Functional Tests',
|
||||
},
|
||||
browser: {
|
||||
type: 'chrome',
|
||||
},
|
||||
|
||||
security: {
|
||||
roles: {
|
||||
test_logstash_reader: {
|
||||
elasticsearch: {
|
||||
cluster: [],
|
||||
indices: [
|
||||
{
|
||||
names: ['logstash*'],
|
||||
privileges: ['read', 'view_index_metadata'],
|
||||
field_security: { grant: ['*'], except: [] },
|
||||
},
|
||||
],
|
||||
run_as: [],
|
||||
},
|
||||
kibana: [],
|
||||
},
|
||||
//for sample data - can remove but not add sample data
|
||||
kibana_sample_admin: {
|
||||
elasticsearch: {
|
||||
cluster: [],
|
||||
indices: [
|
||||
{
|
||||
names: ['kibana_sample*'],
|
||||
privileges: ['read', 'view_index_metadata', 'manage', 'create_index', 'index'],
|
||||
field_security: { grant: ['*'], except: [] },
|
||||
},
|
||||
],
|
||||
run_as: [],
|
||||
},
|
||||
kibana: [],
|
||||
},
|
||||
long_window_logstash: {
|
||||
elasticsearch: {
|
||||
cluster: [],
|
||||
indices: [
|
||||
{
|
||||
names: ['long-window-logstash-*'],
|
||||
privileges: ['read', 'view_index_metadata'],
|
||||
field_security: { grant: ['*'], except: [] },
|
||||
},
|
||||
],
|
||||
run_as: [],
|
||||
},
|
||||
kibana: [],
|
||||
},
|
||||
|
||||
animals: {
|
||||
elasticsearch: {
|
||||
cluster: [],
|
||||
indices: [
|
||||
{
|
||||
names: ['animals-*'],
|
||||
privileges: ['read', 'view_index_metadata'],
|
||||
field_security: { grant: ['*'], except: [] },
|
||||
},
|
||||
],
|
||||
run_as: [],
|
||||
},
|
||||
kibana: [],
|
||||
},
|
||||
},
|
||||
defaultRoles: ['kibana_admin'],
|
||||
},
|
||||
};
|
||||
}
|
83
test/new_visualize_flow/dashboard_embedding.js
Normal file
83
test/new_visualize_flow/dashboard_embedding.js
Normal file
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import expect from '@kbn/expect';
|
||||
|
||||
/**
|
||||
* This tests both that one of each visualization can be added to a dashboard (as opposed to opening an existing
|
||||
* dashboard with the visualizations already on it), as well as conducts a rough type of snapshot testing by checking
|
||||
* for various ui components. The downside is these tests are a bit fragile to css changes (though not as fragile as
|
||||
* actual screenshot snapshot regression testing), and can be difficult to diagnose failures (which visualization
|
||||
* broke?). The upside is that this offers very good coverage with a minimal time investment.
|
||||
*/
|
||||
|
||||
export default function ({ getService, getPageObjects }) {
|
||||
const esArchiver = getService('esArchiver');
|
||||
const kibanaServer = getService('kibanaServer');
|
||||
const dashboardExpect = getService('dashboardExpect');
|
||||
const testSubjects = getService('testSubjects');
|
||||
const dashboardVisualizations = getService('dashboardVisualizations');
|
||||
const PageObjects = getPageObjects([
|
||||
'common',
|
||||
'dashboard',
|
||||
'header',
|
||||
'visualize',
|
||||
'discover',
|
||||
'timePicker',
|
||||
]);
|
||||
|
||||
describe('Dashboard Embedding', function describeIndexTests() {
|
||||
before(async () => {
|
||||
await esArchiver.load('kibana');
|
||||
await kibanaServer.uiSettings.replace({
|
||||
defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c',
|
||||
});
|
||||
await PageObjects.common.navigateToApp('dashboard');
|
||||
await PageObjects.dashboard.preserveCrossAppState();
|
||||
await PageObjects.dashboard.clickNewDashboard();
|
||||
});
|
||||
|
||||
it('adding a metric visualization', async function () {
|
||||
const originalPanelCount = await PageObjects.dashboard.getPanelCount();
|
||||
expect(originalPanelCount).to.eql(0);
|
||||
await testSubjects.exists('addVisualizationButton');
|
||||
await testSubjects.click('addVisualizationButton');
|
||||
await dashboardVisualizations.createAndEmbedMetric('Embedding Vis Test');
|
||||
await PageObjects.dashboard.waitForRenderComplete();
|
||||
await dashboardExpect.metricValuesExist(['0']);
|
||||
const panelCount = await PageObjects.dashboard.getPanelCount();
|
||||
expect(panelCount).to.eql(1);
|
||||
});
|
||||
|
||||
it('adding a markdown', async function () {
|
||||
const originalPanelCount = await PageObjects.dashboard.getPanelCount();
|
||||
expect(originalPanelCount).to.eql(1);
|
||||
await testSubjects.exists('dashboardAddNewPanelButton');
|
||||
await testSubjects.click('dashboardAddNewPanelButton');
|
||||
await dashboardVisualizations.createAndEmbedMarkdown({
|
||||
name: 'Embedding Markdown Test',
|
||||
markdown: 'Nice to meet you, markdown is my name',
|
||||
});
|
||||
await PageObjects.dashboard.waitForRenderComplete();
|
||||
await dashboardExpect.markdownWithValuesExists(['Nice to meet you, markdown is my name']);
|
||||
const panelCount = await PageObjects.dashboard.getPanelCount();
|
||||
expect(panelCount).to.eql(2);
|
||||
});
|
||||
});
|
||||
}
|
BIN
test/new_visualize_flow/fixtures/es_archiver/kibana/data.json.gz
Normal file
BIN
test/new_visualize_flow/fixtures/es_archiver/kibana/data.json.gz
Normal file
Binary file not shown.
|
@ -0,0 +1,490 @@
|
|||
{
|
||||
"type": "index",
|
||||
"value": {
|
||||
"aliases": {
|
||||
".kibana": {
|
||||
}
|
||||
},
|
||||
"index": ".kibana_1",
|
||||
"mappings": {
|
||||
"_meta": {
|
||||
"migrationMappingPropertyHashes": {
|
||||
"application_usage_totals": "c897e4310c5f24b07caaff3db53ae2c1",
|
||||
"application_usage_transactional": "965839e75f809fefe04f92dc4d99722a",
|
||||
"config": "ae24d22d5986d04124cc6568f771066f",
|
||||
"dashboard": "d00f614b29a80360e1190193fd333bab",
|
||||
"index-pattern": "66eccb05066c5a89924f48a9e9736499",
|
||||
"kql-telemetry": "d12a98a6f19a2d273696597547e064ee",
|
||||
"migrationVersion": "4a1746014a75ade3a714e1db5763276f",
|
||||
"namespace": "2f4316de49999235636386fe51dc06c1",
|
||||
"namespaces": "2f4316de49999235636386fe51dc06c1",
|
||||
"query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9",
|
||||
"references": "7997cf5a56cc02bdc9c93361bde732b0",
|
||||
"sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4",
|
||||
"search": "181661168bbadd1eff5902361e2a0d5c",
|
||||
"telemetry": "36a616f7026dfa617d6655df850fe16d",
|
||||
"timelion-sheet": "9a2a2748877c7a7b582fef201ab1d4cf",
|
||||
"tsvb-validation-telemetry": "3a37ef6c8700ae6fc97d5c7da00e9215",
|
||||
"type": "2f4316de49999235636386fe51dc06c1",
|
||||
"ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3",
|
||||
"updated_at": "00da57df13e94e9d98437d13ace4bfe0",
|
||||
"url": "b675c3be8d76ecf029294d51dc7ec65d",
|
||||
"visualization": "52d7a13ad68a150c4525b292d23e12cc"
|
||||
}
|
||||
},
|
||||
"dynamic": "strict",
|
||||
"properties": {
|
||||
"application_usage_totals": {
|
||||
"properties": {
|
||||
"appId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"minutesOnScreen": {
|
||||
"type": "float"
|
||||
},
|
||||
"numberOfClicks": {
|
||||
"type": "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"application_usage_transactional": {
|
||||
"properties": {
|
||||
"appId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"minutesOnScreen": {
|
||||
"type": "float"
|
||||
},
|
||||
"numberOfClicks": {
|
||||
"type": "long"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "date"
|
||||
}
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"dynamic": "true",
|
||||
"properties": {
|
||||
"accessibility:disableAnimations": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"buildNum": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"dateFormat:tz": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256,
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
},
|
||||
"defaultIndex": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256,
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
},
|
||||
"notifications:lifetime:banner": {
|
||||
"type": "long"
|
||||
},
|
||||
"notifications:lifetime:error": {
|
||||
"type": "long"
|
||||
},
|
||||
"notifications:lifetime:info": {
|
||||
"type": "long"
|
||||
},
|
||||
"notifications:lifetime:warning": {
|
||||
"type": "long"
|
||||
},
|
||||
"xPackMonitoring:showBanner": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "text"
|
||||
},
|
||||
"hits": {
|
||||
"type": "integer"
|
||||
},
|
||||
"kibanaSavedObjectMeta": {
|
||||
"properties": {
|
||||
"searchSourceJSON": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"optionsJSON": {
|
||||
"type": "text"
|
||||
},
|
||||
"panelsJSON": {
|
||||
"type": "text"
|
||||
},
|
||||
"refreshInterval": {
|
||||
"properties": {
|
||||
"display": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"pause": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"section": {
|
||||
"type": "integer"
|
||||
},
|
||||
"value": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeFrom": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"timeRestore": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"timeTo": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"title": {
|
||||
"type": "text"
|
||||
},
|
||||
"version": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"index-pattern": {
|
||||
"properties": {
|
||||
"fieldFormatMap": {
|
||||
"type": "text"
|
||||
},
|
||||
"fields": {
|
||||
"type": "text"
|
||||
},
|
||||
"intervalName": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"notExpandable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"sourceFilters": {
|
||||
"type": "text"
|
||||
},
|
||||
"timeFieldName": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"title": {
|
||||
"type": "text"
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"typeMeta": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"kql-telemetry": {
|
||||
"properties": {
|
||||
"optInCount": {
|
||||
"type": "long"
|
||||
},
|
||||
"optOutCount": {
|
||||
"type": "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"migrationVersion": {
|
||||
"dynamic": "true",
|
||||
"properties": {
|
||||
"dashboard": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256,
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
},
|
||||
"index-pattern": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256,
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
},
|
||||
"search": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256,
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
},
|
||||
"visualization": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"ignore_above": 256,
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"namespace": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"namespaces": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"query": {
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "text"
|
||||
},
|
||||
"filters": {
|
||||
"enabled": false,
|
||||
"type": "object"
|
||||
},
|
||||
"query": {
|
||||
"properties": {
|
||||
"language": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"query": {
|
||||
"index": false,
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timefilter": {
|
||||
"enabled": false,
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "nested"
|
||||
},
|
||||
"sample-data-telemetry": {
|
||||
"properties": {
|
||||
"installCount": {
|
||||
"type": "long"
|
||||
},
|
||||
"unInstallCount": {
|
||||
"type": "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"properties": {
|
||||
"columns": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"description": {
|
||||
"type": "text"
|
||||
},
|
||||
"hits": {
|
||||
"type": "integer"
|
||||
},
|
||||
"kibanaSavedObjectMeta": {
|
||||
"properties": {
|
||||
"searchSourceJSON": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sort": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"title": {
|
||||
"type": "text"
|
||||
},
|
||||
"version": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"server": {
|
||||
"properties": {
|
||||
"uuid": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"telemetry": {
|
||||
"properties": {
|
||||
"allowChangingOptInStatus": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"lastReported": {
|
||||
"type": "date"
|
||||
},
|
||||
"lastVersionChecked": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"reportFailureCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"reportFailureVersion": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sendUsageFrom": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userHasSeenNotice": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timelion-sheet": {
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "text"
|
||||
},
|
||||
"hits": {
|
||||
"type": "integer"
|
||||
},
|
||||
"kibanaSavedObjectMeta": {
|
||||
"properties": {
|
||||
"searchSourceJSON": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timelion_chart_height": {
|
||||
"type": "integer"
|
||||
},
|
||||
"timelion_columns": {
|
||||
"type": "integer"
|
||||
},
|
||||
"timelion_interval": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"timelion_other_interval": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"timelion_rows": {
|
||||
"type": "integer"
|
||||
},
|
||||
"timelion_sheet": {
|
||||
"type": "text"
|
||||
},
|
||||
"title": {
|
||||
"type": "text"
|
||||
},
|
||||
"version": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tsvb-validation-telemetry": {
|
||||
"properties": {
|
||||
"failedRequests": {
|
||||
"type": "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"ui-metric": {
|
||||
"properties": {
|
||||
"count": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"updated_at": {
|
||||
"type": "date"
|
||||
},
|
||||
"url": {
|
||||
"properties": {
|
||||
"accessCount": {
|
||||
"type": "long"
|
||||
},
|
||||
"accessDate": {
|
||||
"type": "date"
|
||||
},
|
||||
"createDate": {
|
||||
"type": "date"
|
||||
},
|
||||
"url": {
|
||||
"fields": {
|
||||
"keyword": {
|
||||
"type": "keyword"
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visualization": {
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "text"
|
||||
},
|
||||
"kibanaSavedObjectMeta": {
|
||||
"properties": {
|
||||
"searchSourceJSON": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
},
|
||||
"savedSearchRefName": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"title": {
|
||||
"type": "text"
|
||||
},
|
||||
"uiStateJSON": {
|
||||
"type": "text"
|
||||
},
|
||||
"version": {
|
||||
"type": "integer"
|
||||
},
|
||||
"visState": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"index": {
|
||||
"auto_expand_replicas": "0-1",
|
||||
"number_of_replicas": "0",
|
||||
"number_of_shards": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
27
test/new_visualize_flow/index.ts
Normal file
27
test/new_visualize_flow/index.ts
Normal file
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { FtrProviderContext } from '../functional/ftr_provider_context';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default function ({ loadTestFile }: FtrProviderContext) {
|
||||
describe('New Visualize Flow', function () {
|
||||
this.tags('ciGroup2');
|
||||
loadTestFile(require.resolve('./dashboard_embedding'));
|
||||
});
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue