mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 10:40:07 -04:00
Enable "Event Generating Elements Should Be Instrumented" ESLint rule for more O11y Apps (#165647)
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
33dcda7b70
commit
772bc0c598
80 changed files with 172 additions and 20 deletions
10
.eslintrc.js
10
.eslintrc.js
|
@ -909,11 +909,15 @@ module.exports = {
|
|||
{
|
||||
files: [
|
||||
'x-pack/plugins/apm/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/observability/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/exploratory_view/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/ux/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/synthetics/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/infra/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/observability/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/observability_ai_assistant/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/observability_onboarding/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/observability_shared/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/profiling/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/synthetics/**/*.{js,mjs,ts,tsx}',
|
||||
'x-pack/plugins/ux/**/*.{js,mjs,ts,tsx}',
|
||||
],
|
||||
rules: {
|
||||
'@kbn/telemetry/event_generating_elements_should_be_instrumented': 'error',
|
||||
|
|
|
@ -37,7 +37,7 @@ export function checkNodeForExistingDataTestSubjProp(
|
|||
const variable = getScope().variables.find((v) => v.name === name); // the variable definition of the spreaded variable
|
||||
|
||||
return variable && variable.defs.length > 0
|
||||
? variable.defs[0].node.init.properties.find((property: TSESTree.Property) => {
|
||||
? variable.defs[0].node.init?.properties.find((property: TSESTree.Property) => {
|
||||
if ('value' in property.key) {
|
||||
return property.key.value === 'data-test-subj';
|
||||
}
|
||||
|
|
|
@ -63,7 +63,8 @@ for (const [name, tester] of [tsTester, babelTester]) {
|
|||
],
|
||||
output: `<${element} data-test-subj="Value${element
|
||||
.replace('Eui', '')
|
||||
.replace('Empty', '')}">Value</${element}>`,
|
||||
.replace('Empty', '')
|
||||
.replace('Icon', '')}">Value</${element}>`,
|
||||
})),
|
||||
}
|
||||
);
|
||||
|
|
|
@ -17,6 +17,7 @@ import { getFunctionName } from '../helpers/get_function_name';
|
|||
export const EVENT_GENERATING_ELEMENTS = [
|
||||
'EuiButton',
|
||||
'EuiButtonEmpty',
|
||||
'EuiButtonIcon',
|
||||
'EuiLink',
|
||||
'EuiFieldText',
|
||||
'EuiFieldSearch',
|
||||
|
@ -74,7 +75,7 @@ export const EventGeneratingElementsShouldBeInstrumented: Rule.RuleModule = {
|
|||
const intent = getIntentFromNode(parent);
|
||||
|
||||
// 4. The element name that generates the events
|
||||
const element = name.replace('Eui', '').replace('Empty', '');
|
||||
const element = name.replace('Eui', '').replace('Empty', '').replace('Icon', '');
|
||||
|
||||
const suggestion = `${appName}${componentName}${intent}${element}`; // 'o11yHeaderActionsSubmitButton'
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ export function HelpPopoverButton({
|
|||
|
||||
return (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmHelpPopoverButtonButton"
|
||||
className="apmHelpPopover__buttonIcon"
|
||||
size="s"
|
||||
iconType="help"
|
||||
|
|
|
@ -53,6 +53,7 @@ function ConfigurationValueColumn({
|
|||
</EuiText>
|
||||
{value && (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmConfigurationValueColumnButton"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.apm.onboarding.column.value.copyIconText',
|
||||
{
|
||||
|
|
|
@ -152,6 +152,7 @@ function ConfigurationValueColumn({
|
|||
</EuiText>
|
||||
{value && (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmConfigurationValueColumnButton"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.apm.onboarding.otel.column.value.copyIconText',
|
||||
{
|
||||
|
|
|
@ -202,6 +202,7 @@ export function AgentConfigurationList({
|
|||
name: '',
|
||||
render: (config: Config) => (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmColumnsButton"
|
||||
aria-label="Edit"
|
||||
iconType="pencil"
|
||||
href={apmRouter.link('/settings/agent-configuration/edit', {
|
||||
|
@ -218,6 +219,7 @@ export function AgentConfigurationList({
|
|||
name: '',
|
||||
render: (config: Config) => (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmColumnsButton"
|
||||
aria-label="Delete"
|
||||
iconType="trash"
|
||||
onClick={() => setConfigToBeDeleted(config)}
|
||||
|
|
|
@ -58,6 +58,7 @@ export function AgentKeyCallOut({ name, token }: Props) {
|
|||
<EuiCopy textToCopy={token}>
|
||||
{(copy) => (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmAgentKeyCallOutButton"
|
||||
iconType="copyClipboard"
|
||||
onClick={copy}
|
||||
color="success"
|
||||
|
|
|
@ -99,6 +99,7 @@ export function DiscoveryRule({
|
|||
<EuiFlexGroup>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmDiscoveryRuleButton"
|
||||
iconType="pencil"
|
||||
color="primary"
|
||||
onClick={() => {
|
||||
|
@ -108,6 +109,7 @@ export function DiscoveryRule({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmDiscoveryRuleButton"
|
||||
iconType="trash"
|
||||
color="danger"
|
||||
onClick={() => {
|
||||
|
|
|
@ -28,6 +28,7 @@ export function PopoverTooltip({
|
|||
closePopover={() => setIsPopoverOpen(false)}
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmPopoverTooltipButton"
|
||||
aria-label={ariaLabel}
|
||||
onClick={(event: React.MouseEvent<HTMLButtonElement>) => {
|
||||
setIsPopoverOpen(!isPopoverOpen);
|
||||
|
|
|
@ -142,6 +142,7 @@ export function SpanLinksTable({ items }: Props) {
|
|||
<EuiPopover
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmColumnsButton"
|
||||
aria-label="Edit"
|
||||
iconType="boxesHorizontal"
|
||||
onClick={() => {
|
||||
|
|
|
@ -83,6 +83,7 @@ export function OpenTelemetryInstructions({
|
|||
</EuiText>
|
||||
{value && (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="apmColumnsButton"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.apm.tutorial.config_otel.column.value.copyIconText',
|
||||
{
|
||||
|
|
|
@ -136,6 +136,7 @@ export function SelectableUrlList({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="exploratoryViewPopOverTitleButton"
|
||||
color="text"
|
||||
onClick={() => closePopover()}
|
||||
aria-label={i18n.translate('xpack.exploratoryView.search.url.close', {
|
||||
|
|
|
@ -72,6 +72,7 @@ export function SeriesActions({ seriesId, series, seriesConfig, onEditClick }: P
|
|||
|
||||
const popoverButton = (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="exploratoryViewSeriesActionsButton"
|
||||
iconType="boxesHorizontal"
|
||||
onClick={changePopoverVisibility}
|
||||
color="text"
|
||||
|
|
|
@ -101,6 +101,7 @@ export function SeriesName({ series, seriesId }: Props) {
|
|||
)}
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="exploratoryViewSeriesNameButton"
|
||||
onClick={() => setIsEditingEnabled(!isEditingEnabled)}
|
||||
iconType="pencil"
|
||||
aria-label={i18n.translate('xpack.exploratoryView.expView.seriesEditor.editName', {
|
||||
|
|
|
@ -578,6 +578,7 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
|
|||
<EuiFlexGroup gutterSize="xs">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraExpressionRowButton"
|
||||
iconType={isExpanded ? 'arrowDown' : 'arrowRight'}
|
||||
onClick={toggle}
|
||||
aria-label={i18n.translate('xpack.infra.metrics.alertFlyout.expandRowLabel', {
|
||||
|
@ -629,6 +630,7 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
|
|||
/>
|
||||
</StyledHealth>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraExpressionRowButton"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.infra.metrics.alertFlyout.removeWarningThreshold',
|
||||
{
|
||||
|
@ -668,6 +670,7 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
|
|||
{canDelete && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraExpressionRowButton"
|
||||
aria-label={i18n.translate('xpack.infra.metrics.alertFlyout.removeCondition', {
|
||||
defaultMessage: 'Remove condition',
|
||||
})}
|
||||
|
|
|
@ -330,6 +330,7 @@ export const ClosablePopoverTitle = ({ children, onClose }: ClosablePopoverTitle
|
|||
<EuiFlexItem>{children}</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraClosablePopoverTitleButton"
|
||||
iconType="cross"
|
||||
color="danger"
|
||||
aria-label={i18n.translate(
|
||||
|
|
|
@ -98,6 +98,7 @@ export const ClosablePopoverTitle = ({ children, onClose }: ClosablePopoverTitle
|
|||
<EuiFlexItem>{children}</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraClosablePopoverTitleButton"
|
||||
iconType="cross"
|
||||
color="danger"
|
||||
aria-label={i18n.translate(
|
||||
|
|
|
@ -295,6 +295,7 @@ export const Criterion: React.FC<Props> = ({
|
|||
{canDelete && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraCriterionButton"
|
||||
aria-label={i18n.translate('xpack.infra.logs.alertFlyout.removeCondition', {
|
||||
defaultMessage: 'Remove condition',
|
||||
})}
|
||||
|
|
|
@ -100,6 +100,7 @@ export const ClosablePopoverTitle = ({ children, onClose }: ClosablePopoverTitle
|
|||
<EuiFlexItem>{children}</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraClosablePopoverTitleButton"
|
||||
iconType="cross"
|
||||
color="danger"
|
||||
aria-label={i18n.translate(
|
||||
|
|
|
@ -123,6 +123,7 @@ export const ClosablePopoverTitle = ({ children, onClose }: ClosablePopoverTitle
|
|||
<EuiFlexItem>{children}</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraClosablePopoverTitleButton"
|
||||
iconType="cross"
|
||||
color="danger"
|
||||
aria-label={i18n.translate(
|
||||
|
|
|
@ -18,6 +18,7 @@ export const MetricRowControls = ({ onDelete, disableDelete }: MetricRowControlP
|
|||
<>
|
||||
<EuiFlexItem grow={0}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraMetricRowControlsButton"
|
||||
iconType="trash"
|
||||
color="danger"
|
||||
style={{ marginBottom: '0.2em' }}
|
||||
|
|
|
@ -316,6 +316,7 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
|
|||
/>
|
||||
</StyledHealth>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraExpressionRowButton"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.infra.metrics.alertFlyout.removeWarningThreshold',
|
||||
{
|
||||
|
@ -350,6 +351,7 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
|
|||
{canDelete && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraExpressionRowButton"
|
||||
aria-label={i18n.translate('xpack.infra.metrics.alertFlyout.removeCondition', {
|
||||
defaultMessage: 'Remove condition',
|
||||
})}
|
||||
|
|
|
@ -27,6 +27,7 @@ export const RowExpansionButton = <Item extends any>({
|
|||
|
||||
return (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraRowExpansionButtonButton"
|
||||
onClick={handleClick}
|
||||
aria-label={isExpanded ? collapseAriaLabel : expandAriaLabel}
|
||||
iconType={isExpanded ? 'arrowUp' : 'arrowDown'}
|
||||
|
|
|
@ -114,6 +114,7 @@ export const LogHighlightsMenu: React.FC<LogHighlightsMenuProps> = ({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraLogHighlightsMenuButton"
|
||||
aria-label={goToPreviousHighlightLabel}
|
||||
iconType="arrowUp"
|
||||
onClick={goToPreviousHighlight}
|
||||
|
@ -123,6 +124,7 @@ export const LogHighlightsMenu: React.FC<LogHighlightsMenuProps> = ({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraLogHighlightsMenuButton"
|
||||
aria-label={goToNextHighlightLabel}
|
||||
iconType="arrowDown"
|
||||
onClick={goToNextHighlight}
|
||||
|
@ -132,6 +134,7 @@ export const LogHighlightsMenu: React.FC<LogHighlightsMenuProps> = ({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraLogHighlightsMenuButton"
|
||||
aria-label={clearTermsButtonLabel}
|
||||
color="danger"
|
||||
isDisabled={highlightTerm === ''}
|
||||
|
|
|
@ -39,6 +39,7 @@ function HideableReactQueryDevTools() {
|
|||
return !isHidden ? (
|
||||
<div>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraHideableReactQueryDevToolsButton"
|
||||
iconType="cross"
|
||||
color="primary"
|
||||
style={{ zIndex: 99999, position: 'fixed', bottom: '40px', left: '40px' }}
|
||||
|
|
|
@ -299,6 +299,7 @@ const PaginationControls = ({
|
|||
<EuiFlexItem grow={false}>
|
||||
<EuiFlexGroup>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraPaginationControlsButton"
|
||||
iconType="arrowLeft"
|
||||
isDisabled={!fetchPreviousPage || isLoading}
|
||||
onClick={fetchPreviousPage}
|
||||
|
@ -308,6 +309,7 @@ const PaginationControls = ({
|
|||
<strong>{page}</strong>
|
||||
</span>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraPaginationControlsButton"
|
||||
iconType="arrowRight"
|
||||
isDisabled={!fetchNextPage || isLoading}
|
||||
onClick={fetchNextPage}
|
||||
|
|
|
@ -146,6 +146,7 @@ const AnomalyActionMenu = ({
|
|||
panelPaddingSize="none"
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraAnomalyActionMenuButton"
|
||||
iconType="boxesHorizontal"
|
||||
onClick={handleToggleMenu}
|
||||
aria-label={i18n.translate('xpack.infra.ml.anomalyFlyout.actions.openActionMenu', {
|
||||
|
|
|
@ -36,6 +36,7 @@ export const PaginationControls = ({
|
|||
<EuiFlexItem grow={false}>
|
||||
<EuiFlexGroup>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraPaginationControlsButton"
|
||||
iconType="arrowLeft"
|
||||
isDisabled={!fetchPreviousPage || isLoading}
|
||||
onClick={fetchPreviousPage}
|
||||
|
@ -45,6 +46,7 @@ export const PaginationControls = ({
|
|||
<strong>{page}</strong>
|
||||
</span>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraPaginationControlsButton"
|
||||
iconType="arrowRight"
|
||||
isDisabled={!fetchNextPage || isLoading}
|
||||
onClick={fetchNextPage}
|
||||
|
|
|
@ -148,7 +148,12 @@ export const NodeContextPopover = ({
|
|||
</EuiButtonEmpty>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon size="s" onClick={onClose} iconType="cross" />
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraNodeContextPopoverButton"
|
||||
size="s"
|
||||
onClick={onClose}
|
||||
iconType="cross"
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
|
|
|
@ -65,6 +65,7 @@ export const Table = (props: Props) => {
|
|||
)}
|
||||
>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraColumnsButton"
|
||||
color="text"
|
||||
size="s"
|
||||
iconType="filter"
|
||||
|
|
|
@ -39,6 +39,7 @@ export const MetricsEditMode = withTheme(
|
|||
>
|
||||
<EuiFlexItem grow={false} style={{ width: ICON_WIDTH }}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraMetricsEditModeButton"
|
||||
iconType="pencil"
|
||||
onClick={() => onEdit(metric)}
|
||||
aria-label={i18n.translate(
|
||||
|
@ -55,6 +56,7 @@ export const MetricsEditMode = withTheme(
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false} style={{ width: ICON_WIDTH, textAlign: 'right' }}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraMetricsEditModeButton"
|
||||
iconType="trash"
|
||||
color="danger"
|
||||
onClick={() => onDelete(metric)}
|
||||
|
|
|
@ -142,6 +142,7 @@ export const MetadataDetails = (props: Props) => {
|
|||
{filteredFields.length > NUMBER_OF_COLUMNS ? (
|
||||
<Controls>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="infraMetadataDetailsButton"
|
||||
iconType={isOpen ? 'arrowUp' : 'arrowDown'}
|
||||
onClick={toggleIsOpen}
|
||||
aria-label={i18n.translate('xpack.infra.nodeDetails.labels.showMoreDetails', {
|
||||
|
|
|
@ -21,6 +21,7 @@ export function ClosablePopoverTitle({ children, onClose }: ClosablePopoverTitle
|
|||
<EuiFlexItem>{children}</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yClosablePopoverTitleButton"
|
||||
iconType="cross"
|
||||
color="danger"
|
||||
aria-label={i18n.translate(
|
||||
|
|
|
@ -18,6 +18,7 @@ export function MetricRowControls({ onDelete, disableDelete }: MetricRowControlP
|
|||
<>
|
||||
<EuiFlexItem grow={0}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yMetricRowControlsButton"
|
||||
aria-label={DELETE_LABEL}
|
||||
iconType="trash"
|
||||
color="danger"
|
||||
|
|
|
@ -173,6 +173,7 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
|
|||
{canDelete && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yExpressionRowButton"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.observability.threshold.rule.alertFlyout.removeCondition',
|
||||
{
|
||||
|
|
|
@ -216,6 +216,7 @@ export function AlertActions({
|
|||
})}
|
||||
>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yAlertActionsButton"
|
||||
aria-label={i18n.translate('xpack.observability.alertsTable.viewInAppTextLabel', {
|
||||
defaultMessage: 'View in app',
|
||||
})}
|
||||
|
|
|
@ -62,6 +62,7 @@ export function WebCoreVitalsTitle({
|
|||
isOpen={isPopoverOpen}
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yWebCoreVitalsTitleButton"
|
||||
aria-label={helpAriaLabel}
|
||||
onClick={() => setIsPopoverOpen(true)}
|
||||
color={'text'}
|
||||
|
@ -110,6 +111,7 @@ export function WebCoreVitalsTitle({
|
|||
isOpen={isBrowserPopoverOpen}
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yWebCoreVitalsTitleButton"
|
||||
aria-label={helpAriaLabel}
|
||||
onClick={() => setIsBrowserPopoverOpen(true)}
|
||||
color={'text'}
|
||||
|
|
|
@ -213,6 +213,7 @@ export function MetricIndicator({ type, indexFields, isLoadingIndex }: MetricInd
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={0}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11yMetricIndicatorButton"
|
||||
iconType="trash"
|
||||
color="danger"
|
||||
style={{ marginTop: '1.5em' }}
|
||||
|
|
|
@ -178,6 +178,7 @@ export function SloListItem({
|
|||
anchorPosition="downLeft"
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="o11ySloListItemButton"
|
||||
aria-label={i18n.translate('xpack.observability.slo.item.actions.button', {
|
||||
defaultMessage: 'Actions',
|
||||
})}
|
||||
|
|
|
@ -89,6 +89,7 @@ function Lens({
|
|||
<EuiFlexGroup direction="row" gutterSize="s" justifyContent="flexEnd">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-test-subj="observabilityAiAssistantLensOpenInLensButton"
|
||||
iconType="lensApp"
|
||||
onClick={() => {
|
||||
lens.navigateToPrefilledEditor(lensEmbeddableInput);
|
||||
|
@ -101,6 +102,7 @@ function Lens({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-test-subj="observabilityAiAssistantLensSaveButton"
|
||||
iconType="save"
|
||||
onClick={() => {
|
||||
setIsSaveModalOpen(() => true);
|
||||
|
|
|
@ -93,6 +93,7 @@ export function ApiKeyBanner({
|
|||
<EuiCopy textToCopy={payload?.apiKeyEncoded ?? ''}>
|
||||
{(copy) => (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="observabilityOnboardingApiKeySuccessCalloutButton"
|
||||
iconType="copyClipboard"
|
||||
onClick={copy}
|
||||
color="success"
|
||||
|
|
|
@ -17,6 +17,7 @@ export function BackButton({ onBack }: { onBack: () => void }) {
|
|||
|
||||
return (
|
||||
<EuiButtonEmpty
|
||||
data-test-subj="observabilityOnboardingBackButtonBackButton"
|
||||
iconType="arrowLeft"
|
||||
color="primary"
|
||||
onClick={onBack}
|
||||
|
|
|
@ -174,6 +174,7 @@ export function ConfigureLogs() {
|
|||
items={[
|
||||
<BackButton onBack={goBack} />,
|
||||
<EuiButton
|
||||
data-test-subj="observabilityOnboardingConfigureLogsButton"
|
||||
color="primary"
|
||||
fill
|
||||
onClick={onContinue}
|
||||
|
@ -234,6 +235,7 @@ export function ConfigureLogs() {
|
|||
<EuiFlexGroup alignItems="center" gutterSize="xs">
|
||||
<EuiFlexItem>
|
||||
<EuiFieldText
|
||||
data-test-subj="observabilityOnboardingConfigureLogsFieldText"
|
||||
placeholder={i18n.translate(
|
||||
'xpack.observability_onboarding.configureLogs.logFile.placeholder',
|
||||
{
|
||||
|
@ -247,6 +249,7 @@ export function ConfigureLogs() {
|
|||
{index > 0 && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="observabilityOnboardingConfigureLogsButton"
|
||||
iconType="trash"
|
||||
aria-label="Delete"
|
||||
onClick={() => removeLogFilePath(index)}
|
||||
|
@ -265,7 +268,11 @@ export function ConfigureLogs() {
|
|||
gutterSize="xs"
|
||||
>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty iconType="plusInCircle" onClick={addLogFilePath}>
|
||||
<EuiButtonEmpty
|
||||
data-test-subj="observabilityOnboardingConfigureLogsAddRowButton"
|
||||
iconType="plusInCircle"
|
||||
onClick={addLogFilePath}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.observability_onboarding.configureLogs.logFile.addRow',
|
||||
{
|
||||
|
@ -313,6 +320,7 @@ export function ConfigureLogs() {
|
|||
}
|
||||
>
|
||||
<EuiFieldText
|
||||
data-test-subj="observabilityOnboardingConfigureLogsFieldText"
|
||||
placeholder={i18n.translate(
|
||||
'xpack.observability_onboarding.configureLogs.serviceName.placeholder',
|
||||
{
|
||||
|
@ -387,6 +395,7 @@ export function ConfigureLogs() {
|
|||
values={{
|
||||
learnMoreLink: (
|
||||
<EuiLink
|
||||
data-test-subj="observabilityOnboardingConfigureLogsLearnMoreLink"
|
||||
external
|
||||
target="_blank"
|
||||
href={
|
||||
|
@ -406,6 +415,7 @@ export function ConfigureLogs() {
|
|||
}
|
||||
>
|
||||
<EuiFieldText
|
||||
data-test-subj="observabilityOnboardingConfigureLogsFieldText"
|
||||
placeholder={i18n.translate(
|
||||
'xpack.observability_onboarding.configureLogs.namespace.placeholder',
|
||||
{
|
||||
|
@ -431,6 +441,7 @@ export function ConfigureLogs() {
|
|||
values={{
|
||||
learnMoreLink: (
|
||||
<EuiLink
|
||||
data-test-subj="observabilityOnboardingConfigureLogsLearnMoreLink"
|
||||
external
|
||||
target="_blank"
|
||||
href={
|
||||
|
@ -450,6 +461,7 @@ export function ConfigureLogs() {
|
|||
}
|
||||
>
|
||||
<EuiTextArea
|
||||
data-test-subj="observabilityOnboardingConfigureLogsTextArea"
|
||||
value={customConfigurations}
|
||||
onChange={(event) =>
|
||||
setCustomConfigurations(event.target.value)
|
||||
|
@ -514,6 +526,7 @@ export function ConfigureLogs() {
|
|||
error={integrationNameError}
|
||||
>
|
||||
<EuiFieldText
|
||||
data-test-subj="observabilityOnboardingConfigureLogsFieldText"
|
||||
placeholder={i18n.translate(
|
||||
'xpack.observability_onboarding.configureLogs.integration.placeholder',
|
||||
{
|
||||
|
@ -568,6 +581,7 @@ export function ConfigureLogs() {
|
|||
error={datasetNameError}
|
||||
>
|
||||
<EuiFieldText
|
||||
data-test-subj="observabilityOnboardingConfigureLogsFieldText"
|
||||
placeholder={i18n.translate(
|
||||
'xpack.observability_onboarding.configureLogs.dataset.placeholder',
|
||||
{
|
||||
|
|
|
@ -233,7 +233,10 @@ export function InstallElasticAgent() {
|
|||
<BackButton onBack={goBack} />,
|
||||
<EuiFlexGroup justifyContent="flexEnd" alignItems="center">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty onClick={onInspect}>
|
||||
<EuiButtonEmpty
|
||||
data-test-subj="observabilityOnboardingInstallElasticAgentInspectButton"
|
||||
onClick={onInspect}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.observability_onboarding.steps.inspect',
|
||||
{ defaultMessage: 'Inspect' }
|
||||
|
@ -242,6 +245,7 @@ export function InstallElasticAgent() {
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-test-subj="observabilityOnboardingInstallElasticAgentExploreLogsButton"
|
||||
color="success"
|
||||
fill
|
||||
iconType="magnifyWithPlus"
|
||||
|
|
|
@ -48,7 +48,11 @@ export function SelectLogs() {
|
|||
panelFooter={
|
||||
<StepPanelFooter
|
||||
items={[
|
||||
<EuiButton color="text" onClick={onBack}>
|
||||
<EuiButton
|
||||
data-test-subj="observabilityOnboardingSelectLogsBackButton"
|
||||
color="text"
|
||||
onClick={onBack}
|
||||
>
|
||||
{i18n.translate('xpack.observability_onboarding.steps.back', {
|
||||
defaultMessage: 'Back',
|
||||
})}
|
||||
|
@ -183,6 +187,7 @@ export function SelectLogs() {
|
|||
</EuiFlexGroup>
|
||||
<EuiSpacer size="m" />
|
||||
<EuiLink
|
||||
data-test-subj="observabilityOnboardingSelectLogsExploreOtherIntegrationsLink"
|
||||
href="#"
|
||||
target="_blank"
|
||||
onClick={(event: MouseEvent) => {
|
||||
|
|
|
@ -334,6 +334,7 @@ export function Home() {
|
|||
</StyledItem>
|
||||
<StyledItem>
|
||||
<EuiLink
|
||||
data-test-subj="observabilityOnboardingHomeAwsFirehoseLink"
|
||||
href="https://www.elastic.co/guide/en/kinesis/current/aws-firehose-setup-guide.html"
|
||||
target="_blank"
|
||||
external
|
||||
|
|
|
@ -194,7 +194,11 @@ export function InstallElasticAgent() {
|
|||
panelFooter={
|
||||
<StepPanelFooter
|
||||
items={[
|
||||
<EuiButton color="text" onClick={onBack}>
|
||||
<EuiButton
|
||||
data-test-subj="observabilityOnboardingInstallElasticAgentBackButton"
|
||||
color="text"
|
||||
onClick={onBack}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.observability_onboarding.systemLogs.back',
|
||||
{ defaultMessage: 'Back' }
|
||||
|
|
|
@ -221,6 +221,7 @@ export function InstallElasticAgentSteps<PlatformId extends string>({
|
|||
values={{
|
||||
hostRequirementsLink: (
|
||||
<EuiLink
|
||||
data-test-subj="observabilityOnboardingInstallElasticAgentStepsHostRequirementsAndOtherInstallationOptionsLink"
|
||||
external
|
||||
href="https://www.elastic.co/guide/en/fleet/8.7/elastic-agent-installation.html"
|
||||
>
|
||||
|
|
|
@ -13,6 +13,7 @@ export function TroubleshootingLink() {
|
|||
return (
|
||||
<EuiFlexGroup alignItems="center" justifyContent="center">
|
||||
<EuiButtonEmpty
|
||||
data-test-subj="observabilityOnboardingTroubleshootingLinkTroubleshootingButton"
|
||||
iconType="help"
|
||||
color="primary"
|
||||
href="https://www.elastic.co/guide/en/observability/current/logs-troubleshooting.html"
|
||||
|
|
|
@ -130,6 +130,7 @@ export function CheckSetup({ children }: { children: React.ReactElement }) {
|
|||
values={{
|
||||
dataRetentionLink: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingCheckSetupControllingDataRetentionLink"
|
||||
href={`${docLinks.ELASTIC_WEBSITE_URL}/guide/en/elasticsearch/reference/${docLinks.DOC_LINK_VERSION}/set-up-lifecycle-policy.html`}
|
||||
target="_blank"
|
||||
>
|
||||
|
@ -152,6 +153,7 @@ export function CheckSetup({ children }: { children: React.ReactElement }) {
|
|||
},
|
||||
button: (
|
||||
<EuiButton
|
||||
data-test-subj="profilingCheckSetupButton"
|
||||
disabled={postSetupLoading}
|
||||
onClick={(event) => {
|
||||
event.preventDefault();
|
||||
|
|
|
@ -160,7 +160,12 @@ export function FlameGraphTooltip({
|
|||
style={{ background: theme.euiTheme.border.color }}
|
||||
/>
|
||||
<EuiFlexItem>
|
||||
<EuiButtonEmpty size="s" iconType="inspect" onClick={onShowMoreClick}>
|
||||
<EuiButtonEmpty
|
||||
data-test-subj="profilingFlameGraphTooltipButton"
|
||||
size="s"
|
||||
iconType="inspect"
|
||||
onClick={onShowMoreClick}
|
||||
>
|
||||
<EuiText size="xs">
|
||||
{i18n.translate('xpack.profiling.flameGraphTooltip.showMoreButton', {
|
||||
defaultMessage: `Show more information`,
|
||||
|
|
|
@ -41,6 +41,7 @@ export function MissingSymbolsCallout({ frameType }: Props) {
|
|||
values={{
|
||||
readMore: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingMissingSymbolsCalloutReadMoreLink"
|
||||
href={`${docLinks.ELASTIC_WEBSITE_URL}/guide/en/observability/${docLinks.DOC_LINK_VERSION}/profiling-add-symbols.html`}
|
||||
target="_blank"
|
||||
>
|
||||
|
@ -54,6 +55,7 @@ export function MissingSymbolsCallout({ frameType }: Props) {
|
|||
/>
|
||||
</p>
|
||||
<EuiButton
|
||||
data-test-subj="profilingMissingSymbolsCalloutUploadSymbolsButton"
|
||||
href={router.link('/add-data-instructions', {
|
||||
query: { selectedTab: AddDataTabs.Symbols },
|
||||
})}
|
||||
|
@ -83,7 +85,12 @@ export function MissingSymbolsCallout({ frameType }: Props) {
|
|||
'Symbols are not available because of an error in the unwinder for this language or an unknown error with the interpreter.',
|
||||
})}
|
||||
</p>
|
||||
<EuiButton href={PROFILING_FEEDBACK_LINK} target="_blank" color="warning">
|
||||
<EuiButton
|
||||
data-test-subj="profilingMissingSymbolsCalloutReportAProblemButton"
|
||||
href={PROFILING_FEEDBACK_LINK}
|
||||
target="_blank"
|
||||
color="warning"
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.profiling.frameInformationWindow.missingSymbols.interpreted.reportProblem',
|
||||
{ defaultMessage: 'Report a problem' }
|
||||
|
|
|
@ -38,7 +38,11 @@ export function LicensePrompt() {
|
|||
</p>
|
||||
}
|
||||
actions={[
|
||||
<EuiButton href={manageLicenseURL} fill>
|
||||
<EuiButton
|
||||
data-test-subj="profilingLicensePromptUpgradeSubscriptionButton"
|
||||
href={manageLicenseURL}
|
||||
fill
|
||||
>
|
||||
{i18n.translate('xpack.profiling.invalidLicense.subscriptionManagementLink', {
|
||||
defaultMessage: 'Upgrade subscription',
|
||||
})}
|
||||
|
|
|
@ -95,6 +95,7 @@ export function NormalizationMenu(props: Props) {
|
|||
prepend={NORMALIZE_BY_LABEL}
|
||||
append={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="profilingNormalizationMenuButton"
|
||||
iconType="arrowDown"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.profiling.normalizationMenu.menuPopoverButtonAriaLabel',
|
||||
|
@ -191,6 +192,7 @@ export function NormalizationMenu(props: Props) {
|
|||
prepend={<EuiFormLabel htmlFor={baselineScaleFactorInputId}>{SCALE_LABEL}</EuiFormLabel>}
|
||||
>
|
||||
<EuiFieldNumber
|
||||
data-test-subj="profilingNormalizationMenuFieldNumber"
|
||||
controlOnly
|
||||
id={baselineScaleFactorInputId}
|
||||
value={baseline}
|
||||
|
@ -219,6 +221,7 @@ export function NormalizationMenu(props: Props) {
|
|||
prepend={<EuiFormLabel htmlFor={comparisonScaleFactorInputId}>{SCALE_LABEL}</EuiFormLabel>}
|
||||
>
|
||||
<EuiFieldNumber
|
||||
data-test-subj="profilingNormalizationMenuFieldNumber"
|
||||
controlOnly
|
||||
id={comparisonScaleFactorInputId}
|
||||
value={comparison}
|
||||
|
@ -235,6 +238,7 @@ export function NormalizationMenu(props: Props) {
|
|||
</EuiFormControlLayout>
|
||||
<EuiSpacer size="m" />
|
||||
<EuiButton
|
||||
data-test-subj="profilingNormalizationMenuApplyChangesButton"
|
||||
onClick={() => {
|
||||
props.onChange(mode, options);
|
||||
setIsPopoverOpen(false);
|
||||
|
|
|
@ -91,6 +91,7 @@ export function PrimaryAndComparisonSearchBar() {
|
|||
<EuiFlexItem grow={false} style={{ padding: '0 8px' }}>
|
||||
<EuiToolTip position="top" content="Swap sides">
|
||||
<EuiButtonIcon
|
||||
data-test-subj="profilingPrimaryAndComparisonSearchBarButton"
|
||||
iconType="merge"
|
||||
size="m"
|
||||
onClick={() => {
|
||||
|
|
|
@ -70,6 +70,7 @@ export function ProfilingAppPageTemplate({
|
|||
'data-test-subj': 'profilingPageTemplate',
|
||||
rightSideItems: [
|
||||
<EuiButton
|
||||
data-test-subj="profilingProfilingAppPageTemplateGiveFeedbackButton"
|
||||
href={PROFILING_FEEDBACK_LINK}
|
||||
target="_blank"
|
||||
color="warning"
|
||||
|
@ -134,6 +135,7 @@ export function ProfilingAppPageTemplate({
|
|||
})}
|
||||
</p>
|
||||
<EuiButton
|
||||
data-test-subj="profilingProfilingAppPageTemplateDismissButton"
|
||||
onClick={() => {
|
||||
setPrivilegesWarningDismissed(true);
|
||||
}}
|
||||
|
|
|
@ -39,7 +39,7 @@ export function StackFrameSummary({ frame, onFrameClick }: Props) {
|
|||
<EuiFlexItem>
|
||||
<div>
|
||||
{onFrameClick ? (
|
||||
<EuiLink onClick={handleOnClick}>
|
||||
<EuiLink data-test-subj="profilingStackFrameSummaryLink" onClick={handleOnClick}>
|
||||
<CalleeFunctionText calleeFunctionName={calleeFunctionName} />
|
||||
</EuiLink>
|
||||
) : (
|
||||
|
|
|
@ -135,7 +135,7 @@ export function SubChart({
|
|||
</EuiFlexGroup>
|
||||
|
||||
{hasMoreFrames && !!onShowMoreClick && (
|
||||
<EuiButton onClick={onShowMoreClick}>
|
||||
<EuiButton data-test-subj="profilingSubChartShowMoreButton" onClick={onShowMoreClick}>
|
||||
{i18n.translate('xpack.profiling.stackTracesView.showMoreTracesButton', {
|
||||
defaultMessage: 'Show more',
|
||||
})}
|
||||
|
@ -185,13 +185,13 @@ export function SubChart({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow style={{ alignItems: 'flex-start' }}>
|
||||
{showFrames ? (
|
||||
<EuiLink onClick={() => onShowMoreClick?.()}>
|
||||
<EuiLink data-test-subj="profilingSubChartLink" onClick={() => onShowMoreClick?.()}>
|
||||
<EuiText size="s">{label}</EuiText>
|
||||
</EuiLink>
|
||||
) : category === OTHER_BUCKET_LABEL ? (
|
||||
<EuiText size="s">{label}</EuiText>
|
||||
) : (
|
||||
<EuiLink href={href}>
|
||||
<EuiLink data-test-subj="profilingSubChartLink" href={href}>
|
||||
<EuiText size="s">{label}</EuiText>
|
||||
</EuiLink>
|
||||
)}
|
||||
|
|
|
@ -227,6 +227,7 @@ export const TopNFunctionsGrid = forwardRef(
|
|||
}
|
||||
return (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="profilingTopNFunctionsGridButton"
|
||||
aria-label="Show actions"
|
||||
iconType="expand"
|
||||
color="text"
|
||||
|
|
|
@ -345,6 +345,7 @@ EOF`}
|
|||
}),
|
||||
content: (
|
||||
<EuiButton
|
||||
data-test-subj="profilingAddDataViewManageUniversalProfilingAgentInFleetButton"
|
||||
iconType="gear"
|
||||
fill
|
||||
href={`${core.http.basePath.prepend(
|
||||
|
@ -392,6 +393,7 @@ EOF`}
|
|||
content: (
|
||||
<EuiText>
|
||||
<EuiLink
|
||||
data-test-subj="profilingAddDataViewInstructionsHereLink"
|
||||
target="_blank"
|
||||
href={`https://www.elastic.co/guide/en/kibana/master/api-keys.html`}
|
||||
>
|
||||
|
@ -430,6 +432,7 @@ EOF`}
|
|||
values={{
|
||||
link: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingAddDataViewTheCorrespondingDocumentationPageLink"
|
||||
target="_blank"
|
||||
href={`${core.docLinks.ELASTIC_WEBSITE_URL}/guide/en/observability/${core.docLinks.DOC_LINK_VERSION}/profiling-add-symbols.html`}
|
||||
>
|
||||
|
@ -493,6 +496,7 @@ EOF`}
|
|||
versionTo: <strong>6.4</strong>,
|
||||
linuxLink: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingAddDataViewLinuxKernelBugLink"
|
||||
target="_blank"
|
||||
href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d319f344561de23e810515d109c7278919bff7b0"
|
||||
>
|
||||
|
@ -503,6 +507,7 @@ EOF`}
|
|||
),
|
||||
debianLink: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingAddDataViewDebianLink"
|
||||
target="_blank"
|
||||
href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033398"
|
||||
>
|
||||
|
@ -513,6 +518,7 @@ EOF`}
|
|||
),
|
||||
fedoraLink: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingAddDataViewFedoraCentOsLink"
|
||||
target="_blank"
|
||||
href="https://bugzilla.redhat.com/show_bug.cgi?id=2211455"
|
||||
>
|
||||
|
@ -523,6 +529,7 @@ EOF`}
|
|||
),
|
||||
advancedLink: (
|
||||
<EuiLink
|
||||
data-test-subj="profilingAddDataViewAdvancedConfigurationLink"
|
||||
target="_blank"
|
||||
href={`${core.docLinks.ELASTIC_WEBSITE_URL}/guide/en/observability/${core.docLinks.DOC_LINK_VERSION}/profiling-advanced-configuration.html`}
|
||||
>
|
||||
|
|
|
@ -28,6 +28,7 @@ export function DeleteDataView() {
|
|||
footer={
|
||||
<div>
|
||||
<EuiLink
|
||||
data-test-subj="profilingDeleteDataViewDeleteExistingProfilingDataLink"
|
||||
href={`${docLinks.ELASTIC_WEBSITE_URL}/guide/en/observability/${docLinks.DOC_LINK_VERSION}/profiling-upgrade.html#profiling-delete-data`}
|
||||
target="_blank"
|
||||
>
|
||||
|
|
|
@ -170,6 +170,7 @@ export function StackTracesView() {
|
|||
{(data?.charts.length ?? 0) > limit && (
|
||||
<EuiFlexItem>
|
||||
<EuiButton
|
||||
data-test-subj="profilingStackTracesViewShowMoreButton"
|
||||
onClick={() => {
|
||||
profilingRouter.push(routePath, {
|
||||
path,
|
||||
|
|
|
@ -43,6 +43,7 @@ export function DistinctProbabilisticValuesWarning({
|
|||
</EuiText>
|
||||
<EuiSpacer />
|
||||
<EuiButton
|
||||
data-test-subj="profilingDistinctProbabilisticValuesWarningLearnHowButton"
|
||||
href={`${docLinks.ELASTIC_WEBSITE_URL}/guide/en/observability/${docLinks.DOC_LINK_VERSION}/profiling-probabilistic-profiling.html`}
|
||||
color="warning"
|
||||
target="_blank"
|
||||
|
|
|
@ -121,6 +121,7 @@ export function Summary({ data, isLoading }: Props) {
|
|||
<EuiFlexGroup direction="column">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiLink
|
||||
data-test-subj="profilingSummaryGoToUniversalProfilingLink"
|
||||
href={profilingRouter.link('/stacktraces/{topNType}', {
|
||||
path: { topNType: TopNType.Hosts },
|
||||
query: {
|
||||
|
@ -139,6 +140,7 @@ export function Summary({ data, isLoading }: Props) {
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiLink
|
||||
data-test-subj="profilingSummaryGoToIndexManagementLink"
|
||||
href={core.http.basePath.prepend(
|
||||
'/app/management/data/index_management/data_streams'
|
||||
)}
|
||||
|
|
|
@ -31,6 +31,7 @@ export const FingerprintCol: React.FC<Props> = ({ cert }) => {
|
|||
<EuiCopy textToCopy={val ?? ''}>
|
||||
{(copy) => (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsShaComponentButton"
|
||||
aria-label={COPY_FINGERPRINT}
|
||||
onClick={copy}
|
||||
iconType="copy"
|
||||
|
|
|
@ -50,6 +50,7 @@ export const StepDetailsLinkIcon = ({
|
|||
|
||||
return (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsStepDetailsLinkIconButton"
|
||||
{...commonProps}
|
||||
aria-label={VIEW_DETAILS}
|
||||
title={VIEW_DETAILS}
|
||||
|
|
|
@ -15,7 +15,12 @@ export const AlertsLink = () => {
|
|||
|
||||
return (
|
||||
<EuiToolTip content={VIEW_ALERTS}>
|
||||
<EuiButtonIcon aria-label={VIEW_ALERTS} href={alertUrl} iconType="inspect" />
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsAlertsLinkButton"
|
||||
aria-label={VIEW_ALERTS}
|
||||
href={alertUrl}
|
||||
iconType="inspect"
|
||||
/>
|
||||
</EuiToolTip>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -16,6 +16,7 @@ export const ErrorsLink = ({ disabled }: { disabled?: boolean }) => {
|
|||
return (
|
||||
<EuiToolTip content={VIEW_ERRORS}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsErrorsLinkButton"
|
||||
aria-label={VIEW_ERRORS}
|
||||
href={`${basePath}/app/synthetics/errors`}
|
||||
iconType="inspect"
|
||||
|
|
|
@ -148,6 +148,7 @@ export const BrowserStepsList = ({
|
|||
isExpander: true,
|
||||
render: (item: JourneyStep) => (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsColumnsButton"
|
||||
onClick={() => toggleDetails(item)}
|
||||
aria-label={expandedMap[item._id] ? 'Collapse' : 'Expand'}
|
||||
iconType={expandedMap[item._id] ? 'arrowDown' : 'arrowRight'}
|
||||
|
|
|
@ -156,6 +156,7 @@ export const KeyValuePairsField = ({
|
|||
append={
|
||||
<EuiFormLabel>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsKeyValuePairsFieldButton"
|
||||
iconType="trash"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.synthetics.keyValuePairsField.deleteItem.label',
|
||||
|
|
|
@ -23,6 +23,7 @@ export const MonitorSelector = () => {
|
|||
|
||||
const button = (
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsMonitorSelectorButton"
|
||||
size="s"
|
||||
iconType="arrowDown"
|
||||
onClick={onButtonClick}
|
||||
|
|
|
@ -240,6 +240,7 @@ export function useMonitorListColumns({
|
|||
render: () => (
|
||||
<NoPermissionsTooltip canEditSynthetics={canEditSynthetics}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsUseMonitorListColumnsButton"
|
||||
iconType="boxesHorizontal"
|
||||
isDisabled={true}
|
||||
aria-label={CANNOT_PERFORM_ACTION_SYNTHETICS}
|
||||
|
|
|
@ -244,6 +244,7 @@ export function ActionsPopover({
|
|||
button={
|
||||
<IconPanel hasPanel={iconHasPanel}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsActionsPopoverButton"
|
||||
aria-label={openActionsMenuAria}
|
||||
iconType="boxesHorizontal"
|
||||
color="primary"
|
||||
|
|
|
@ -99,6 +99,7 @@ export const GroupGridItem = ({
|
|||
<EuiFlexGroup alignItems="center" gutterSize="s">
|
||||
<EuiFlexItem>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsGroupGridItemButton"
|
||||
isDisabled={groupMonitors.length === 0}
|
||||
className="fullScreenButton"
|
||||
iconType="fullScreen"
|
||||
|
|
|
@ -120,6 +120,7 @@ export const MetricItemIcon = ({
|
|||
}}
|
||||
>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsMetricItemIconButton"
|
||||
iconType="warning"
|
||||
color="danger"
|
||||
size="m"
|
||||
|
@ -138,7 +139,11 @@ export const MetricItemIcon = ({
|
|||
<EuiFlexGroup>
|
||||
<EuiFlexItem grow>{testTime}</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon iconType="cross" onClick={closePopover} />
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsMetricItemIconButton"
|
||||
iconType="cross"
|
||||
onClick={closePopover}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiPopoverTitle>
|
||||
|
|
|
@ -16,6 +16,7 @@ export const ParamsText = ({ text }: { text: string }) => {
|
|||
<EuiFlexGroup gutterSize="s" justifyContent="flexStart">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsParamsTextButton"
|
||||
iconType={!isViewing ? 'eye' : 'eyeClosed'}
|
||||
aria-label={i18n.translate('xpack.synthetics.settingsRoute.viewParam', {
|
||||
defaultMessage: 'View parameter value',
|
||||
|
|
|
@ -36,6 +36,7 @@ export function WaterfallMarkerIcon({ field, label }: { field: string; label: st
|
|||
css={{ top: 4 }}
|
||||
button={
|
||||
<EuiButtonIcon
|
||||
data-test-subj="syntheticsWaterfallMarkerIconButton"
|
||||
css={{ color: euiTheme.colors.mediumShade }}
|
||||
aria-label={i18n.translate(
|
||||
'xpack.synthetics.synthetics.markers.openEmbeddableButton.label',
|
||||
|
|
|
@ -33,6 +33,7 @@ export function ResetPercentileZoom({
|
|||
<EuiFlexItem grow={false}>
|
||||
<EuiShowFor sizes={['xs']}>
|
||||
<EuiButtonIcon
|
||||
data-test-subj="uxResetPercentileZoomButton"
|
||||
iconType="inspect"
|
||||
size="s"
|
||||
aria-label={I18LABELS.resetZoom}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue