Upgrade EUI to v91.0.0 (with backports) (#170716)

`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>
This commit is contained in:
Tomasz Kajtoch 2023-12-18 18:15:15 +01:00 committed by GitHub
parent ce293db41b
commit b043545208
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
139 changed files with 4653 additions and 5178 deletions

View file

@ -213,7 +213,6 @@ export class DiscoverCustomizationExamplesPlugin implements Plugin {
{currentSavedSearch.title ?? 'None selected'}
</EuiButton>
}
anchorClassName="eui-fullWidth"
isOpen={isPopoverOpen}
panelPaddingSize="none"
closePopover={closePopover}
@ -280,7 +279,6 @@ export class DiscoverCustomizationExamplesPlugin implements Plugin {
{currentSavedSearch.title ?? 'None selected'}
</EuiButton>
}
anchorClassName="eui-fullWidth"
isOpen={isPopoverOpen}
panelPaddingSize="none"
closePopover={closePopover}

View file

@ -102,7 +102,7 @@
"@elastic/datemath": "5.0.3",
"@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.9.1-canary.1",
"@elastic/ems-client": "8.5.1",
"@elastic/eui": "90.0.1-backport.0",
"@elastic/eui": "91.0.0-backport.0",
"@elastic/filesaver": "1.1.2",
"@elastic/node-crypto": "1.2.1",
"@elastic/numeral": "^2.5.1",

View file

@ -157,7 +157,7 @@ Array [
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="generated-id"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -281,7 +281,7 @@ Array [
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="generated-id"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -412,7 +412,7 @@ Array [
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="generated-id"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -526,7 +526,7 @@ Array [
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="generated-id"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -623,7 +623,7 @@ Array [
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="generated-id"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>

View file

@ -108,37 +108,33 @@ Array [
class="euiHeaderSectionItem emotion-euiHeaderSectionItem"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="helpMenuButton"
id="headerHelpMenu"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-expanded="false"
aria-haspopup="true"
aria-label="Help menu"
class="euiButtonEmpty euiHeaderSectionItemButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiHeaderSectionItemButton"
type="button"
>
<button
aria-expanded="false"
aria-haspopup="true"
aria-label="Help menu"
class="euiButtonEmpty euiHeaderSectionItemButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiHeaderSectionItemButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
class="euiHeaderSectionItemButton__content emotion-euiHeaderSectionItemButton__content"
>
<span
class="euiHeaderSectionItemButton__content emotion-euiHeaderSectionItemButton__content"
>
<span
data-euiicon-type="help"
/>
</span>
data-euiicon-type="help"
/>
</span>
</span>
</button>
</div>
</span>
</button>
</div>
</div>
<div

View file

@ -7,6 +7,7 @@ exports[`#start() returns \`Context\` component 1`] = `
Object {
"mapping": Object {
"euiAbsoluteTab.dateFormatError": [Function],
"euiAbsoluteTab.dateFormatHint": "Press the Enter key to parse as a date.",
"euiAccordionChildrenLoading.message": "Loading",
"euiAutoRefresh.autoRefreshLabel": "Auto refresh",
"euiAutoRefresh.buttonLabelOff": "Auto refresh is off",

View file

@ -1434,7 +1434,7 @@ export const getEuiContextMapping = (): EuiTokensObject => {
),
'euiAbsoluteTab.dateFormatError': ({ dateFormat }: EuiValues) =>
i18n.translate('core.euiAbsoluteTab.dateFormatError', {
defaultMessage: 'Expected format: {dateFormat}',
defaultMessage: 'Allowed formats: {dateFormat}, ISO 8601, RFC 2822, or Unix timestamp.',
values: { dateFormat },
}),
'euiRelativeTab.fullDescription': ({ unit }: EuiValues) =>
@ -1454,6 +1454,9 @@ export const getEuiContextMapping = (): EuiTokensObject => {
'euiRelativeTab.dateInputError': i18n.translate('core.euiRelativeTab.dateInputError', {
defaultMessage: 'Must be a valid range',
}),
'euiAbsoluteTab.dateFormatHint': i18n.translate('core.euiAbsoluteTab.dateFormatHint', {
defaultMessage: 'Press the Enter key to parse as a date.',
}),
'euiResizableButton.horizontalResizerAriaLabel': i18n.translate(
'core.euiResizableButton.horizontalResizerAriaLabel',
{

View file

@ -83,33 +83,29 @@ exports[`SampleDataCard installed renders with app links 1`] = `
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="launchSampleDataSetsample-data-set"
id="sampleDataLinkssample-data-set"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="View Sample Data Set"
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
type="button"
>
<button
aria-label="View Sample Data Set"
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
<span
class="emotion-euiButtonDisplayContent"
class="eui-textTruncate"
>
<span
class="eui-textTruncate"
>
View data
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
View data
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>

View file

@ -2,65 +2,57 @@
exports[`should render popover when appLinks is not empty 1`] = `
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="launchSampleDataSetecommerce"
id="sampleDataLinksecommerce"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="View Sample eCommerce orders"
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
type="button"
>
<button
aria-label="View Sample eCommerce orders"
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
<span
class="emotion-euiButtonDisplayContent"
class="eui-textTruncate"
>
<span
class="eui-textTruncate"
>
View data
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
View data
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
`;
exports[`should render popover with ordered appLinks 1`] = `
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="launchSampleDataSetecommerce"
id="sampleDataLinksecommerce"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="View Sample eCommerce orders"
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
type="button"
>
<button
aria-label="View Sample eCommerce orders"
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
<span
class="emotion-euiButtonDisplayContent"
class="eui-textTruncate"
>
<span
class="eui-textTruncate"
>
View data
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
View data
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
`;

View file

@ -10,90 +10,7 @@ Object {
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<button
aria-label="Clear input"
class="euiFormControlLayoutClearButton"
data-test-subj="comboBoxClearButton"
type="button"
>
<span
class="euiFormControlLayoutClearButton__icon"
data-euiicon-type="cross"
/>
</button>
<button
aria-label="Open list of options"
class="euiFormControlLayoutCustomIcon euiFormControlLayoutCustomIcon--clickable"
data-test-subj="comboBoxToggleListButton"
tabindex="-1"
type="button"
>
<span
aria-hidden="true"
class="euiFormControlLayoutCustomIcon__icon"
data-euiicon-type="arrowDown"
/>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiComboBox euiComboBox--fullWidth"
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
@ -102,20 +19,10 @@ Object {
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
@ -125,8 +32,8 @@ Object {
data-test-subj="comboBoxSearchInput"
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
<div
@ -162,6 +69,71 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiComboBox euiComboBox--fullWidth"
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<button
aria-label="Clear input"
class="euiFormControlLayoutClearButton"
data-test-subj="comboBoxClearButton"
type="button"
>
<span
class="euiFormControlLayoutClearButton__icon"
data-euiicon-type="cross"
/>
</button>
<button
aria-label="Open list of options"
class="euiFormControlLayoutCustomIcon euiFormControlLayoutCustomIcon--clickable"
data-test-subj="comboBoxToggleListButton"
tabindex="-1"
type="button"
>
<span
aria-hidden="true"
class="euiFormControlLayoutCustomIcon__icon"
data-euiicon-type="arrowDown"
/>
</button>
</div>
</div>
</div>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -227,46 +199,32 @@ Object {
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiFormControlLayout__childrenWrapper"
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
/>
</div>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
</div>
</div>
@ -280,46 +238,32 @@ Object {
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiFormControlLayout__childrenWrapper"
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
/>
</div>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
</div>
</div>
@ -390,79 +334,7 @@ Object {
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<button
aria-label="Open list of options"
class="euiFormControlLayoutCustomIcon euiFormControlLayoutCustomIcon--clickable"
data-test-subj="comboBoxToggleListButton"
tabindex="-1"
type="button"
>
<span
aria-hidden="true"
class="euiFormControlLayoutCustomIcon__icon"
data-euiicon-type="arrowDown"
/>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiComboBox euiComboBox--fullWidth"
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
@ -471,20 +343,10 @@ Object {
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
@ -494,8 +356,8 @@ Object {
data-test-subj="comboBoxSearchInput"
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
<div
@ -520,6 +382,60 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiComboBox euiComboBox--fullWidth"
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--1icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<button
aria-label="Open list of options"
class="euiFormControlLayoutCustomIcon euiFormControlLayoutCustomIcon--clickable"
data-test-subj="comboBoxToggleListButton"
tabindex="-1"
type="button"
>
<span
aria-hidden="true"
class="euiFormControlLayoutCustomIcon__icon"
data-euiicon-type="arrowDown"
/>
</button>
</div>
</div>
</div>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -585,55 +501,41 @@ Object {
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiFormControlLayout__childrenWrapper"
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<span
aria-label="Loading"
class="euiLoadingSpinner emotion-euiLoadingSpinner-m"
role="progressbar"
/>
</div>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<span
aria-label="Loading"
class="euiLoadingSpinner emotion-euiLoadingSpinner-m"
role="progressbar"
/>
</div>
</div>
</div>
@ -647,55 +549,41 @@ Object {
data-test-subj="fieldAutocompleteComboBox"
>
<div
class="euiPopover euiInputPopover emotion-euiPopover-EuiInputPopover"
class="euiPopover euiInputPopover emotion-euiPopover-block-EuiInputPopover"
>
<div
class="euiPopover__anchor css-zih94u-render"
class="euiFormControlLayout euiFormControlLayout--fullWidth"
>
<div
class="euiFormControlLayout euiFormControlLayout--fullWidth"
class="euiFormControlLayout__childrenWrapper"
>
<div
class="euiFormControlLayout__childrenWrapper"
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap euiComboBox__inputWrap--plainText"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<div
class="euiComboBox__inputWrap euiFormControlLayout--2icons euiComboBox__inputWrap--fullWidth euiComboBox__inputWrap--noWrap"
data-test-subj="comboBoxInput"
tabindex="-1"
>
<span
class="euiComboBoxPill euiComboBoxPill--plainText"
data-test-subj="euiComboBoxPill"
>
<span
class="eui-textTruncate"
>
machine.os.raw
</span>
</span>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 2px;"
value=""
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<span
aria-label="Loading"
class="euiLoadingSpinner emotion-euiLoadingSpinner-m"
role="progressbar"
/>
</div>
<input
aria-autocomplete="list"
aria-controls=""
aria-expanded="false"
aria-invalid="false"
class="euiComboBox__input"
data-test-subj="comboBoxSearchInput"
disabled=""
id="generated-id__eui-combobox-id"
role="combobox"
style="inline-size: 100%;"
value="machine.os.raw"
/>
</div>
<div
class="euiFormControlLayoutIcons euiFormControlLayoutIcons--right euiFormControlLayoutIcons--absolute"
>
<span
aria-label="Loading"
class="euiLoadingSpinner emotion-euiLoadingSpinner-m"
role="progressbar"
/>
</div>
</div>
</div>

View file

@ -7,7 +7,7 @@
*/
import React from 'react';
import { fireEvent, render, waitFor } from '@testing-library/react';
import { fireEvent, render, waitFor, within } from '@testing-library/react';
import '@testing-library/jest-dom';
import { FieldComponent } from '..';
@ -31,7 +31,9 @@ describe('FieldComponent', () => {
/>
);
expect(wrapper).toMatchSnapshot();
expect(wrapper.getByTestId('fieldAutocompleteComboBox')).toHaveTextContent('machine.os.raw');
const comboBox = wrapper.getByTestId('fieldAutocompleteComboBox');
const input = within(comboBox).getByRole('combobox');
expect(input).toHaveAttribute('value', 'machine.os.raw');
});
it('should render the component disabled if isDisabled is true', () => {
const wrapper = render(

View file

@ -182,9 +182,9 @@ describe('AutocompleteFieldListsComponent', () => {
expect(
wrapper
.find(`[data-test-subj="valuesAutocompleteComboBox listsComboxBox"] EuiComboBoxPill`)
.find(`[data-test-subj="valuesAutocompleteComboBox listsComboxBox"] input`)
.at(0)
.text()
.props().value
).toEqual('some name');
});

View file

@ -166,7 +166,7 @@ describe('AutocompleteFieldMatchComponent', () => {
);
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatch"] EuiComboBoxPill').at(0).text()
wrapper.find('[data-test-subj="valuesAutocompleteMatch"] input').at(0).props().value
).toEqual('127.0.0.1');
});

View file

@ -168,7 +168,7 @@ describe('AutocompleteFieldWildcardComponent', () => {
);
expect(
wrapper.find('[data-test-subj="valuesAutocompleteWildcard"] EuiComboBoxPill').at(0).text()
wrapper.find('[data-test-subj="valuesAutocompleteWildcard"] input').at(0).props().value
).toEqual('/opt/*/app.dmg');
});

View file

@ -152,7 +152,7 @@ describe('operator', () => {
);
expect(
wrapper.find(`[data-test-subj="operatorAutocompleteComboBox"] EuiComboBoxPill`).at(0).text()
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is');
});

View file

@ -101,7 +101,7 @@ Object {
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isClosed"
id="exceptionItemCardComments"
inert=""
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -239,7 +239,7 @@ Object {
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isClosed"
id="exceptionItemCardComments"
inert=""
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -433,7 +433,7 @@ Object {
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="exceptionItemCardComments"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -570,7 +570,7 @@ Object {
aria-labelledby="generated-id"
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isOpen"
id="exceptionItemCardComments"
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>

View file

@ -9,40 +9,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Icon"
@ -60,6 +28,30 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -124,26 +116,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -157,7 +145,7 @@ Object {
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: 16px; left: -22px; will-change: transform, opacity; z-index: 2000;"
@ -226,26 +214,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>,
@ -312,40 +296,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Icon"
@ -363,6 +315,30 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="ButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -427,45 +403,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="EmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
</span>
</button>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
@ -488,6 +427,35 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="EmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
</span>
</button>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -552,45 +520,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="EmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
<span
color="inherit"
data-euiicon-type="cheer"
/>
</span>
</button>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
@ -613,6 +544,35 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="EmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
<span
color="inherit"
data-euiicon-type="cheer"
/>
</span>
</button>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -677,46 +637,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-disabled-isDisabled"
data-test-subj="EmptyButton"
disabled=""
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
<span
color="inherit"
data-euiicon-type="cheer"
/>
</span>
</button>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
@ -740,6 +662,36 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-disabled-isDisabled"
data-test-subj="EmptyButton"
disabled=""
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
<span
color="inherit"
data-euiicon-type="cheer"
/>
</span>
</button>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -804,45 +756,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="EmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
<span
color="inherit"
data-euiicon-type="cheer"
/>
</span>
</button>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="Items"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
@ -865,6 +780,35 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="Items"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="EmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
/>
<span
color="inherit"
data-euiicon-type="cheer"
/>
</span>
</button>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],

View file

@ -197,26 +197,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -584,26 +580,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -867,26 +859,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -1093,26 +1081,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -1348,27 +1332,23 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-disabled-isDisabled"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
disabled=""
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-disabled-isDisabled"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
disabled=""
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -1547,27 +1527,23 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-disabled-isDisabled"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
disabled=""
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-disabled-isDisabled"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
disabled=""
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -1784,26 +1760,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -1826,7 +1798,7 @@ Object {
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: 16px; left: -22px; will-change: transform, opacity; z-index: 2000;"
@ -2053,26 +2025,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="RightSideMenuItemsMenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="RightSideMenuItemsMenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>

View file

@ -16,86 +16,8 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="LinkedRulesMenuItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Linked to 1 rules
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
</div>
<div
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-center-baseline-row"
data-test-subj="Container"
>
<div
class="euiFlexItem emotion-EuiFlexItem"
>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="LinkedRulesMenuItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
>
<button
aria-label="Header menu Button Empty"
@ -120,19 +42,15 @@ Object {
</div>
</div>
</div>
</div>
<div
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiPopover emotion-euiPopover"
data-test-subj="MenuActionsItems"
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover__anchor css-16vtueo-render"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<button
aria-label="Header menu Button Icon"
@ -152,6 +70,72 @@ Object {
</div>
</div>
</div>
</body>,
"container": <div>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-center-baseline-row"
data-test-subj="Container"
>
<div
class="euiFlexItem emotion-EuiFlexItem"
>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="LinkedRulesMenuItems"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Linked to 1 rules
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
<div
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
</div>
</div>,
"debug": [Function],
"findAllByAltText": [Function],
@ -252,26 +236,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -319,26 +299,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -443,26 +419,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -478,7 +450,7 @@ Object {
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: 16px; left: -22px; will-change: transform, opacity; z-index: 2000;"
@ -598,26 +570,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -693,33 +661,29 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="LinkedRulesMenuItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Linked to 1 rules
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Linked to 1 rules
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -730,26 +694,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -765,7 +725,7 @@ Object {
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPanel--paddingSmall euiPopover__panel emotion-euiPanel-grow-m-s-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: 16px; left: -22px; will-change: transform, opacity; z-index: 2000;"
@ -858,33 +818,29 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="LinkedRulesMenuItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Linked to 1 rules
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Linked to 1 rules
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -895,26 +851,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -990,33 +942,29 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="LinkedRulesMenuItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Linked to 1 rules
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Linked to 1 rules
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -1046,26 +994,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>
@ -1084,33 +1028,29 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="LinkedRulesMenuItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
>
<button
aria-label="Header menu Button Empty"
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-m-empty-primary"
data-test-subj="LinkedRulesMenuEmptyButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Linked to 1 rules
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Linked to 1 rules
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -1140,26 +1080,22 @@ Object {
class="euiFlexGroup emotion-euiFlexGroup-responsive-l-flexStart-stretch-row"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="MenuActionsItems"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<button
aria-label="Header menu Button Icon"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-primary"
data-test-subj="MenuActionsButtonIcon"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="boxesHorizontal"
/>
</button>
</div>
</div>
</div>

View file

@ -308,7 +308,7 @@ describe('UnifiedDataTable', () => {
columns: ['message'],
});
expect(component.find(EuiDataGrid).prop('sorting')).toMatchInlineSnapshot(`
expect(component.find(EuiDataGrid).last().prop('sorting')).toMatchInlineSnapshot(`
Object {
"columns": Array [
Object {
@ -332,7 +332,7 @@ describe('UnifiedDataTable', () => {
columns: ['bytes', 'message'],
});
expect(component.find(EuiDataGrid).prop('sorting')).toMatchInlineSnapshot(`
expect(component.find(EuiDataGrid).last().prop('sorting')).toMatchInlineSnapshot(`
Object {
"columns": Array [
Object {
@ -359,7 +359,7 @@ describe('UnifiedDataTable', () => {
onUpdateRowHeight: jest.fn(),
});
expect(component.find(EuiDataGrid).prop('toolbarVisibility')).toMatchInlineSnapshot(`
expect(component.find(EuiDataGrid).first().prop('toolbarVisibility')).toMatchInlineSnapshot(`
Object {
"additionalControls": null,
"showColumnSelector": false,
@ -385,7 +385,7 @@ describe('UnifiedDataTable', () => {
onUpdateRowHeight: jest.fn(),
});
expect(component.find(EuiDataGrid).prop('toolbarVisibility')).toMatchInlineSnapshot(`
expect(component.find(EuiDataGrid).first().prop('toolbarVisibility')).toMatchInlineSnapshot(`
Object {
"additionalControls": null,
"showColumnSelector": false,
@ -406,7 +406,7 @@ describe('UnifiedDataTable', () => {
onUpdateSampleSize: undefined,
});
expect(component.find(EuiDataGrid).prop('toolbarVisibility')).toMatchInlineSnapshot(`
expect(component.find(EuiDataGrid).first().prop('toolbarVisibility')).toMatchInlineSnapshot(`
Object {
"additionalControls": null,
"showColumnSelector": false,

View file

@ -3,34 +3,30 @@
exports[`<UnsavedChangesBadge /> should show all menu items 1`] = `
<div>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="unsavedChangesPopover_generated-id"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="View available actions"
class="euiBadge emotion-euiBadge-warning-clickable"
data-test-subj="unsavedChangesBadge"
title="test"
>
<button
aria-label="View available actions"
class="euiBadge emotion-euiBadge-warning-clickable"
data-test-subj="unsavedChangesBadge"
title="test"
<span
class="euiBadge__content emotion-euiBadge__content"
>
<span
class="euiBadge__content emotion-euiBadge__content"
class="euiBadge__text emotion-euiBadge__text-clickable"
>
<span
class="euiBadge__text emotion-euiBadge__text-clickable"
>
test
</span>
<span
class="euiBadge__icon emotion-euiBadge__icon-right"
color="inherit"
data-euiicon-type="arrowDown"
/>
test
</span>
</button>
</div>
<span
class="euiBadge__icon emotion-euiBadge__icon-right"
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
`;

View file

@ -3,34 +3,30 @@
exports[`getTopNavUnsavedChangesBadge() should work correctly 1`] = `
<div>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="unsavedChangesPopover_generated-id"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="View available actions"
class="euiBadge emotion-euiBadge-warning-clickable"
data-test-subj="unsavedChangesBadge"
title="Unsaved changes"
>
<button
aria-label="View available actions"
class="euiBadge emotion-euiBadge-warning-clickable"
data-test-subj="unsavedChangesBadge"
title="Unsaved changes"
<span
class="euiBadge__content emotion-euiBadge__content"
>
<span
class="euiBadge__content emotion-euiBadge__content"
class="euiBadge__text emotion-euiBadge__text-clickable"
>
<span
class="euiBadge__text emotion-euiBadge__text-clickable"
>
Unsaved changes
</span>
<span
class="euiBadge__icon emotion-euiBadge__icon-right"
color="inherit"
data-euiicon-type="arrowDown"
/>
Unsaved changes
</span>
</button>
</div>
<span
class="euiBadge__icon emotion-euiBadge__icon-right"
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
`;

View file

@ -101,7 +101,7 @@ export function FilterQueryInput({
<EuiPopover
isOpen={filterPopoverOpen}
closePopover={onClosePopup}
anchorClassName="eui-fullWidth"
display="block"
panelClassName="filterQueryInput__popover"
initialFocus={dataTestSubj ? `textarea[data-test-subj='${dataTestSubj}']` : undefined}
button={

View file

@ -2,30 +2,26 @@
exports[`<ToolbarPopover /> is rendered 1`] = `
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
intl="[object Object]"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-EuiButton"
type="button"
>
<button
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-EuiButton"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
<span
class="emotion-euiButtonDisplayContent"
class="eui-textTruncate"
>
<span
class="eui-textTruncate"
>
test
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
test
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
`;

View file

@ -85,7 +85,7 @@ export const LICENSE_OVERRIDES = {
'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts
'@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint
'@elastic/ems-client@8.5.1': ['Elastic License 2.0'],
'@elastic/eui@90.0.1-backport.0': ['SSPL-1.0 OR Elastic License 2.0'],
'@elastic/eui@91.0.0-backport.0': ['SSPL-1.0 OR Elastic License 2.0'],
'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODCBy license https://github.com/mattcg/language-subtag-registry
'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary
};

View file

@ -43,7 +43,6 @@ export const ControlError = ({ error }: ControlErrorProps) => {
button={popoverButton}
isOpen={isPopoverOpen}
className="errorEmbeddableCompact__popover"
anchorClassName="errorEmbeddableCompact__popoverAnchor"
closePopover={() => setPopoverOpen(false)}
>
<Markdown

View file

@ -153,8 +153,8 @@ describe('Options list popover', () => {
const popover = await mountComponent();
const includeButton = findTestSubject(popover, 'optionsList__includeResults');
const excludeButton = findTestSubject(popover, 'optionsList__excludeResults');
expect(includeButton.prop('checked')).toBe(true);
expect(excludeButton.prop('checked')).toBeFalsy();
expect(includeButton.prop('aria-pressed')).toBe(true);
expect(excludeButton.prop('aria-pressed')).toBe(false);
});
test('if exclude = true, select appropriate button in button group', async () => {
@ -163,8 +163,8 @@ describe('Options list popover', () => {
});
const includeButton = findTestSubject(popover, 'optionsList__includeResults');
const excludeButton = findTestSubject(popover, 'optionsList__excludeResults');
expect(includeButton.prop('checked')).toBeFalsy();
expect(excludeButton.prop('checked')).toBe(true);
expect(includeButton.prop('aria-pressed')).toBe(false);
expect(excludeButton.prop('aria-pressed')).toBe(true);
});
test('clicking another option unselects "Exists"', async () => {
@ -176,8 +176,8 @@ describe('Options list popover', () => {
const availableOptionsDiv = findTestSubject(popover, 'optionsList-control-available-options');
availableOptionsDiv.children().forEach((child, i) => {
if (child.text() === 'woof') expect(child.prop('checked')).toBe('on');
else expect(child.prop('checked')).toBeFalsy();
if (child.text() === 'woof') expect(child.prop('aria-pressed')).toBe(true);
else expect(child.prop('aria-pressed')).toBeFalsy();
});
});
@ -189,15 +189,15 @@ describe('Options list popover', () => {
const existsOption = findTestSubject(popover, 'optionsList-control-selection-exists');
let availableOptionsDiv = findTestSubject(popover, 'optionsList-control-available-options');
availableOptionsDiv.children().forEach((child, i) => {
if (selections.includes(child.text())) expect(child.prop('checked')).toBe('on');
else expect(child.prop('checked')).toBeFalsy();
if (selections.includes(child.text())) expect(child.prop('aria-pressed')).toBe(true);
else expect(child.prop('aria-pressed')).toBeFalsy();
});
existsOption.simulate('click');
availableOptionsDiv = findTestSubject(popover, 'optionsList-control-available-options');
availableOptionsDiv.children().forEach((child, i) => {
if (child.text() === 'Exists (*)') expect(child.prop('checked')).toBe('on');
else expect(child.prop('checked')).toBeFalsy();
if (child.text() === 'Exists (*)') expect(child.prop('aria-pressed')).toBe(true);
else expect(child.prop('aria-pressed')).toBeFalsy();
});
});

View file

@ -119,7 +119,6 @@ export const OptionsListPopoverSortingButton = ({
aria-labelledby="optionsList_sortingOptions"
closePopover={() => setIsSortingPopoverOpen(false)}
panelClassName={'optionsList--sortPopover'}
anchorClassName={'optionsList__sortButtonPopoverAnchor'}
>
<span data-test-subj="optionsListControl__sortingOptionsPopover">
<EuiPopoverTitle paddingSize="s">

View file

@ -176,27 +176,23 @@ Array [
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="inspectorDownloadData"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButton emotion-euiButtonDisplay-s-defaultMinWidth-base-primary"
type="button"
>
<button
class="euiButton emotion-euiButtonDisplay-s-defaultMinWidth-base-primary"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
Download CSV
<span
class="emotion-euiButtonDisplayContent"
>
Download CSV
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>,
@ -224,30 +220,26 @@ Array [
class="euiTableSortMobile"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-primary-flush-right"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-primary-flush-right"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Sorting
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Sorting
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -339,31 +331,27 @@ Array [
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="tablePaginationPopoverButton"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="tablePaginationPopoverButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Rows per page: 20
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Rows per page: 20
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
<div
@ -481,32 +469,28 @@ Array [
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="inspectorTableChooser"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-s-empty-primary"
data-test-subj="inspectorTableChooser"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-s-empty-primary"
data-test-subj="inspectorTableChooser"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Table 1
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Table 1
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -515,27 +499,23 @@ Array [
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="inspectorDownloadData"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButton emotion-euiButtonDisplay-s-defaultMinWidth-base-primary"
type="button"
>
<button
class="euiButton emotion-euiButtonDisplay-s-defaultMinWidth-base-primary"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
Download CSV
<span
class="emotion-euiButtonDisplayContent"
>
Download CSV
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>,
@ -563,30 +543,26 @@ Array [
class="euiTableSortMobile"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-primary-flush-right"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-primary-flush-right"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Sorting
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Sorting
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>
@ -679,31 +655,27 @@ Array [
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="tablePaginationPopoverButton"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="tablePaginationPopoverButton"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Rows per page: 20
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Rows per page: 20
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
<div

View file

@ -63,11 +63,7 @@ describe('DataViewEditor PreviewPanel', () => {
'Matching sources'
);
findTestSubject(component, 'allIndices').simulate('change', {
target: {
value: true,
},
});
findTestSubject(component, 'allIndices').simulate('click');
await component.update();
@ -109,11 +105,7 @@ describe('DataViewEditor PreviewPanel', () => {
expect(component.find('.euiButtonGroupButton-isSelected').first().text()).toBe('All sources');
findTestSubject(component, 'onlyMatchingIndices').simulate('change', {
target: {
value: true,
},
});
findTestSubject(component, 'onlyMatchingIndices').simulate('click');
await component.update();

View file

@ -1,9 +1,6 @@
.errorEmbeddableCompact__popover {
height: 100%;
}
.errorEmbeddableCompact__popoverAnchor {
max-width: 100%;
}

View file

@ -130,7 +130,7 @@ describe('isCloudEnabled is false', () => {
);
await loadTutorialPromise;
component.update();
component.find('#onPremElasticCloud').first().find('input').simulate('change');
component.find('button[data-test-subj="onCloudTutorial"]').simulate('click');
component.update();
expect(component.state('visibleInstructions')).toBe('onPremElasticCloud');
});

View file

@ -21,32 +21,28 @@ Array [
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="inspectorViewChooser"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-s-empty-primary"
data-test-subj="inspectorViewChooser"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-s-empty-primary"
data-test-subj="inspectorViewChooser"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
View: View 1
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
View: View 1
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
</div>

View file

@ -73,11 +73,6 @@
padding: $euiSizeM;
}
.globalFilterItem__popover,
.globalFilterItem__popoverAnchor {
display: block;
}
.globalFilterItem__readonlyPanel {
min-width: auto;
padding: $euiSizeM;

View file

@ -367,8 +367,7 @@ function FilterItemComponent(props: FilterItemProps) {
const popoverProps: FilterPopoverProps = {
id: `popoverFor_filter${id}`,
className: `globalFilterItem__popover`,
anchorClassName: `globalFilterItem__popoverAnchor`,
display: 'block',
isOpen: isPopoverOpen,
closePopover,
button: <FilterView {...filterViewProps} />,

View file

@ -67,7 +67,6 @@ export function NoDataPopover({
}
minWidth={300}
anchorPosition="downCenter"
anchorClassName="eui-displayBlock"
step={1}
stepsTotal={1}
isStepOpen={noDataPopoverVisible}

View file

@ -2,4 +2,4 @@
exports[`VisLegend Component Legend closed should match the snapshot 1`] = `"<div class=\\"visLegend\\"><button type=\\"button\\" class=\\"visLegend__toggle kbn-resetFocusState\\" aria-label=\\"Toggle legend\\" aria-expanded=\\"false\\" aria-controls=\\"legendId\\" data-test-subj=\\"vislibToggleLegend\\" title=\\"Toggle legend\\"><span data-euiicon-type=\\"list\\" color=\\"text\\"></span></button></div>"`;
exports[`VisLegend Component Legend open should match the snapshot 1`] = `"<div class=\\"visLegend\\"><button type=\\"button\\" class=\\"visLegend__toggle kbn-resetFocusState visLegend__toggle--isOpen\\" aria-label=\\"Toggle legend\\" aria-expanded=\\"true\\" aria-controls=\\"legendId\\" data-test-subj=\\"vislibToggleLegend\\" title=\\"Toggle legend\\"><span data-euiicon-type=\\"list\\" color=\\"text\\"></span></button><ul class=\\"visLegend__list\\" id=\\"legendId\\"><li class=\\"visLegend__value\\"><div class=\\"euiPopover css-6tb1tw-euiPopover\\"><div class=\\"euiPopover__anchor css-zih94u-render\\"><button class=\\"euiButtonEmpty visLegend__button css-143rh05-euiButtonDisplay-euiButtonEmpty-xs-empty-text-flush-left\\" type=\\"button\\" data-label=\\"A\\" title=\\"A\\" aria-label=\\"A, toggle options\\" data-test-subj=\\"legend-A\\"><span class=\\"euiButtonEmpty__content css-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\"><span data-euiicon-type=\\"dot\\" color=\\"red\\" data-test-subj=\\"legendSelectedColor-red\\"></span><span class=\\"visLegend__valueTitle\\">A</span></span></span></button></div></div></li><li class=\\"visLegend__value\\"><div class=\\"euiPopover css-6tb1tw-euiPopover\\"><div class=\\"euiPopover__anchor css-zih94u-render\\"><button class=\\"euiButtonEmpty visLegend__button css-143rh05-euiButtonDisplay-euiButtonEmpty-xs-empty-text-flush-left\\" type=\\"button\\" data-label=\\"B\\" title=\\"B\\" aria-label=\\"B, toggle options\\" data-test-subj=\\"legend-B\\"><span class=\\"euiButtonEmpty__content css-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\"><span data-euiicon-type=\\"dot\\" color=\\"red\\" data-test-subj=\\"legendSelectedColor-red\\"></span><span class=\\"visLegend__valueTitle\\">B</span></span></span></button></div></div></li></ul></div>"`;
exports[`VisLegend Component Legend open should match the snapshot 1`] = `"<div class=\\"visLegend\\"><button type=\\"button\\" class=\\"visLegend__toggle kbn-resetFocusState visLegend__toggle--isOpen\\" aria-label=\\"Toggle legend\\" aria-expanded=\\"true\\" aria-controls=\\"legendId\\" data-test-subj=\\"vislibToggleLegend\\" title=\\"Toggle legend\\"><span data-euiicon-type=\\"list\\" color=\\"text\\"></span></button><ul class=\\"visLegend__list\\" id=\\"legendId\\"><li class=\\"visLegend__value\\"><div class=\\"euiPopover css-bvzum9-euiPopover-block\\"><button class=\\"euiButtonEmpty visLegend__button css-143rh05-euiButtonDisplay-euiButtonEmpty-xs-empty-text-flush-left\\" type=\\"button\\" data-label=\\"A\\" title=\\"A\\" aria-label=\\"A, toggle options\\" data-test-subj=\\"legend-A\\"><span class=\\"euiButtonEmpty__content css-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\"><span data-euiicon-type=\\"dot\\" color=\\"red\\" data-test-subj=\\"legendSelectedColor-red\\"></span><span class=\\"visLegend__valueTitle\\">A</span></span></span></button></div></li><li class=\\"visLegend__value\\"><div class=\\"euiPopover css-bvzum9-euiPopover-block\\"><button class=\\"euiButtonEmpty visLegend__button css-143rh05-euiButtonDisplay-euiButtonEmpty-xs-empty-text-flush-left\\" type=\\"button\\" data-label=\\"B\\" title=\\"B\\" aria-label=\\"B, toggle options\\" data-test-subj=\\"legend-B\\"><span class=\\"euiButtonEmpty__content css-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\"><span data-euiicon-type=\\"dot\\" color=\\"red\\" data-test-subj=\\"legendSelectedColor-red\\"></span><span class=\\"visLegend__valueTitle\\">B</span></span></span></button></div></li></ul></div>"`;

View file

@ -28,17 +28,17 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
expect(todos.length).to.be(2);
// check that filters work
await (await find.byCssSelector('label[title="Completed"]')).click();
await (await find.byButtonText('Completed')).click();
await testSubjects.missingOrFail(`todoPending`);
todos = await testSubjects.findAll(`~todoItem`);
expect(todos.length).to.be(1);
await (await find.byCssSelector('label[title="Todo"]')).click();
await (await find.byButtonText('Todo')).click();
await testSubjects.missingOrFail(`todoPending`);
todos = await testSubjects.findAll(`~todoItem`);
expect(todos.length).to.be(1);
await (await find.byCssSelector('label[title="All"]')).click();
await (await find.byButtonText('All')).click();
await testSubjects.missingOrFail(`todoPending`);
todos = await testSubjects.findAll(`~todoItem`);
expect(todos.length).to.be(2);
@ -56,9 +56,10 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
let newTodoCheckbox = await newTodo.findByTestSubject('~todoCheckbox');
expect(await newTodoCheckbox.isSelected()).to.be(false);
await (await newTodo.findByTagName('label')).click();
await newTodo.click();
await testSubjects.missingOrFail(`todoPending`);
await (await find.byCssSelector('label[title="Completed"]')).click();
await (await find.byButtonText('Completed')).click();
await testSubjects.missingOrFail(`todoPending`);
todos = await testSubjects.findAll(`~todoItem`);
expect(todos.length).to.be(2);

View file

@ -107,6 +107,8 @@ export class TimePickerPageObject extends FtrService {
} else {
await this.testSubjects.setValue(dataTestSubj, value);
}
await this.testSubjects.pressEnter(dataTestSubj);
}
private async showStartEndTimes() {

View file

@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
import expect from '@kbn/expect';
import { FtrService } from '../ftr_provider_context';
import { WebElementWrapper } from './lib/web_element_wrapper';
@ -84,6 +85,7 @@ export class ComboBoxService extends FtrService {
const isOptionSelected = await this.isOptionSelected(comboBoxElement, trimmedValue);
if (isOptionSelected) {
this.log.debug(`value is already selected. returning`);
return;
}
@ -116,7 +118,7 @@ export class ComboBoxService extends FtrService {
const [alternate] = alternateTitle
? await this.find.allByCssSelector(
`.euiFilterSelectItem[title="${alternateTitle}"]`,
`.euiFilterSelectItem[title="${alternateTitle}" i]`,
this.WAIT_FOR_EXISTS_TIME
)
: [];
@ -177,15 +179,28 @@ export class ComboBoxService extends FtrService {
* @param comboBoxElement element that wraps up EuiComboBox
* @param filterValue text
*/
private async setFilterValue(
public async setFilterValue(
comboBoxElement: WebElementWrapper,
filterValue: string
): Promise<void> {
const input = await comboBoxElement.findByTagName('input');
await input.clearValue();
await this.waitForOptionsListLoading(comboBoxElement);
await input.type(filterValue);
await this.waitForOptionsListLoading(comboBoxElement);
await this.retry.try(async () => {
// Wait for the input to not be disabled before typing into it (otherwise
// typing will sometimes trigger the global search bar instead)
expect(await input.isEnabled()).to.equal(true);
// Some Kibana comboboxes force state to not be clearable, so we can't use `input.clearValue()`.
// This is not-great production UX and shouldn't be happening, but for now we're going to
// work around it in FTR tests by selecting all existing text and typing to replace
if (!!(await input.getAttribute('value'))) {
await input.selectValueWithKeyboard();
}
await input.type(filterValue);
await this.waitForOptionsListLoading(comboBoxElement);
expect(await input.getAttribute('value')).to.equal(filterValue);
});
}
/**
@ -241,9 +256,29 @@ export class ComboBoxService extends FtrService {
this.log.debug(`comboBox.getComboBoxSelectedOptions, comboBoxSelector: ${comboBoxSelector}`);
const comboBox = await this.testSubjects.find(comboBoxSelector);
const $ = await comboBox.parseDomContent();
return $('.euiComboBoxPill')
if (await this.isSingleSelectionPlainText(comboBox)) {
const input = $('[data-test-subj="comboBoxSearchInput"]');
this.log.debug('Single selection value: ', input.val());
const isValid = input.attr('aria-invalid') !== 'true';
if (isValid) {
const value = input.val();
return value ? [value] : []; // Don't return empty strings
} else {
this.log.debug(
'Single selection value is not valid and thus not selected - returning empty array'
);
return [];
}
}
const options = $('.euiComboBoxPill')
.toArray()
.map((option) => $(option).text());
return options;
}
/**
@ -315,8 +350,8 @@ export class ComboBoxService extends FtrService {
if (!isOptionsListOpen) {
await this.retry.try(async () => {
const toggleBtn = await comboBoxElement.findByTestSubject('comboBoxInput');
await toggleBtn.click();
const inputWrapper = await this.getComboBoxInputWrapper(comboBoxElement);
await inputWrapper.click();
});
}
}
@ -333,9 +368,21 @@ export class ComboBoxService extends FtrService {
): Promise<boolean> {
this.log.debug(`comboBox.isOptionSelected, value: ${value}`);
const $ = await comboBoxElement.parseDomContent();
if (await this.isSingleSelectionPlainText(comboBoxElement)) {
const input = $('input[role="combobox"]');
const hasValidValue =
input.attr('aria-invalid') !== 'true' &&
value.toLowerCase().trim() === input.val().toLowerCase().trim(); // Normalizing text here for Firefox driver shenanigans
return !!hasValidValue;
}
const selectedOptions = $('.euiComboBoxPill')
.toArray()
.map((option) => $(option).text());
return (
selectedOptions.length === 1 &&
selectedOptions[0].toLowerCase().trim() === value.toLowerCase().trim()
@ -369,4 +416,26 @@ export class ComboBoxService extends FtrService {
this.log.debug(`isDisabled:${isDisabled}`);
return isDisabled?.toLowerCase() === 'true';
}
/**
* Single selection plain text comboboxes do not render pill text, but instead render
* selected as well as search values in the child <input>
*/
private async isSingleSelectionPlainText(comboBoxElement: WebElementWrapper): Promise<boolean> {
const inputWrapper = await this.getComboBoxInputWrapper(comboBoxElement);
return await inputWrapper.elementHasClass('euiComboBox__inputWrap--plainText');
}
/**
* Kibana devs sometimes pass in the `comboBoxInput` element and not the parent wrapper 🤷
* This util accounts for that and returns the `data-test-subj="comboBoxInput"` element no matter what
*/
private async getComboBoxInputWrapper(
comboBoxElement: WebElementWrapper
): Promise<WebElementWrapper> {
const isInputWrapper = await comboBoxElement.elementHasClass('euiComboBox__inputWrap');
return isInputWrapper
? comboBoxElement
: await comboBoxElement.findByTestSubject('comboBoxInput');
}
}

View file

@ -261,28 +261,28 @@ export class WebElementWrapper {
* @default { charByChar: false }
*/
async clearValueWithKeyboard(options: TypeOptions = { charByChar: false }) {
const value = await this.getAttribute('value');
if (!value.length) {
return;
}
if (options.charByChar === true) {
const value = await this.getAttribute('value');
for (let i = 0; i <= value.length; i++) {
await this.pressKeys(this.Keys.BACK_SPACE);
await setTimeoutAsync(100);
}
} else {
if (this.isChromium) {
// https://bugs.chromium.org/p/chromedriver/issues/detail?id=30
await this.retryCall(async function clearValueWithKeyboard(wrapper) {
await wrapper.driver.executeScript(`arguments[0].select();`, wrapper._webElement);
});
await this.pressKeys(this.Keys.BACK_SPACE);
} else {
const selectionKey = this.Keys[process.platform === 'darwin' ? 'COMMAND' : 'CONTROL'];
await this.pressKeys([selectionKey, 'a']);
await this.pressKeys(this.Keys.NULL); // Release modifier keys
await this.pressKeys(this.Keys.BACK_SPACE); // Delete all content
}
await this.selectValueWithKeyboard();
await this.pressKeys(this.Keys.BACK_SPACE);
}
}
async selectValueWithKeyboard() {
const selectionKey = this.Keys[process.platform === 'darwin' ? 'COMMAND' : 'CONTROL'];
await this.pressKeys([selectionKey, 'a']);
await this.pressKeys(this.Keys.NULL); // Release modifier keys
}
/**
* Types a key sequence on the DOM element represented by this instance. Modifier keys
* (SHIFT, CONTROL, ALT, META) are stateful; once a modifier is processed in the key sequence,

View file

@ -58,7 +58,7 @@ describe('Conversation selector', () => {
</TestProviders>
);
expect(getByTestId('conversation-selector')).toBeInTheDocument();
expect(getByTestId('euiComboBoxPill')).toHaveTextContent(welcomeConvo.id);
expect(getByTestId('comboBoxSearchInput')).toHaveValue(welcomeConvo.id);
});
it('On change, selects new item', () => {
const { getByTestId } = render(
@ -78,7 +78,7 @@ describe('Conversation selector', () => {
expect(onConversationSelected).toHaveBeenCalledWith(alertConvo.id);
});
it('On clear input, clears selected options', () => {
const { getByText, queryByText, getByTestId, queryByTestId } = render(
const { getByPlaceholderText, queryByPlaceholderText, getByTestId, queryByTestId } = render(
<TestProviders
providerContext={{
getInitialConversations: () => ({
@ -90,10 +90,10 @@ describe('Conversation selector', () => {
<ConversationSelector {...defaultProps} />
</TestProviders>
);
expect(getByTestId('euiComboBoxPill')).toBeInTheDocument();
expect(queryByText(CONVERSATION_SELECTOR_PLACE_HOLDER)).not.toBeInTheDocument();
expect(getByTestId('comboBoxSearchInput')).toBeInTheDocument();
expect(queryByPlaceholderText(CONVERSATION_SELECTOR_PLACE_HOLDER)).not.toBeInTheDocument();
fireEvent.click(getByTestId('comboBoxClearButton'));
expect(getByText(CONVERSATION_SELECTOR_PLACE_HOLDER)).toBeInTheDocument();
expect(getByPlaceholderText(CONVERSATION_SELECTOR_PLACE_HOLDER)).toBeInTheDocument();
expect(queryByTestId('euiComboBoxPill')).not.toBeInTheDocument();
});

View file

@ -30,7 +30,7 @@ describe('ConversationSelectorSettings', () => {
});
it('Selects an existing conversation', () => {
const { getByTestId } = render(<ConversationSelectorSettings {...testProps} />);
expect(getByTestId('comboBoxInput')).toHaveTextContent(welcomeConvo.id);
expect(getByTestId('comboBoxSearchInput')).toHaveValue(welcomeConvo.id);
fireEvent.click(getByTestId('comboBoxToggleListButton'));
fireEvent.click(getByTestId(alertConvo.id));
expect(onConversationSelectionChange).toHaveBeenCalledWith(alertConvo);

View file

@ -25,7 +25,7 @@ describe('SystemPromptSelector', () => {
});
it('Selects an existing quick prompt', () => {
const { getByTestId } = render(<SystemPromptSelector {...testProps} />);
expect(getByTestId('euiComboBoxPill')).toHaveTextContent(mockSystemPrompts[0].name);
expect(getByTestId('comboBoxSearchInput')).toHaveValue(mockSystemPrompts[0].name);
fireEvent.click(getByTestId('comboBoxToggleListButton'));
fireEvent.click(getByTestId(`systemPromptSelector-${mockSystemPrompts[1].id}`));
expect(onSystemPromptSelectionChange).toHaveBeenCalledWith(mockSystemPrompts[1]);

View file

@ -15,7 +15,7 @@ describe('ModelSelector', () => {
const { getByTestId } = render(
<ModelSelector onModelSelectionChange={onModelSelectionChange} />
);
expect(getByTestId('euiComboBoxPill')).toHaveTextContent(MODEL_GPT_3_5_TURBO);
expect(getByTestId('comboBoxSearchInput')).toHaveValue(MODEL_GPT_3_5_TURBO);
});
it('should call onModelSelectionChange when custom option', () => {
const onModelSelectionChange = jest.fn();

View file

@ -131,7 +131,9 @@ describe('CreateMaintenanceWindowForm', () => {
'Press the down key to open a popover containing a calendar.'
);
const recurringInput = within(result.getByTestId('recurring-field')).getByTestId('input');
const timezoneInput = within(result.getByTestId('timezone-field')).getByTestId('input');
const timezoneInput = within(result.getByTestId('timezone-field')).getByTestId(
'comboBoxSearchInput'
);
await waitFor(() => {
expect(
@ -156,7 +158,7 @@ describe('CreateMaintenanceWindowForm', () => {
expect(dateInputs[0]).toHaveValue('03/23/2023 09:00 PM');
expect(dateInputs[1]).toHaveValue('03/25/2023 09:00 PM');
expect(recurringInput).toBeChecked();
expect(timezoneInput).toHaveTextContent('America/Los_Angeles');
expect(timezoneInput).toHaveValue('America/Los_Angeles');
});
it('should initialize MWs without category ids properly', async () => {

View file

@ -94,7 +94,7 @@ describe('RecurringSchedule', () => {
const endsInput = within(result.getByTestId('ends-field')).getByTestId('never');
expect(frequencyInput).toHaveValue('3');
expect(endsInput).toBeChecked();
expect(endsInput).toHaveAttribute('aria-pressed', 'true');
});
it('should prefill the form when provided with initialValue', () => {
@ -119,7 +119,7 @@ describe('RecurringSchedule', () => {
'Press the down key to open a popover containing a calendar.'
);
expect(frequencyInput).toHaveValue('1');
expect(endsInput).toBeChecked();
expect(endsInput).toHaveAttribute('aria-pressed', 'true');
expect(untilInput).toHaveValue('03/24/2023');
});
});

View file

@ -82,7 +82,7 @@ describe('Service groups', () => {
it('creates a service group', () => {
cy.getByTestSubj('apmCreateServiceGroupButton').click();
cy.getByTestSubj('apmGroupNameInput').type('go services');
cy.getByTestSubj('apmGroupNameInput').type('go services{enter}');
cy.contains('Select services').click();
cy.getByTestSubj('headerFilterKuerybar').type('agent.name:"go"{enter}');
cy.contains('synth-go-1');

View file

@ -38,7 +38,9 @@ describe('Errors table', () => {
it('Alerts table with the search bar is populated', () => {
cy.visitKibana(serviceOverviewHref);
cy.contains('opbeans-java');
cy.contains('All');
cy.get(
'[data-test-subj="environmentFilter"] [data-test-subj="comboBoxSearchInput"]'
).should('have.value', 'All');
cy.contains('Active');
cy.contains('Recovered');
cy.getByTestSubj('globalQueryBar').should('exist');

View file

@ -226,9 +226,9 @@ describe('Service Overview', () => {
'suggestionsRequest'
);
cy.getByTestSubj('environmentFilter').find('input').type('production', {
force: true,
});
cy.getByTestSubj('environmentFilter')
.find('input')
.type('{selectall}production', { force: true });
cy.expectAPIsToHaveBeenCalledWith({
apisIntercepted: ['@suggestionsRequest'],

View file

@ -107,7 +107,10 @@ describe('Agent configuration', () => {
cy.contains('Create configuration');
cy.contains('Edit').click();
cy.wait('@serviceEnvironmentApi');
cy.contains('production');
cy.getByTestSubj('serviceEnviromentComboBox')
.find('input')
.invoke('val')
.should('contain', 'production');
});
it('displays All label when selecting all option', () => {
cy.intercept(
@ -129,6 +132,9 @@ describe('Agent configuration', () => {
cy.contains('Environment All');
cy.contains('Edit').click();
cy.wait('@serviceEnvironmentApi');
cy.contains('All');
cy.getByTestSubj('serviceEnviromentComboBox')
.find('input')
.invoke('val')
.should('contain', 'All');
});
});

View file

@ -130,7 +130,7 @@ describe('Storage Explorer', () => {
it('with the correct environment when changing the environment', () => {
cy.wait(mainAliasNames);
cy.getByTestSubj('environmentFilter').type('production');
cy.getByTestSubj('environmentFilter').type('{selectall}production');
cy.contains('button', 'production').click({ force: true });

View file

@ -94,14 +94,16 @@ Cypress.Commands.add(
.nextAll()
.find('[data-test-subj="superDatePickerAbsoluteDateInput"]')
.clear({ force: true })
.type(moment(start).format(format), { force: true });
.type(moment(start).format(format), { force: true })
.type('{enter}');
cy.getByTestSubj('superDatePickerendDatePopoverButton').click();
cy.contains('End date')
.nextAll()
.find('[data-test-subj="superDatePickerAbsoluteDateInput"]')
.clear({ force: true })
.type(moment(end).format(format), { force: true });
.type(moment(end).format(format), { force: true })
.type('{enter}');
}
);

View file

@ -3,32 +3,28 @@
exports[`TransactionActionMenu component matches the snapshot 1`] = `
<div>
<div
class="euiPopover euiPopover-isOpen emotion-euiPopover"
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
id="transactionActionMenu"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
data-test-subj="apmActionMenuButtonInvestigateButton"
type="button"
>
<button
class="euiButton emotion-euiButtonDisplay-m-defaultMinWidth-base-primary"
data-test-subj="apmActionMenuButtonInvestigateButton"
type="button"
<span
class="emotion-euiButtonDisplayContent"
>
<span
class="emotion-euiButtonDisplayContent"
class="eui-textTruncate"
>
<span
class="eui-textTruncate"
>
Investigate
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Investigate
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
`;

View file

@ -419,9 +419,9 @@ describe('TransactionActionMenu component', () => {
component
.getByTestId(`${key}.value`)
.querySelector(
'[data-test-subj="comboBoxInput"] span'
) as HTMLSpanElement
).textContent,
'[data-test-subj="comboBoxSearchInput"]'
) as HTMLInputElement
).value,
};
};
expect(getFilterKeyValue('service.name')).toEqual({

View file

@ -4,7 +4,7 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { fireEvent, render, screen } from '@testing-library/react';
import { fireEvent, render, screen, within } from '@testing-library/react';
import { HttpStart } from '@kbn/core/public';
import React from 'react';
import {
@ -80,9 +80,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_onPrem'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
let commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -128,12 +136,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
expect(
component.getByTestId('policySelector_onPrem')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_onPrem'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -164,12 +177,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
expect(
component.getByTestId('policySelector_onPrem')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_onPrem'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -206,12 +224,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
expect(
component.getByTestId('policySelector_cloud')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_cloud'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -245,12 +268,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Elastic Cloud agent policy')
).toBeInTheDocument();
expect(
component.getByTestId('policySelector_policy-elastic-agent-on-cloud')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_policy-elastic-agent-on-cloud'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Elastic Cloud agent policy');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -280,9 +308,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_onPrem'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -340,12 +376,17 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
expect(
component.getByTestId('policySelector_onPrem')
).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_onPrem'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`
@ -379,10 +420,16 @@ describe('TutorialConfigAgent', () => {
kibanaVersion="8.0.0"
/>
);
expect(
await screen.findByText('Default Standalone configuration')
).toBeInTheDocument();
expect(component.getByTestId('policySelector_cloud')).toBeInTheDocument();
const policySelectorWrapper = await screen.findByTestId(
'policySelector_cloud'
);
expect(policySelectorWrapper).toBeInTheDocument();
const input = within(policySelectorWrapper).getByTestId(
'comboBoxSearchInput'
);
expect(input).toHaveValue('Default Standalone configuration');
const commands = component.getByTestId('commands').innerHTML;
expect(commands).not.toEqual('');
expect(commands).toMatchInlineSnapshot(`

View file

@ -17,7 +17,6 @@ interface Props {
ownFocus?: boolean;
tooltip?: string;
panelClassName?: string;
anchorClassName?: string;
anchorPosition?: string;
panelPaddingSize?: 'none' | 's' | 'm' | 'l';
id?: string;

File diff suppressed because one or more lines are too long

View file

@ -9,7 +9,7 @@ exports[`<Settings /> can navigate Autoplay Settings 1`] = `
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: -16px; left: -22px; will-change: transform, opacity; z-index: 2000;"
@ -102,7 +102,7 @@ exports[`<Settings /> can navigate Autoplay Settings 2`] = `
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-isOpen-hasTransform-top"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-light-isOpen-hasTransform-top"
data-popover-open="true"
data-popover-panel="true"
role="dialog"
@ -345,7 +345,7 @@ exports[`<Settings /> can navigate Toolbar Settings, closes when activated 1`] =
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: -16px; left: -22px; will-change: transform, opacity; z-index: 2000;"
@ -438,7 +438,7 @@ exports[`<Settings /> can navigate Toolbar Settings, closes when activated 2`] =
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-isOpen-hasTransform-top"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-light-isOpen-hasTransform-top"
data-popover-open="true"
data-popover-panel="true"
role="dialog"
@ -615,7 +615,7 @@ exports[`<Settings /> can navigate Toolbar Settings, closes when activated 3`] =
aria-describedby="generated-id"
aria-live="off"
aria-modal="true"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-hasTransform"
class="euiPanel euiPanel--plain euiPopover__panel emotion-euiPanel-grow-m-plain-euiPopover__panel-light-hasTransform"
data-popover-panel="true"
role="dialog"
style="top: -16px; left: -22px; z-index: 2000;"

View file

@ -8,6 +8,10 @@
import userEvent from '@testing-library/user-event';
import { waitFor } from '@testing-library/react';
import { renderHook } from '@testing-library/react-hooks/dom';
import {
waitForEuiPopoverOpen,
waitForEuiContextMenuPanelTransition,
} from '@elastic/eui/lib/test/rtl';
import { useActions } from './use_actions';
import { basicCase } from '../../containers/mock';
@ -69,13 +73,12 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByText('Actions')).toBeInTheDocument();
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
});
expect(res.getByText('Actions')).toBeInTheDocument();
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
});
it('change the status of the case', async () => {
@ -89,24 +92,16 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
});
userEvent.click(res.getByTestId(`case-action-status-panel-${basicCase.id}`));
await waitForEuiContextMenuPanelTransition();
userEvent.click(res.getByTestId(`case-action-status-panel-${basicCase.id}`), undefined, {
skipPointerEventsCheck: true,
});
expect(res.getByTestId('cases-bulk-action-status-open')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-status-in-progress')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-status-closed')).toBeInTheDocument();
await waitFor(() => {
expect(res.getByTestId('cases-bulk-action-status-open')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-status-in-progress')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-status-closed')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-bulk-action-status-in-progress'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-bulk-action-status-in-progress'));
await waitFor(() => {
expect(updateCasesSpy).toHaveBeenCalled();
@ -124,25 +119,17 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeInTheDocument();
});
userEvent.click(res.getByTestId(`case-action-severity-panel-${basicCase.id}`));
await waitForEuiContextMenuPanelTransition();
userEvent.click(res.getByTestId(`case-action-severity-panel-${basicCase.id}`), undefined, {
skipPointerEventsCheck: true,
});
expect(res.getByTestId('cases-bulk-action-severity-low')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-severity-medium')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-severity-high')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-severity-critical')).toBeInTheDocument();
await waitFor(() => {
expect(res.getByTestId('cases-bulk-action-severity-low')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-severity-medium')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-severity-high')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-severity-critical')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-bulk-action-severity-medium'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-bulk-action-severity-medium'));
await waitFor(() => {
expect(updateCasesSpy).toHaveBeenCalled();
@ -167,14 +154,9 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-action-copy-id'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-action-copy-id'));
expect(navigator.clipboard.writeText).toHaveBeenCalledWith(basicCase.id);
@ -195,14 +177,9 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-bulk-action-delete'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-bulk-action-delete'));
await waitFor(() => {
expect(res.getByTestId('confirm-delete-case-modal')).toBeInTheDocument();
@ -224,22 +201,15 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-bulk-action-delete'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-bulk-action-delete'));
await waitFor(() => {
expect(res.getByTestId('confirm-delete-case-modal')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('confirmModalCancelButton'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('confirmModalCancelButton'));
expect(res.queryByTestId('confirm-delete-case-modal')).toBeFalsy();
});
@ -257,14 +227,9 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId('cases-bulk-action-tags')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-bulk-action-tags'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-bulk-action-tags'));
await waitFor(() => {
expect(res.getByTestId('cases-edit-tags-flyout')).toBeInTheDocument();
@ -297,14 +262,9 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId('cases-bulk-action-assignees')).toBeInTheDocument();
});
userEvent.click(res.getByTestId('cases-bulk-action-assignees'), undefined, {
skipPointerEventsCheck: true,
});
userEvent.click(res.getByTestId('cases-bulk-action-assignees'));
await waitFor(() => {
expect(res.getByTestId('cases-edit-assignees-flyout')).toBeInTheDocument();
@ -338,14 +298,13 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
expect(res.getByTestId(`actions-separator-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
});
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
expect(res.getByTestId(`actions-separator-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
});
it('shows the correct actions with no delete permissions', async () => {
@ -358,14 +317,13 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
expect(res.queryByTestId('cases-bulk-action-delete')).toBeFalsy();
expect(res.queryByTestId(`actions-separator-${basicCase.id}`)).toBeFalsy();
});
expect(res.getByTestId(`case-action-status-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeInTheDocument();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
expect(res.queryByTestId('cases-bulk-action-delete')).toBeFalsy();
expect(res.queryByTestId(`actions-separator-${basicCase.id}`)).toBeFalsy();
});
it('shows the correct actions with only delete permissions', async () => {
@ -378,14 +336,13 @@ describe('useActions', () => {
const res = appMockRender.render(comp);
userEvent.click(res.getByTestId(`case-action-popover-button-${basicCase.id}`));
await waitForEuiPopoverOpen();
await waitFor(() => {
expect(res.queryByTestId(`case-action-status-panel-${basicCase.id}`)).toBeFalsy();
expect(res.queryByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeFalsy();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
expect(res.queryByTestId(`actions-separator-${basicCase.id}`)).toBeFalsy();
});
expect(res.queryByTestId(`case-action-status-panel-${basicCase.id}`)).toBeFalsy();
expect(res.queryByTestId(`case-action-severity-panel-${basicCase.id}`)).toBeFalsy();
expect(res.getByTestId('cases-action-copy-id')).toBeInTheDocument();
expect(res.getByTestId('cases-bulk-action-delete')).toBeInTheDocument();
expect(res.queryByTestId(`actions-separator-${basicCase.id}`)).toBeFalsy();
});
it('returns null if the user does not have update or delete permissions', async () => {

View file

@ -242,7 +242,7 @@ describe('EditCategory ', () => {
await waitFor(() => {
expect(screen.getByTestId('categories-list')).toBeInTheDocument();
expect(screen.getByText('My category')).toBeInTheDocument();
expect(screen.getByTestId('comboBoxSearchInput')).toHaveValue('My category');
});
expect(screen.getByTestId('edit-category-submit')).toBeDisabled();
@ -265,7 +265,7 @@ describe('EditCategory ', () => {
await waitFor(() => {
expect(screen.getByTestId('categories-list')).toBeInTheDocument();
expect(screen.getByText('My category')).toBeInTheDocument();
expect(screen.getByTestId('comboBoxSearchInput')).toHaveValue('My category');
});
userEvent.click(screen.getByTestId('edit-category-cancel'));
@ -276,7 +276,7 @@ describe('EditCategory ', () => {
await waitFor(() => {
expect(screen.getByTestId('categories-list')).toBeInTheDocument();
expect(screen.getByText('category from the API')).toBeInTheDocument();
expect(screen.getByTestId('comboBoxSearchInput')).toHaveValue('category from the API');
});
});

View file

@ -47,7 +47,7 @@ describe('Category ', () => {
it('renders category correctly', () => {
render(<CategoryComponent {...defaultProps} category="new-category" />);
expect(screen.getByText('new-category')).toBeInTheDocument();
expect(screen.getByRole('combobox')).toHaveValue('new-category');
});
it('renders allow to add new category option', async () => {
@ -56,7 +56,7 @@ describe('Category ', () => {
userEvent.type(screen.getByRole('combobox'), 'new{enter}');
expect(onChange).toBeCalledWith('new');
expect(screen.getByText('new')).toBeInTheDocument();
expect(screen.getByRole('combobox')).toHaveValue('new');
});
it('renders current option list', async () => {
@ -97,10 +97,10 @@ describe('Category ', () => {
expect(onChange).toHaveBeenCalledWith('hi');
});
userEvent.type(screen.getByRole('combobox'), 'Hi{enter}');
userEvent.type(screen.getByRole('combobox'), ' there{enter}');
await waitFor(() => {
expect(onChange).toHaveBeenCalledWith('Hi');
expect(onChange).toHaveBeenCalledWith('hi there');
});
});
});

View file

@ -198,7 +198,7 @@ describe('Assignees', () => {
});
act(() => {
userEvent.click(screen.getByText('Turtle'));
userEvent.click(screen.getByText('Turtle'), undefined, { skipPointerEventsCheck: true });
});
// ensure that the similar user is still available for selection

View file

@ -59,9 +59,7 @@ journey('Step Duration series', async ({ page, params }) => {
await page.click(byTestId('seriesBreakdown'));
await page.click('button[role="option"]:has-text("Step name")');
await page.click('.euiComboBox__inputWrap');
await page.click(
'text=Search Monitor nameCombo box. Selected. Combo box input. Search Monitor name. Ty'
);
await page.click('[role="combobox"][placeholder="Search Monitor name"]');
await page.click('button[role="option"]:has-text("test-monitor - inline")');
await page.click('button:has-text("Apply changes")');
});

View file

@ -39,7 +39,7 @@ describe('Series Builder ReportDefinitionCol', function () {
await waitFor(() => {
expect(screen.getByText('Web Application')).toBeInTheDocument();
expect(screen.getByText('Environment')).toBeInTheDocument();
expect(screen.getByText('Search Environment')).toBeInTheDocument();
expect(screen.getByPlaceholderText('Search Environment')).toBeInTheDocument();
});
});

View file

@ -175,7 +175,7 @@ export function FieldValueSelection({
isOpen={isPopoverOpen || forceOpen}
closePopover={closePopover}
anchorPosition={anchorPosition}
style={{ width: '100%' }}
display="block"
>
<EuiSelectable
searchable
@ -290,11 +290,8 @@ export default FieldValueSelection;
const Wrapper = styled.div`
&&& {
div.euiPopover__anchor {
.euiButton {
width: 100%;
.euiButton {
width: 100%;
}
}
}
`;

View file

@ -100,7 +100,7 @@ describe('Input package create and edit package policy', () => {
editPackagePolicyandShowAdvanced(INPUT_TEST_PACKAGE, packagePolicyName);
cy.getBySel(POLICY_EDITOR.EDIT_MAPPINGS_BTN).click();
cy.getBySel(CONFIRM_MODAL.CONFIRM_BUTTON).click();
cy.get('body').should('contain', `logs-${datasetName}@custom`);
cy.get('body').should('contain', `logs${datasetName}@custom`);
});
});

View file

@ -7,7 +7,7 @@
import React from 'react';
import { act, fireEvent, waitFor } from '@testing-library/react';
import { act, fireEvent, waitFor, within } from '@testing-library/react';
import { createFleetTestRendererMock } from '../../../../../../mock';
@ -54,8 +54,9 @@ describe('AgentUpgradeAgentModal', () => {
agentCount: 3,
});
const el = utils.getByTestId('agentUpgradeModal.MaintenanceCombobox');
expect(el?.textContent).toBe('Immediately');
const container = utils.getByTestId('agentUpgradeModal.MaintenanceCombobox');
const input = within(container).getByRole<HTMLInputElement>('combobox');
expect(input?.value).toBe('Immediately');
});
it('should set the default to Immediately if there is less than 10 agents using selected agents', async () => {
@ -64,8 +65,9 @@ describe('AgentUpgradeAgentModal', () => {
agentCount: 3,
});
const el = utils.getByTestId('agentUpgradeModal.MaintenanceCombobox');
expect(el?.textContent).toBe('Immediately');
const container = utils.getByTestId('agentUpgradeModal.MaintenanceCombobox');
const input = within(container).getByRole<HTMLInputElement>('combobox');
expect(input?.value).toBe('Immediately');
});
it('should set the default to 1 hour if there is more than 10 agents', async () => {
@ -74,8 +76,9 @@ describe('AgentUpgradeAgentModal', () => {
agentCount: 13,
});
const el = utils.getByTestId('agentUpgradeModal.MaintenanceCombobox');
expect(el?.textContent).toBe('1 hour');
const container = utils.getByTestId('agentUpgradeModal.MaintenanceCombobox');
const input = within(container).getByRole<HTMLInputElement>('combobox');
expect(input?.value).toBe('1 hour');
});
});
@ -98,9 +101,11 @@ describe('AgentUpgradeAgentModal', () => {
agentCount: 1,
});
const el = utils.getByTestId('agentUpgradeModal.VersionCombobox');
const container = utils.getByTestId('agentUpgradeModal.VersionCombobox');
const input = within(container).getByRole<HTMLInputElement>('combobox');
await waitFor(() => {
expect(el.textContent).toEqual('8.10.2');
expect(input?.value).toEqual('8.10.2');
});
});

View file

@ -125,8 +125,7 @@ export const GridColumn = ({
// Ensure that cards wrapped in EuiTours/EuiPopovers correctly inherit the full grid row height
css={css`
& > .euiPopover,
& > .euiPopover > .euiPopover__anchor,
& > .euiPopover > .euiPopover__anchor > .euiCard {
& > .euiPopover > .euiCard {
height: 100%;
}
`}

View file

@ -27,7 +27,7 @@ const toggleDeletePhase = async (testBed: TestBed) => {
if (action === 'disable') {
button.simulate('click');
} else {
button.find('input').simulate('change');
button.find('button').simulate('click');
}
});
component.update();

View file

@ -377,7 +377,9 @@ describe('Test pipeline', () => {
// Click the "Configuration" tab
await actions.clickProcessorConfigurationTab();
// Verify type selector has not changed
expect(find('processorTypeSelector.input').text()).toBe('Set');
expect(find('processorTypeSelector.input').find('[role="combobox"]').props().value).toBe(
'Set'
);
});
});

View file

@ -40,24 +40,26 @@ describe('TreeNav component', () => {
it('mount with Logical View selected by default', async () => {
renderResult = mockedContext.render(<TreeNavContainer />);
const elemLabel = await renderResult.getByDisplayValue(/logical/i);
expect(elemLabel).toBeChecked();
const elemLabel = await renderResult.getByTestId('treeNavType_generated-idlogical');
expect(elemLabel).toHaveAttribute('aria-pressed', 'true');
});
it('shows the tree path according with the selected view type', async () => {
renderResult = mockedContext.render(<TreeNavContainer />);
const logicalViewPath = 'cluster / namespace / pod / container image';
const logicViewRadio = await renderResult.getByDisplayValue(/logical/i);
expect(logicViewRadio).toBeChecked();
const logicViewButton = renderResult.getByTestId('treeNavType_generated-idlogical');
expect(logicViewButton).toHaveAttribute('aria-pressed', 'true');
expect(renderResult.getByText(logicalViewPath)).toBeInTheDocument();
const infraStructureViewRadio = await renderResult.getByDisplayValue(/infrastructure/i);
const infraStructureViewRadio = renderResult.getByTestId(
'treeNavType_generated-idinfrastructure'
);
infraStructureViewRadio.click();
expect(renderResult.getByText('cluster / node / pod / container image')).toBeInTheDocument();
logicViewRadio.click();
logicViewButton.click();
expect(renderResult.getByText(logicalViewPath)).toBeInTheDocument();
});

View file

@ -53,7 +53,6 @@ export const FilterPopover = ({
return (
<EuiPopover
data-test-subj="indexPattern-filters-existingFilterContainer"
anchorClassName="eui-fullWidth"
panelClassName="lnsIndexPatternDimensionEditor__filtersEditor"
isOpen={isOpen}
ownFocus

View file

@ -245,9 +245,9 @@ describe('dimension editor', () => {
userEvent.type(customPrefixTextbox, prefix);
};
return {
settingNone: screen.getByLabelText(/none/i),
settingAuto: screen.getByLabelText(/auto/i),
settingCustom: screen.getByLabelText(/custom/i),
settingNone: screen.getByTitle(/none/i),
settingAuto: screen.getByTitle(/auto/i),
settingCustom: screen.getByTitle(/custom/i),
customPrefixTextbox,
typePrefix,
...rtlRender,
@ -276,9 +276,9 @@ describe('dimension editor', () => {
state: localState,
});
expect(settingAuto).toBeChecked();
expect(settingNone).not.toBeChecked();
expect(settingCustom).not.toBeChecked();
expect(settingAuto).toHaveAttribute('aria-pressed', 'true');
expect(settingNone).toHaveAttribute('aria-pressed', 'false');
expect(settingCustom).toHaveAttribute('aria-pressed', 'false');
expect(customPrefixTextbox).not.toBeInTheDocument();
});
@ -286,9 +286,9 @@ describe('dimension editor', () => {
const { settingAuto, settingCustom, settingNone, customPrefixTextbox } =
renderSecondaryMetricEditor({ state: { ...localState, secondaryPrefix: NONE_PREFIX } });
expect(settingNone).toBeChecked();
expect(settingAuto).not.toBeChecked();
expect(settingCustom).not.toBeChecked();
expect(settingNone).toHaveAttribute('aria-pressed', 'true');
expect(settingAuto).toHaveAttribute('aria-pressed', 'false');
expect(settingCustom).toHaveAttribute('aria-pressed', 'false');
expect(customPrefixTextbox).not.toBeInTheDocument();
});
@ -297,9 +297,9 @@ describe('dimension editor', () => {
const { settingAuto, settingCustom, settingNone, customPrefixTextbox } =
renderSecondaryMetricEditor({ state: customPrefixState });
expect(settingAuto).not.toBeChecked();
expect(settingNone).not.toBeChecked();
expect(settingCustom).toBeChecked();
expect(settingAuto).toHaveAttribute('aria-pressed', 'false');
expect(settingNone).toHaveAttribute('aria-pressed', 'false');
expect(settingCustom).toHaveAttribute('aria-pressed', 'true');
expect(customPrefixTextbox).toHaveValue(customPrefixState.secondaryPrefix);
});
@ -454,11 +454,10 @@ describe('dimension editor', () => {
);
const supportingVisOptions = {
none: screen.queryByLabelText(/none/i),
none: screen.queryByTitle(/none/i),
// in eui when bar or line become disabled they change from input to button so we have to do this weird check
bar: screen.queryByLabelText(/bar/i) || screen.queryByRole('button', { name: /bar/i }),
trendline:
screen.queryByLabelText(/line/i) || screen.queryByRole('button', { name: /line/i }),
bar: screen.queryByTitle(/bar/i) || screen.queryByRole('button', { name: /bar/i }),
trendline: screen.queryByTitle(/line/i) || screen.queryByRole('button', { name: /line/i }),
};
const clickOnSupportingVis = (type: SupportingVisType) => {
@ -472,8 +471,8 @@ describe('dimension editor', () => {
return {
progressDirectionShowing: screen.queryByTestId('lnsMetric_progress_direction_buttons'),
progressOptions: {
vertical: screen.queryByLabelText(/vertical/i),
horizontal: screen.queryByLabelText(/horizontal/i),
vertical: screen.queryByTitle(/vertical/i),
horizontal: screen.queryByTitle(/horizontal/i),
},
supportingVisOptions,
clickOnSupportingVis,
@ -501,21 +500,21 @@ describe('dimension editor', () => {
const { supportingVisOptions } = renderAdditionalSectionEditor({
state: { ...stateWOTrend, showBar: false, maxAccessor: undefined },
});
expect(supportingVisOptions.none).toBeChecked();
expect(supportingVisOptions.none).toHaveAttribute('aria-pressed', 'true');
});
it('when `showBar` is true and maximum value is not defined, bar should be selected', () => {
const { supportingVisOptions } = renderAdditionalSectionEditor({
state: { ...stateWOTrend, showBar: true },
});
expect(supportingVisOptions.bar).toBeChecked();
expect(supportingVisOptions.bar).toHaveAttribute('aria-pressed', 'true');
});
it('when `showBar` is true and trendline is defined, line should be selected', () => {
const { supportingVisOptions } = renderAdditionalSectionEditor({
state: metricAccessorState,
});
expect(supportingVisOptions.trendline).toBeChecked();
expect(supportingVisOptions.trendline).toHaveAttribute('aria-pressed', 'true');
});
it('should enable bar when max dimension exists', () => {
@ -633,10 +632,10 @@ describe('dimension editor', () => {
state: metricAccessorState,
});
expect(progressOptions.vertical).toBeChecked();
expect(progressOptions.horizontal).not.toBeChecked();
expect(progressOptions.vertical).toHaveAttribute('aria-pressed', 'true');
expect(progressOptions.horizontal).toHaveAttribute('aria-pressed', 'false');
if (progressOptions.horizontal === null) {
throw new Error('horizontal radio button not found');
throw new Error('horizontal button not found');
}
userEvent.click(progressOptions.horizontal);

View file

@ -264,11 +264,15 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual('is');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldMatch"]').text()).toEqual(
'1234'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatchLabel"] input').props().value
).toEqual('1234');
});
test('it renders field values correctly when operator is "isNotOperator"', () => {
@ -299,13 +303,15 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'is not'
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldMatch"]').text()).toEqual(
'1234'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is not');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatchLabel"] input').props().value
).toEqual('1234');
});
test('it renders field values correctly when operator is "isOneOfOperator"', () => {
@ -336,11 +342,13 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'is one of'
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldMatchAny"]').text()).toEqual(
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is one of');
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatchAny"]').first().text()).toEqual(
'1234'
);
});
@ -373,10 +381,12 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'is not one of'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is not one of');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldMatchAny"]').text()).toEqual(
'1234'
);
@ -411,12 +421,15 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'is in list'
);
expect(
wrapper.find('[data-test-subj="valuesAutocompleteComboBox listsComboxBox"]').at(1).text()
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is in list');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteComboBox listsComboxBox"] input').props()
.value
).toEqual('some name');
});
@ -449,12 +462,15 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'is not in list'
);
expect(
wrapper.find('[data-test-subj="valuesAutocompleteComboBox listsComboxBox"]').at(1).text()
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is not in list');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteComboBox listsComboxBox"] input').props()
.value
).toEqual('some name');
});
@ -486,11 +502,16 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'exists'
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldExists"]').text()).toEqual('—');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"] input').props().value
).toEqual('exists');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteComboBox existsComboxBox"] input').props()
.placeholder
).toEqual('—');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryFieldExists"] input').props().disabled
).toBeTruthy();
@ -524,11 +545,16 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('ip');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'does not exist'
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldExists"]').text()).toEqual('—');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"] input').props().value
).toEqual('does not exist');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteComboBox existsComboxBox"] input').props()
.placeholder
).toEqual('—');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryFieldExists"] input').props().disabled
).toBeTruthy();
@ -562,13 +588,15 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('@tags');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'matches'
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldWildcard"]').text()).toEqual(
'1234*'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('@tags');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"] input').props().value
).toEqual('matches');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteWildcard"] input').props().value
).toEqual('1234*');
// doesnt show warning label for non endpoint exception items
expect(
wrapper.find('[data-test-subj="valuesAutocompleteWildcardLabel"] .euiFormHelpText')
@ -637,13 +665,15 @@ describe('BuilderEntryItem', () => {
/>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').text()).toEqual('@tags');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"]').text()).toEqual(
'does not match'
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryFieldWildcard"]').text()).toEqual(
'1234*'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('@tags');
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryOperator"] input').props().value
).toEqual('does not match');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteWildcard"] input').props().value
).toEqual('1234*');
});
test('it uses "correspondingKeywordField" if it exists', () => {

View file

@ -58,18 +58,20 @@ describe('ExceptionBuilderComponent', () => {
</EuiThemeProvider>
);
// console.log(wrapper.find('[data-test-subj="valuesAutocompleteMatch"] input').html());
expect(wrapper.find('EuiFlexGroup[data-test-subj="exceptionItemEntryContainer"]')).toHaveLength(
1
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'Search'
);
expect(wrapper.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is'
);
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatch"]').at(0).text()).toEqual(
'Please select a field first...'
);
expect(
wrapper.find('[data-test-subj="fieldAutocompleteComboBox"] input').props().placeholder
).toEqual('Search');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatch"] input').props().placeholder
).toEqual('Please select a field first...');
});
test('it displays "exceptionListItems" that are passed in', async () => {
@ -103,15 +105,16 @@ describe('ExceptionBuilderComponent', () => {
/>
</EuiThemeProvider>
);
expect(wrapper.find('EuiFlexGroup[data-test-subj="exceptionItemEntryContainer"]')).toHaveLength(
1
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'ip'
);
expect(wrapper.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is one of'
);
expect(
wrapper.find('[data-test-subj="fieldAutocompleteComboBox"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').props().value
).toEqual('is one of');
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatchAny"]').at(0).text()).toEqual(
'some ip'
);
@ -263,25 +266,27 @@ describe('ExceptionBuilderComponent', () => {
expect(
wrapper.find('EuiFlexGroup[data-test-subj="exceptionItemEntryContainer"]')
).toHaveLength(2);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'Search'
);
expect(wrapper.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is'
);
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatch"]').at(0).text()).toEqual(
'Please select a field first...'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').at(0).props()
.placeholder
).toEqual('Search');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatch"] input').at(0).props().placeholder
).toEqual('Please select a field first...');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(1).text()).toEqual(
'Search'
);
expect(wrapper.find('[data-test-subj="operatorAutocompleteComboBox"]').at(1).text()).toEqual(
'is'
);
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatch"]').at(1).text()).toEqual(
'Please select a field first...'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').at(1).props()
.placeholder
).toEqual('Search');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(1).props().value
).toEqual('is');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatch"] input').at(1).props().placeholder
).toEqual('Please select a field first...');
});
});
@ -324,25 +329,25 @@ describe('ExceptionBuilderComponent', () => {
const item1 = wrapper.find('EuiFlexGroup[data-test-subj="exceptionEntriesContainer"]').at(0);
const item2 = wrapper.find('EuiFlexGroup[data-test-subj="exceptionEntriesContainer"]').at(1);
expect(item1.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'Search'
);
expect(item1.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is'
);
expect(item1.find('[data-test-subj="valuesAutocompleteMatch"]').at(0).text()).toEqual(
'Please select a field first...'
);
expect(
item1.find('[data-test-subj="exceptionBuilderEntryField"] input').at(0).props().placeholder
).toEqual('Search');
expect(
item1.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is');
expect(
item1.find('[data-test-subj="valuesAutocompleteMatch"] input').at(0).props().placeholder
).toEqual('Please select a field first...');
expect(item2.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'Search'
);
expect(item2.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is'
);
expect(item2.find('[data-test-subj="valuesAutocompleteMatch"]').at(0).text()).toEqual(
'Please select a field first...'
);
expect(
item2.find('[data-test-subj="exceptionBuilderEntryField"] input').at(0).props().placeholder
).toEqual('Search');
expect(
item2.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is');
expect(
item2.find('[data-test-subj="valuesAutocompleteMatch"] input').at(0).props().placeholder
).toEqual('Please select a field first...');
});
});
@ -378,27 +383,27 @@ describe('ExceptionBuilderComponent', () => {
</EuiThemeProvider>
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'ip'
);
expect(wrapper.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is one of'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').props().value
).toEqual('ip');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is one of');
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatchAny"]').at(0).text()).toEqual(
'some ip'
);
wrapper.find('[data-test-subj="firstRowBuilderDeleteButton"] button').simulate('click');
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'Search'
);
expect(wrapper.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is'
);
expect(wrapper.find('[data-test-subj="valuesAutocompleteMatch"]').at(0).text()).toEqual(
'Please select a field first...'
);
expect(
wrapper.find('[data-test-subj="exceptionBuilderEntryField"] input').at(0).props().placeholder
).toEqual('Search');
expect(
wrapper.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is');
expect(
wrapper.find('[data-test-subj="valuesAutocompleteMatch"] input').at(0).props().placeholder
).toEqual('Please select a field first...');
});
test('it displays "and" badge if at least one exception item includes more than one entry', () => {
@ -507,14 +512,17 @@ describe('ExceptionBuilderComponent', () => {
const entry2 = wrapper
.find('EuiFlexGroup[data-test-subj="exceptionItemEntryContainer"]')
.at(1);
expect(entry2.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).text()).toEqual(
'Search nested field'
);
expect(entry2.find('[data-test-subj="operatorAutocompleteComboBox"]').at(0).text()).toEqual(
'is'
);
expect(
entry2.find('[data-test-subj="exceptionBuilderEntryFieldExists"]').at(0).text()
entry2.find('[data-test-subj="exceptionBuilderEntryField"] input').at(0).props()
.placeholder
).toEqual('Search nested field');
expect(
entry2.find('[data-test-subj="operatorAutocompleteComboBox"] input').at(0).props().value
).toEqual('is');
expect(
entry2.find('[data-test-subj="exceptionBuilderEntryFieldExists"] input').at(0).props()
.placeholder
).toEqual(getEmptyValue());
});
});

