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

Fix failed test reporter for SIEM Cypress use #57240

Merged
merged 4 commits into from
Feb 15, 2020

Conversation

spalger
Copy link
Contributor

@spalger spalger commented Feb 10, 2020

The JUnit reporter we're using in the SIEM Cypress tests (#55353) is causing issues for the failed test reporter because sometimes there are no testcase elements in a testsuite element, so handle that oddity in the report parser.

@spalger spalger added release_note:skip Skip the PR/issue when compiling release notes Team:Operations Team label for Operations Team Team:SIEM v7.7.0 v8.0.0 labels Feb 11, 2020
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-operations (Team:Operations)

@spalger spalger marked this pull request as ready for review February 11, 2020 15:02
@spalger spalger requested a review from a team as a code owner February 11, 2020 15:02
@elasticmachine
Copy link
Contributor

Pinging @elastic/siem (Team:SIEM)

@webmat webmat changed the title Fix failed test reporter for SIME Cypress use Fix failed test reporter for SIEM Cypress use Feb 11, 2020
@MadameSheema
Copy link
Member

Thx for the fix @spalger ^^

@spalger
Copy link
Contributor Author

spalger commented Feb 14, 2020

@elasticmachine merge upstream

@spalger
Copy link
Contributor Author

spalger commented Feb 14, 2020

@elasticmachine merge upstream

@kibanamachine
Copy link
Contributor

💛 Build succeeded, but was flaky


Test Failures

Kibana Pipeline / kibana-xpack-agent / Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/visualize/feature_controls/visualize_spaces·ts.Visualize visualize space with no features disabled can view existing Visualization

Link to Jenkins

Standard Out

Failed Tests Reporter:
  - Test has failed 4 times on tracked branches: https://github.com/elastic/kibana/issues/45244

