Skip to content

Fix failed test reporter for SIEM Cypress use#57240

Merged
spalger merged 4 commits intoelastic:masterfrom
spalger:fix/failed_test_reporter_cypress
Feb 15, 2020
Merged

Fix failed test reporter for SIEM Cypress use#57240
spalger merged 4 commits intoelastic:masterfrom
spalger:fix/failed_test_reporter_cypress

Conversation

@spalger
Copy link
Copy Markdown
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 Kibana-Operations Team Team:SIEM v7.7.0 v8.0.0 labels Feb 11, 2020
@elasticmachine
Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
Contributor

Thx for the fix @spalger ^^

@spalger
Copy link
Copy Markdown
Contributor Author

spalger commented Feb 14, 2020

@elasticmachine merge upstream

@spalger
Copy link
Copy Markdown
Contributor Author

spalger commented Feb 14, 2020

@elasticmachine merge upstream

@kibanamachine
Copy link
Copy Markdown
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
Copy Markdown
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 Kibana-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