View file

@ -81,7 +81,6 @@
flex-grow: 1;
}
.mapLayTocActions__popoverAnchor,
.mapLayTocActions__tooltipAnchor {
max-width: 100%;
}

View file

@ -3,7 +3,6 @@
exports[`TOCEntryActionsPopover is rendered 1`] = `
<Fragment>
<EuiPopover
anchorClassName="mapLayTocActions__popoverAnchor"
anchorPosition="leftUp"
button={
<Memo(Connect(TOCEntryButton))
@ -119,7 +118,6 @@ exports[`TOCEntryActionsPopover is rendered 1`] = `
exports[`TOCEntryActionsPopover should disable Edit features when edit mode active for layer 1`] = `
<Fragment>
<EuiPopover
anchorClassName="mapLayTocActions__popoverAnchor"
anchorPosition="leftUp"
button={
<Memo(Connect(TOCEntryButton))
@ -235,7 +233,6 @@ exports[`TOCEntryActionsPopover should disable Edit features when edit mode acti
exports[`TOCEntryActionsPopover should disable fit to data when supportsFitToBounds is false 1`] = `
<Fragment>
<EuiPopover
anchorClassName="mapLayTocActions__popoverAnchor"
anchorPosition="leftUp"
button={
<Memo(Connect(TOCEntryButton))
@ -351,7 +348,6 @@ exports[`TOCEntryActionsPopover should disable fit to data when supportsFitToBou
exports[`TOCEntryActionsPopover should have "show layer" action when layer is not visible 1`] = `
<Fragment>
<EuiPopover
anchorClassName="mapLayTocActions__popoverAnchor"
anchorPosition="leftUp"
button={
<Memo(Connect(TOCEntryButton))
@ -468,7 +464,6 @@ exports[`TOCEntryActionsPopover should have "show layer" action when layer is no
exports[`TOCEntryActionsPopover should not show edit actions in read only mode 1`] = `
<Fragment>
<EuiPopover
anchorClassName="mapLayTocActions__popoverAnchor"
anchorPosition="leftUp"
button={
<Memo(Connect(TOCEntryButton))
@ -553,7 +548,6 @@ exports[`TOCEntryActionsPopover should not show edit actions in read only mode 1
exports[`TOCEntryActionsPopover should show "show this layer only" action when there are more then 2 layers 1`] = `
<Fragment>
<EuiPopover
anchorClassName="mapLayTocActions__popoverAnchor"
anchorPosition="leftUp"
button={
<Memo(Connect(TOCEntryButton))

View file

@ -283,7 +283,6 @@ export class TOCEntryActionsPopover extends Component<Props, State> {
closePopover={this._closePopover}
panelPaddingSize="none"
anchorPosition="leftUp"
anchorClassName="mapLayTocActions__popoverAnchor"
>
<EuiContextMenu
initialPanelId={0}

View file

@ -37,10 +37,9 @@ describe('AnomalyResultsViewSelector', () => {
// Check the Single Metric Viewer element exists in the selector, and that it is checked.
expect(getByTestId('mlAnomalyResultsViewSelectorSingleMetricViewer')).toBeInTheDocument();
expect(
getByTestId('mlAnomalyResultsViewSelectorSingleMetricViewer')
.querySelector('input')!
.hasAttribute('checked')
).toBe(true);
expect(getByTestId('mlAnomalyResultsViewSelectorSingleMetricViewer')).toHaveAttribute(
'aria-pressed',
'true'
);
});
});

View file

@ -26,26 +26,22 @@ exports[`Node Listing Metric Cell should format a non-percentage metric 1`] = `
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="More information about this metric"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-text"
data-test-subj="monitoringCellIcon-testCell2"
title="More information about this metric"
type="button"
>
<button
aria-label="More information about this metric"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-text"
data-test-subj="monitoringCellIcon-testCell2"
title="More information about this metric"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="sortDown"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="sortDown"
/>
</button>
</div>
</div>
<div
@ -80,26 +76,22 @@ exports[`Node Listing Metric Cell should format a percentage metric 1`] = `
class="euiFlexItem emotion-euiFlexItem-growZero"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="More information about this metric"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-text"
data-test-subj="monitoringCellIcon-testCell"
title="More information about this metric"
type="button"
>
<button
aria-label="More information about this metric"
class="euiButtonIcon emotion-euiButtonIcon-xs-empty-text"
data-test-subj="monitoringCellIcon-testCell"
title="More information about this metric"
type="button"
>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="sortDown"
/>
</button>
</div>
<span
aria-hidden="true"
class="euiButtonIcon__icon"
color="inherit"
data-euiicon-type="sortDown"
/>
</button>
</div>
</div>
<div

View file

@ -54,7 +54,7 @@ describe(
cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => {
cy.contains("SELECT * FROM os_version where name='{{host.os.name}}';");
cy.contains('host.os.platform');
cy.get('input[value="host.os.platform"]').should('exist');
cy.contains('platform');
});
cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => {

View file

@ -49,7 +49,7 @@ describe(
// This is probably due to the tokenization of the fields when it's inactive
cy.get(OSQUERY_FLYOUT_BODY_EDITOR).click();
cy.getBySel('flyout-body-osquery').contains("SELECT * FROM os_version where name='Ubuntu';");
cy.getBySel('flyout-body-osquery').contains('host.os.platform');
cy.getBySel('flyout-body-osquery').find('input[value="host.os.platform"]').should('exist');
cy.getBySel('flyout-body-osquery').contains('platform');
});

View file

@ -157,8 +157,8 @@ describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serve
cy.contains('Days of uptime');
});
cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => {
cy.contains(packName);
cy.getBySel('comboBoxInput').type('{backspace}{enter}');
cy.getBySel('comboBoxSearchInput').should('have.value', packName);
cy.getBySel('comboBoxInput').type('{selectall}{backspace}{enter}');
});
cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => {
cy.contains('select * from uptime1');
@ -166,6 +166,7 @@ describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serve
});
cy.getBySel(RESPONSE_ACTIONS_ITEM_0)
.within(() => {
cy.getBySel('comboBoxSearchInput').click();
cy.contains('Search for a pack to run');
cy.contains('Pack is a required field');
cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`);
@ -201,8 +202,10 @@ describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serve
cy.getBySel('edit-rule-actions-tab').click();
cy.getBySel(RESPONSE_ACTIONS_ITEM_0)
.within(() => {
cy.contains(packName);
cy.getBySel('comboBoxInput').type(`${multiQueryPackName}{downArrow}{enter}`);
cy.getBySel('comboBoxSearchInput').should('have.value', packName);
cy.getBySel('comboBoxInput').type(
`{selectall}{backspace}${multiQueryPackName}{downArrow}{enter}`
);
cy.contains('SELECT * FROM memory_info;');
cy.contains('SELECT * FROM system_info;');
})

View file

@ -86,7 +86,7 @@ describe('ALL - Packs', { tags: ['@ess', '@serverless'] }, () => {
cy.visit(FLEET_AGENT_POLICIES);
cy.contains(AGENT_POLICY_NAME).click();
cy.get('.euiTableCellContent')
.get('.euiPopover__anchor')
.get('.euiPopover')
.get(`[aria-label="Open"]`)
.first()
.click();
@ -308,14 +308,12 @@ describe('ALL - Packs', { tags: ['@ess', '@serverless'] }, () => {
cy.getBySel(EDIT_PACK_HEADER_BUTTON).click();
cy.get('#shardsPercentage0').should('have.value', '15');
cy.getBySel('packShardsForm-1').within(() => {
cy.getBySel('shards-field-policy').contains(OSQUERY_POLICY);
cy.getBySel('shards-field-policy').find('input').should('value', OSQUERY_POLICY);
cy.get('#shardsPercentage1').should('have.value', '0');
});
cy.getBySel(POLICY_SELECT_COMBOBOX).within(() => {
cy.contains(OSQUERY_POLICY).should('not.exist');
});
cy.getBySel(POLICY_SELECT_COMBOBOX).find('input').should('not.have.value', OSQUERY_POLICY);
cy.getBySel('comboBoxInput').contains(OSQUERY_POLICY).should('exist');
cy.getBySel('shards-field-policy').find(`input[value="${OSQUERY_POLICY}"]`).should('exist');
cy.getBySel(POLICY_SELECT_COMBOBOX).click();
cy.get('[data-test-subj="packShardsForm-1"]').within(() => {
cy.get(`[aria-label="Delete shards row"]`).click();

View file

@ -79,7 +79,9 @@ describe(`T1 and T2 analysts`, { tags: ['@ess', '@serverless'] }, () => {
cy.contains(liveQueryQuery);
cy.get(`[aria-label="Run query"]`).first().should('not.be.disabled');
cy.get(`[aria-label="Run query"]`).first().click();
cy.contains(savedQueryName);
cy.get('[data-test-subj="savedQuerySelect"]')
.find('input')
.should('have.value', savedQueryName);
submitQuery();
checkResults();
});

View file

@ -134,7 +134,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "canvas" layout
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isClosed"
id="advanced-options"
inert=""
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -331,7 +331,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "print" layout o
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isClosed"
id="advanced-options"
inert=""
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>
@ -469,7 +469,7 @@ exports[`ScreenCapturePanelContent renders the default view properly 1`] = `
class="euiAccordion__childWrapper emotion-euiAccordion__childWrapper-isClosed"
id="advanced-options"
inert=""
role="region"
role="group"
style="block-size: 0;"
tabindex="-1"
>

View file

@ -197,7 +197,7 @@ describe('<SimplePrivilegeForm>', () => {
const featurePrivilegeToggles = wrapper.find(EuiButtonGroup);
expect(featurePrivilegeToggles).toHaveLength(1);
expect(featurePrivilegeToggles.find('input')).toHaveLength(3);
expect(featurePrivilegeToggles.find('button')).toHaveLength(3);
(featurePrivilegeToggles.props() as EuiButtonGroupProps).onChange('feature1_all', null);

View file

@ -80,41 +80,37 @@ describe('SecurityNavControlService', () => {
data-test-subj="kbnRedirectAppLink"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
id="headerUserMenu"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-controls="headerUserMenu"
aria-expanded="false"
aria-haspopup="true"
aria-label="Account menu"
class="euiButtonEmpty euiHeaderSectionItemButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiHeaderSectionItemButton"
data-test-subj="userMenuButton"
style="line-height: normal;"
type="button"
>
<button
aria-controls="headerUserMenu"
aria-expanded="false"
aria-haspopup="true"
aria-label="Account menu"
class="euiButtonEmpty euiHeaderSectionItemButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiHeaderSectionItemButton"
data-test-subj="userMenuButton"
style="line-height: normal;"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
class="euiHeaderSectionItemButton__content emotion-euiHeaderSectionItemButton__content"
>
<span
class="euiHeaderSectionItemButton__content emotion-euiHeaderSectionItemButton__content"
>
<span
aria-label="Loading"
class="euiLoadingSpinner emotion-euiLoadingSpinner-m"
role="progressbar"
/>
</span>
aria-label="Loading"
class="euiLoadingSpinner emotion-euiLoadingSpinner-m"
role="progressbar"
/>
</span>
</span>
</button>
</div>
</span>
</button>
</div>
</div>
</div>

View file

@ -82,33 +82,29 @@ exports[`Event Details Overview Cards renders rows and spacers correctly 1`] = `
class="c2"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="alertStatus"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
aria-label="Click to change alert status"
class="euiBadge c3 emotion-euiBadge-primary-clickable"
data-test-subj="rule-status-badge"
>
<button
aria-label="Click to change alert status"
class="euiBadge c3 emotion-euiBadge-primary-clickable"
data-test-subj="rule-status-badge"
<span
class="euiBadge__content emotion-euiBadge__content"
>
<span
class="euiBadge__content emotion-euiBadge__content"
class="euiBadge__text emotion-euiBadge__text-clickable"
>
<span
class="euiBadge__text emotion-euiBadge__text-clickable"
>
open
</span>
<span
class="euiBadge__icon emotion-euiBadge__icon-right"
color="inherit"
data-euiicon-type="arrowDown"
/>
open
</span>
</button>
</div>
<span
class="euiBadge__icon emotion-euiBadge__icon-right"
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
<div

View file

@ -80,8 +80,12 @@ describe('ThreatMatchComponent', () => {
);
expect(wrapper.find('EuiFlexGroup[data-test-subj="itemEntryContainer"]')).toHaveLength(1);
expect(wrapper.find('[data-test-subj="entryField"]').text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="threatEntryField"]').text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"] input').props().placeholder).toEqual(
'Search'
);
expect(wrapper.find('[data-test-subj="threatEntryField"] input').props().placeholder).toEqual(
'Search'
);
});
test('it displays "Search" for "listItems" that are passed in', async () => {
@ -108,7 +112,9 @@ describe('ThreatMatchComponent', () => {
</ThemeProvider>
);
expect(wrapper.find('EuiFlexGroup[data-test-subj="itemEntryContainer"]')).toHaveLength(1);
expect(wrapper.find('[data-test-subj="entryField"]').at(0).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"] input').at(0).props().placeholder).toEqual(
'Search'
);
wrapper.unmount();
});
@ -171,10 +177,18 @@ describe('ThreatMatchComponent', () => {
await waitFor(() => {
expect(wrapper.find('EuiFlexGroup[data-test-subj="itemEntryContainer"]')).toHaveLength(2);
expect(wrapper.find('[data-test-subj="entryField"]').at(0).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="threatEntryField"]').at(0).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"]').at(1).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="threatEntryField"]').at(1).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"] input').at(0).props().placeholder).toEqual(
'Search'
);
expect(
wrapper.find('[data-test-subj="threatEntryField"] input').at(0).props().placeholder
).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"] input').at(1).props().placeholder).toEqual(
'Search'
);
expect(
wrapper.find('[data-test-subj="threatEntryField"] input').at(1).props().placeholder
).toEqual('Search');
});
});
@ -208,10 +222,18 @@ describe('ThreatMatchComponent', () => {
await waitFor(() => {
expect(wrapper.find('EuiFlexGroup[data-test-subj="entriesContainer"]')).toHaveLength(2);
expect(wrapper.find('[data-test-subj="entryField"]').at(0).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="threatEntryField"]').at(0).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"]').at(1).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="threatEntryField"]').at(1).text()).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"] input').at(0).props().placeholder).toEqual(
'Search'
);
expect(
wrapper.find('[data-test-subj="threatEntryField"] input').at(0).props().placeholder
).toEqual('Search');
expect(wrapper.find('[data-test-subj="entryField"] input').at(1).props().placeholder).toEqual(
'Search'
);
expect(
wrapper.find('[data-test-subj="threatEntryField"] input').at(1).props().placeholder
).toEqual('Search');
});
});