[00:00:00]       │
[00:42:07]         └-: Visualize
[00:42:07]           └-> "before all" hook
[00:42:07]           └-: visualize
[00:42:07]             └-> "before all" hook
[00:42:07]             └-> "before all" hook
[00:42:07]               │ info [logstash_functional] Loading "mappings.json"
[00:42:07]               │ info [logstash_functional] Loading "data.json.gz"
[00:42:07]               │ info [logstash_functional] Skipped restore for existing index "logstash-2015.09.22"
[00:42:07]               │ info [logstash_functional] Skipped restore for existing index "logstash-2015.09.20"
[00:42:07]               │ info [logstash_functional] Skipped restore for existing index "logstash-2015.09.21"
[00:42:09]             └-: space with no features disabled
[00:42:09]               └-> "before all" hook
[00:42:09]               └-> "before all" hook
[00:42:09]                 │ info [visualize/default] Loading "mappings.json"
[00:42:09]                 │ info [visualize/default] Loading "data.json"
[00:42:09]                 │ info [o.e.c.m.MetaDataDeleteIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/-_Uts4E8QPSy8yKMfFedPA] deleting index
[00:42:09]                 │ info [o.e.c.m.MetaDataDeleteIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_1/wNC3HArOTnakQRHLR6jbkg] deleting index
[00:42:09]                 │ info [visualize/default] Deleted existing index [".kibana_2",".kibana_1"]
[00:42:09]                 │ info [o.e.c.m.MetaDataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana] creating index, cause [api], templates [], shards [1]/[0], mappings [_doc]
[00:42:09]                 │ info [visualize/default] Created index ".kibana"
[00:42:09]                 │ debg [visualize/default] ".kibana" settings {"index":{"number_of_shards":"1","auto_expand_replicas":"0-1","number_of_replicas":"0"}}
[00:42:09]                 │ info [o.e.c.m.MetaDataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [metricbeat-7] creating index, cause [auto(bulk api)], templates [], shards [1]/[1], mappings []
[00:42:09]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [metricbeat-7/OekFu6iUTFCMMXwiT_FNRQ] create_mapping
[00:42:09]                 │ info [visualize/default] Indexed 8 docs into ".kibana"
[00:42:09]                 │ info [visualize/default] Indexed 1 docs into "metricbeat-7"
[00:42:11]                 │ info Creating index .kibana_2.
[00:42:11]                 │ info [o.e.c.m.MetaDataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2] creating index, cause [api], templates [], shards [1]/[1], mappings [_doc]
[00:42:11]                 │ info [o.e.c.r.a.AllocationService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] updating number_of_replicas to [0] for indices [.kibana_2]
[00:42:11]                 │ info Reindexing .kibana to .kibana_1
[00:42:11]                 │ info [o.e.c.m.MetaDataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_1] creating index, cause [api], templates [], shards [1]/[1], mappings [_doc]
[00:42:11]                 │ info [o.e.c.r.a.AllocationService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] updating number_of_replicas to [0] for indices [.kibana_1]
[00:42:11]                 │ info [o.e.t.LoggingTaskListener] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] 46653 finished with response BulkByScrollResponse[took=94.6ms,timed_out=false,sliceId=null,updated=0,created=8,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s,bulk_failures=[],search_failures=[]]
[00:42:11]                 │ info [o.e.c.m.MetaDataDeleteIndexService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana/x1mlCag5SJOWrHw4mfhDGQ] deleting index
[00:42:11]                 │ info Migrating .kibana_1 saved objects to .kibana_2
[00:42:11]                 │ debg Migrating saved objects space:default, index-pattern:metricbeat-*, custom-space:index-pattern:metricbeat-*, index-pattern:logstash-*, custom_space:index-pattern:logstash-*, visualization:i-exist, custom_space:visualization:i-exist, query:okjpgs
[00:42:11]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/vt7Or2VoSGiX7AESyc9zNg] update_mapping [_doc]
[00:42:11]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/vt7Or2VoSGiX7AESyc9zNg] update_mapping [_doc]
[00:42:11]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/vt7Or2VoSGiX7AESyc9zNg] update_mapping [_doc]
[00:42:11]                 │ info Pointing alias .kibana to .kibana_2.
[00:42:11]                 │ info Finished in 804ms.
[00:42:11]                 │ debg applying update to kibana config: {"accessibility:disableAnimations":true,"dateFormat:tz":"UTC"}
[00:42:12]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/vt7Or2VoSGiX7AESyc9zNg] update_mapping [_doc]
[00:42:13]                 │ debg creating space
[00:42:14]                 │ debg created space
[00:42:14]               └-> shows visualize navlink
[00:42:14]                 └-> "before each" hook: global before each
[00:42:14]                 │ debg navigating to home url: http://localhost:6141/s/custom_space/app/kibana#/home
[00:42:14]                 │ debg Navigate to: http://localhost:6141/s/custom_space/app/kibana#/home
[00:42:15]                 │ debg ... sleep(700) start
[00:42:15]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/app/kibana?_t=1581728287321#/home 350 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:42:15]                 │
[00:42:15]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/bundles/app/kibana/bootstrap.js 9:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:42:16]                 │ debg ... sleep(700) end
[00:42:16]                 │ debg returned from get, calling refresh
[00:42:16]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/app/kibana?_t=1581728287321#/home 350 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:42:16]                 │
[00:42:16]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/bundles/app/kibana/bootstrap.js 9:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:42:16]                 │ debg currentUrl = http://localhost:6141/s/custom_space/app/kibana#/home
[00:42:16]                 │          appUrl = http://localhost:6141/s/custom_space/app/kibana#/home
[00:42:16]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=60000
[00:42:26]                 │ debg TestSubjects.find(kibanaChrome)
[00:42:26]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=10000
[00:42:26]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/bundles/plugin/data/data.plugin.js 67:139970 "INFO: 2020-02-15T00:58:17Z
[00:42:26]                 │        Adding connection to http://localhost:6141/s/custom_space/elasticsearch
[00:42:26]                 │
[00:42:26]                 │      "
[00:42:27]                 │ debg ... sleep(501) start
[00:42:27]                 │ debg ... sleep(501) end
[00:42:27]                 │ debg in navigateTo url = http://localhost:6141/s/custom_space/app/kibana#/home
[00:42:27]                 │ debg TestSubjects.exists(statusPageContainer)
[00:42:27]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="statusPageContainer"]') with timeout=2500
[00:42:30]                 │ debg --- retry.tryForTime error: [data-test-subj="statusPageContainer"] is not displayed
[00:42:30]                 │ debg navigating to settings url: http://localhost:6141/app/kibana#/management
[00:42:30]                 │ debg Navigate to: http://localhost:6141/app/kibana#/management
[00:42:30]                 │ debg ... sleep(700) start
[00:42:30]                 │ debg browser[INFO] http://localhost:6141/app/kibana?_t=1581728303831#/management 350 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:42:30]                 │
[00:42:30]                 │ debg browser[INFO] http://localhost:6141/bundles/app/kibana/bootstrap.js 9:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:42:31]                 │ debg ... sleep(700) end
[00:42:31]                 │ debg returned from get, calling refresh
[00:42:32]                 │ debg browser[INFO] http://localhost:6141/app/kibana?_t=1581728303831#/management 350 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:42:32]                 │
[00:42:32]                 │ debg browser[INFO] http://localhost:6141/bundles/app/kibana/bootstrap.js 9:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:42:32]                 │ debg currentUrl = http://localhost:6141/app/kibana#/management
[00:42:32]                 │          appUrl = http://localhost:6141/app/kibana#/management
[00:42:32]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=60000
[00:42:37]                 │ debg TestSubjects.find(kibanaChrome)
[00:42:37]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=10000
[00:42:37]                 │ debg browser[INFO] http://localhost:6141/bundles/plugin/data/data.plugin.js 67:139970 "INFO: 2020-02-15T00:58:28Z
[00:42:37]                 │        Adding connection to http://localhost:6141/elasticsearch
[00:42:37]                 │
[00:42:37]                 │      "
[00:42:37]                 │ debg ... sleep(501) start
[00:42:37]                 │ debg ... sleep(501) end
[00:42:37]                 │ debg in navigateTo url = http://localhost:6141/app/kibana#/management?_g=()
[00:42:37]                 │ debg TestSubjects.exists(statusPageContainer)
[00:42:37]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="statusPageContainer"]') with timeout=2500
[00:42:40]                 │ debg --- retry.tryForTime error: [data-test-subj="statusPageContainer"] is not displayed
[00:42:40]                 │ debg TestSubjects.click(settings)
[00:42:40]                 │ debg Find.clickByCssSelector('[data-test-subj="settings"]') with timeout=10000
[00:42:40]                 │ debg Find.findByCssSelector('[data-test-subj="settings"]') with timeout=10000
[00:42:42]                 │ debg isGlobalLoadingIndicatorVisible
[00:42:42]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:42:42]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:42:44]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:42:45]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:42:45]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:42:45]                 │ debg TestSubjects.exists(managementSettingsTitle)
[00:42:45]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="managementSettingsTitle"]') with timeout=120000
[00:42:45]                 │ debg Find.clickByCssSelector('[data-test-subj="advancedSetting-editField-pageNavigation"] option[value="individual"]') with timeout=10000
[00:42:45]                 │ debg Find.findByCssSelector('[data-test-subj="advancedSetting-editField-pageNavigation"] option[value="individual"]') with timeout=10000
[00:42:45]                 │ debg isGlobalLoadingIndicatorVisible
[00:42:45]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:42:45]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:42:47]                 │ debg --- retry.tryForTime error: [data-test-subj="globalLoadingIndicator"] is not displayed
[00:42:47]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:42:47]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:42:47]                 │ debg TestSubjects.click(advancedSetting-saveEditField-pageNavigation)
[00:42:47]                 │ debg Find.clickByCssSelector('[data-test-subj="advancedSetting-saveEditField-pageNavigation"]') with timeout=10000
[00:42:47]                 │ debg Find.findByCssSelector('[data-test-subj="advancedSetting-saveEditField-pageNavigation"]') with timeout=10000
[00:42:47]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/vt7Or2VoSGiX7AESyc9zNg] update_mapping [_doc]
[00:42:48]                 │ debg isGlobalLoadingIndicatorVisible
[00:42:48]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:42:48]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="globalLoadingIndicator"]') with timeout=1500
[00:42:48]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:42:48]                 │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:42:48]                 │ debg TestSubjects.find(navDrawer)
[00:42:48]                 │ debg Find.findByCssSelector('[data-test-subj="navDrawer"]') with timeout=10000
[00:42:48]                 └- ✓ pass  (34.1s) "Visualize visualize space with no features disabled shows visualize navlink"
[00:42:48]               └-> can view existing Visualization
[00:42:48]                 └-> "before each" hook: global before each
[00:42:48]                 │ debg navigateToActualUrl http://localhost:6141/s/custom_space/app/kibana#/visualize/edit/i-exist
[00:42:48]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/app/kibana?_t=1581728321429#/visualize/edit/i-exist 350 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:42:48]                 │
[00:42:48]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/bundles/app/kibana/bootstrap.js 9:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:42:48]                 │ debg TestSubjects.exists(visualizationLoader)
[00:42:48]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="visualizationLoader"]') with timeout=10000
[00:42:53]                 │ debg --- retry.tryForTime error: [data-test-subj="visualizationLoader"] is not displayed
[00:42:57]                 │ info [o.e.c.m.MetaDataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xl-1581723391759144943] [.kibana_2/vt7Or2VoSGiX7AESyc9zNg] update_mapping [_doc]
[00:42:58]                 │ debg browser[INFO] http://localhost:6141/s/custom_space/bundles/plugin/data/data.plugin.js 67:139970 "INFO: 2020-02-15T00:58:48Z
[00:42:58]                 │        Adding connection to http://localhost:6141/s/custom_space/elasticsearch
[00:42:58]                 │
[00:42:58]                 │      "
[00:42:58]                 │ debg --- retry.tryForTime failed again with the same message...
[00:42:59]                 │ info Taking screenshot "/dev/shm/workspace/kibana/x-pack/test/functional/screenshots/failure/Visualize visualize space with no features disabled can view existing Visualization.png"
[00:42:59]                 │ info Current URL is: http://localhost:6141/s/custom_space/app/kibana#/visualize/edit/i-exist?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(filters:!(),linked:!f,query:(language:lucene,query:%27%27),uiState:(),vis:(aggs:!((enabled:!t,id:%271%27,params:(),schema:metric,type:count),(enabled:!t,id:%272%27,params:(field:geo.src,missingBucket:!f,missingBucketLabel:Missing,order:desc,orderBy:%271%27,otherBucket:!f,otherBucketLabel:Other,size:5),schema:segment,type:terms)),params:(addLegend:!t,addTooltip:!t,dimensions:(metric:(accessor:0,aggType:count,format:(id:number),params:())),isDonut:!t,labels:(last_level:!t,show:!f,truncate:100,values:!t),legendPosition:right,type:pie),title:%27A%20Pie%27,type:pie))
[00:42:59]                 │ info Saving page source to: /dev/shm/workspace/kibana/x-pack/test/functional/failure_debug/html/Visualize visualize space with no features disabled can view existing Visualization.html
[00:43:00]                 └- ✖ fail: "Visualize visualize space with no features disabled can view existing Visualization"
[00:43:00]                 │

