Class: Skeleton::Skeleton

Inherits:
Object
  • Object
show all
Defined in:
lib/skeleton.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Skeleton

Returns a new instance of Skeleton.



18
19
20
21
22
# File 'lib/skeleton.rb', line 18

def initialize(options)
  self.platform = options.platform
  self.browser = options.browser
  @driver = ios? ? IOS.new(options) : Android.new(options)
end

Instance Attribute Details

#browserObject

Returns the value of attribute browser.



16
17
18
# File 'lib/skeleton.rb', line 16

def browser
  @browser
end

#bundle_idObject

Returns the value of attribute bundle_id.



16
17
18
# File 'lib/skeleton.rb', line 16

def bundle_id
  @bundle_id
end

#platformObject

Returns the value of attribute platform.



16
17
18
# File 'lib/skeleton.rb', line 16

def platform
  @platform
end

#udidObject

Returns the value of attribute udid.



16
17
18
# File 'lib/skeleton.rb', line 16

def udid
  @udid
end

Instance Method Details

#android?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/skeleton.rb', line 83

def android?
  @platform == 'android'
end

#attach_imageObject



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

def attach_image
  screenshot = Dir["#{Base::ATTACHMENTS_FOLDER}/*.png"].first
  image = MiniMagick::Image.new(screenshot)
  image.rotate(90) if image.width > image.height
rescue MiniMagick::Error => err
  Log.warn(err)
		ensure
			FileUtils.cp_r(screenshot, "#{Base::ROOT_DIR}/server/screenshot.png")
end

#fill_htmlObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/skeleton.rb', line 39

def fill_html
			languages = ios? ? Language.all : Language.all - ['swift']
			languages.each do |lang|
    attach_image
type = Language.domain(lang)
    folder = Base::PAGE_OBJECTS_FOLDER
@screen_objects = File.read(Dir["#{folder}/*.#{type}"].first)
@elements_tree = File.read(Dir["#{folder}/*.xml"].first)
@build_version = "v#{VERSION}"
    if @driver.class == Android
      @elements_tree = Nokogiri::XML(@elements_tree).to_s
      @elements_tree.gsub!('<', '&lt;')
      @elements_tree.gsub!('>', '&gt;')
    end
template = File.read("#{Base::ROOT_DIR}/server/template.html.erb")
result = ERB.new(template).result(binding)
File.open("#{Base::ROOT_DIR}/server/#{lang}.html", 'w+') { |f| f.write(result) }
			end
end

#ios?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/skeleton.rb', line 79

def ios?
  @platform == 'ios'
end

#open_urlObject



69
70
71
72
73
74
75
76
77
# File 'lib/skeleton.rb', line 69

def open_url
    port = File.read("#{Base::ROOT_DIR}/server/port")
	url = "http://localhost:#{port}/skeleton"
	`open #{url}` if @browser
	Log.info("Look at your pretty page objects: \n#{url} 😍")
  rescue Errno::ENOENT
    Log.warn('Something went wrong with skeleton server 💩' \
					 "\nTry to rerun it (:")
end

#runObject



32
33
34
35
36
37
# File 'lib/skeleton.rb', line 32

def run
			@driver.precondition
			@driver.skeletoner
			fill_html
			open_url
end