Module: Percy::Capybara::Client::Builds

Included in:
Percy::Capybara::Client
Defined in:
lib/percy/capybara/client/builds.rb

Instance Method Summary collapse

Instance Method Details

#build_initialized?Boolean

Returns:

  • (Boolean)


34
35
36
37
# File 'lib/percy/capybara/client/builds.rb', line 34

def build_initialized?
  return false unless defined? @current_build
  !!@current_build
end

#current_buildObject



29
30
31
32
# File 'lib/percy/capybara/client/builds.rb', line 29

def current_build
  return unless enabled?  # Silently skip if the client is disabled.
  @current_build
end

#finalize_current_buildObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/percy/capybara/client/builds.rb', line 39

def finalize_current_build
  return unless enabled?  # Silently skip if the client is disabled.
  unless build_initialized?
    raise Percy::Capybara::Client::BuildNotInitializedError,
      'Failed to finalize build because no build has been initialized.'
  end
  result = rescue_connection_failures do
    client.finalize_build(current_build['data']['id'])
  end
  if failed?
    Percy.logger.error { 'Percy build failed! Check log above for errors.' }
    return
  end
  result
end

#initialize_build(options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/percy/capybara/client/builds.rb', line 5

def initialize_build(options = {})
  return unless enabled? # Silently skip if the client is disabled.
  return @current_build if build_initialized?

  # Gather build resources to upload with build.
  start = Time.now
  build_resources = options[:build_resources] || initialize_loader.build_resources
  options[:resources] = build_resources unless build_resources.empty?

  # Extra debug info.
  build_resources.each { |br| Percy.logger.debug { "Build resource: #{br.resource_url}" } }
  Percy.logger.debug { "All build resources loaded (#{Time.now - start}s)" }

  rescue_connection_failures do
    @current_build = client.create_build(client.config.repo, options)
    _upload_missing_build_resources(build_resources) unless build_resources.empty?
  end
  if failed?
    Percy.logger.error { 'Percy build failed! Check log above for errors.' }
    return
  end
  @current_build
end