Stack Trace

Error: expected testSubject(visualizationLoader) to exist
    at TestSubjects.existOrFail (/dev/shm/workspace/kibana/test/functional/services/test_subjects.ts:60:15)

History

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

@spalger spalger merged commit 15e4e6c into elastic:master Feb 15, 2020
spalger pushed a commit to spalger/kibana that referenced this pull request Feb 15, 2020
* [@kbn/test] build with source-maps

* [@kbn/test] the jUnit Reporter being used for SIEM Cypress tests sometimes doesn't include testcases in XML

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
spalger pushed a commit that referenced this pull request Feb 15, 2020
* [@kbn/test] build with source-maps

* [@kbn/test] the jUnit Reporter being used for SIEM Cypress tests sometimes doesn't include testcases in XML

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
@spalger
Copy link
Contributor Author

spalger commented Feb 15, 2020

7.x/7.7: 3e3afcc

@spalger spalger deleted the fix/failed_test_reporter_cypress branch February 15, 2020 03:46
jloleysens added a commit to jloleysens/kibana that referenced this pull request Feb 17, 2020
…re/files-and-filetree

* 'master' of github.com:elastic/kibana: (139 commits)
  Move Ace XJSON lexer-rules, worker and utils to es_ui_shared (elastic#57563)
  [Upgrade Assistant] Fix filter deprecations search filter (elastic#57541)
  [ML] New Platform server shim: update indices routes (elastic#57685)
  Bump redux dependencies (elastic#53348)
  [Index management] Client-side NP ready (elastic#57295)
  change id of x-pack event_log plugin to eventLog (elastic#57612)
  [eventLog] get kibana.index name from config instead of hard-coding it (elastic#57607)
  revert
  allow using any path to generate
  fixes ui titles (elastic#57535)
  Fix login redirect for expired sessions (elastic#57157)
  Expose Vis on the contract as it requires visTypes (elastic#56968)
  [SIEM][Detection Engine] Fixes queries to ignore errors when signals index is not present
  [Remote clusters] Migrate client-side code out of legacy (elastic#57365)
  Fix failed test reporter for SIEM Cypress use (elastic#57240)
  skip flaky suite (elastic#45244)
  update chromedriver to 80.0.1 (elastic#57602)
  change slack action to only report on whitelisted host name (elastic#57582)
  [kbn/optimizer] throw errors into stream on invalid completion (elastic#57735)
  moving visualize/utils to new platform (elastic#56650)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release_note:skip Skip the PR/issue when compiling release notes Team:Operations Team label for Operations Team Team:SIEM v7.7.0 v8.0.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants