Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ML] Anomaly Detection alert type #89286

Merged
merged 68 commits into from
Feb 11, 2021

Conversation

darnautov
Copy link
Contributor

@darnautov darnautov commented Jan 26, 2021

Summary

Related issue #88940

This PR introduces a new alert type - ML Anomaly detection alert.

image

List of features covered so far:

  • Assign the list of jobs and groups to the alert condition
  • Specify the result type that triggers the alert actions
  • Precise adjustment of the anomaly severity
  • Test and preview the alert condition for the specified interval
    image

By default, the action group is "Anomaly score matched the condition"
image

At the moment there is only one default message allowed for all action types (limitation of the framework).
image

The list of available context variable:

  • timestamp
  • timestampIso8601
  • jobIds
  • isInterim
  • score
  • topRecords
  • topInfluencers
  • anomalyExplorerUrl

Bear in mind that Kibana public URL isn't always available server-side of Kibana (the user has to specify it), so it's required to complete the anomalyExplorerUrl in the Action Message field with the hostname.

Example of the Slack message action:
image

Checklist

@elastic elastic deleted a comment from kibanamachine Feb 2, 2021
@darnautov darnautov self-assigned this Feb 3, 2021
\\{\\{/context.topRecords\\}\\}

\\{\\{! Replace kibanaBaseUrl if not configured in Kibana \\}\\}
[Open in Anomaly Explorer](\\{\\{\\{context.kibanaBaseUrl\\}\\}\\}\\{\\{\\{context.anomalyExplorerUrl\\}\\}\\})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For an influencer type, I am getting an error on opening the Anomaly Explorer from the link (testing the email action)

image

The link in the email is:

https://localhost:5601/abc/app/ml/explorer/?_g=(ml%3A(jobIds%3A!(ecommerce_high_sum_total_sales))%2Ctime%3A(from%3A%272021-02-10T08%3A00%3A00.000Z%27%2Cmode%3Aabsolute%2Cto%3A%272021-02-11T04%3A00%3A00.000Z%27))&_a=(explorer%3A(mlExplorerFilter%3A(filterActive%3A!t%2CfilteredFields%3A!(category.keyword%2C%27Women!%27s%20Clothing%2CWomen!%27s%20Shoes%27)%2CinfluencersFilterQuery%3A(bool%3A(minimum_should_match%3A1%2Cshould%3A!((match_phrase%3A(category.keyword%3A%27Women!%27s%20Clothing%2CWomen!%27s%20Shoes%27))))))%2CmlExplorerSwimlane%3A(selectedLanes%3A!(%27Women!%27s%20Clothing%2CWomen!%27s%20Shoes%27)%2CselectedTimes%3A1612980000%2CselectedType%3AviewBy%2CviewByFieldName%3Acategory.keyword)))

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 3996336

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testing 657b1fe the Anomaly Explorer is not loading correctly when clicking on a link in an email for a bucket alert. Link is:

https://localhost:5601/abc/app/ml/explorer/?_g=(ml%3A(jobIds%3A!(ecommerce_high_sum_total_sales))%2Ctime%3A(from%3A%272021-02-11T03%3A00%3A00.000Z%27%2Cmode%3Aabsolute%2Cto%3A%272021-02-11T23%3A00%3A00.000Z%27))&_a=(explorer%3A(mlExplorerFilter%3A()%2CmlExplorerSwimlane%3A(selectedLanes%3A!(Overall)%2CselectedTimes%3A1613048400%2CselectedType%3Aoverall)))

image

Copy link
Member

@pheyos pheyos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functional tests are looking good overall, great to have them in as part of this PR! 🎉
Just a few suggestions:

await testSubjects.click('saveAlertButton');
const isConfirmationModalVisible = await testSubjects.isDisplayed('confirmAlertSaveModal');
expect(isConfirmationModalVisible).to.eql(true, 'Expect confirmation modal to be visible');
await testSubjects.click('confirmModalConfirmButton');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be good to have two more assertions here after the click. I'd suggest to check that

  • the modal is not displayed anymore
  • the alert creation flyout is closed (probably needs some waiting - maybe implement in a separate method?)

@@ -163,5 +163,54 @@ export function MachineLearningCommonUIProvider({ getService }: FtrProviderConte
// escape popover
await browser.pressKeys(browser.keys.ESCAPE);
},

async setSliderValue(testDataSubj: string, value: number) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to have this available here so it's re-usable! Could we let the data_frame_analytics_creation service methods setTrainingPercent and assertTrainingPercentValue use this implementation, so we avoid code duplication?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactored in 2b16142

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we do the same for data_frame_analytics_creation.assertTrainingPercentValue -> common_ui.assertSliderValue? This is not only used to check that setTrainingPercent worked correctly, but also during clone to check that the slider value is carried over correctly.