View file

@ -65,21 +65,21 @@ describe('useEuiComboBoxReset', () => {
render(<EuiComboBoxResetTest />);
const initialValue = screen.getByTestId('comboBoxInput'); // EuiComboBox does NOT render the current selection via it's input; it uses this div
expect(initialValue).toHaveTextContent(options[0].label);
const initialValue = screen.getByRole('combobox');
expect(initialValue).toHaveValue(options[0].label);
// update the EuiComboBox input to an invalid value:
const searchInput = screen.getByTestId('comboBoxSearchInput'); // the actual <input /> controlled by EuiComboBox
const searchInput = screen.getByRole('combobox'); // the actual <input /> controlled by EuiComboBox
fireEvent.change(searchInput, { target: { value: invalidValue } });
const afterInvalidInput = screen.getByTestId('comboBoxInput');
const afterInvalidInput = screen.getByRole('combobox');
expect(searchInput).toHaveValue(invalidValue); // the EuiComboBox is now in the "error state"
expect(afterInvalidInput).not.toHaveTextContent(invalidValue); // Value should not have been applied
const resetButton = screen.getByRole('button', { name: 'Reset' });
fireEvent.click(resetButton); // clicking invokes onReset()
const afterReset = screen.getByTestId('comboBoxInput');
expect(afterReset).toHaveTextContent(options[0].label); // back to the default
const afterReset = screen.getByRole('combobox');
expect(afterReset).toHaveValue(options[0].label); // back to the default
});
});

