diff --git a/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap b/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap
index 9ce249aa32a1d..744a3b2d405c3 100644
--- a/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap
+++ b/x-pack/plugins/reporting/public/management/__snapshots__/report_listing.test.tsx.snap
@@ -425,6 +425,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -1434,6 +1435,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -2457,6 +2459,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -3527,6 +3530,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -4630,6 +4634,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -5700,6 +5705,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -6770,6 +6776,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -7840,6 +7847,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
@@ -8910,6 +8918,7 @@ exports[`ReportListing Report job listing with some items 1`] = `
>
diff --git a/x-pack/plugins/reporting/public/management/report_listing.tsx b/x-pack/plugins/reporting/public/management/report_listing.tsx
index 749e42de526d3..dd41314b4883f 100644
--- a/x-pack/plugins/reporting/public/management/report_listing.tsx
+++ b/x-pack/plugins/reporting/public/management/report_listing.tsx
@@ -151,6 +151,7 @@ class ReportListingUi extends Component
{
return (
<>
@@ -375,7 +376,7 @@ class ReportListingUi extends Component {
}),
render: (objectTitle: string, record: Job) => {
return (
-
+
{objectTitle}
{record.object_type}
diff --git a/x-pack/test/accessibility/apps/reporting.ts b/x-pack/test/accessibility/apps/reporting.ts
new file mode 100644
index 0000000000000..bccb650fa08ca
--- /dev/null
+++ b/x-pack/test/accessibility/apps/reporting.ts
@@ -0,0 +1,76 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrProviderContext } from '../ftr_provider_context';
+
+import { JOB_PARAMS_RISON_CSV_DEPRECATED } from '../../reporting_api_integration/services/fixtures';
+
+export default function ({ getService, getPageObjects }: FtrProviderContext) {
+ const { common } = getPageObjects(['common']);
+ const retry = getService('retry');
+ const a11y = getService('a11y');
+ const testSubjects = getService('testSubjects');
+ const supertestWithoutAuth = getService('supertestWithoutAuth');
+ const reporting = getService('reporting');
+ const esArchiver = getService('esArchiver');
+ const security = getService('security');
+
+ describe('Reporting', () => {
+ const createReportingUser = async () => {
+ await security.user.create(reporting.REPORTING_USER_USERNAME, {
+ password: reporting.REPORTING_USER_PASSWORD,
+ roles: ['reporting_user', 'data_analyst', 'kibana_user'], // Deprecated: using built-in `reporting_user` role grants all Reporting privileges
+ full_name: 'a reporting user',
+ });
+ };
+
+ const deleteReportingUser = async () => {
+ await security.user.delete(reporting.REPORTING_USER_USERNAME);
+ };
+
+ before(async () => {
+ await esArchiver.load('x-pack/test/functional/es_archives/reporting/logs');
+ await esArchiver.load('x-pack/test/functional/es_archives/logstash_functional');
+
+ await createReportingUser();
+ await reporting.loginReportingUser();
+ });
+
+ after(async () => {
+ await esArchiver.unload('x-pack/test/functional/es_archives/reporting/logs');
+ await esArchiver.unload('x-pack/test/functional/es_archives/logstash_functional');
+
+ await deleteReportingUser();
+ });
+
+ beforeEach(async () => {
+ // Add one report
+ await supertestWithoutAuth
+ .post(`/api/reporting/generate/csv`)
+ .auth(reporting.REPORTING_USER_USERNAME, reporting.REPORTING_USER_PASSWORD)
+ .set('kbn-xsrf', 'xxx')
+ .send({ jobParams: JOB_PARAMS_RISON_CSV_DEPRECATED })
+ .expect(200);
+
+ await retry.waitFor('Reporting app', async () => {
+ await common.navigateToApp('reporting');
+ return testSubjects.exists('reportingPageHeader');
+ });
+ });
+
+ afterEach(async () => {
+ await reporting.deleteAllReports();
+ });
+
+ it('List reports view', async () => {
+ await retry.waitForWithTimeout('A reporting list item', 5000, () => {
+ return testSubjects.exists('reportingListItemObjectTitle');
+ });
+ await a11y.testAppSnapshot();
+ });
+ });
+}
diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts
index 81cfd70a23956..e79bbdb86a88a 100644
--- a/x-pack/test/accessibility/config.ts
+++ b/x-pack/test/accessibility/config.ts
@@ -37,6 +37,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
require.resolve('./apps/security_solution'),
require.resolve('./apps/ml_embeddables_in_dashboard'),
require.resolve('./apps/remote_clusters'),
+ require.resolve('./apps/reporting'),
],
pageObjects,
diff --git a/x-pack/test/functional/services/index.ts b/x-pack/test/functional/services/index.ts
index 99293c71676b4..273db212400ab 100644
--- a/x-pack/test/functional/services/index.ts
+++ b/x-pack/test/functional/services/index.ts
@@ -9,6 +9,7 @@ import { services as kibanaFunctionalServices } from '../../../../test/functiona
import { services as kibanaApiIntegrationServices } from '../../../../test/api_integration/services';
import { services as kibanaXPackApiIntegrationServices } from '../../api_integration/services';
import { services as commonServices } from '../../common/services';
+import { ReportingFunctionalProvider } from '../../reporting_functional/services';
import {
MonitoringNoDataProvider,
@@ -107,5 +108,6 @@ export const services = {
dashboardDrilldownPanelActions: DashboardDrilldownPanelActionsProvider,
dashboardDrilldownsManage: DashboardDrilldownsManageProvider,
dashboardPanelTimeRange: DashboardPanelTimeRangeProvider,
+ reporting: ReportingFunctionalProvider,
searchSessions: SearchSessionsService,
};
diff --git a/x-pack/test/reporting_api_integration/reporting_without_security/ilm_migration_apis.ts b/x-pack/test/reporting_api_integration/reporting_without_security/ilm_migration_apis.ts
index a0f4a3f91fe32..a9b6798a0224f 100644
--- a/x-pack/test/reporting_api_integration/reporting_without_security/ilm_migration_apis.ts
+++ b/x-pack/test/reporting_api_integration/reporting_without_security/ilm_migration_apis.ts
@@ -47,7 +47,7 @@ export default function ({ getService }: FtrProviderContext) {
});
it('detects when reporting indices should be migrated due to missing ILM policy', async () => {
- await reportingAPI.makeAllReportingPoliciesUnmanaged();
+ await reportingAPI.makeAllReportingIndicesUnmanaged();
// TODO: Remove "any" when no longer through type issue "policy_id" missing
await es.ilm.deleteLifecycle({ policy: ILM_POLICY_NAME } as any);
@@ -63,7 +63,7 @@ export default function ({ getService }: FtrProviderContext) {
});
it('detects when reporting indices should be migrated due to unmanaged indices', async () => {
- await reportingAPI.makeAllReportingPoliciesUnmanaged();
+ await reportingAPI.makeAllReportingIndicesUnmanaged();
await supertestNoAuth
.post(`/api/reporting/generate/csv`)
.set('kbn-xsrf', 'xxx')
diff --git a/x-pack/test/reporting_api_integration/services/scenarios.ts b/x-pack/test/reporting_api_integration/services/scenarios.ts
index eb32de9d0dc9c..08c07e0e257ed 100644
--- a/x-pack/test/reporting_api_integration/services/scenarios.ts
+++ b/x-pack/test/reporting_api_integration/services/scenarios.ts
@@ -181,8 +181,8 @@ export function createScenarios({ getService }: Pick {
- log.debug('ReportingAPI.makeAllReportingPoliciesUnmanaged');
+ const makeAllReportingIndicesUnmanaged = async () => {
+ log.debug('ReportingAPI.makeAllReportingIndicesUnmanaged');
const settings: any = {
'index.lifecycle.name': null,
};
@@ -214,6 +214,6 @@ export function createScenarios({ getService }: Pick