Class: Helper

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

Overview

!/usr/bin/env ruby

Instance Method Summary collapse

Instance Method Details

#mouse_over(element_selector) ⇒ Object



4
5
6
7
# File 'lib/skeleton/features/support/helper.rb', line 4

def mouse_over(element_selector)
  element = Capybara.page.driver.browser.find_element(:css, element_selector)
  Capybara.page.driver.browser.mouse.move_to element
end

#take_screenshot(name_file, folder = 'screenshots/test_screens') ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/skeleton/features/support/helper.rb', line 9

def take_screenshot(name_file, folder = 'screenshots/test_screens')
  file = "#{folder}/#{name_file}.png"
  FileUtils.mkdir_p(folder) unless File.exist?(folder)
  if BROWSER.eql?('poltergeist')
    Capybara.page.save_screenshot(file)
  else
    Capybara.page.driver.browser.save_screenshot(file)
  end
end

#take_screenshot_and_crop(name_file, folder = 'screenshots/croped_files', css_element_crop) ⇒ Object



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
# File 'lib/skeleton/features/support/helper.rb', line 19

def take_screenshot_and_crop(name_file, folder = 'screenshots/croped_files', css_element_crop)
  file = "#{folder}/#{name_file}.png"
  FileUtils.mkdir_p(folder) unless File.exist?(folder)
  #scroll to element
  element = Capybara.page.driver.browser.find_element(:css, css_element_crop)
  element.location_once_scrolled_into_view

  # get location and size of element
  location = element.location
  size = element.size

  # take original screenshot
  take_screenshot('image_to_crop')

  # read original screenshot
  image = ChunkyPNG::Image.from_file('screenshots/test_screens/image_to_crop.png')

  # get X, Y, width and height
  left = location['x']
  top = location['y']
  right = size['width']
  bottom = size['height']

  # crop original image and save
  # crop original image
  if OS.mac?
    image.crop!(left * 2 , top * 2, right * 2, bottom * 2)
  else
    image.crop!(left , top, right, bottom)
  end
  image.save(file)
end