Top records:
\\{\\{#context.topRecords\\}\\}
\\{\\{function\\}\\}(\\{\\{field_name\\}\\}) \\{\\{by_field_value\\}\\} \\{\\{over_field_value\\}\\} \\{\\{partition_field_value\\}\\} [\\{\\{score\\}\\}]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to floor the scores displayed in the preview and the alert, to match what we do in the Anomaly Explorer, including < 1 if possible for scores less than 1. Can you use getFormattedSeverityScore from anomaly_utils.ts?

Copy link
Contributor

@peteharverson peteharverson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested latest edits and LGTM.

Would be good to use getFormattedSeverityScore for formatting scores less than 0 as < 1 but that can be done in a follow-up, as can a fix for the Anomaly Explorer to select a range of cell(s) from the link in the alert.

@darnautov darnautov requested a review from pheyos February 11, 2021 15:03
Copy link
Member

@pheyos pheyos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functional tests LGTM
The two left-over items (see comments here and here) can also be done in a follow-up.

@kibanamachine
Copy link
Contributor

💛 Build succeeded, but was flaky


Test Failures

Kibana Pipeline / general / Chrome UI Functional Tests.test/functional/apps/dashboard/dashboard_unsaved_state·ts.dashboard app using current data dashboard unsaved panels retains unsaved panel count after navigating to listing page and back

Link to Jenkins

Standard Out

Failed Tests Reporter:
  - Test has not failed recently on tracked branches

[00:00:00]       │
[00:00:00]         └-: dashboard app
[00:00:00]           └-> "before all" hook in "dashboard app"
[00:00:00]           └-: using current data
[00:00:00]             └-> "before all" hook in "using current data"
[00:00:00]             └-> "before all" hook: loadCurrentData in "using current data"
[00:00:00]               │ info [logstash_functional] Unloading indices from "mappings.json"
[00:00:00]               │ info [logstash_functional] Unloading indices from "data.json.gz"
[00:00:01]               │ info [dashboard/current/data] Loading "mappings.json"
[00:00:01]               │ info [dashboard/current/data] Loading "data.json.gz"
[00:00:01]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [animals-dogs-2018-01-01] creating index, cause [api], templates [], shards [5]/[1]
[00:00:01]               │ info [dashboard/current/data] Created index "animals-dogs-2018-01-01"
[00:00:01]               │ debg [dashboard/current/data] "animals-dogs-2018-01-01" settings {"index":{"number_of_replicas":"1","number_of_shards":"5"}}
[00:00:01]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [animals-dogs-2018-04-10] creating index, cause [api], templates [], shards [5]/[1]
[00:00:01]               │ info [dashboard/current/data] Created index "animals-dogs-2018-04-10"
[00:00:01]               │ debg [dashboard/current/data] "animals-dogs-2018-04-10" settings {"index":{"number_of_replicas":"1","number_of_shards":"5"}}
[00:00:01]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [animals-cats-2018-01-01] creating index, cause [api], templates [], shards [5]/[1]
[00:00:02]               │ info [dashboard/current/data] Created index "animals-cats-2018-01-01"
[00:00:02]               │ debg [dashboard/current/data] "animals-cats-2018-01-01" settings {"index":{"number_of_replicas":"1","number_of_shards":"5"}}
[00:00:02]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [animals-cats-2018-04-10] creating index, cause [api], templates [], shards [5]/[1]
[00:00:02]               │ info [dashboard/current/data] Created index "animals-cats-2018-04-10"
[00:00:02]               │ debg [dashboard/current/data] "animals-cats-2018-04-10" settings {"index":{"number_of_replicas":"1","number_of_shards":"5"}}
[00:00:02]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [dogbreeds] creating index, cause [api], templates [], shards [5]/[1]
[00:00:02]               │ info [dashboard/current/data] Created index "dogbreeds"
[00:00:02]               │ debg [dashboard/current/data] "dogbreeds" settings {"index":{"number_of_replicas":"1","number_of_shards":"5"}}
[00:00:02]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [logstash-0] creating index, cause [api], templates [], shards [1]/[0]
[00:00:02]               │ info [dashboard/current/data] Created index "logstash-0"
[00:00:02]               │ debg [dashboard/current/data] "logstash-0" settings {"index":{"analysis":{"analyzer":{"makelogs_url":{"max_token_length":"1000","tokenizer":"uax_url_email","type":"standard"}}},"number_of_replicas":"0","number_of_shards":"1"}}
[00:00:11]               │ info progress: 7516
[00:00:17]               │ info [dashboard/current/data] Indexed 6 docs into "animals-dogs-2018-01-01"
[00:00:17]               │ info [dashboard/current/data] Indexed 6 docs into "animals-dogs-2018-04-10"
[00:00:17]               │ info [dashboard/current/data] Indexed 6 docs into "animals-cats-2018-01-01"
[00:00:17]               │ info [dashboard/current/data] Indexed 5 docs into "animals-cats-2018-04-10"
[00:00:17]               │ info [dashboard/current/data] Indexed 6 docs into "dogbreeds"
[00:00:17]               │ info [dashboard/current/data] Indexed 14005 docs into "logstash-0"
[00:07:52]             └-: dashboard unsaved panels
[00:07:52]               └-> "before all" hook for "has correct number of panels"
[00:07:52]               └-> "before all" hook for "has correct number of panels"
[00:07:52]                 │ info [dashboard/current/kibana] Loading "mappings.json"
[00:07:52]                 │ info [dashboard/current/kibana] Loading "data.json.gz"
[00:07:52]                 │ info [o.e.c.m.MetadataDeleteIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_1/xMk38fL2Q8mDHaul33sWHA] deleting index
[00:07:52]                 │ info [o.e.c.m.MetadataDeleteIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_001/Ov43q7B9RByEAlctU5ESPQ] deleting index
[00:07:52]                 │ info [dashboard/current/kibana] Deleted existing index ".kibana_8.0.0_001"
[00:07:52]                 │ info [dashboard/current/kibana] Deleted existing index ".kibana_1"
[00:07:52]                 │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_1] creating index, cause [api], templates [], shards [1]/[0]
[00:07:52]                 │ info [dashboard/current/kibana] Created index ".kibana_1"
[00:07:52]                 │ debg [dashboard/current/kibana] ".kibana_1" settings {"index":{"auto_expand_replicas":"0-1","number_of_replicas":"0","number_of_shards":"1"}}
[00:07:52]                 │ info [dashboard/current/kibana] Indexed 143 docs into ".kibana_1"
[00:07:52]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_1/GkGe5gHSTZak8PBjG7E59w] update_mapping [_doc]
[00:07:52]                 │ debg Migrating saved objects
[00:07:52]                 │ proc [kibana]   log   [15:16:55.490] [info][savedobjects-service] [.kibana] INIT -> SET_SOURCE_WRITE_BLOCK
[00:07:52]                 │ info [o.e.c.m.MetadataIndexStateService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] adding block write to indices [[.kibana_1/GkGe5gHSTZak8PBjG7E59w]]
[00:07:52]                 │ info [o.e.c.m.MetadataIndexStateService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] completed adding block write to indices [.kibana_1]
[00:07:52]                 │ proc [kibana]   log   [15:16:55.526] [info][savedobjects-service] [.kibana] SET_SOURCE_WRITE_BLOCK -> CREATE_REINDEX_TEMP
[00:07:52]                 │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_reindex_temp] creating index, cause [api], templates [], shards [1]/[1]
[00:07:52]                 │ info [o.e.c.r.a.AllocationService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] updating number_of_replicas to [0] for indices [.kibana_8.0.0_reindex_temp]
[00:07:52]                 │ proc [kibana]   log   [15:16:55.578] [info][savedobjects-service] [.kibana] CREATE_REINDEX_TEMP -> REINDEX_SOURCE_TO_TEMP
[00:07:52]                 │ proc [kibana]   log   [15:16:55.582] [info][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP -> REINDEX_SOURCE_TO_TEMP_WAIT_FOR_TASK
[00:07:52]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_reindex_temp/aJHDmRMySx6_WkraCr_6kg] update_mapping [_doc]
[00:07:52]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_reindex_temp/aJHDmRMySx6_WkraCr_6kg] update_mapping [_doc]
[00:07:52]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_reindex_temp/aJHDmRMySx6_WkraCr_6kg] update_mapping [_doc]
[00:07:52]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_reindex_temp/aJHDmRMySx6_WkraCr_6kg] update_mapping [_doc]
[00:07:52]                 │ info [o.e.t.LoggingTaskListener] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] 6916 finished with response BulkByScrollResponse[took=122.7ms,timed_out=false,sliceId=null,updated=0,created=143,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s,bulk_failures=[],search_failures=[]]
[00:07:52]                 │ proc [kibana]   log   [15:16:55.787] [info][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_WAIT_FOR_TASK -> SET_TEMP_WRITE_BLOCK
[00:07:52]                 │ info [o.e.c.m.MetadataIndexStateService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] adding block write to indices [[.kibana_8.0.0_reindex_temp/aJHDmRMySx6_WkraCr_6kg]]
[00:07:52]                 │ info [o.e.c.m.MetadataIndexStateService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] completed adding block write to indices [.kibana_8.0.0_reindex_temp]
[00:07:52]                 │ proc [kibana]   log   [15:16:55.820] [info][savedobjects-service] [.kibana] SET_TEMP_WRITE_BLOCK -> CLONE_TEMP_TO_TARGET
[00:07:52]                 │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] applying create index request using existing index [.kibana_8.0.0_reindex_temp] metadata
[00:07:52]                 │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_001] creating index, cause [clone_index], templates [], shards [1]/[1]
[00:07:52]                 │ info [o.e.c.r.a.AllocationService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] updating number_of_replicas to [0] for indices [.kibana_8.0.0_001]
[00:07:52]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_001/sE6KBFZES0WzWm41Fa15eQ] create_mapping
[00:07:52]                 │ proc [kibana]   log   [15:16:55.907] [info][savedobjects-service] [.kibana] CLONE_TEMP_TO_TARGET -> OUTDATED_DOCUMENTS_SEARCH
[00:07:52]                 │ proc [kibana]   log   [15:16:55.920] [info][savedobjects-service] [.kibana] OUTDATED_DOCUMENTS_SEARCH -> OUTDATED_DOCUMENTS_TRANSFORM
[00:07:53]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_001/sE6KBFZES0WzWm41Fa15eQ] update_mapping [_doc]
[00:07:53]                 │ proc [kibana]   log   [15:16:56.856] [info][savedobjects-service] [.kibana] OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH
[00:07:53]                 │ proc [kibana]   log   [15:16:56.863] [info][savedobjects-service] [.kibana] OUTDATED_DOCUMENTS_SEARCH -> UPDATE_TARGET_MAPPINGS
[00:07:53]                 │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_001/sE6KBFZES0WzWm41Fa15eQ] update_mapping [_doc]
[00:07:53]                 │ proc [kibana]   log   [15:16:56.897] [info][savedobjects-service] [.kibana] UPDATE_TARGET_MAPPINGS -> UPDATE_TARGET_MAPPINGS_WAIT_FOR_TASK
[00:07:53]                 │ info [o.e.t.LoggingTaskListener] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] 6986 finished with response BulkByScrollResponse[took=38.3ms,timed_out=false,sliceId=null,updated=143,created=0,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s,bulk_failures=[],search_failures=[]]
[00:07:54]                 │ proc [kibana]   log   [15:16:57.004] [info][savedobjects-service] [.kibana] UPDATE_TARGET_MAPPINGS_WAIT_FOR_TASK -> MARK_VERSION_INDEX_READY
[00:07:54]                 │ info [o.e.c.m.MetadataDeleteIndexService] [kibana-ci-immutable-debian-tests-xxl-1613054608258291242] [.kibana_8.0.0_reindex_temp/aJHDmRMySx6_WkraCr_6kg] deleting index
[00:07:54]                 │ proc [kibana]   log   [15:16:57.034] [info][savedobjects-service] [.kibana] MARK_VERSION_INDEX_READY -> DONE
[00:07:54]                 │ proc [kibana]   log   [15:16:57.035] [info][savedobjects-service] [.kibana] Migration completed after 1548ms
[00:07:54]                 │ debg [dashboard/current/kibana] Migrated Kibana index after loading Kibana data
[00:07:54]                 │ debg applying update to kibana config: {"accessibility:disableAnimations":true,"dateFormat:tz":"UTC","visualization:visualize:legacyChartsLibrary":true}
[00:07:55]                 │ debg replacing kibana config doc: {"defaultIndex":"0bf35f60-3dc9-11e8-8660-4d65aa086b3c"}
[00:07:56]                 │ debg navigating to dashboard url: http://localhost:61161/app/dashboards#/list
[00:07:56]                 │ debg navigate to: http://localhost:61161/app/dashboards#/list
[00:07:57]                 │ debg browser[INFO] http://localhost:61161/app/dashboards?_t=1613056619882#/list 341 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:07:57]                 │
[00:07:57]                 │ debg browser[INFO] http://localhost:61161/bootstrap.js 42:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:07:57]                 │ debg ... sleep(700) start
[00:07:57]                 │ debg ... sleep(700) end
[00:07:57]                 │ debg returned from get, calling refresh
[00:07:58]                 │ debg browser[INFO] http://localhost:61161/app/dashboards?_t=1613056619882#/list 341 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:07:58]                 │
[00:07:58]                 │ debg browser[INFO] http://localhost:61161/bootstrap.js 42:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:07:58]                 │ debg currentUrl = http://localhost:61161/app/dashboards#/list
[00:07:58]                 │          appUrl = http://localhost:61161/app/dashboards#/list
[00:07:58]                 │ debg TestSubjects.find(kibanaChrome)
[00:07:58]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=60000
[00:07:58]                 │ debg ... sleep(501) start
[00:07:58]                 │ debg ... sleep(501) end
[00:07:58]                 │ debg in navigateTo url = http://localhost:61161/app/dashboards#/list?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))
[00:07:58]                 │ debg TestSubjects.exists(statusPageContainer)
[00:07:58]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="statusPageContainer"]') with timeout=2500
[00:08:01]                 │ debg --- retry.tryForTime error: [data-test-subj="statusPageContainer"] is not displayed
[00:08:02]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:02]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:02]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:02]                 │ debg browser[INFO] http://localhost:61161/app/dashboards#/list?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now)) 341 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:08:02]                 │
[00:08:02]                 │ debg browser[INFO] http://localhost:61161/bootstrap.js 42:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:08:03]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:04]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:04]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:04]                 │ debg Load Saved Dashboard few panels
[00:08:04]                 │ debg gotoDashboardLandingPage
[00:08:04]                 │ debg onDashboardLandingPage
[00:08:04]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:08:04]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=5000
[00:08:04]                 │ debg searchForItemWithName: few panels
[00:08:04]                 │ debg TestSubjects.find(tableListSearchBox)
[00:08:04]                 │ debg Find.findByCssSelector('[data-test-subj="tableListSearchBox"]') with timeout=10000
[00:08:04]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:04]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:04]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:06]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:06]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:06]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:06]                 │ debg TestSubjects.click(dashboardListingTitleLink-few-panels)
[00:08:06]                 │ debg Find.clickByCssSelector('[data-test-subj="dashboardListingTitleLink-few-panels"]') with timeout=10000
[00:08:06]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardListingTitleLink-few-panels"]') with timeout=10000
[00:08:06]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:06]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:06]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:08]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:08]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:08]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:08]                 │ debg TestSubjects.missingOrFail(dashboardLandingPage)
[00:08:08]                 │ debg Find.waitForDeletedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=10000
[00:08:09]                 │ debg Switching to edit mode
[00:08:09]                 │ debg TestSubjects.click(dashboardEditMode)
[00:08:09]                 │ debg Find.clickByCssSelector('[data-test-subj="dashboardEditMode"]') with timeout=10000
[00:08:09]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardEditMode"]') with timeout=10000
[00:08:09]                 │ debg Waiting up to 20000ms for in edit mode...
[00:08:09]                 │ debg TestSubjects.findAll(embeddablePanel)
[00:08:09]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:09]                 │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:09]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:09]                 │ debg getPanelCount
[00:08:09]                 │ debg TestSubjects.findAll(embeddablePanel)
[00:08:09]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=10000
[00:08:09]                 │ debg DashboardAddPanel.clickAddNewPanelButton
[00:08:09]                 │ debg TestSubjects.click(dashboardAddNewPanelButton)
[00:08:09]                 │ debg Find.clickByCssSelector('[data-test-subj="dashboardAddNewPanelButton"]') with timeout=10000
[00:08:09]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardAddNewPanelButton"]') with timeout=10000
[00:08:09]                 │ debg ... sleep(500) start
[00:08:10]                 │ debg ... sleep(500) end
[00:08:10]                 │ debg TestSubjects.click(visGroupAggBasedExploreLink)
[00:08:10]                 │ debg Find.clickByCssSelector('[data-test-subj="visGroupAggBasedExploreLink"]') with timeout=10000
[00:08:10]                 │ debg Find.findByCssSelector('[data-test-subj="visGroupAggBasedExploreLink"]') with timeout=10000
[00:08:10]                 │ debg TestSubjects.click(visType-area)
[00:08:10]                 │ debg Find.clickByCssSelector('[data-test-subj="visType-area"]') with timeout=10000
[00:08:10]                 │ debg Find.findByCssSelector('[data-test-subj="visType-area"]') with timeout=10000
[00:08:10]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:10]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:10]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:12]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:12]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:12]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:12]                 │ debg TestSubjects.click(savedObjectTitlelogstash-*)
[00:08:12]                 │ debg Find.clickByCssSelector('[data-test-subj="savedObjectTitlelogstash-*"]') with timeout=10000
[00:08:12]                 │ debg Find.findByCssSelector('[data-test-subj="savedObjectTitlelogstash-*"]') with timeout=10000
[00:08:12]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:12]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:12]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:14]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:14]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:14]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:14]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:14]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:14]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:16]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:16]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:16]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:16]                 │ debg TestSubjects.exists(visualizesaveAndReturnButton)
[00:08:16]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="visualizesaveAndReturnButton"]') with timeout=120000
[00:08:16]                 │ debg TestSubjects.click(visualizesaveAndReturnButton)
[00:08:16]                 │ debg Find.clickByCssSelector('[data-test-subj="visualizesaveAndReturnButton"]') with timeout=10000
[00:08:16]                 │ debg Find.findByCssSelector('[data-test-subj="visualizesaveAndReturnButton"]') with timeout=10000
[00:08:16]                 │ debg DashboardAddPanel.addEmbeddable, name: Rendering-Test: metric, type: visualization
[00:08:16]                 │ debg DashboardAddPanel.ensureAddPanelIsShowing
[00:08:16]                 │ debg DashboardAddPanel.isAddPanelOpen
[00:08:16]                 │ debg TestSubjects.exists(dashboardAddPanel)
[00:08:16]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardAddPanel"]') with timeout=2500
[00:08:19]                 │ debg --- retry.tryForTime error: [data-test-subj="dashboardAddPanel"] is not displayed
[00:08:19]                 │ debg DashboardAddPanel.clickOpenAddPanel
[00:08:19]                 │ debg TestSubjects.click(dashboardAddPanelButton)
[00:08:19]                 │ debg Find.clickByCssSelector('[data-test-subj="dashboardAddPanelButton"]') with timeout=10000
[00:08:19]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardAddPanelButton"]') with timeout=10000
[00:08:20]                 │ debg ... sleep(500) start
[00:08:20]                 │ debg ... sleep(500) end
[00:08:20]                 │ debg DashboardAddPanel.isAddPanelOpen
[00:08:20]                 │ debg TestSubjects.exists(dashboardAddPanel)
[00:08:20]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardAddPanel"]') with timeout=2500
[00:08:20]                 │ debg DashboardAddPanel.addToFilter(visualization)
[00:08:20]                 │ debg Find.waitForDeletedByCssSelector('[data-test-subj="savedObjectFinderLoadingIndicator"]') with timeout=10000
[00:08:21]                 │ debg DashboardAddPanel.toggleFilter
[00:08:21]                 │ debg TestSubjects.click(savedObjectFinderFilterButton)
[00:08:21]                 │ debg Find.clickByCssSelector('[data-test-subj="savedObjectFinderFilterButton"]') with timeout=10000
[00:08:21]                 │ debg Find.findByCssSelector('[data-test-subj="savedObjectFinderFilterButton"]') with timeout=10000
[00:08:21]                 │ debg TestSubjects.click(savedObjectFinderFilter-visualization)
[00:08:21]                 │ debg Find.clickByCssSelector('[data-test-subj="savedObjectFinderFilter-visualization"]') with timeout=10000
[00:08:21]                 │ debg Find.findByCssSelector('[data-test-subj="savedObjectFinderFilter-visualization"]') with timeout=10000
[00:08:21]                 │ debg DashboardAddPanel.toggleFilter
[00:08:21]                 │ debg TestSubjects.click(savedObjectFinderFilterButton)
[00:08:21]                 │ debg Find.clickByCssSelector('[data-test-subj="savedObjectFinderFilterButton"]') with timeout=10000
[00:08:21]                 │ debg Find.findByCssSelector('[data-test-subj="savedObjectFinderFilterButton"]') with timeout=10000
[00:08:21]                 │ debg Find.waitForDeletedByCssSelector('[data-test-subj="savedObjectFinderLoadingIndicator"]') with timeout=10000
[00:08:21]                 │ debg TestSubjects.setValue(savedObjectFinderSearchInput, "Rendering Test: metric")
[00:08:21]                 │ debg TestSubjects.click(savedObjectFinderSearchInput)
[00:08:21]                 │ debg Find.clickByCssSelector('[data-test-subj="savedObjectFinderSearchInput"]') with timeout=10000
[00:08:21]                 │ debg Find.findByCssSelector('[data-test-subj="savedObjectFinderSearchInput"]') with timeout=10000
[00:08:22]                 │ debg Find.waitForDeletedByCssSelector('[data-test-subj="savedObjectFinderLoadingIndicator"]') with timeout=10000
[00:08:22]                 │ debg TestSubjects.click(savedObjectTitleRendering-Test:-metric)
[00:08:22]                 │ debg Find.clickByCssSelector('[data-test-subj="savedObjectTitleRendering-Test:-metric"]') with timeout=10000
[00:08:22]                 │ debg Find.findByCssSelector('[data-test-subj="savedObjectTitleRendering-Test:-metric"]') with timeout=10000
[00:08:22]                 │ debg TestSubjects.exists(addObjectToDashboardSuccess)
[00:08:22]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="addObjectToDashboardSuccess"]') with timeout=2500
[00:08:25]                 │ debg --- retry.tryForTime error: [data-test-subj="addObjectToDashboardSuccess"] is not displayed
[00:08:25]                 │ debg TestSubjects.exists(dashboardAddPanel)
[00:08:25]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardAddPanel"]') with timeout=1000
[00:08:25]                 │ debg Closing flyout dashboardAddPanel
[00:08:25]                 │ debg TestSubjects.find(dashboardAddPanel)
[00:08:25]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardAddPanel"]') with timeout=10000
[00:08:26]                 │ debg Waiting up to 20000ms for flyout closed...
[00:08:26]                 │ debg TestSubjects.exists(dashboardAddPanel)
[00:08:26]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardAddPanel"]') with timeout=1000
[00:08:27]                 │ debg --- retry.tryForTime error: [data-test-subj="dashboardAddPanel"] is not displayed
[00:08:27]               └-> has correct number of panels
[00:08:27]                 └-> "before each" hook: global before each for "has correct number of panels"
[00:08:27]                 │ debg getPanelCount
[00:08:27]                 │ debg TestSubjects.findAll(embeddablePanel)
[00:08:27]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=10000
[00:08:27]                 └- ✓ pass  (84ms) "dashboard app using current data dashboard unsaved panels has correct number of panels"
[00:08:27]               └-> retains unsaved panel count after navigating to listing page and back
[00:08:27]                 └-> "before each" hook: global before each for "retains unsaved panel count after navigating to listing page and back"
[00:08:27]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:27]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:27]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:29]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:29]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:29]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:29]                 │ debg gotoDashboardLandingPage
[00:08:29]                 │ debg onDashboardLandingPage
[00:08:29]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:08:29]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=5000
[00:08:32]                 │ debg --- retry.tryForTime error: [data-test-subj="dashboardLandingPage"] is not displayed
[00:08:35]                 │ debg --- retry.tryForTime failed again with the same message...
[00:08:35]                 │ debg clickDashboardBreadcrumbLink
[00:08:35]                 │ debg TestSubjects.click(breadcrumb dashboardListingBreadcrumb first)
[00:08:35]                 │ debg Find.clickByCssSelector('[data-test-subj="breadcrumb dashboardListingBreadcrumb first"]') with timeout=10000
[00:08:35]                 │ debg Find.findByCssSelector('[data-test-subj="breadcrumb dashboardListingBreadcrumb first"]') with timeout=10000
[00:08:35]                 │ debg TestSubjects.exists(confirmModalTitleText)
[00:08:35]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="confirmModalTitleText"]') with timeout=2500
[00:08:38]                 │ debg --- retry.tryForTime error: [data-test-subj="confirmModalTitleText"] is not displayed
[00:08:39]                 │ debg expectExistsDashboardLandingPage
[00:08:39]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:08:39]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=120000
[00:08:39]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:39]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:39]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:40]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:41]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:41]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:41]                 │ debg Load Saved Dashboard few panels
[00:08:41]                 │ debg gotoDashboardLandingPage
[00:08:41]                 │ debg onDashboardLandingPage
[00:08:41]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:08:41]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=5000
[00:08:41]                 │ debg searchForItemWithName: few panels
[00:08:41]                 │ debg TestSubjects.find(tableListSearchBox)
[00:08:41]                 │ debg Find.findByCssSelector('[data-test-subj="tableListSearchBox"]') with timeout=10000
[00:08:41]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:41]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:41]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:43]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:08:43]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:43]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:43]                 │ debg TestSubjects.click(dashboardListingTitleLink-few-panels)
[00:08:43]                 │ debg Find.clickByCssSelector('[data-test-subj="dashboardListingTitleLink-few-panels"]') with timeout=10000
[00:08:43]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardListingTitleLink-few-panels"]') with timeout=10000
[00:08:43]                 │ debg isGlobalLoadingIndicatorVisible
[00:08:43]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:08:43]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:08:44]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:08:44]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:08:45]                 │ debg TestSubjects.missingOrFail(dashboardLandingPage)
[00:08:45]                 │ debg Find.waitForDeletedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=10000
[00:08:46]                 │ debg Switching to edit mode
[00:08:46]                 │ debg TestSubjects.click(dashboardEditMode)
[00:08:46]                 │ debg Find.clickByCssSelector('[data-test-subj="dashboardEditMode"]') with timeout=10000
[00:08:46]                 │ debg Find.findByCssSelector('[data-test-subj="dashboardEditMode"]') with timeout=10000
[00:08:46]                 │ debg Waiting up to 20000ms for in edit mode...
[00:08:46]                 │ debg TestSubjects.findAll(embeddablePanel)
[00:08:46]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:46]                 │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:46]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:47]                 │ debg TestSubjects.findAll(embeddablePanel)
[00:08:47]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:47]                 │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:47]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:47]                 │ debg getPanelCount
[00:08:47]                 │ debg TestSubjects.findAll(embeddablePanel)
[00:08:47]                 │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=10000
[00:08:47]                 │ info Taking screenshot "/dev/shm/workspace/parallel/16/kibana/test/functional/screenshots/failure/dashboard app using current data dashboard unsaved panels retains unsaved panel count after navigating to listing page and back.png"
[00:08:53]                 │ info Current URL is: http://localhost:61161/app/dashboards#/view/33bb8ad0-3dd4-11e8-b2b9-5d5dc1715159?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(description:%27%27,filters:!(),fullScreenMode:!f,options:(darkTheme:!f,hidePanelTitles:!f,useMargins:!t),query:(language:lucene,query:%27%27),tags:!(),timeRestore:!f,title:%27few%20panels%27,viewMode:edit)
[00:08:53]                 │ info Saving page source to: /dev/shm/workspace/parallel/16/kibana/test/functional/failure_debug/html/dashboard app using current data dashboard unsaved panels retains unsaved panel count after navigating to listing page and back.html
[00:08:53]                 └- ✖ fail: dashboard app using current data dashboard unsaved panels retains unsaved panel count after navigating to listing page and back
[00:08:53]                 │       Error: expected 4 to sort of equal 5
[00:08:53]                 │       + expected - actual
[00:08:53]                 │ 
[00:08:53]                 │       -4
[00:08:53]                 │       +5
[00:08:53]                 │       
[00:08:53]                 │       at Assertion.assert (packages/kbn-expect/expect.js:100:11)
[00:08:53]                 │       at Assertion.eql (packages/kbn-expect/expect.js:244:8)
[00:08:53]                 │       at Context.<anonymous> (test/functional/apps/dashboard/dashboard_unsaved_state.ts:58:36)
[00:08:53]                 │       at runMicrotasks (<anonymous>)
[00:08:53]                 │       at processTicksAndRejections (internal/process/task_queues.js:93:5)
[00:08:53]                 │       at Object.apply (packages/kbn-test/src/functional_test_runner/lib/mocha/wrap_function.js:73:16)
[00:08:53]                 │ 
[00:08:53]                 │ 

Stack Trace

Error: expected 4 to sort of equal 5
    at Assertion.assert (packages/kbn-expect/expect.js:100:11)
    at Assertion.eql (packages/kbn-expect/expect.js:244:8)
    at Context.<anonymous> (test/functional/apps/dashboard/dashboard_unsaved_state.ts:58:36)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at Object.apply (packages/kbn-test/src/functional_test_runner/lib/mocha/wrap_function.js:73:16) {
  actual: '4',
  expected: '5',
  showDiff: true
}

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
ml 1732 1750 +18

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
ml 6.3MB 6.4MB +41.2KB
triggersActionsUi 1.4MB 1.4MB +37.0B
total +41.2KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
ml 59.3KB 68.3KB +9.0KB
Unknown metric groups

async chunk count

id before after diff
ml 20 21 +1

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@darnautov darnautov merged commit 341e9cf into elastic:master Feb 11, 2021
@darnautov darnautov deleted the ML-alerting-template branch February 11, 2021 17:14
darnautov added a commit to darnautov/kibana that referenced this pull request Feb 11, 2021
* [ML] init ML alerts

* [ML] job selector

* [ML] move schema server-side

* [ML] fix type 🤦‍

* [ML] severity selector

* [ML] add alerting capabilities

* [ML] add alerting capabilities

