From d46dce4dc2a40f40cdead8db794c63658fca2706 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Wed, 28 Jan 2026 12:19:26 +0200 Subject: [PATCH 1/3] Address @elastic/eui/require-table-caption lint violations across @elastic/elastic/obs-ux-management-team files --- .../components/alert_overview/alert_overview.tsx | 10 +++++++++- .../components/burn_rate_rule_editor/dependencies.tsx | 8 +++++++- .../components/compact_view/slo_list_compact_view.tsx | 3 +++ .../components/alerts/rule_monitors_table.tsx | 3 +++ .../components/certificates/certificates_list.tsx | 4 ++++ .../components/common/components/stderr_logs.tsx | 1 + .../common/monitor_test_result/browser_steps_list.tsx | 5 ++++- .../monitor_summary/test_runs_table.tsx | 6 ++++++ .../management/monitor_list_table/monitor_list.tsx | 3 +++ .../compact_view/components/monitors_table.tsx | 4 ++++ .../settings/data_retention/dsl_retention_tab.tsx | 3 +++ .../test_now_mode/simple/ping_list/ping_list_table.tsx | 3 +++ .../components/certificates/certificates_list.tsx | 4 ++++ .../components/monitor/ping_list/ping_list_table.tsx | 3 +++ .../availability_reporting/availability_reporting.tsx | 4 ++++ .../components/overview/monitor_list/monitor_list.tsx | 6 +++++- .../components/synthetics/check_steps/stderr_logs.tsx | 1 + .../components/synthetics/check_steps/steps_list.tsx | 3 +++ .../app/rum_dashboard/impactful_metrics/js_errors.tsx | 3 +++ 19 files changed, 73 insertions(+), 4 deletions(-) diff --git a/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx index 481629e26696c..6010229283a75 100644 --- a/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx @@ -223,7 +223,15 @@ export const AlertOverview = memo( - + ); } diff --git a/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependencies.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependencies.tsx index 929f3a5ad5203..8a38aab499f82 100644 --- a/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependencies.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependencies.tsx @@ -160,7 +160,13 @@ export function Dependencies({ currentRuleId, dependencies, onChange }: Dependen

- + {sloToAddRule ? ( { pageSize, showPerPageOptions: true, }} + tableCaption={i18n.translate('xpack.synthetics.ruleDetails.monitorsTable.caption', { + defaultMessage: 'Rule monitors', + })} /> ); }; diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx index 5d3a99eea947f..e01d10dbc9577 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx @@ -9,6 +9,7 @@ import React from 'react'; import moment from 'moment'; import type { Direction } from '@elastic/eui'; import { EuiBasicTable } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { Cert, CertMonitor, CertResult } from '../../../../../common/runtime_types'; import { useDateFormat } from '../../../../hooks/use_date_format'; import { CertStatus } from './cert_status'; @@ -104,6 +105,9 @@ export const CertificateList: React.FC = ({ page, certificates, sort, onC columns={columns} items={certificates?.certs ?? []} pagination={pagination} + tableCaption={i18n.translate('xpack.synthetics.certificates.certificatesList.tableCaption', { + defaultMessage: 'Certificate details', + })} onChange={(newVal) => { onChange(newVal.page as Page, newVal.sort as CertSort); }} diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx index 60cfce7e7a64e..5b1d1bf85f234 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx @@ -154,6 +154,7 @@ export const StdErrorLogs = ({ pageSizeOptions: [2, 5, 10, 20, 50], }} onTableChange={onTableChange} + tableCaption={title ?? TEST_RUN_LOGS_LABEL} /> ); diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx index b54d6e4fe8b94..19635e1ca8b4a 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx @@ -324,6 +324,9 @@ export const BrowserStepsList = ({ defaultMessage: 'No data found', }) } + tableCaption={i18n.translate('xpack.synthetics.monitor.browserStepsList.caption', { + defaultMessage: 'Step results', + })} tableLayout="auto" itemId="_id" itemIdToExpandedRowMap={testNowMode || showExpand ? expandedMap : undefined} @@ -470,4 +473,4 @@ const STEP_NAME = i18n.translate('xpack.synthetics.monitor.stepName.label', { const STEP_DURATION = i18n.translate('xpack.synthetics.monitor.step.duration.label', { defaultMessage: 'Duration', -}); +}); \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx index 10be6e0ca9979..bc0aaa2ebb97c 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx @@ -316,6 +316,12 @@ export const TestRunsTable = ({ } : undefined } + tableCaption={i18n.translate( + 'xpack.synthetics.monitorDetails.summary.testRunsCaption', + { + defaultMessage: 'Recent test runs', + } + )} /> ); diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx index b13be3fe05cc4..62193a187b508 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx @@ -126,6 +126,9 @@ export const MonitorList = ({ aria-label={i18n.translate('xpack.synthetics.management.monitorList.title', { defaultMessage: 'Synthetics monitors list', })} + tableCaption={i18n.translate('xpack.synthetics.management.monitorList.caption', { + defaultMessage: 'Synthetics monitors', + })} error={error?.body?.message} loading={loading} itemId="config_id" diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/compact_view/components/monitors_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/compact_view/components/monitors_table.tsx index 63b2c02e27718..0ee0350297de5 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/compact_view/components/monitors_table.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/compact_view/components/monitors_table.tsx @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { i18n } from '@kbn/i18n'; import React, { useCallback } from 'react'; import type { EuiTableRowProps } from '@elastic/eui'; import { EuiBasicTable } from '@elastic/eui'; @@ -74,6 +75,9 @@ export const MonitorsTable = ({ rowProps={getRowProps} data-test-subj="syntheticsCompactViewTable" tableLayout="auto" + tableCaption={i18n.translate('xpack.synthetics.monitorsTable.tableCaption', { + defaultMessage: 'Monitor status', + })} /> ); }; diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx index 612140c2bff5a..c16fca2cf8f63 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx @@ -32,6 +32,9 @@ export const DslRetentionTab = () => { loading={loading === true} columns={DSL_RETENTION_COLUMNS} tableLayout="auto" + tableCaption={i18n.translate('xpack.synthetics.dslRetention.table.caption', { + defaultMessage: 'Retention overview', + })} /> ); }; diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx index bfadb7dbb2e97..304c2c6459f28 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx @@ -127,6 +127,9 @@ export function PingListTable({ loading, error, pings, onChange }: Props) { defaultMessage: 'No history found', }) } + tableCaption={i18n.translate('xpack.synthetics.pingList.pingListCaption', { + defaultMessage: 'Ping history', + })} tableLayout="auto" onChange={onChange} /> diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx index 75c7a6af586f7..6ea0621eb4026 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx @@ -7,6 +7,7 @@ import React from 'react'; import moment from 'moment'; +import { i18n } from '@kbn/i18n'; import type { Direction } from '@elastic/eui'; import { EuiBasicTable } from '@elastic/eui'; import { CertStatus } from './cert_status'; @@ -113,6 +114,9 @@ export const CertificateList: React.FC = ({ page, certificates, sort, onC direction: sort.direction, }, }} + tableCaption={i18n.translate('xpack.uptime.certificatesList.caption', { + defaultMessage: 'Certificates overview', + })} noItemsMessage={ certificates.loading ? ( LOADING_CERTIFICATES diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx index 6d50bf42438e3..debe1239596fd 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx @@ -240,6 +240,9 @@ export function PingListTable({ loading, error, pings, pagination, onChange, fai defaultMessage: 'No history found', }) } + tableCaption={i18n.translate('xpack.uptime.pingList.pingHistoryCaption', { + defaultMessage: 'Ping history', + })} tableLayout="auto" rowProps={getRowProps} onChange={onChange} diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx index 3498dde3f756d..89d9525a34eca 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx @@ -8,6 +8,7 @@ import React, { useState } from 'react'; import type { Criteria, Pagination } from '@elastic/eui'; import { EuiBasicTable, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import type { StatusTag } from './location_status_tags'; import { TagLabel } from './tag_label'; @@ -81,6 +82,9 @@ export const AvailabilityReporting: React.FC = ({ allLocations }) => { columns={cols} items={allLocations.slice(pageIndex * pageSize, pageIndex * pageSize + pageSize)} onChange={onTableChange} + tableCaption={i18n.translate('xpack.uptime.availabilityReporting.tableCaption', { + defaultMessage: 'Availability overview', + })} {...paginationProps} /> diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx index 2bfd6d6913104..665a46bbd6995 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; import { @@ -224,6 +225,9 @@ export const MonitorListComponent: ({ ); diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx index ab7e0c1b93238..8d3b49d99325d 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx @@ -236,6 +236,9 @@ export const StepsList = ({ ); From cca1228ec8380f0c9e71cf324076e252512c9c8a Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:47:00 +0000 Subject: [PATCH 2/3] Changes from node scripts/eslint_all_files --no-cache --fix --- .../common/monitor_test_result/browser_steps_list.tsx | 2 +- .../monitor_details/monitor_summary/test_runs_table.tsx | 9 +++------ .../components/overview/monitor_list/monitor_list.tsx | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx index 19635e1ca8b4a..7f55146e272eb 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx @@ -473,4 +473,4 @@ const STEP_NAME = i18n.translate('xpack.synthetics.monitor.stepName.label', { const STEP_DURATION = i18n.translate('xpack.synthetics.monitor.step.duration.label', { defaultMessage: 'Duration', -}); \ No newline at end of file +}); diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx index bc0aaa2ebb97c..e903eddc9f3f0 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx @@ -316,12 +316,9 @@ export const TestRunsTable = ({ } : undefined } - tableCaption={i18n.translate( - 'xpack.synthetics.monitorDetails.summary.testRunsCaption', - { - defaultMessage: 'Recent test runs', - } - )} + tableCaption={i18n.translate('xpack.synthetics.monitorDetails.summary.testRunsCaption', { + defaultMessage: 'Recent test runs', + })} /> ); diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx index 665a46bbd6995..72a4eeb4ac634 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx @@ -286,4 +286,4 @@ const WrapperPanel = euiStyled(EuiPanel)` transition: background-color 3000ms linear; } } -`; \ No newline at end of file +`; From aafebc297067ce6850597891a933985b2c06dc12 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Thu, 29 Jan 2026 13:02:12 +0200 Subject: [PATCH 3/3] fix JEST --- .../synthetics/components/certificates/certificates.test.tsx | 2 +- .../synthetics/components/certificates/certificates_list.tsx | 2 +- .../uptime/public/legacy_uptime/pages/certificates.test.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx index 876d040ffb986..9b5123e43e0fc 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx @@ -13,7 +13,7 @@ describe('CertificatesPage', () => { it('renders expected elements for valid props', async () => { const { findByText } = render(); - expect(await findByText(/data table \(empty\)/im)).toBeInTheDocument(); + expect(await findByText(/Certificates overview/im)).toBeInTheDocument(); expect(await findByText('No Certificates found.')).toBeInTheDocument(); }); }); diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx index e01d10dbc9577..fc22e3d2a6101 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx @@ -106,7 +106,7 @@ export const CertificateList: React.FC = ({ page, certificates, sort, onC items={certificates?.certs ?? []} pagination={pagination} tableCaption={i18n.translate('xpack.synthetics.certificates.certificatesList.tableCaption', { - defaultMessage: 'Certificate details', + defaultMessage: 'Certificates overview', })} onChange={(newVal) => { onChange(newVal.page as Page, newVal.sort as CertSort); diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx index 86901bc65ac4e..1f7ee6d1d4743 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx @@ -13,7 +13,7 @@ describe('CertificatesPage', () => { it('renders expected elements for valid props', async () => { const { findByText } = render(); - expect(await findByText(/data table \(empty\)/im)).toBeInTheDocument(); + expect(await findByText(/Certificates overview/im)).toBeInTheDocument(); expect(await findByText('No Certificates found.')).toBeInTheDocument(); }); });