From e02770de4a731df04d20b990bc5629eb0c4b16f6 Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Thu, 2 Jan 2025 18:12:04 -0800 Subject: [PATCH 1/9] fix: change notification preview message to have time in UTC format. fix an improper import Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- cypress/fixtures/sample_composite_level_monitor.json | 2 +- .../components/Action/actions/Message.test.js | 2 +- public/pages/CreateTrigger/utils/constants.js | 8 ++++---- public/pages/CreateTrigger/utils/helper.js | 6 ++++-- .../AcknowledgeAlertsModal/AcknowledgeAlertsModal.js | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cypress/fixtures/sample_composite_level_monitor.json b/cypress/fixtures/sample_composite_level_monitor.json index 9b1f67bf4..8e6d09a13 100644 --- a/cypress/fixtures/sample_composite_level_monitor.json +++ b/cypress/fixtures/sample_composite_level_monitor.json @@ -48,7 +48,7 @@ "name": "sample_channel", "destination_id": "6dYFw4gB2qeAWe54NgyL", "message_template": { - "source": "Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue.\n - Trigger: {{ctx.trigger.name}}\n - Severity: {{ctx.trigger.severity}}\n - Period start: {{ctx.periodStart}}\n - Period end: {{ctx.periodEnd}}", + "source": "Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue.\n - Trigger: {{ctx.trigger.name}}\n - Severity: {{ctx.trigger.severity}}\n - Period start: {{ctx.periodStart}} UTC\n - Period end: {{ctx.periodEnd}} UTC", "lang": "mustache" }, "throttle_enabled": false, diff --git a/public/pages/CreateTrigger/components/Action/actions/Message.test.js b/public/pages/CreateTrigger/components/Action/actions/Message.test.js index 047a2bec5..0d08d7e09 100644 --- a/public/pages/CreateTrigger/components/Action/actions/Message.test.js +++ b/public/pages/CreateTrigger/components/Action/actions/Message.test.js @@ -19,7 +19,7 @@ function getRenderWrapper(customProps = {}) { action={{ message_template: { source: - 'Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue.\n- Trigger: {{ctx.trigger.name}}\n- Severity: {{ctx.trigger.severity}}\n- Period start: {{ctx.periodStart}}\n- Period end: {{ctx.periodEnd}}', + 'Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue.\n- Trigger: {{ctx.trigger.name}}\n- Severity: {{ctx.trigger.severity}}\n- Period start: {{ctx.periodStart}} UTC\n- Period end: {{ctx.periodEnd}} UTC', lang: 'mustache', }, }} diff --git a/public/pages/CreateTrigger/utils/constants.js b/public/pages/CreateTrigger/utils/constants.js index dd8a59165..7c6af02e3 100644 --- a/public/pages/CreateTrigger/utils/constants.js +++ b/public/pages/CreateTrigger/utils/constants.js @@ -11,8 +11,8 @@ export const DEFAULT_MESSAGE_SOURCE = { Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue. - Trigger: {{ctx.trigger.name}} - Severity: {{ctx.trigger.severity}} - - Period start: {{ctx.periodStart}} - - Period end: {{ctx.periodEnd}} + - Period start: {{ctx.periodStart}} UTC + - Period end: {{ctx.periodEnd}} UTC - Deduped Alerts: {{#ctx.dedupedAlerts}} @@ -33,8 +33,8 @@ export const DEFAULT_MESSAGE_SOURCE = { Monitor {{ctx.monitor.name}} just entered alert status. Please investigate the issue. - Trigger: {{ctx.trigger.name}} - Severity: {{ctx.trigger.severity}} - - Period start: {{ctx.periodStart}} - - Period end: {{ctx.periodEnd}} + - Period start: {{ctx.periodStart}} UTC + - Period end: {{ctx.periodEnd}} UTC `.trim(), }; diff --git a/public/pages/CreateTrigger/utils/helper.js b/public/pages/CreateTrigger/utils/helper.js index 83d2225d0..7721cdf40 100644 --- a/public/pages/CreateTrigger/utils/helper.js +++ b/public/pages/CreateTrigger/utils/helper.js @@ -74,8 +74,10 @@ export const getTriggerContext = (executeResponse, monitor, values, triggerIndex if (_.isArray(trigger) && triggerIndex >= 0) trigger = trigger[triggerIndex]; return { - periodStart: moment.utc(_.get(executeResponse, 'period_start', Date.now())).tz(getTimeZone()).format(), - periodEnd: moment.utc(_.get(executeResponse, 'period_end', Date.now())).tz(getTimeZone()).format(), + // Backend only supports, UTC timezone. + // Don't use user's local timezone. + periodStart: moment.utc(_.get(executeResponse, 'period_start', Date.now())).format(), + periodEnd: moment.utc(_.get(executeResponse, 'period_end', Date.now())).format(), results: [_.get(executeResponse, 'input_results.results[0]')].filter((result) => !!result), trigger: trigger, alert: null, diff --git a/public/pages/Dashboard/components/AcknowledgeAlertsModal/AcknowledgeAlertsModal.js b/public/pages/Dashboard/components/AcknowledgeAlertsModal/AcknowledgeAlertsModal.js index e9dae71f0..93f1bb21c 100644 --- a/public/pages/Dashboard/components/AcknowledgeAlertsModal/AcknowledgeAlertsModal.js +++ b/public/pages/Dashboard/components/AcknowledgeAlertsModal/AcknowledgeAlertsModal.js @@ -42,10 +42,10 @@ import { MAX_ALERT_COUNT } from '../../utils/constants'; import { DEFAULT_PAGE_SIZE_OPTIONS } from '../../../Monitors/containers/Monitors/utils/constants'; import DashboardControls from '../DashboardControls'; import ContentPanel from '../../../../components/ContentPanel'; -import { appendCommentsAction, queryColumns } from '../../utils/tableUtils'; +import { queryColumns } from '../../utils/tableUtils'; import DashboardEmptyPrompt from '../DashboardEmptyPrompt'; import { getAlertsFindingColumn } from '../FindingsDashboard/findingsUtils'; -import { getDataSourceId, getIsCommentsEnabled } from '../../../utils/helpers'; +import { appendCommentsAction, getDataSourceId, getIsCommentsEnabled } from '../../../utils/helpers'; export const DEFAULT_NUM_MODAL_ROWS = 10; From 2baec50ef2946a15ee3874df50a82844ae1a743c Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:28:13 -0800 Subject: [PATCH 2/9] fix: add unit tests. change timezone to UTC Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- public/pages/CreateTrigger/utils/helper.js | 14 +- .../pages/CreateTrigger/utils/helper.test.js | 167 +++++++++++++++++- 2 files changed, 174 insertions(+), 7 deletions(-) diff --git a/public/pages/CreateTrigger/utils/helper.js b/public/pages/CreateTrigger/utils/helper.js index 7721cdf40..a02835354 100644 --- a/public/pages/CreateTrigger/utils/helper.js +++ b/public/pages/CreateTrigger/utils/helper.js @@ -73,11 +73,11 @@ export const getTriggerContext = (executeResponse, monitor, values, triggerIndex let trigger = formikToTrigger(values, _.get(monitor, 'ui_metadata', {})); if (_.isArray(trigger) && triggerIndex >= 0) trigger = trigger[triggerIndex]; + console.log("Values: ", JSON.stringify(values)); + return { - // Backend only supports, UTC timezone. - // Don't use user's local timezone. - periodStart: moment.utc(_.get(executeResponse, 'period_start', Date.now())).format(), - periodEnd: moment.utc(_.get(executeResponse, 'period_end', Date.now())).format(), + periodStart: moment.utc(_.get(executeResponse, 'period_start', Date.now())).tz(getTimeZone()).format(), + periodEnd: moment.utc(_.get(executeResponse, 'period_end', Date.now())).tz(getTimeZone()).format(), results: [_.get(executeResponse, 'input_results.results[0]')].filter((result) => !!result), trigger: trigger, alert: null, @@ -124,6 +124,8 @@ export const conditionToExpressions = (condition = '', monitors) => { }; export function getTimeZone() { - const detectedTimeZone = getUISettings().get('dateFormat:tz', 'Browser'); - return detectedTimeZone === 'Browser' ? (moment.tz.guess() || moment.format('Z')) : detectedTimeZone; + // TODO: Include support to configure timezones rather than using the default UTC as requested here - https://github.com/opensearch-project/alerting/issues/1744 + // const detectedTimeZone = getUISettings().get('dateFormat:tz', 'Browser'); + // return detectedTimeZone === 'Browser' ? (moment.tz.guess() || moment.format('Z')) : detectedTimeZone; + return "UTC"; } diff --git a/public/pages/CreateTrigger/utils/helper.test.js b/public/pages/CreateTrigger/utils/helper.test.js index 24f9c0687..60fc032f8 100644 --- a/public/pages/CreateTrigger/utils/helper.test.js +++ b/public/pages/CreateTrigger/utils/helper.test.js @@ -4,7 +4,7 @@ */ import _ from 'lodash'; -import { getDefaultScript } from './helper'; +import { getDefaultScript, getTriggerContext, getTimeZone } from './helper'; import { MONITOR_TYPE } from '../../../utils/constants'; import { FORMIK_INITIAL_DOC_LEVEL_SCRIPT, @@ -14,6 +14,8 @@ import { API_TYPES, DEFAULT_CLUSTER_METRICS_SCRIPT, } from '../../CreateMonitor/components/ClusterMetricsMonitor/utils/clusterMetricsMonitorConstants'; +import moment from 'moment-timezone'; +import { formikToTrigger } from '../containers/CreateTrigger/utils/formikToTrigger'; describe('CreateTrigger/utils/helper', () => { describe('getDefaultScript', () => { @@ -81,4 +83,167 @@ describe('CreateTrigger/utils/helper', () => { }); }); }); + + describe('getTriggerContext', () => { + test("Should return a proper trigger context", () => { + const mockMonitor = { + "name": "Test", + "type": "monitor", + "monitor_type": "query_level_monitor", + "enabled": true, + "schedule": { + "period": { + "interval": 1, + "unit": "MINUTES" + } + }, + "inputs": [ + { + "search": { + "indices": [ + "opensearch_dashboards_sample_data_ecommerce" + ], + "query": { + "size": 0, + "aggregations": {}, + "query": { + "bool": { + "filter": [ + { + "range": { + "order_date": { + "gte": "{{period_end}}||-1h", + "lte": "{{period_end}}", + "format": "epoch_millis" + } + } + } + ] + } + } + } + } + } + ], + "triggers": [], + "ui_metadata": { + "schedule": { + "timezone": null, + "frequency": "interval", + "period": { + "interval": 1, + "unit": "MINUTES" + }, + "daily": 0, + "weekly": { + "mon": false, + "tue": false, + "wed": false, + "thur": false, + "fri": false, + "sat": false, + "sun": false + }, + "monthly": { + "type": "day", + "day": 1 + }, + "cronExpression": "0 */1 * * *" + }, + "monitor_type": "query_level_monitor", + "search": { + "searchType": "graph", + "timeField": "order_date", + "aggregations": [], + "groupBy": [], + "bucketValue": 1, + "bucketUnitOfTime": "h", + "filters": [] + } + } + }; + const mockInputResults = { + results: [ + { + "_shards": { + "total": 1, + "failed": 0, + "successful": 1, + "skipped": 0 + }, + "hits": { + "hits": [], + "total": { + "value": 33, + "relation": "eq" + }, + "max_score": null + }, + "took": 3, + "timed_out": false, + "aggregations": { + "over": { + "buckets": [ + { + "key_as_string": "2025-01-06T08:00:00.000-08:00", + "doc_count": 8, + "key": 1736179200000 + }, + { + "key_as_string": "2025-01-06T09:00:00.000-08:00", + "doc_count": 4, + "key": 1736182800000 + }, + { + "key_as_string": "2025-01-06T10:00:00.000-08:00", + "doc_count": 8, + "key": 1736186400000 + }, + { + "key_as_string": "2025-01-06T11:00:00.000-08:00", + "doc_count": 7, + "key": 1736190000000 + }, + { + "key_as_string": "2025-01-06T12:00:00.000-08:00", + "doc_count": 5, + "key": 1736193600000 + }, + { + "key_as_string": "2025-01-06T13:00:00.000-08:00", + "doc_count": 1, + "key": 1736197200000 + } + ] + } + } + } + ] + }; + const mockExecuteResponse = { + period_start: "2025-01-06T21:11:41Z", + period_end: "2025-01-06T21:12:41Z", + input_results: mockInputResults, + }; + const mockValues = { + name: "Test", + severity: "1", + condition: { + script: "ctx.results[0].hits.total.value > 10000" + } + }; + const mockTrigger = formikToTrigger(mockValues, _.get(mockMonitor, 'ui_metadata', {})); + if (_.isArray(mockTrigger) && triggerIndex >= 0) mockTrigger = mockTrigger[triggerIndex]; + const result = getTriggerContext(mockExecuteResponse, mockMonitor, mockValues); + expect(result).toEqual({ + periodStart: moment.utc(_.get(mockExecuteResponse, 'period_start', Date.now())).tz(getTimeZone()).format(), + periodEnd: moment.utc(_.get(mockExecuteResponse, 'period_end', Date.now())).tz(getTimeZone()).format(), + results: [_.get(mockExecuteResponse, 'input_results.results[0]')].filter((result) => !!result), + trigger: mockTrigger, + alert: null, + error: null, + monitor: mockMonitor + }); + }); + }); }); From 4e88be85b229428709f9601dc688fb99b3d5ba6d Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:30:13 -0800 Subject: [PATCH 3/9] fix: remove log statements Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- public/pages/CreateTrigger/utils/helper.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/pages/CreateTrigger/utils/helper.js b/public/pages/CreateTrigger/utils/helper.js index a02835354..8e3f4ac63 100644 --- a/public/pages/CreateTrigger/utils/helper.js +++ b/public/pages/CreateTrigger/utils/helper.js @@ -73,8 +73,6 @@ export const getTriggerContext = (executeResponse, monitor, values, triggerIndex let trigger = formikToTrigger(values, _.get(monitor, 'ui_metadata', {})); if (_.isArray(trigger) && triggerIndex >= 0) trigger = trigger[triggerIndex]; - console.log("Values: ", JSON.stringify(values)); - return { periodStart: moment.utc(_.get(executeResponse, 'period_start', Date.now())).tz(getTimeZone()).format(), periodEnd: moment.utc(_.get(executeResponse, 'period_end', Date.now())).tz(getTimeZone()).format(), From b392550352a75ae0ec58713cbf27df36446222dc Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:54:39 -0800 Subject: [PATCH 4/9] fix: update timeout for loadSampleEcommerceData to 60secs to handle failing cypress test Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- cypress/support/commands.js | 1 + 1 file changed, 1 insertion(+) diff --git a/cypress/support/commands.js b/cypress/support/commands.js index e05711de0..c2b0a257a 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -182,6 +182,7 @@ Cypress.Commands.add('loadSampleEcommerceData', () => { method: 'POST', headers: { 'osd-xsrf': 'opensearch-dashboards' }, url: `${Cypress.env('opensearch_dashboards')}/api/sample_data/ecommerce`, + timeout: 60000, }); }); From ee9897c9c4cd4c893aeca0dd2dafe5124ca3ca4a Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 17:23:14 -0800 Subject: [PATCH 5/9] fix: update timeout for monitor creation to 60secs to handle failing cypress test Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- cypress/integration/acknowledge_alerts_modal_spec.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cypress/integration/acknowledge_alerts_modal_spec.js b/cypress/integration/acknowledge_alerts_modal_spec.js index 16e68c539..fd98cc32d 100644 --- a/cypress/integration/acknowledge_alerts_modal_spec.js +++ b/cypress/integration/acknowledge_alerts_modal_spec.js @@ -15,6 +15,8 @@ const QUERY_TRIGGER = 'sample_alerts_flyout_query_level_trigger'; const TWENTY_SECONDS = 20000; +const SIXTY_SECONDS = 60000; + describe('AcknowledgeAlertsModal', () => { before(() => { // Delete any existing monitors @@ -32,8 +34,8 @@ describe('AcknowledgeAlertsModal', () => { cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`); // Confirm test monitors were created successfully - cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); - cy.contains(QUERY_MONITOR, { timeout: TWENTY_SECONDS }); + cy.contains(BUCKET_MONITOR, { timeout: SIXTY_SECONDS }); + cy.contains(QUERY_MONITOR, { timeout: SIXTY_SECONDS }); // Wait 1 minute for the test monitors to trigger alerts, then go to the 'Alerts by trigger' dashboard page to view alerts cy.wait(60000); From 90e8c60f213a8cb351406a5d0ee02cb8203a61e6 Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:08:24 -0800 Subject: [PATCH 6/9] fix: update timeout for monitor creation to 60secs to handle failing cypress test Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- cypress/integration/acknowledge_alerts_modal_spec.js | 4 ++-- cypress/support/commands.js | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cypress/integration/acknowledge_alerts_modal_spec.js b/cypress/integration/acknowledge_alerts_modal_spec.js index fd98cc32d..4b1a5a470 100644 --- a/cypress/integration/acknowledge_alerts_modal_spec.js +++ b/cypress/integration/acknowledge_alerts_modal_spec.js @@ -46,8 +46,8 @@ describe('AcknowledgeAlertsModal', () => { cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/dashboard`); // Confirm dashboard is displaying rows for the test monitors. - cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); - cy.contains(QUERY_MONITOR, { timeout: TWENTY_SECONDS }); + cy.contains(BUCKET_MONITOR, { timeout: SIXTY_SECONDS }); + cy.contains(QUERY_MONITOR, { timeout: SIXTY_SECONDS }); }); it('Acknowledge button disabled when more than 1 trigger selected', () => { diff --git a/cypress/support/commands.js b/cypress/support/commands.js index c2b0a257a..ca8c81971 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +const { method } = require('lodash'); const { API, ADMIN_AUTH } = require('./constants'); // *********************************************** @@ -71,7 +72,12 @@ Cypress.Commands.overwrite('request', (originalFn, ...args) => { }); Cypress.Commands.add('createMonitor', (monitorJSON) => { - cy.request('POST', `${Cypress.env('opensearch')}${API.MONITOR_BASE}`, monitorJSON); + cy.request({ + method: 'POST', + url: `${Cypress.env('opensearch')}${API.MONITOR_BASE}`, + body: monitorJSON, + timeout: 60000 + }); }); Cypress.Commands.add('createAndExecuteMonitor', (monitorJSON) => { From 49ed545472c874436107cec292834dd7ae5292d8 Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:35:55 -0800 Subject: [PATCH 7/9] fix: revert timeout increases. Handle monitors page load properly. Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- .../acknowledge_alerts_modal_spec.js | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/cypress/integration/acknowledge_alerts_modal_spec.js b/cypress/integration/acknowledge_alerts_modal_spec.js index 4b1a5a470..96fa46f0c 100644 --- a/cypress/integration/acknowledge_alerts_modal_spec.js +++ b/cypress/integration/acknowledge_alerts_modal_spec.js @@ -15,8 +15,6 @@ const QUERY_TRIGGER = 'sample_alerts_flyout_query_level_trigger'; const TWENTY_SECONDS = 20000; -const SIXTY_SECONDS = 60000; - describe('AcknowledgeAlertsModal', () => { before(() => { // Delete any existing monitors @@ -31,11 +29,21 @@ describe('AcknowledgeAlertsModal', () => { cy.createMonitor(sampleAlertsFlyoutQueryMonitor); // Visit Alerting OpenSearch Dashboards - cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`); + cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`, { + timeout: 30000, + retryOnStatusCodeFailure: true, + retryOnNetworkFailure: true + }).then(() => { + cy.get('body').then($body => { + if ($body.text().includes('OpenSearch Dashboards did not load properly')) { + cy.reload(); + } + }); + }); // Confirm test monitors were created successfully - cy.contains(BUCKET_MONITOR, { timeout: SIXTY_SECONDS }); - cy.contains(QUERY_MONITOR, { timeout: SIXTY_SECONDS }); + cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); + cy.contains(QUERY_MONITOR, { timeout: TWENTY_SECONDS }); // Wait 1 minute for the test monitors to trigger alerts, then go to the 'Alerts by trigger' dashboard page to view alerts cy.wait(60000); @@ -46,8 +54,8 @@ describe('AcknowledgeAlertsModal', () => { cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/dashboard`); // Confirm dashboard is displaying rows for the test monitors. - cy.contains(BUCKET_MONITOR, { timeout: SIXTY_SECONDS }); - cy.contains(QUERY_MONITOR, { timeout: SIXTY_SECONDS }); + cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); + cy.contains(QUERY_MONITOR, { timeout: TWENTY_SECONDS }); }); it('Acknowledge button disabled when more than 1 trigger selected', () => { From dc739fec49019564cee3d433b7078292c655dbc1 Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:19:51 -0800 Subject: [PATCH 8/9] fix: revert changes to timeouts Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- cypress/integration/acknowledge_alerts_modal_spec.js | 12 +----------- cypress/support/commands.js | 1 - 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/cypress/integration/acknowledge_alerts_modal_spec.js b/cypress/integration/acknowledge_alerts_modal_spec.js index 96fa46f0c..19315b5d4 100644 --- a/cypress/integration/acknowledge_alerts_modal_spec.js +++ b/cypress/integration/acknowledge_alerts_modal_spec.js @@ -29,17 +29,7 @@ describe('AcknowledgeAlertsModal', () => { cy.createMonitor(sampleAlertsFlyoutQueryMonitor); // Visit Alerting OpenSearch Dashboards - cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`, { - timeout: 30000, - retryOnStatusCodeFailure: true, - retryOnNetworkFailure: true - }).then(() => { - cy.get('body').then($body => { - if ($body.text().includes('OpenSearch Dashboards did not load properly')) { - cy.reload(); - } - }); - }); + cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`, { timeout: 30000 }); // Confirm test monitors were created successfully cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); diff --git a/cypress/support/commands.js b/cypress/support/commands.js index ca8c81971..e9aa4f739 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -3,7 +3,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -const { method } = require('lodash'); const { API, ADMIN_AUTH } = require('./constants'); // *********************************************** From 7914769d4319c8912c2b42e23ef1f03286ea35d1 Mon Sep 17 00:00:00 2001 From: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:49:47 -0800 Subject: [PATCH 9/9] fix: increase timeouts to ensure proper loading of pages Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com> --- cypress/integration/acknowledge_alerts_modal_spec.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cypress/integration/acknowledge_alerts_modal_spec.js b/cypress/integration/acknowledge_alerts_modal_spec.js index 19315b5d4..c5331d11c 100644 --- a/cypress/integration/acknowledge_alerts_modal_spec.js +++ b/cypress/integration/acknowledge_alerts_modal_spec.js @@ -15,6 +15,8 @@ const QUERY_TRIGGER = 'sample_alerts_flyout_query_level_trigger'; const TWENTY_SECONDS = 20000; +const SIXTY_SECONDS = 60000; + describe('AcknowledgeAlertsModal', () => { before(() => { // Delete any existing monitors @@ -29,11 +31,11 @@ describe('AcknowledgeAlertsModal', () => { cy.createMonitor(sampleAlertsFlyoutQueryMonitor); // Visit Alerting OpenSearch Dashboards - cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`, { timeout: 30000 }); + cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/monitors`, { timeout: SIXTY_SECONDS }); // Confirm test monitors were created successfully - cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); - cy.contains(QUERY_MONITOR, { timeout: TWENTY_SECONDS }); + cy.contains(BUCKET_MONITOR, { timeout: SIXTY_SECONDS }); + cy.contains(QUERY_MONITOR, { timeout: SIXTY_SECONDS }); // Wait 1 minute for the test monitors to trigger alerts, then go to the 'Alerts by trigger' dashboard page to view alerts cy.wait(60000); @@ -44,8 +46,8 @@ describe('AcknowledgeAlertsModal', () => { cy.visit(`${Cypress.env('opensearch_dashboards')}/app/${PLUGIN_NAME}#/dashboard`); // Confirm dashboard is displaying rows for the test monitors. - cy.contains(BUCKET_MONITOR, { timeout: TWENTY_SECONDS }); - cy.contains(QUERY_MONITOR, { timeout: TWENTY_SECONDS }); + cy.contains(BUCKET_MONITOR, { timeout: SIXTY_SECONDS }); + cy.contains(QUERY_MONITOR, { timeout: SIXTY_SECONDS }); }); it('Acknowledge button disabled when more than 1 trigger selected', () => {