Commit graph

85775 commits

Author SHA1 Message Date
Joe Reuter
64d74b0fe0
🌊 Streams: Fix dashboards error toast on first visit of classic streams (#217163)
When navigating to the details page of a classic stream for the first
time, it would show an error toast from the `/dashboards` endpoint. This
happened because there was a bug in `ensureStream` - it would throw if
the data stream has been found but there wouldn't be a streams
definition.

This PR fixes the bug and adds an integration test for it.
2025-04-04 13:51:53 +01:00
Paul Tavares
12d78d9477
[Security Solution][Endpoint] Improvements to policy selection component (#215417)
## Summary

### Fleet changes

- Fixed `GetPackagePoliciesRequest` (was missing `query` options
supported)


### Security Solution

This PR refactors the Policy Selection UI component - used mainly with
Artifact pages/forms - to remove the prior limitation of only displaying
the first 1,000 policies in the system. This new version of the
component is not connected to the API and allows a user to paginate
through the list of policies in the system, including being able to
search for policies while maintaining those that have been already
selected.

Some of the new features in this new component include:

- Page through list of available policies
- Search for policies (by default, it searches against `name`,
`description`, `policy_ids` and `package.name`)
- Ability to `select all` / `unselect all` policies currently displayed
- Ability to view the already selected list of policies
2025-04-04 08:35:08 -04:00
Miriam
faae1423f0
[ObsUX][A11y] Add aria-label to "Show all" links (#217076)
Closes https://github.com/elastic/kibana/issues/194973

## Summary

There are multiple links that say "Show all" but do not provide context
to answer all of what?

### What was done
Added aria-label to all the "Show all links"

### How to test
Use screen reader to see the context of the link

EXAMPLES

<img width="1232" alt="Screenshot 2025-04-03 at 17 45 47"
src="https://github.com/user-attachments/assets/8e8b33f8-d2f1-45b5-99ed-e9306a832d9c"
/>

<img width="1232" alt="Screenshot 2025-04-03 at 17 46 03"
src="https://github.com/user-attachments/assets/e23cce5c-dca0-41ec-9221-0c32dbc8eb0d"
/>

<img width="1232" alt="Screenshot 2025-04-03 at 17 46 45"
src="https://github.com/user-attachments/assets/c7fe658c-5ab2-4665-a187-671ba7b49bfd"
/>
2025-04-04 13:07:58 +01:00
Elena Shostak
a19056f5c3
[Authz] Moved ApiPrivileges to core server package (#216051)
## Summary

The `ApiPrivileges` utility was introduced in
https://github.com/elastic/kibana/pull/208067 to help enforce naming
convention standards for API privileges, however the utility is located
in a private platform package and not accessible by non-platform
plugins, e.g. solutions.

Moved `ApiPrivileges` to `src/core/packages/security/server`


### Checklist
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)


__Closes: https://github.com/elastic/kibana/issues/215096__

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-04-04 13:31:53 +02:00
Joe Reuter
10358d6f9e
🌊 Streams: Move datepicker into chart panel on overview page (#217014)
This PR moves the datepicker on the overview page into the chart panel
to claim some additional vertical screen space and to make it clearer
what the stats on top of the page mean:

<img width="1016" alt="Screenshot 2025-04-03 at 14 58 27"
src="https://github.com/user-attachments/assets/b0100a3e-e9c4-419e-9803-45558b8a0fad"
/>

It also refactors the code a bit and reduces prop drilling in some
areas.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-04-04 12:07:33 +01:00
Julia Rechkunova
6a0c173b1a
[ES|QL] Fix CSV report time range when exporting from Discover (#216792)
- Closes https://github.com/elastic/kibana/issues/216605

## Summary

This PR makes sure to use the absolute time range when generating a CSV
report in ES|QL mode.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
2025-04-04 12:54:45 +02:00
Paulina Shakirova
8b848120d1
[SharedUX] SCSS migration image_embeddable plugin (#216045)
## Summary

This PR is a part of SCSS migration of SharedUX team code.
Here is a [meta](https://github.com/elastic/kibana-team/issues/1417)
issue for it.
2025-04-04 11:44:21 +02:00
Paulina Shakirova
8d9e253469
[SharedUX] SCSS migration reporting plugin (#215492)
## Summary

This PR is a part of a [Replace SCSS with
CSS-in-JS](https://github.com/elastic/kibana-team/issues/1417) epic.

- rewriting styles using `@emotion/react`
2025-04-04 11:43:37 +02:00
Jatin Kathuria
5846a5821c
[Siem Migrations] Adds separate migration index to store migration metadata (#216164)
## Summary

Fixes: https://github.com/elastic/security-team/issues/12233


This PR simply adds a new `migration` index to store the migration data
with `migration_id` as the only property for now.

The APIs remain unchanged.

Below are the mapping for new index
`.kibana-siem-rule-migrations-migrations-default` based on the pattern
`..kibana-siem-rule-migrations-<indexAdapterId>-<spaceName>`

```
{
  ".kibana-siem-rule-migrations-migrations-default": {
    "mappings": {
      "dynamic": "false",
      "_meta": {
        "namespace": "default",
        "kibana": {
          "version": "9.1.0"
        },
        "managed": true
      },
      "properties": {
        "created_at": {
          "type": "date"
        },
        "created_by": {
          "type": "keyword"
        },
        "id": {
          "type": "keyword"
        }
      }
    }
  }
}
```


Below is how a sample document looks like:

```json
      {
        "_index": ".kibana-siem-rule-migrations-migrations-default",
        "_id": "C7oi15UBS6DCfB3qd4_l",
        "_score": 1,
        "_source": {
      
          "created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",
          "created_at": "2025-03-27T10:25:15.232Z"
        }
      }
```

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-04-04 10:25:12 +01:00
José Luis González
12ebf35673
[Query Rules] Page temaplate and empty state (#216659)
## Summary

First screen of the Query Rules section and basic logic under Feature
Flag:
```
POST kbn:/internal/kibana/settings/queryRules:queryRulesEnabled {"value": true}
```

- [x] Create a page template for query rules UI. 
- [x] Create route for fetch query ruleset list.
- [x] Create hook for the API created
- [x] On page load error case, reroute user to the missing permissions
prompt.(missing permissions prompt is generic, no designs are needed,
can copy from other plugins)
- [x] Create empty rules prompt as shown in design.

![CleanShot 2025-04-03 at 16 47
41@2x](https://github.com/user-attachments/assets/d3bee1f7-ce41-4a9c-9368-a7d0edac7774)


### Related Jira tickets: 
-
https://elasticco.atlassian.net/browse/SEARCH-925?atlOrigin=eyJpIjoiZGFlOTdhYmU3MzE2NDgwMzhjZTg0MjBiZTI2YWY0MGEiLCJwIjoiaiJ9
-
https://elasticco.atlassian.net/browse/SEARCH-926?atlOrigin=eyJpIjoiOTRiNmE0MjY0NDRjNGM0NmJlYzc3NTk1NTczNTliYjUiLCJwIjoiaiJ9

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com>
2025-04-04 11:21:25 +02:00
Joe Reuter
320f1d2aee
🌊 Streams: Warn about EIS costs and improve current storage display (#216884)
If a managed connector is used, show a icon with a tooltip to remind
them this costs money
<img width="436" alt="Screenshot 2025-04-02 at 17 00 56"
src="https://github.com/user-attachments/assets/495fa834-a0ec-4228-802e-ea2eee7678c5"
/>

I checked on serverless prod that the numbers we report on storage size
is identical with what `/app/management/data/data_usage` based on
auto-ops reports, with some caveats:
* We were using the eui number formatter which was configured to use
megabyte (MB, 1000^2) instead of mebibyte (MiB, 1024^2) - auto ops was
using mebibyte but still formatted the number as MB. I switched it over
to use mebibyte, so the numbers are the same now, but it's rendering
`MiB`. IMHO this is OK since it's more exact, but I wanted to call it
out
<img width="141" alt="Screenshot 2025-04-02 at 17 35 03"
src="https://github.com/user-attachments/assets/6145acfb-9a84-4ba0-81d0-a32718a5fff4"
/>

* On the overview page, the refresh button would not refresh the data
stream stats, which would cause a drift of the numbers over time. Fixed
that

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-04-04 11:19:07 +02:00
Marco Liberati
baf1864332
[FTR] Reduce debug logging for Selenium elements (#216976)
## Summary

While debugging FTRs I've noticed some methods are flooding the console
with serialized versions of Selenium Elements, which contain useless
details.
So I've came up with a simple solution to reduce this bloat into a
simpler generic placeholder.

* ⬇️ Smaller logs space footprint
*  Faster method serialization
*  Visually the method will be less prominent on a quick scan and a
`search` is required.

<details>
  <summary>Before vs After logs comparison</summary>
Before:

```
     ...
│ debg lensPage.getMetricElementIfExists('h2', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"})
       │ debg Find.descendantExistsByCssSelector('h2') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('h2', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}) - (Took 11 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetricText__subtitle', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"})
       │ debg Find.descendantExistsByCssSelector('.echMetricText__subtitle') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetricText__subtitle', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}) - (Took 2537 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetricText__extra', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"})
       │ debg Find.descendantExistsByCssSelector('.echMetricText__extra') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetricText__extra', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}) - (Took 12 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetricText__value', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"})
       │ debg Find.descendantExistsByCssSelector('.echMetricText__value') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetricText__value', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}) - (Took 11 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetric', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"})
       │ debg Find.descendantExistsByCssSelector('.echMetric') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetric', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}) - (Took 11 ms)
       │ debg lensPage.getMetricElementIfExists('.echSingleMetricSparkline__svg > rect', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}, 500)
       │ debg Find.descendantExistsByCssSelector('.echSingleMetricSparkline__svg > rect') with timeout=500
       │ debg lensPage.getMetricElementIfExists('.echSingleMetricSparkline__svg > rect', {"Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGE_UP":"","PAGE_DOWN":"","END":"","HOME":"","ARROW_LEFT":"","LEFT":"","ARROW_UP":"","UP":"","ARROW_RIGHT":"","RIGHT":"","ARROW_DOWN":"","DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":"","ZENKAKU_HANKAKU":""},"isChromium":true,"_webElement":{"driver_":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"id_":{},"log_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null}},"locator":null,"driver":{"session_":{},"executor_":{"customCommands_":{},"log_":{"name_":"driver.http.Executor","level_":null,"parent_":{"name_":"driver.http","level_":null,"parent_":{"name_":"driver","level_":null,"parent_":{"name_":"","level_":{"name_":"OFF","value_":null},"parent_":null,"handlers_":null},"handlers_":null},"handlers_":null},"handlers_":null},"w3c":true},"fileDetector_":null,"authenticatorId_":null,"pinnedScripts_":{}},"timeout":10000,"fixedHeaderHeight":100,"logger":{"indentWidth$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":8},"writers$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"level":{"name":"debug","flags":{"silent":true,"error":true,"warning":true,"success":true,"info":true,"debug":true,"verbose":false}},"writeTo":{"connecting":false,"_hadError":false,"_parent":null,"_host":null,"_closeAfterHandlingError":false,"_events":{},"_readableState":{"highWaterMark":0,"buffer":[],"bufferIndex":0,"length":0,"pipes":[],"awaitDrainWriters":null},"_writableState":{"highWaterMark":16384,"length":0,"corked":0,"writelen":0,"bufferedIndex":0,"pendingcb":0},"allowHalfOpen":false,"_eventsCount":1,"_sockname":null,"_pendingData":null,"_pendingEncoding":"","server":null,"_server":null,"columns":272,"rows":56,"_type":"tty","fd":1,"_isStdio":true}}]},"written$":{"closed":false,"currentObservers":[],"observers":[],"isStopped":false,"hasError":false,"thrownError":null}},"browserType":"chrome"}, 500) - (Took 511 ms)
...
```

After:
```
      ...
       | debg Find.descendantExistsByCssSelector('h2') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('h2', '[WebElement]') - (Took 12 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetricText__subtitle', '[WebElement]')
       │ debg Find.descendantExistsByCssSelector('.echMetricText__subtitle') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetricText__subtitle', '[WebElement]') - (Took 2516 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetricText__extra', '[WebElement]')
       │ debg Find.descendantExistsByCssSelector('.echMetricText__extra') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetricText__extra', '[WebElement]') - (Took 12 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetricText__value', '[WebElement]')
       │ debg Find.descendantExistsByCssSelector('.echMetricText__value') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetricText__value', '[WebElement]') - (Took 12 ms)
       │ debg lensPage.getMetricElementIfExists('.echMetric', '[WebElement]')
       │ debg Find.descendantExistsByCssSelector('.echMetric') with timeout=2500
       │ debg lensPage.getMetricElementIfExists('.echMetric', '[WebElement]') - (Took 12 ms)
       │ debg lensPage.getMetricElementIfExists('.echSingleMetricSparkline__svg > rect', '[WebElement]', 500)
       │ debg Find.descendantExistsByCssSelector('.echSingleMetricSparkline__svg > rect') with timeout=500
       │ debg lensPage.getMetricElementIfExists('.echSingleMetricSparkline__svg > rect', '[WebElement]', 500) - (Took 521 ms)
       │ debg lensPage.getMetricElementIfExists('.echSingleMetricSparkline', '[WebElement]', 500)
       │ debg Find.descendantExistsByCssSelector('.echSingleMetricSparkline') with timeout=500
       │ debg lensPage.getMetricElementIfExists('.echSingleMetricSparkline', '[WebElement]', 500) - (Took 512 ms)
       ...
```
</details>
2025-04-04 10:58:20 +02:00
Alex Szabo
9f8503e0b3
[CI] Allow using elastic-images-qa through PR label or env var (#216878)
## Summary
Currently, if you'd like to test something on Kibana's VM image, you'd
have to build a VM image to -qa, then rewrite all references to
`elastic-images-qa` for the PR jobs; once done with testing, we'd undo
the changes to `elastic-images-prod`.

This is a helpful tool for us to test with WIP VM images, we'd be able
to add a label to the PR, and it would automatically grab the QA images,
without any temporary commits.

Jobs in https://buildkite.com/elastic/kibana-pull-request/builds/289599
have ran with an elastic-qa image. 
2025-04-04 10:05:30 +02:00
Joe Reuter
2ac707ba12
🌊 Streams: Hide double entry in global search (#217021)
Before:
<img width="257" alt="Screenshot 2025-04-03 at 15 17 00"
src="https://github.com/user-attachments/assets/130bc4d2-e073-4e35-92bd-252e9ab21eba"
/>



After:
<img width="303" alt="Screenshot 2025-04-03 at 15 16 37"
src="https://github.com/user-attachments/assets/b540f2a0-b7ed-46ab-951d-9148dcb1b019"
/>
2025-04-04 09:46:51 +02:00
Kibana Machine
6927948948
[api-docs] 2025-04-04 Daily api_docs build (#217129)
Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/1032
2025-04-04 07:14:59 +01:00
Stratoula Kalafateli
94f0e694e4
[ES|QL] Refactor and improve the variables configuration (#216469)
## Summary

Part of https://github.com/elastic/kibana/issues/213877

This PR doent introduce a new feature. It is mostly a refactoring to
allow us to give a better UX when a user during creation changes the
variable name from ??value to ?value and vice versa. The biggest change
is that we move 2 components from the individual form (value,
identifier) to index as now they can be shared and they own the same
functionality regardless the control type.

It is required to move to the next step, the creation of controls by
just typing a questionmark

### Checklist

- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
2025-04-04 07:50:34 +02:00
Ersin Erdal
5bab6cf836
Create tracked alerts based on AAD (#213670)
Towards making AAD source of truth.

This PR creates a `trackedAlerts` object in the alertsClient and removes
the dependency on task state to fetch tracked alerts.

As fetching tracked alerts becomes a critical part, we throw an error
when it fails.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-04-04 03:13:53 +02:00
Philippe Oberti
59c8d19d95
[AI4DSOR] Alert summary integrations section (#215266)
## Summary

This PR adds the integration section at the top of the alert summary
page. This section shows the installed AI for SOC integrations and an
`Add integration` button. Clicking on the button navigates to the
fleet's page.
In each integration card, we show the integration name, its logo as well
as the last activity time. This last activity value is retrieve as
follow:
- fetch all dataStreams (see [this api
documentation](https://www.elastic.co/docs/api/doc/kibana/operation/operation-get-fleet-data-streams))
- find all the dataStreams that are related to the installed
integrations (via the `package` property)
- from all the matching dataStreams, take the most recently updated (via
the `last_activity_ms` value

![Screenshot 2025-03-20 at 3 53
35 PM](https://github.com/user-attachments/assets/32d6ac14-e0fc-4428-8dac-8df76e6b06be)


https://github.com/user-attachments/assets/7c67e629-e4d3-4ba2-b756-b9ba81e7a667

## How to test

This needs to be ran in Serverless:
- `yarn es serverless --projectType security`
- `yarn serverless-security --no-base-path`

You also need to enable the AI for SOC tier, by adding the following to
your `serverless.security.dev.yaml` file:
```
xpack.securitySolutionServerless.productTypes:
  [
    { product_line: 'ai_soc', product_tier: 'search_ai_lake' },
  ]
```

Use one of these Serverless users:
- `platform_engineer`
- `endpoint_operations_analyst`
- `endpoint_policy_manager`
- `admin`
- `system_indices_superuser`

### Notes

You'll need to either have some AI for SOC integrations installed, or
more easily you can:
- change the `alert_summary.tsx` line `38` from `if
(installedPackages.length === 0) {` to `if (installedPackages.length >
0) {` to force the wrapper component to render
- update `42` of the same `alert_summary.tsx` file from `return <Wrapper
packages={installedPackages} />;` to `return <Wrapper
packages={availablePackages} />;` to be able to see some packages

Also you'll dataStreams if you want to be able to test the last activity
value. Easiest would probably be to mock the call return value following
[the
documentation](https://www.elastic.co/docs/api/doc/kibana/operation/operation-get-fleet-data-streams).

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

https://github.com/elastic/security-team/issues/11955
2025-04-04 00:52:57 +01:00
Kevin Delemme
3a63089dc7
chore(slo): delete by queries (#217108)
## Summary

Add safer parameters when deleting by queries, and make all delete by
queries async (wait = false).
In some cases, I've parallelized the calls
2025-04-03 18:36:35 -04:00
Krzysztof Kowalczyk
e21739b657
[Solution Side Nav] Add back external link indicator to sidenav (#215946)
## Summary

This PR adds back external link indicator to sidenav items.

![Screenshot 2025-04-01 at 20 35
14](https://github.com/user-attachments/assets/c82def72-780e-4bb6-812d-d51244e90685)
2025-04-04 00:34:23 +02:00
Saikat Sarkar
7945e7dd3f
[Onboarding] Remove extra title and description from Day Zero onboarding flow (#217080)
## Summary

This PR resolves the following issues: 

- Removes extra title and description from the onboarding page
- Align the language selector to the left of the page

# After changes


https://github.com/user-attachments/assets/180a3d38-1d04-498a-96c2-3e2e40932183





### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...
2025-04-03 22:39:32 +01:00
Alejandro Fernández Haro
b5ad8bc00b
Upgrade ES client to 9.0.0-alpha.4 (#213375)
## Summary

Upgrading the ES client to v9.0.0-alpha.4 to test the changes mentioned
in https://github.com/elastic/elasticsearch-js/issues/2584

This new version introduces some type changes, most notably, the
`FieldValue` is `string | number | boolean | null | undefined` instead
of `any`, leading to some new type checks to be implemented (like on
aggregation results `bucket.key`, `search_after`, and `sort` options).

On top of that, it adds the new behavior where unknown properties are
placed in the `body` (when the request has a body). If they must be in
as a query parameter, they should be placed under the `querystring`
option.

cc @JoshMock 

TODO:
- [x] Stabilize the type errors
- [x] Address all the query parameters that are now placed in the body
(by wrapping them inside the option `querystring: {}`)

I will address `// @ts-expect-error elasticsearch@9.0.0
https://github.com/elastic/elasticsearch-js/issues/2584` in a separate
PR to reduce noise.


Related https://github.com/elastic/kibana/pull/208776
2025-04-03 21:54:55 +01:00
Kevin Delemme
5d16e44e79
fix(slo): group by with empty string (#217084) 2025-04-03 21:41:56 +01:00
Philippe Oberti
716a4a4397
[Security Solution] transfer ownership of the detections grouped alerts table from explore to investigations team (#217098)
## Summary

Small PR to transfer ownership of the `GroupedAlertsTable` code within
the `detections/components/alerts_table` from the
@elastic/security-threat-hunting-explore team to the
@elastic/security-threat-hunting-investigations team.

While the code was originally primarily written a developer on the
Explore team, that person has moved to a different team since then. The
Investigations team has more knowledge about how the grouped table
works, and is also primary user for it.
2025-04-03 21:26:46 +01:00
Paul Tavares
19ded908fb
[Security Solution][Endpoint] Update artifact's summary API to count only artifacts accessible in active space (#216722)
## Summary

#### Lists plugin

- Minor change to the service that generates the summary counts to
ensure `filter` can be overwritten by server-side extension points


#### Security Solution

The following change was done in support of Endpoint space awareness
(currently behind feature flag
`endpointManagementSpaceAwarenessEnabled`)

- Updates the artifacts Summary API (`/api/exception_lists/summary`) to
ensure that it only counts artifacts that are accessible in active space





### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
2025-04-03 15:49:35 -04:00
Tre
13190493e5
[SKIP ON MKI] .../data_views/_edit_field.ts (#216276)
## Summary

see details:
https://github.com/elastic/kibana/issues/200869#issuecomment-2511234473
2025-04-03 16:29:05 -03:00
Kylie Meli
1384ce13e9
[Fleet] Add and setup new config xpack.fleet.integrationsHomeOverride for AI4DSOC (#216716)
## Summary

Introduces a new fleet config variable to redirect from the integrations
home page to a specified URL.

The search_ai_lake serverless security product type will have its own
page (`/app/security/configurations/integrations`) for browsing
integrations and viewing installed integrations, so this ensures those
users will only be able to see that dedicated page.

## Screen recordings

AI4DSOC:


https://github.com/user-attachments/assets/9fc203ed-f9c0-45bb-a4a9-2d07688b5ecd

Otherwise:


https://github.com/user-attachments/assets/50071467-b813-4f13-895f-435fd746adcc

Relates: https://github.com/elastic/security-team/issues/11789
2025-04-03 15:24:59 -04:00
Gonçalo Rica Pais da Silva
0cff949bb4
[APM] Do not rely on rendered items directly to update dependent requests (#216312)
## Summary

This PR fixes some wonky request handling for particular cases. In some
cases, when the page updates with some new criteria/filters, requests
that were being managed by `ManagedTable` would fire at least twice,
with the first one getting aborted and then resent. This PR removes that
behaviour by not storing the dependent data in a `renderedItems` state
and instead depending directly on the request data itself and storing
instead the indices of the rendered items. This removes the edge-case
where `renderedItems` would cause the affected requests from firing
multiple times, due to object equality not being the same for the
rendered items array between renders.

Closes #216144

## How to test

* Go to Observability -> Applications -> Service Inventory
* Select a service with more than one environment
* Go to Errors tab and open the browser dev tools
* Change the environment on the service to update the errors tab

**Expected behaviour**: The `detailed_statistics` request should only
fire once, both on page load and on update (such as changing the service
environment).

This should apply to the Service Inventory page as well, and anything
making use of the `TransactionsTable` component.
2025-04-03 19:23:09 +01:00
David Olaru
563c7c3388
[scout] Add Jest events reporter (#214662)
## Summary

Same as for Playwright, this adds a custom Jest reporter that records
and uploads test events.

## Quirks

### Config file path
Jest is not including the path to the config file used to run the tests
in any information passed to the reporter, so this needs to be passed in
the `JEST_CONFIG_PATH` environment variable. If Jest is invoked with the
`scripts/jest.js` script, the `JEST_CONFIG_PATH` environment variable
will be populated with the correct value automatically.

### All the events are produced when the run has completed
This is different from the other reporters because the custom reporter
interface in Jest is giving the reporter access to necessary info at
init or when the run starts. The earliest we can start producing the
Scout events is, unfortunately, only after the test run has completed.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Cesare de Cal <cesare.decal@elastic.co>
2025-04-03 19:20:33 +01:00
Jen Huang
7158e0201b
[UII] Support integrations having secrets with multiple values (#216918)
## Summary

Resolves [#205102](https://github.com/elastic/kibana/issues/205102).
This PR makes Fleet support having multiple values for secrets, i.e.
integrations with variables such as:
```yml
  - name: connection_string
    title: Connection String
    type: password
    secret: true
    multi: true
```

When a package policy has a multi-value secret, the variable containing
references to secrets will be saved with `ids: string[]`:
```js
"connection_string": {
  "type": "password",
  "value": {
    "ids": [
      "c9A385UBLd_jDJtMILH5",
      "ddA385UBLd_jDJtMILH5"
    ],
    "isSecretRef": true
  }
}
```

There is no change for secrets with single values, the reference will
still be saved with `id: string`. There is also no change to the
`secret_references` block.

The policy editor will display the multi-value secrets like this when
creating:
<img width="747" alt="image"
src="https://github.com/user-attachments/assets/1c7128b7-3716-43ec-86a8-16778d4cf30e"
/>

And when editing/replacing:
<img width="750" alt="image"
src="https://github.com/user-attachments/assets/296bed1f-d9f4-49af-a810-c23b42d77139"
/>

## Testing
1. Download and upload test package
[azure-1.20.5-next.zip](https://github.com/user-attachments/files/19574682/azure-1.20.5-next.zip),
which modifies `connection_string` to be multi-value secret and updates
associated agent handlebars templates
- You may get an error about integration name not found, I'm not sure
what that error is, but the package will still be uploaded
2. Test adding the above version of Azure package policy with multiple
connection strings
3. Check that the agent yaml compiles correctly
4. Test editing, deleting the policies etc

### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
2025-04-03 10:56:43 -07:00
Kylie Meli
7d3f672f2e
[Fleet] Introduce new config setting xpack.fleet.agentless.isDefault to set agentless deployment by default (#216535)
## Summary

Introduce a new fleet setting `xpack.fleet.agentless.isDefault` for
defaulting the deployment mode to agentless and highlighting the
agentless deployment mode as `Recommended` for the AI4DSOC project.

## Screens recordings

AI4DSOC: 


https://github.com/user-attachments/assets/1fe6df6b-29e0-492c-955e-006e73673322

Otherwise:


https://github.com/user-attachments/assets/e803df49-cbbb-4889-bef1-422abbd6df53

Relates: https://github.com/elastic/security-team/issues/11789
2025-04-03 13:11:01 -04:00
Alberto Blázquez
5402d2b90e
Protect Asset Inventory API with UI setting check (#212266)
## Summary

Closes https://github.com/elastic/security-team/issues/12021.

Protect all Asset Inventory server endpoints so that they return 403 if
`securitysolution:enableAssetInventory` advanced setting is off.

### Screenshots

<details><summary>Error returned by /status endpoint check</summary>
<img width="2267" alt="Screenshot 2025-04-02 at 13 14 52"
src="https://github.com/user-attachments/assets/24892c90-3c59-4615-9523-e8df5c52ee71"
/>

</details>

<details><summary>Surfaced error after clicking on "enable"
button</summary>
<img width="2270" alt="Screenshot 2025-04-02 at 13 14 28"
src="https://github.com/user-attachments/assets/7c6b5aa2-e62f-4045-8d6d-a9b7cbde0dc4"
/>

</details>

### Checklist

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [x] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

We will expose the server endpoints if they're not gated correctly.
2025-04-03 09:34:26 -07:00
florent-leborgne
8db71f1feb
[Docs] Kibana 9.0 release notes (#215772)
This PR adds 9.0 GA release notes for Kibana.

- [x] convert the [9.0.0rc1 release
notes](https://github.com/elastic/stack-docs/blob/9.0/docs/en/install-upgrade/release-notes/release-notes-kibana.asciidoc)
into markdown to prepare for the release to the new docs site
- [x] Add anchors `$$$kibana-PR$$$` to breaking changes for links from
Upgrade Assistant. cc @lcawl FYI
- [x] Run release notes tool for post-rc1 changes
- [x] Reviews

## For reviewers

Preview link:
https://docs-v3-preview.elastic.dev/elastic/kibana/pull/215772/release-notes/

Release notes are adopting a new structure from 9.0, identical across
all Elastic products. Pages are broken down as follows:
- A main page listing all new features, enhancements, and bug fixes.
Each new release gets added to the same page. (9.1 will be above 9.0,
etc.)
- Subpages for breaking changes, deprecations, and known issues.
- There is no longer a "What's new page". This is replaced with a link
to the blog's release announcement from this page, that will be the
"home page" for release notes in the new assembled docs website:
https://staging-website.elastic.co/docs/release-notes/ (not visible in
this PR)

---------

Co-authored-by: wajihaparvez <wajiha.parvez@elastic.co>
2025-04-03 16:33:15 +00:00
Nicolas Chaulet
787a2f15ed
[Fleet] Add name to audit logs (#216892) 2025-04-03 12:30:01 -04:00
Steph Milovic
1edb366cb9
[Stack connectors] Fix bedrock modelId encoding (#216915) 2025-04-03 09:56:14 -06:00
Philippe Oberti
0e633d777a
[Security Solution][Grouped table] allow changing default groups, buttonContent and extraAction via props (for AI4DSOC) (#216572)
## Summary

This PR makes changes to the GroupedAlertTable code to support a
behavior in the AI for the SOC Alert summary page that the current code
cannot.
In the new Alert summary page (see
[mocks](https://www.figma.com/design/DYs7j4GQdAhg7aWTLI4R69/AI4DSOC?node-id=3284-69401&p=f&m=dev))
there are a few customization that we need to be able to do:
- we need a different set of default groups to be shown in the dropdown
- we need to be able to customize the title shown in the EuiAccordion in
a way that would conflict with the current implementation
- we need to also customize the group statistics shown in the
EuiAccordion

### Challenge

The current implementation within the GroupedAlertTable was not allowing
full customization.
- while the default groups could be changed, it was done via if/else
conditions, using the `tableId` to know where the table was being used.
This isn't a clean way to do this. The component shouldn't be aware of
where it's being used...
- regarding the title and group statistics, these were hardcoded and not
customizable. While I could also have added if/else conditions to
support the Alert summary page different behavior, this would only have
built more tech debt...

### Approach

Instead of continuing adding more if/else conditions, the approach in
the PR adds 3 new props to the GroupedAlertTable:
- `accordionButtonContent` allows to customize how the EuiAccordion
`buttonContent` (title) is rendered
- `accordionExtraActionGroupStats` allows to customize how the
EuiAccordion `extraAction` (statistics) are rendered. This actually
consists of 2 sub properties:
  - `renderer` which will drive the UI
  - aggregations which will be used to fetch the data
- `defaultGroupingOptions` allows to customize the default values in the
dropdown

### Notes

**_The 3 places where the GroupedAlertTable is used have been updated to
use the same default values. Their behavior should be unchanged. A
follow up PR will implement the Alert summary variation._**

In the new state, any new usage of the alerts table with no default
values will provide the following behavior:
- the EuiAccordion `buttonContent` will use [the default
component](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-grouping/src/components/accordion_panel/index.tsx#L33)
from the `kbn-grouping` package
- the EuiAccordion `extraAction` will display only the number of alerts
within the group
- the default options in the `Group alerts by` dropdown will be `None`
and `Custom field`


https://github.com/user-attachments/assets/57563735-78ee-455f-aab6-806028aec713


https://github.com/user-attachments/assets/0659c74e-b4a0-4051-8fb7-25457424c06b

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

Will help https://github.com/elastic/security-team/issues/11973
2025-04-03 10:53:30 -05:00
Tim Sullivan
ef907a32f2
[Security Solution] Use static declaration for navigation hierarchy (#215969)
## Summary

Part of Epic: https://github.com/elastic/kibana-team/issues/1439
Addresses https://github.com/elastic/kibana/issues/212903, but does not
remove the landing page access. The landing page access will be removed
in https://github.com/elastic/kibana/pull/210893

**Changes**
1. Converts the declaration of the Security Solution side navigation for
serverless and stateful projects into a static declaration, rather than
algorithmically parsing registered links to dynamically build the
declaration.
2. Updates the contents of the "Assets" panel to prepare for removal of
that landing page.
3. Eliminates the top-level nesting of the nav items, which removes the
extra space between the project title and the first nav items. See
45454bdc4d

**Known issue**: Clicking the "Browse integrations" button does not
close the secondary nav panel. Doing that will be a relatively simple
chore, but will require some changes in the SharedUX chrome-navigation
package, as well as the `LinkButton` component in the Security Solution
navigation-links package.

### Screenshots
Serverless

![static-nav-declaration-security-serverless-3iorteikghiskhgkseh](https://github.com/user-attachments/assets/47bcbea9-7e3c-481e-b1b8-4b13bb5d63b1)

Stateful/ECH

![static-nav-declaration-security-stateful-3iorteikghiskhgkseh](https://github.com/user-attachments/assets/3d3c8a0e-95d1-4da7-a657-c824577b6ec1)

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-04-03 08:38:04 -07:00
Nathan Reese
5a3c2c0f05
[embeddable] fix race condition in useStateFromPublishingSubject (#216522)
Related to https://github.com/elastic/kibana/pull/216399

PR
* updates `useStateFromPublishingSubject` to require `subject`, thus,
removing complexities of setting up subscription when `subject` is
optionally provided.
* Updates `useStateFromPublishingSubject` to setup subscription with
`useMemo` to avoid timing issues.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-04-03 09:35:59 -06:00
Kenneth Kreindler
4c3274d3a2
[Security solution] [Ai Assistant] Allow user to disabled content references by using the content_references_disabled query arg (#215818)
## Summary

Some users using the security AI assistant through the API may want to
disable content references (aka citations) programmatically. This PR
allows users to disable content references using the
`content_references_disabled` query arg in the following routes:
- POST
/internal/elastic_assistant/actions/connector/gpt4oAzure/_execute?content_references_disabled=true
- POST
/api/security_ai_assistant/chat/complete?content_references_disabled=true


## How to test:
Bellow are 2 example curl requests (with
content_references_disabled=true). When executed, you will notice that
the response stream does not contain the string `{reference(...)}`
anywhere. If you remove the query arg, the reference will be visible.

####
/internal/elastic_assistant/actions/connector/gpt4oAzure/_execute?content_references_disabled=true
```curl
curl --location 'http://localhost:5601/internal/elastic_assistant/actions/connector/gpt4oAzure/_execute?content_references_disabled=true' \
--header 'Accept: */*' \
--header 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
--header 'Connection: keep-alive' \
--header 'Content-Type: application/json' \
--header 'Origin: http://localhost:5601' \
--header 'Referer: http://localhost:5601/app/security/dashboards?sourcerer=(default:(id:security-solution-default,selectedPatterns:!()))&timeline=(activeTab:query,graphEventId:%27%27,isOpen:!f)' \
--header 'Sec-Fetch-Dest: empty' \
--header 'Sec-Fetch-Mode: cors' \
--header 'Sec-Fetch-Site: same-origin' \
--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36' \
--header 'elastic-api-version: 1' \
--header 'kbn-build-number: 9007199254740991' \
--header 'kbn-version: 9.1.0' \
--header 'sec-ch-ua: "Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"' \
--header 'sec-ch-ua-mobile: ?0' \
--header 'sec-ch-ua-platform: "macOS"' \
--header 'x-elastic-internal-origin: Kibana' \
--header 'x-kbn-context: %7B%22type%22%3A%22application%22%2C%22name%22%3A%22securitySolutionUI%22%2C%22url%22%3A%22%2Fapp%2Fsecurity%2Fdashboards%22%2C%22page%22%3A%22list%22%7D' \
--header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \
--data '{
    "subAction": "invokeStream",
    "actionTypeId": ".gen-ai",
    "replacements": {},
    "message": "What is elastic security? Include citations",
    "screenContext": {
        "timeZone": "Asia/Calcutta"
    },
    "alertsIndexPattern": ".alerts-security.alerts-default",
    "size": 100
}'
```

####
/api/security_ai_assistant/chat/complete?content_references_disabled=true

```curl
curl --location 'http://localhost:5601/api/security_ai_assistant/chat/complete?content_references_disabled=true' \
--header 'Content-Type: application/json' \
--header 'Accept: application/octet-stream' \
--header 'kbn-xsrf: 123' \
--header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \
--data '{
  "messages": [
    {
      "role": "user",
      "content": "what is semantic text in esql. Include references to the product documentation"
    }
  ],
  "persist": false,
  "connectorId": "gpt4oAzure",
  "isStream": false
}'
```




### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [x] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [x] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-04-03 16:10:22 +01:00
Francesco Fagnani
467855caea
[Synthetics] When creating a rule the details button is disabled if inspect es queries is disabled (#216824)
This PR closes #212789 by disabling the details button when the user has
the inspect es queries flag disabled. When the button is disabled a
tooltip is shown.



https://github.com/user-attachments/assets/d45d12ac-af03-4eda-8e3d-3dd693839520
2025-04-03 16:41:18 +02:00
Dzmitry Lemechko
d1707cc872
[scout/security] improve alerting table wait (#216262)
## Summary

This PR improves waiting for Alerts table to be loaded.

Relying on the first alert might cause flakiness in the future test
cases, I changed the rule name to be unique for test run and search
alert based on its rule name, not the first row.

If the alert is missing or it has a wrong name, the test will fail with
clear message:

```
    Error: Alert with rule 'xys' is not displayed

    Timed out 10000ms waiting for expect(locator).toBeVisible()

    Locator: locator('div.euiDataGridRow').filter({ hasText: 'xys' })
    Expected: visible
    Received: <element(s) not found>
    Call log:
      - Alert with rule 'xys' is not displayed with timeout 10000ms
      - waiting for locator('div.euiDataGridRow').filter({ hasText: 'xys' })
```

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-04-03 16:37:39 +02:00
Stratoula Kalafateli
eaf467f53c
[ES|QL] Small changes to help potential flakiness (#216982)
## Summary

Closes https://github.com/elastic/kibana/issues/216398

Another small change to ensure flakiness. 100 times run

### Checklist
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
2025-04-03 16:00:32 +02:00
Miriam
8cf8c7efa9
[ObsUx][A11y] Improve abbreviations spell for screen readers (#216954)
Closes https://github.com/elastic/kibana/issues/194983 
Closes https://github.com/elastic/kibana/issues/194982

### What was done
- Add aria-label for elements in the table (links, buttons)
- Improve the spelling of some abbreviations for screen readers

#### How to test
- Use any screen reader in Infrastructure inventory table view, and
hosts tables, navigate through the tables columns titles


https://github.com/user-attachments/assets/db800e7f-c062-43df-9dfc-87601beee487



https://github.com/user-attachments/assets/fbd27a0b-c052-45e6-bc98-e2446b97d4ea
2025-04-03 13:59:55 +01:00
Jedr Blaszyk
fe4bf85f5a
[Workchat][Salesforce integration] Support comment search / account search (#216989)
## Summary

Support retrieving cases by comments. 

Support `get_account` tool.

Rename to `get_` tools to stay consistent.


### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [x] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
2025-04-03 13:53:52 +01:00
Marco Antonio Ghiani
c2113c44b3
[Streams 🌊] Update enrichment sample filters (#216463)
## 📓 Summary

These changes update the samples filters available during a processors
simulation.

Although this is a temporary update before we get a more complete
filtering experience, it improve filtering the docs by the simulation
status.


https://github.com/user-attachments/assets/a5c4c22a-6833-4744-bee5-e90a2ac1a389
2025-04-03 13:46:08 +01:00
Elena Shostak
ed058086e2
[Authz] Added allOf and anyOf nested conditions (#215516)
## Summary

Currently, our `requiredPrivileges` structure supports `allRequired` and
`anyRequired` for defining authorization logic. However, there is [a
need to
support](https://github.com/elastic/kibana/pull/205335#issuecomment-2569275302)
more complex scenarios as `(privilege1 AND privilege2) OR (privilege3
AND privilege4)`

To achieve `anyRequired` has been extended to allow defining multiple
AND conditions evaluated with OR logic:
```ts
security: {
  authz: {
    requiredPrivileges: [{
       anyRequired: [
          { allOf: ['privilege1', 'privilege2'] }, 
          { allOf: ['privilege3', 'privilege4'] }
        ] 
      }
    ]
  }
}
```

`allRequired` now also supports scenarios `(privilege1 OR privilege2)
AND (privilege3 OR privilege4)`
```ts
security: {
  authz: {
    requiredPrivileges: [{
       allRequired: [
          { anyOf: ['privilege1', 'privilege2'] }, 
          { anyOf: ['privilege3', 'privilege4'] }
        ] 
      }
    ]
  }
}
```

> [!IMPORTANT]
> We expect to have unique privileges in `anyOf` or `allOf` conditions,
assuming that most complex conditions can be simplified by boolean
algebra laws (OR/AND distributive etc).


### Checklist

- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

__Closes: https://github.com/elastic/kibana/issues/210977__

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-04-03 14:28:17 +02:00
Sergi Romeu
cc4ed13cb5
[APM] Fix fold/unfold button in traces waterfall explorer not clickable (#216972)
## Summary

Fixes #216790

This PR fixes the z-indexes changed in the [emotion migration
PR](https://github.com/elastic/kibana/pull/204222/files#diff-1c8129b4d0bdfead8d9fef09ba4344527629cb71cb52e920739fa85f17b5b36e),
using the same value (2000) as before.
Also it uses EuiButtonIcon instead of EuiButtonEmpty and aligns its
content.

## Before

![image](https://github.com/user-attachments/assets/8742e9a6-0de3-4353-9f95-cf82feffe7c6)

## After

![image](https://github.com/user-attachments/assets/2b9765a1-d428-4198-a9d5-ae9064c51ed9)
2025-04-03 14:19:54 +02:00
Dima Arnautov
8ff4a35ff0
[ML] Add Voyage AI and DeepSeek (#216651)
## Summary

Closes https://github.com/elastic/kibana/issues/216309

Adds Voyage AI and DeepSeek to the list of services.

<img width="1206" alt="image"
src="https://github.com/user-attachments/assets/151b98ea-53bc-4b78-8e14-fa8f7c2a918b"
/>

<img width="663" alt="image"
src="https://github.com/user-attachments/assets/93ebc3cb-2e54-4955-94c2-ee8ccba33833"
/>
2025-04-03 12:47:20 +01:00
Kuba Soboń
e27210a95f
[CSPM][Tests] Update integration test command (#216769)
## Summary

Updated command to run integration tests, the old one does not work.
2025-04-03 13:36:50 +02:00
Sergi Romeu
56c2d1073b
[A11y][APM] Add error text in environment filter when input is invalid (#216782)
## Summary

Closes #212212

This PR adds an error text to display when the input in the environment
filter is invalid.

## Before 

![image](https://github.com/user-attachments/assets/d0144dc0-57a3-4ccf-b1a3-d77ba5bbc8c5)
## After

![image](https://github.com/user-attachments/assets/c4acb759-ede1-4935-8f94-04d034245b25)
2025-04-03 13:31:48 +02:00