Class: RspecFlaky::FlakyExample

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/rspec_flaky/flaky_example.rb

Overview

This represents a flaky RSpec example and is mainly meant to be saved in a JSON file

Instance Method Summary collapse

Constructor Details

#initialize(example) ⇒ FlakyExample

Returns a new instance of FlakyExample.


6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/rspec_flaky/flaky_example.rb', line 6

def initialize(example)
  if example.respond_to?(:example_id)
    super(
      example_id: example.example_id,
      file: example.file,
      line: example.line,
      description: example.description,
      last_attempts_count: example.attempts,
      flaky_reports: 0)
  else
    super
  end
end

Instance Method Details

#to_hObject


31
32
33
34
35
36
# File 'lib/rspec_flaky/flaky_example.rb', line 31

def to_h
  super.merge(
    first_flaky_at: first_flaky_at,
    last_flaky_at: last_flaky_at,
    last_flaky_job: last_flaky_job)
end

#update_flakiness!(last_attempts_count: nil) ⇒ Object


20
21
22
23
24
25
26
27
28
29
# File 'lib/rspec_flaky/flaky_example.rb', line 20

def update_flakiness!(last_attempts_count: nil)
  self.first_flaky_at ||= Time.now
  self.last_flaky_at = Time.now
  self.flaky_reports += 1
  self.last_attempts_count = last_attempts_count if last_attempts_count

  if ENV['CI_PROJECT_URL'] && ENV['CI_JOB_ID']
    self.last_flaky_job = "#{ENV['CI_PROJECT_URL']}/-/jobs/#{ENV['CI_JOB_ID']}"
  end
end