diff options
Diffstat (limited to 'qa/qa/flow/alert_settings.rb')
-rw-r--r-- | qa/qa/flow/alert_settings.rb | 102 |
1 files changed, 75 insertions, 27 deletions
diff --git a/qa/qa/flow/alert_settings.rb b/qa/qa/flow/alert_settings.rb index 2a464c16c6d..f5ee4f94065 100644 --- a/qa/qa/flow/alert_settings.rb +++ b/qa/qa/flow/alert_settings.rb @@ -5,13 +5,11 @@ module QA module AlertSettings extend self - def setup_http_endpoint( - integration_name: random_word, - payload: { title: random_word, description: random_word }, - send: true - ) - credentials = {} + def go_to_monitor_settings Page::Project::Menu.perform(&:go_to_monitor_settings) + end + + def setup_http_endpoint_integration(integration_name: random_word) Page::Project::Settings::Monitor.perform do |setting| setting.expand_alerts do |alert| alert.add_new_integration @@ -19,23 +17,11 @@ module QA alert.enter_integration_name(integration_name) alert.activate_integration alert.save_and_create_alert - - if send - alert.fill_in_test_payload(payload.to_json) - alert.send_test_alert - else - alert.go_to_view_credentials - credentials = { url: alert.webhook_url, auth_key: alert.authorization_key } - end end end - - credentials end - def setup_prometheus(payload: { title: random_word, description: random_word }, send: true) - credentials = {} - Page::Project::Menu.perform(&:go_to_monitor_settings) + def setup_prometheus_integration Page::Project::Settings::Monitor.perform do |setting| setting.expand_alerts do |alert| alert.add_new_integration @@ -43,25 +29,87 @@ module QA alert.activate_integration alert.fill_in_prometheus_url alert.save_and_create_alert - - if send - alert.fill_in_test_payload(payload.to_json) - alert.send_test_alert - else - alert.go_to_view_credentials - credentials = { url: alert.webhook_url, auth_key: alert.authorization_key } - end end end + end + + def send_test_alert(integration_type: 'http', payload: nil) + payload ||= integration_type == 'http' ? http_payload : prometheus_payload + + Page::Project::Settings::Alerts.perform do |alert| + alert.fill_in_test_payload(payload.to_json) + alert.send_test_alert + end + end + + def integration_credentials + credentials = {} + Page::Project::Settings::Alerts.perform do |alert| + alert.go_to_view_credentials + credentials = { url: alert.webhook_url, auth_key: alert.authorization_key } + end credentials end + def enable_create_incident + Page::Project::Settings::Monitor.perform do |setting| + setting.expand_alerts do |alert| + alert.go_to_alert_settings + alert.enable_incident_for_alert + alert.save_alert_settings + alert.click_button('Collapse') + end + end + end + + def enable_email_notification + Page::Project::Settings::Monitor.perform do |setting| + setting.expand_alerts do |alert| + alert.go_to_alert_settings + alert.enable_email_notification + alert.save_alert_settings + alert.click_button('Collapse') + end + end + end + private def random_word Faker::Lorem.word end + + def http_payload + { title: random_word, description: random_word } + end + + def prometheus_payload + { + version: '4', + groupKey: nil, + status: 'firing', + receiver: '', + groupLabels: {}, + commonLabels: {}, + commonAnnotations: {}, + externalURL: '', + alerts: [ + { + startsAt: Time.now, + generatorURL: Faker::Internet.url, + endsAt: nil, + status: 'firing', + labels: { gitlab_environment_name: Faker::Lorem.word }, + annotations: + { + title: random_word, + gitlab_y_label: 'status' + } + } + ] + } + end end end end |