View file

@ -11,20 +11,12 @@ import {
IS_DRAGGING_CLASS_NAME,
} from '@kbn/securitysolution-t-grid';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import styled from 'styled-components';
/**
* To avoid expensive changes to the DOM, delay showing the popover menu
*/
const HOVER_INTENT_DELAY = 100; // ms
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const WithHoverActionsPopover = styled(EuiPopover as any)`
.euiPopover__anchor {
width: 100%;
}
` as unknown as typeof EuiPopover;
interface Props {
/**
* Always show the hover menu contents (default: false)
@ -157,7 +149,7 @@ export const WithHoverActions = React.memo<Props>(
className={alwaysShow ? HOVER_ACTIONS_ALWAYS_SHOW_CLASS_NAME : ''}
onMouseLeave={onMouseLeave}
>
<WithHoverActionsPopover
<EuiPopover
ref={popoverRef}
anchorPosition={'downCenter'}
button={content}
@ -170,7 +162,7 @@ export const WithHoverActions = React.memo<Props>(
repositionOnScroll={true}
>
{isOpen ? <div onKeyDown={onKeyDown}>{hoverContent}</div> : null}
</WithHoverActionsPopover>
</EuiPopover>
</div>
);
}

View file

@ -14,8 +14,7 @@ import * as i18n from '../../../../../detections/pages/detection_engine/rules/tr
const SearchBarWrapper = styled(EuiFlexItem)`
min-width: 200px;
& .euiPopover,
& .euiPopover__anchor {
& .euiPopover {
// This is needed to "cancel" styles passed down from EuiTourStep that
// interfere with EuiFieldSearch and don't allow it to take the full width
display: block;

View file

@ -148,11 +148,7 @@ describe('StepAboutRuleToggleDetails', () => {
expect(wrapper.find('[idSelected="details"]').exists()).toBeTruthy();
expect(wrapper.find('[idSelected="notes"]').exists()).toBeFalsy();
wrapper
.find('[title="Investigation guide"]')
.at(0)
.find('input')
.simulate('change', { target: { value: 'notes' } });
wrapper.find('button[title="Investigation guide"]').simulate('click');
expect(wrapper.find('[idSelected="details"]').exists()).toBeFalsy();
expect(wrapper.find('[idSelected="notes"]').exists()).toBeTruthy();
@ -174,11 +170,7 @@ describe('StepAboutRuleToggleDetails', () => {
</ThemeProvider>
);
wrapper
.find('[title="Investigation guide"]')
.at(0)
.find('input')
.simulate('change', { target: { value: 'notes' } });
wrapper.find('button[title="Investigation guide"]').simulate('click');
expect(wrapper.find('EuiButtonGroup[idSelected="notes"]').exists()).toBeTruthy();
expect(wrapper.find('div.euiMarkdownFormat').text()).toEqual(
@ -254,11 +246,7 @@ describe('StepAboutRuleToggleDetails', () => {
expect(wrapper.find('[idSelected="notes"]').exists()).toBeFalsy();
expect(wrapper.find('[idSelected="setup"]').exists()).toBeFalsy();
wrapper
.find('[title="Setup guide"]')
.at(0)
.find('input')
.simulate('change', { target: { value: 'setup' } });
wrapper.find('button[title="Setup guide"]').simulate('click');
expect(wrapper.find('[idSelected="details"]').exists()).toBeFalsy();
expect(wrapper.find('[idSelected="notes"]').exists()).toBeFalsy();
@ -281,11 +269,7 @@ describe('StepAboutRuleToggleDetails', () => {
</ThemeProvider>
);
wrapper
.find('[title="Setup guide"]')
.at(0)
.find('input')
.simulate('change', { target: { value: 'setup' } });
wrapper.find('button[title="Setup guide"]').simulate('click');
expect(wrapper.find('EuiButtonGroup[idSelected="setup"]').exists()).toBeTruthy();
expect(wrapper.find('div.euiMarkdownFormat').text()).toEqual(

View file

@ -393,16 +393,15 @@ describe('StepDefineRule', () => {
);
expect(getByTestId(`eqlQueryBarTextInput`).textContent).toEqual(eqlQuery.queryBar.query.query);
fireEvent.click(getByTestId(`eql-settings-trigger`));
expect(
within(getByTestId(`eql-event-category-field`)).queryByText(
eqlQuery.eqlOptions.eventCategoryField
)
).toBeInTheDocument();
expect(
within(getByTestId(`eql-tiebreaker-field`)).queryByText(eqlQuery.eqlOptions.tiebreakerField)
).toBeInTheDocument();
expect(
within(getByTestId(`eql-timestamp-field`)).queryByText(eqlQuery.eqlOptions.timestampField)
).toBeInTheDocument();
expect(within(getByTestId(`eql-event-category-field`)).queryByRole('combobox')).toHaveValue(
eqlQuery.eqlOptions.eventCategoryField
);
expect(within(getByTestId(`eql-tiebreaker-field`)).queryByRole('combobox')).toHaveValue(
eqlQuery.eqlOptions.tiebreakerField
);
expect(within(getByTestId(`eql-timestamp-field`)).queryByRole('combobox')).toHaveValue(
eqlQuery.eqlOptions.timestampField
);
});
});

View file

@ -62,23 +62,33 @@ describe('ChartSelect', () => {
);
expect(screen.getByTestId('chart-select-tabs')).toBeInTheDocument();
expect(screen.getByTestId('trend')).toBeChecked();
expect(screen.getByTitle('Trend')).toHaveAttribute('aria-pressed', 'true');
});
test('changing selection render correctly when alertsPageChartsEnabled is true', async () => {
test('changing selection render correctly when alertsPageChartsEnabled is true', () => {
mockUseIsExperimentalFeatureEnabled.mockReturnValue(true);
const setAlertViewSelection = jest.fn();
const { container } = render(
const { rerender } = render(
<TestProviders>
<ChartSelect alertViewSelection="trend" setAlertViewSelection={setAlertViewSelection} />
</TestProviders>
);
const button = container.querySelector('input[value="treemap"]');
if (button) {
fireEvent.change(button, { target: { checked: true, type: 'radio' } });
}
expect(screen.getByTestId('treemap')).toBeChecked();
expect(screen.getByTestId('trend')).not.toBeChecked();
expect(screen.getByTitle('Trend')).toHaveAttribute('aria-pressed', 'true');
const treemapButton = screen.getByTitle('Treemap');
expect(treemapButton).toHaveAttribute('aria-pressed', 'false');
fireEvent.click(treemapButton);
expect(setAlertViewSelection).toHaveBeenCalledWith('treemap');
rerender(
<TestProviders>
<ChartSelect alertViewSelection="treemap" setAlertViewSelection={setAlertViewSelection} />
</TestProviders>
);
expect(screen.getByTitle('Treemap')).toHaveAttribute('aria-pressed', 'true');
expect(screen.getByTitle('Trend')).toHaveAttribute('aria-pressed', 'false');
});
});

View file

@ -245,22 +245,21 @@ describe('ChartPanels', () => {
</TestProviders>
);
const initialValue = screen.getAllByTestId('comboBoxInput')[0]; // EuiComboBox does NOT render the current selection via it's input; it uses this div
expect(initialValue).toHaveTextContent(defaultValue);
const initialInput = screen.getAllByTestId('comboBoxSearchInput')[0];
expect(initialInput).toHaveValue(defaultValue);
// update the EuiComboBox input to an invalid value:
const searchInput = screen.getAllByTestId('comboBoxSearchInput')[0]; // the actual <input /> controlled by EuiComboBox
fireEvent.change(searchInput, { target: { value: invalidValue } });
fireEvent.change(initialInput, { target: { value: invalidValue } });
const afterInvalidInput = screen.getAllByTestId('comboBoxInput')[0];
expect(searchInput).toHaveValue(invalidValue); // the 'Group by' EuiComboBox is now in the "error state"
expect(afterInvalidInput).not.toHaveTextContent(invalidValue); // Value should not have been applied
const afterInvalidInput = screen.getAllByTestId('comboBoxSearchInput')[0];
expect(afterInvalidInput).toHaveValue(invalidValue); // the 'Group by' EuiComboBox is now in the "error state"
expect(afterInvalidInput).toBeInvalid();
resetGroupByFields(); // invoke the `Reset group by fields` context menu action
await waitFor(() => {
const afterReset = screen.getAllByTestId('comboBoxInput')[0];
expect(afterReset).toHaveTextContent(defaultValue); // back to the default
const afterReset = screen.getAllByTestId('comboBoxSearchInput')[0];
expect(afterReset).toHaveValue(defaultValue); // back to the default
});
});
});
@ -285,22 +284,21 @@ describe('ChartPanels', () => {
</TestProviders>
);
const initialValue = screen.getAllByTestId('comboBoxInput')[1]; // EuiComboBox does NOT render the current selection via it's input; it uses this div
expect(initialValue).toHaveTextContent(defaultValue);
const initialInput = screen.getAllByTestId('comboBoxSearchInput')[1];
expect(initialInput).toHaveValue(defaultValue);
// update the EuiComboBox input to an invalid value:
const searchInput = screen.getAllByTestId('comboBoxSearchInput')[1]; // the actual <input /> controlled by EuiComboBox
fireEvent.change(searchInput, { target: { value: invalidValue } });
fireEvent.change(initialInput, { target: { value: invalidValue } });
const afterInvalidInput = screen.getAllByTestId('comboBoxInput')[1];
expect(searchInput).toHaveValue(invalidValue); // the 'Group by top' EuiComboBox is now in the "error state"
expect(afterInvalidInput).not.toHaveTextContent(invalidValue); // Value should not have been applied
const afterInvalidInput = screen.getAllByTestId('comboBoxSearchInput')[1];
expect(afterInvalidInput).toHaveValue(invalidValue); // the 'Group by top' EuiComboBox is now in the "error state"
expect(afterInvalidInput).toBeInvalid();
resetGroupByFields(); // invoke the `Reset group by fields` context menu action
await waitFor(() => {
const afterReset = screen.getAllByTestId('comboBoxInput')[1];
expect(afterReset).toHaveTextContent(defaultValue); // back to the default
const afterReset = screen.getAllByTestId('comboBoxSearchInput')[1];
expect(afterReset).toHaveValue(defaultValue); // back to the default
});
});
});

View file

@ -374,32 +374,28 @@ exports[`Authentication Host Table Component rendering it renders the host authe
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="loadingMoreSizeRowPopover"
id="customizablePagination"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Rows per page: 10
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Rows per page: 10
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
<div

View file

@ -374,32 +374,28 @@ exports[`Authentication User Table Component rendering it renders the user authe
class="euiFlexItem emotion-euiFlexItem-grow-1"
>
<div
class="euiPopover emotion-euiPopover"
class="euiPopover emotion-euiPopover-inline-block"
data-test-subj="loadingMoreSizeRowPopover"
id="customizablePagination"
>
<div
class="euiPopover__anchor css-16vtueo-render"
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
type="button"
>
<button
class="euiButtonEmpty emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
type="button"
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
>
<span
class="euiButtonEmpty__content emotion-euiButtonDisplayContent"
class="eui-textTruncate euiButtonEmpty__text"
>
<span
class="eui-textTruncate euiButtonEmpty__text"
>
Rows per page: 10
</span>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
Rows per page: 10
</span>
</button>
</div>
<span
color="inherit"
data-euiicon-type="arrowDown"
/>
</span>
</button>
</div>
</div>
<div

View file

@ -97,7 +97,6 @@ export const ArgumentFileSelector = memo<
closePopover={handleClosePopover}
anchorPosition="upCenter"
initialFocus={`#${filePickerUUID}`}
anchorClassName="popoverAnchor"
button={
<EuiFlexGroup responsive={false} alignItems="center" gutterSize="none">
<EuiFlexItem grow={false} className="eui-textTruncate" onClick={handleOpenPopover}>

Some files were not shown because too many files have changed in this diff Show more