* [ML] result type selector

* [ML] time range selector

* [ML] init alert preview endpoint

* [ML] update SeveritySelector component

* [ML] adjust the form

* [ML] adjust the form

* [ML] server-side, preview component

* [ML] update defaultMessage

* [ML] Anomaly explorer URL

* [ML] validate preview interval

* [ML] rename alert type

* [ML] fix i18n

* [ML] fix TS and mocks

* [ML] update licence headers

* [ML] add ts config references

* [ML] init functional tests

* [ML] functional test for creating anomaly detection alert

* [ML] adjust bucket results query

* [ML] fix messages

* [ML] resolve functional tests related issues

* [ML] fix result check

* [ML] change preview layout

* [ML] extend ml client types

* [ML] add missing types, remove unused client variable

* [ML] change to import type

* [ML] handle preview error

* [ML] move error callout

* [ML] better error handling

* [ML] add client-side validation

* [ML] move fake request to the executor

* [ML] revert ml client type changes, set response type manually

* [ML] documentationUrl

* [ML] add extra sentence for interim results

* [ML] use publicBaseUrl

* [ML] adjust the query

* [ML] fix anomaly explorer url

* [ML] adjust the alert params schema

* [ML] remove default severity threshold for records and influencers

* [ML] fix query with filter block

* [ML] fix functional tests

* [ML] remove isInterim check

* [ML] remove redundant fragment

* [ML] fix selected cells hook

* [ML] set query string

* [ML] support sample size by the preview endpoint

* [ML] update counter

* [ML] add check for the bucket span

* [ML] fix effects

* [ML] disable mlExplorerSwimlane

* [ML] refactor functional tests to use setSliderValue

* [ML] add assertTestIntervalValue

* [ML] floor scores
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.