summaryrefslogtreecommitdiff
path: root/qa/lib/gitlab/page/group/settings/usage_quotas.rb
blob: 62f55aea2cca6df9024f05ce68253e4d7f3c6d10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# frozen_string_literal: true

module Gitlab
  module Page
    module Group
      module Settings
        class UsageQuotas < Chemlab::Page
          # Seats section
          link :seats_tab
          div :seats_in_use
          p :seats_used
          p :seats_owed
          table :subscription_users
          button :remove_user

          # Pipelines section
          link :pipelines_tab
          link :buy_ci_minutes
          div :plan_ci_minutes
          div :additional_ci_minutes
          div :ci_purchase_successful_alert, text: /You have successfully purchased CI minutes/

          # Storage section
          link :storage_tab
          link :purchase_more_storage
          div :used_storage_message
          div :group_usage_message
          div :dependency_proxy_usage
          span :dependency_proxy_size
          div :container_registry_usage
          div :project_storage_used
          div :project
          div :storage_type_legend
          span :container_registry_size
          div :purchased_usage_total_free # Different UI for free namespace
          span :purchased_usage_total
          div :storage_purchase_successful_alert, text: /You have successfully purchased a storage/
          div :additional_storage_alert, text: /purchase additional storage/

          def plan_ci_limits
            plan_ci_minutes[/(\d+){2}/]
          end

          def additional_ci_limits
            additional_ci_minutes[/(\d+){2}/]
          end

          # Waits and Checks if storage available alert presents on the page
          #
          # @return [Boolean] True if the alert presents, false if not after 5 second wait
          def additional_storage_available?
            additional_storage_alert_element.wait_until(timeout: 5, &:present?)
          rescue Watir::Wait::TimeoutError
            false
          end

          # Waits and Checks if storage project data loaded
          #
          # @return [Boolean] True if the alert presents, false if not after 5 second wait
          def project_storage_data_available?
            storage_type_legend_element.wait_until(timeout: 3, &:present?)
          rescue Watir::Wait::TimeoutError
            false
          end

          # Returns total purchased storage value once it's ready on page
          #
          # @return [Float] Total purchased storage value in GiB
          def total_purchased_storage(free_name_space = true)
            additional_storage_alert_element.wait_until(&:present?)

            if free_name_space
              purchased_usage_total_free.split('/').last.match(/\d+\.\d+/)[0].to_f
            else
              purchased_usage_total.to_f
            end
          end

          def additional_ci_minutes_added?
            # When opening the Usage quotas page, Seats quota tab is opened briefly even when url is to a different tab
            ::QA::Support::WaitForRequests.wait_for_requests
            additional_ci_minutes?
          end
        end
      end
    end
  end
end