Module: Kontrast

Defined in:
lib/kontrast.rb,
lib/kontrast/spec.rb,
lib/kontrast/test.rb,
lib/kontrast/version.rb,
lib/kontrast/page_test.rb,
lib/kontrast/api_client.rb,
lib/kontrast/exceptions.rb,
lib/kontrast/test_suite.rb,
lib/kontrast/page_runner.rb,
lib/kontrast/image_helper.rb,
lib/kontrast/spec_builder.rb,
lib/kontrast/test_builder.rb,
lib/kontrast/configuration.rb,
lib/kontrast/global_runner.rb,
lib/kontrast/image_uploader.rb,
lib/kontrast/gallery_creator.rb,
lib/kontrast/page_comparator.rb,
lib/kontrast/selenium_handler.rb,
lib/kontrast/api_endpoint_test.rb,
lib/kontrast/thumbnail_creator.rb,
lib/kontrast/api_endpoint_runner.rb,
lib/kontrast/api_endpoint_comparator.rb

Defined Under Namespace

Modules: ImageUploader, ThumbnailCreator Classes: ApiClient, ApiEndpointComparator, ApiEndpointRunner, ApiEndpointTest, Configuration, ConfigurationException, GalleryCreator, GalleryException, GlobalRunner, ImageHelper, LazyTest, PageComparator, PageRunner, PageTest, RunnerException, SeleniumHandler, Spec, SpecBuilder, Test, TestBuilder, TestSuite, TestSuiteException

Constant Summary collapse

VERSION =
"0.6.4"
@@path =
nil

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.api_endpoint_builderObject

Returns the value of attribute api_endpoint_builder.



3
4
5
# File 'lib/kontrast/configuration.rb', line 3

def api_endpoint_builder
  @api_endpoint_builder
end

.configurationObject

Returns the value of attribute configuration.



3
4
5
# File 'lib/kontrast/configuration.rb', line 3

def configuration
  @configuration
end

.page_builderObject

Returns the value of attribute page_builder.



3
4
5
# File 'lib/kontrast/configuration.rb', line 3

def page_builder
  @page_builder
end

.spec_builderObject

Returns the value of attribute spec_builder.



3
4
5
# File 'lib/kontrast/spec_builder.rb', line 3

def spec_builder
  @spec_builder
end

Class Method Details

.api_endpoint_test_builderObject



14
15
16
# File 'lib/kontrast/configuration.rb', line 14

def api_endpoint_test_builder
    self.api_endpoint_builder ||= TestBuilder.new
end

.api_endpoint_test_suiteObject



22
23
24
# File 'lib/kontrast/configuration.rb', line 22

def api_endpoint_test_suite
    self.api_endpoint_builder ? self.api_endpoint_builder.suite : nil
end

.configure {|configuration| ... } ⇒ Object

Yields:



5
6
7
8
# File 'lib/kontrast/configuration.rb', line 5

def configure
    self.configuration ||= Configuration.new
    yield(configuration)
end

.describe(spec_name) {|self.get_spec_builder| ... } ⇒ Object

Yields:



9
10
11
12
# File 'lib/kontrast/spec_builder.rb', line 9

def describe(spec_name)
    self.get_spec_builder.add(spec_name)
    yield(self.get_spec_builder)
end

.fogObject



61
62
63
64
65
66
67
# File 'lib/kontrast.rb', line 61

def fog
    return Fog::Storage.new({
        :provider                 => 'AWS',
        :aws_access_key_id        => Kontrast.configuration.aws_key,
        :aws_secret_access_key    => Kontrast.configuration.aws_secret
    })
end

.get_spec_builderObject



5
6
7
# File 'lib/kontrast/spec_builder.rb', line 5

def get_spec_builder
    self.spec_builder ||= SpecBuilder.new
end

.in_rails?Boolean

Returns:

  • (Boolean)


34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/kontrast.rb', line 34

def in_rails?
    # Logic: Rails uses Bundler, so if the Bundler environment contains Rails, return true.
    # If there's any error whatsoever, return false.
    begin
        Bundler.environment.current_dependencies.each do |dep|
            return true if dep.name == "rails"
        end
    rescue StandardError => e
        # Quietly ignore any exceptions
    end
    return false
end


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/kontrast.rb', line 87

def make_gallery(result_path = nil)
    puts "Creating gallery..."
    gallery_info = {}
    begin
        # Call "before" hook
        Kontrast.configuration.before_gallery

        gallery_creator = GalleryCreator.new(result_path)
        if Kontrast.configuration.run_parallel
            gallery_info = gallery_creator.create_gallery(Kontrast.configuration.local_path)
        else
            gallery_info = gallery_creator.create_gallery(result_path)
        end
    rescue StandardError => e
        puts e.class
        puts e.message
        puts e.backtrace
    ensure
        # Call "after" hook
        Kontrast.configuration.after_gallery(gallery_info.fetch(:diffs, {}), gallery_info[:path])
    end

    # Return based on if we have diffs or not
    gallery_info.fetch(:diffs, {}).empty?
end

.page_test_builderObject



10
11
12
# File 'lib/kontrast/configuration.rb', line 10

def page_test_builder
    self.page_builder ||= TestBuilder.new
end

.page_test_suiteObject



18
19
20
# File 'lib/kontrast/configuration.rb', line 18

def page_test_suite
    self.page_builder ? self.page_builder.suite : nil
end

.pathObject



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/kontrast.rb', line 47

def path
    return @@path if @@path

    if Kontrast.configuration.run_parallel
        @@path = FileUtils.mkdir_p(Kontrast.configuration.local_path).join('')
    elsif Kontrast.in_rails?
        @@path = FileUtils.mkdir_p(Rails.root + "tmp/shots/#{Time.now.to_i}").join('')
    else
        @@path = FileUtils.mkdir_p("/tmp/shots/#{Time.now.to_i}").join('')
    end

    return @@path
end

.rootObject



30
31
32
# File 'lib/kontrast.rb', line 30

def root
    File.expand_path('../..', __FILE__)
end

.runObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/kontrast.rb', line 69

def run
    beginning_time = Time.now

    begin
        # Call "before" hook
        Kontrast.configuration.before_run

        runner = GlobalRunner.new
        runner.run
    ensure
        # Call "after" hook
        Kontrast.configuration.after_run
    end

    end_time = Time.now
    puts "Time elapsed: #{(end_time - beginning_time)} seconds"
end