## Summary
Refactoring general ui service to a kbn package.
Resolves an [Appex QA](https://github.com/elastic/appex-qa-team) issue.
---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
`v90.0.0`⏩`v91.0.0-backport.0`
⚠️ While this upgrade pings many teams and has a large code diff, **the
majority of the changes are snapshots or tests-related** and do not
touch source code, so should theoretically only need a code review and
not dedicated QA.
The changes in EUI that required a large swathe of these updates are:
- **EuiPopover** removed an extra unnecessary `<div>` wrapper on its
anchors, which affected many snapshots and a few CSS overrides, which
should have been updated
- **EuiButtonGroup** now renders `<button>` elements instead of `<input
type="radio">` elements for single selection, which affected both
snapshots and E2E tests
- **EuiSuperDatePicker**'s absolute date input now requires an `Enter`
keypress when parsing dates (affected E2E tests)
- **EuiComboBox**, when rendered with `singleSelection={{ plainText:
'true' }}`, no longer renders a pill (i.e. text). This combobox type now
behaves more like an `EuiFieldText`, where the selection is rendered via
input `value` instead. This affected a high amount of E2E tests (both
FTR and Cypress), both in terms of updating assertions and changing
selections, but should **not** significantly affect user experience -
see https://github.com/elastic/eui/pull/7332 for more.
---
##
[`v91.0.0-backport.0`](https://github.com/elastic/eui/tree/v91.0.0-backport.0)
**This is a backport release only intended for use by Kibana.**
- Added `esqlVis`, `pipeBreaks`, and `pipeNoBreaks` icon glyphs.
- `EuiSelectable` now allows configurable text truncation via
`listProps.truncationProps`
([#7388](https://github.com/elastic/eui/pull/7388))
- `EuiTextTruncate` now supports a new `calculationDelayMs` prop for
working around font loading or layout shifting scenarios
([#7388](https://github.com/elastic/eui/pull/7388))
**Bug fixes**
- Fixed a bug with `EuiSelectable`s with custom `truncationProps`, where
scrollbar widths were not being accounted for
([#7392](https://github.com/elastic/eui/pull/7392))
## [`91.0.0`](https://github.com/elastic/eui/tree/v91.0.0)
- Updated the background color of `EuiPopover`s in dark mode to increase
visibility & contrast against other page/panel backgrounds
([#7310](https://github.com/elastic/eui/pull/7310))
- Memoized `EuiDataGrid` to prevent unneeded re-renders
([#7324](https://github.com/elastic/eui/pull/7324))
- Added a configurable `role` prop to `EuiAccordion`
([#7326](https://github.com/elastic/eui/pull/7326))
- Added a configurable `role` prop to `EuiGlobalToastList`
([#7328](https://github.com/elastic/eui/pull/7328))
- For greater flexibility, `EuiSuperDatePicker` now allows users to
paste ISO 8601, RFC 2822, and Unix timestamps in the `Absolute` tab
input, in addition to timestamps in the `dateFormat` prop
([#7331](https://github.com/elastic/eui/pull/7331))
- Plain text `EuiComboBox`es now behave more like a normal text
field/input. Backspacing will no longer delete the entire value, and
selected values can now be double clicked and copied.
([#7332](https://github.com/elastic/eui/pull/7332))
- `EuiDataGrid`'s display settings popover now allows users to clear the
"Lines per row" input before typing in a new number
([#7338](https://github.com/elastic/eui/pull/7338))
- Improved the UX of `EuiSuperDatePicker`'s Absolute tab for users
manually typing in timestamps
([#7341](https://github.com/elastic/eui/pull/7341))
- Updated `EuiI18n`s with multiple `tokens` to accept dynamic `values`
([#7341](https://github.com/elastic/eui/pull/7341))
**Bug fixes**
- Fixed `EuiComboBox`'s `onSearchChange` callback to pass the correct
`hasMatchingOptions` value
([#7334](https://github.com/elastic/eui/pull/7334))
- Fixed an `EuiSelectableTemplateSitewide` bug where the `popoverButton`
behavior would break if passed a non-DOM React wrapper
([#7339](https://github.com/elastic/eui/pull/7339))
**Deprecations**
- `EuiPopover`: deprecated `anchorClassName`. Use `className` instead
([#7311](https://github.com/elastic/eui/pull/7311))
- `EuiPopover`: deprecated `buttonRef`. Use `popoverRef` instead
([#7311](https://github.com/elastic/eui/pull/7311))
- `EuiPopover`: removed extra `.euiPopover__anchor` div wrapper. Target
`.euiPopover` instead if necessary
([#7311](https://github.com/elastic/eui/pull/7311))
- Deprecated `EuiButtonGroup`'s `name` prop. This can safely be removed.
([#7325](https://github.com/elastic/eui/pull/7325))
**Breaking changes**
- Removed deprecated `euiPaletteComplimentary` - use
`euiPaletteComplementary` Instead
([#7333](https://github.com/elastic/eui/pull/7333))
**Accessibility**
- Updated `type="single"` `EuiButtonGroup`s to render standard buttons
instead of radio buttons under the hood, per recent a11y recommendations
([#7325](https://github.com/elastic/eui/pull/7325))
- `EuiAccordion` now defaults to a less screenreader-noisy `group` role
instead of `region`. If your accordion contains significant enough
content to be a document landmark role, you may re-configure it back to
`region`. ([#7326](https://github.com/elastic/eui/pull/7326))
- Reduced screen reader noisiness when sorting `EuiDataGrid` columns via
toolbar ([#7327](https://github.com/elastic/eui/pull/7327))
- `EuiGlobalToastList` now defaults to a `log` role. If your toasts will
always require immediate user action, consider (with caution) using the
`alert` role instead.
([#7328](https://github.com/elastic/eui/pull/7328))
**CSS-in-JS conversions**
- Updated `$euiFontFamily` and `$euiCodeFontFamily` to match Emotion
fonts ([#7332](https://github.com/elastic/eui/pull/7332))
---------
Co-authored-by: Cee Chen <constance.chen@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Cee Chen <549407+cee-chen@users.noreply.github.com>
Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co>
## Summary
It is possible for the `noDataPopover` to take more than the `100ms`
timeout from `ensureHiddenNoDataPopover` (pictured below) to appear - in
these cases, any tests that make use of the Lens page object's
`goToTimeRange` method will fail due to clicking the wrong element (the
tour step rather than the time picker).

While my initial thought was to simply increase the timeout for the
`noDataPopover` check, this isn't ideal - **a lot** of tests use the
`goToTimeRange` method and, by doing this, we would be slowing down
**every single one of them** even when the test wouldn't have failed to
begin with! Instead, I've chosen to surround the important parts of the
code in `goToTimeRange` with a `retry` - that way, if the
`noDataPopover` never shows up or it shows up comfortably within the
`100ms` timeout, the impact to the speed of a given test will be
**minimal**; however, if the no data popover shows up **outside** of
this timeout, the retry will save the test from outright failure.
### [Flaky Test
Runner](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4192)

### 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
### For maintainers
- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
Attempt at fixing https://github.com/elastic/kibana/issues/149611
I updated the test code as follows:
* Removed the RxJS logic and simply factorised the reads to read only
once.
* Got rid of the "retry" service. There's already a mechanism in place
to make sure the logs are up-to-date.
* Updated the `setCommonlyUsedTime` method to make sure it awaits for
the popup to be ready before clicking.
* Skipped 4 tests that seem outdated, the logs don't have the related
entries even after waiting for more than one minute and flushing (in
fact, they all seem to systematically fail on `main` too):
* lnsLegacyMetric
* [Flights] Delays & Cancellations
* [Flights] Destination Weather
* [Flights] Delay Buckets
Attached is the generated
[kibana.log](12260144/kibana.log)
(focussing only the `browser.ts` tests).
So for the skipped tests, this does not look like flakiness anymore, but
rather outdated / incorrect checks. I propose we review and update them
on a separate issue / PR.
50 runs results
[here](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3026).
## Summary
We have some tests which set the default time but then also call
setAbsoluteTime in every test. This PR adds code in setAbsoluteTime to
quickly check if the desired start and end (from and to) times are
already set, and if so, just return. The end result should be less time
spent on functional tests. It could also reduce occasional flakiness
setting the time.
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Dzmitry Lemechko <dzmitry.lemechko@elastic.co>
## Summary
This PR is mainly some cleanup before another PR I have in the works to
shortcut timepicker.setAbsoluteTime() by checking if we already have the
desired time set.
This PR changes the timePicker defaultStartTimeUTC value from September
18th to September 19th to match the value of defaultStartTimeUTC.
The variable name defaultStartTimeUTC implies it's a different timezone
but actually it's the same date time but in a different ISO format.
It seems there was only 1 place in tests which expected that Sep 18th
date.
Another small change in
`x-pack/test/functional/apps/lens/group1/text_based_languages.ts` is to
use uiSettings.update insteda of uiSettings.replace. `replace` wipes out
the default UTC timezone and the defaultTime settings.
I added a few calls to cleanStandardList to make sure any saved objects
created by the tests are cleaned up, and to get a clean run if other
tests left something.
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
* Upgrade to v62.0.3
* Update EUI i18n tokens
* Update html string snapshots
- Emotion CSS hash changed
* [EuiIcon] Update instances of `keyboardShortcut` icons to `keyboard`
* [EuiErrorBoundary] Update snapshots from Emotion conversion
* [EuiImage] Update snapshots, tests, and CSS to account for Emotion conversion
* [EuiImage][RTL] Fix test failures caused by EuiImage changes
* [EuiCommentList] Deprecate EuiCommentProps.type
* [EuiCommentList] Rename `timelineIcon` prop to `timelineAvatar`
- see https://github.com/elastic/eui/pull/6071
* [EuiCommentList] Fix selectors deprecated by Emotion conversion
* [EuiPopover][EuiCommentEvent][Enzyme] Fix mounted test failures caused by Emotion conversions
- Mounting displays the Emotion wrapper with the data-test-subj on them - we need to specify the output div renders in order for text assertions to be correct
* [EuiPopover] Deprecate `initialFocus={false}` as an option
see https://github.com/elastic/eui/pull/6044
* [EuiPopover] Rename `display=inlineBlock` to `inline-block`
- see https://github.com/elastic/eui/pull/5977
* [EuiPopover] Update snapshots from Emotion conversion
* [EuiPopover] Replace deprecated `.euiPopover__panel-isOpen` class with new `[data-popover-open]` attribute
* [EuiPopover][RTL] Fix test failures caused by not waiting for EuiPopover animation/transition
* Skip failing a11y tests
- test w/ similar error already skipped in another test above
- requires closing the popover for next test to pass
- not sure why delete action is no longer available
* Fix failing Security Cypress tests
* Attempt to squash flaky FTR tests around Add Filter popover
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Jonathan Budzenski <jon@elastic.co>
* unskipped test and added additional checks when using time picker
* rather wait for the timepicker to close
* set up test for flaky test runner
* Additional .only
* Remove .only
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
* add retry logic and add describe.only to prepare for flaky test runner
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
* fix refresh interval in discover
* Also implicitly fixes a subtle bug with excessive re-fetch after deleting already disabled filter
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
* forwardport #64999
* Add additional verifications on dashboard
I hope you don't mind me updating the test directly.
I *thought* the other dashboard tests required a consistent set of exact documents so that the count would always be the same. Since the test uses sample data, I added a new timepicker:quickRanges so that the test can just select it. Test FTR isn't set up to do relative time ranges right now.
But it looks like the dashboard checks aren't that specific to the data. The dashboard seems to have `Last 24 hours` saved in it. And when I don't change it to the whole sample data time range the test still passes.
* fix eslint error
* [page_objects/time_picker] allow any string in setCommonlyUsedTime
Co-authored-by: Lee Drengenberg <lee.drengenberg@elastic.co>
Co-authored-by: Dzmitry Lemechko <dzmitry.lemechko@elastic.co>