summaryrefslogtreecommitdiff
path: root/qa/qa/page/project/job/show.rb
blob: 26db2f20c1beb520286d4ce2f6620861c5bb1f86 (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
# frozen_string_literal: true

module QA::Page
  module Project::Job
    class Show < QA::Page::Base
      include Component::CiBadgeLink

      view 'app/assets/javascripts/jobs/components/log/log.vue' do
        element :job_log_content
      end

      view 'app/assets/javascripts/jobs/components/stages_dropdown.vue' do
        element :pipeline_path
      end

      view 'app/assets/javascripts/jobs/components/sidebar.vue' do
        element :retry_button
      end

      def successful?(timeout: 60)
        raise "Timed out waiting for the build trace to load" unless loaded?
        raise "Timed out waiting for the status to be a valid completed state" unless completed?(timeout: timeout)

        passed?
      end

      # Reminder: You may wish to wait for a particular job status before checking output
      def output(wait: 5)
        result = ''

        wait_until(reload: false, max_duration: wait, sleep_interval: 1) do
          result = find_element(:job_log_content).text

          result.include?('Job')
        end

        result
      end

      def retry!
        click_element :retry_button
      end

      private

      def loaded?(wait: 60)
        wait_until(reload: true, max_duration: wait, sleep_interval: 1) do
          has_element?(:job_log_content, wait: 1)
        end
      end
    end
  end
end