Module: Capybara::Screenshot::Diff::Stabilization
Constant Summary collapse
- IMAGE_WAIT_SCRIPT =
<<-JS.strip_heredoc.freeze function pending_image() { var images = document.images; for (var i = 0; i < images.length; i++) { if (!images[i].complete) { return images[i].src; } } return false; }() JS
Constants included from Os
Os::ON_LINUX, Os::ON_MAC, Os::ON_WINDOWS
Instance Method Summary collapse
Methods included from Os
Instance Method Details
#take_stable_screenshot(comparison, color_distance_limit:, shift_distance_limit:, area_size_limit:, skip_area:) ⇒ Object
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/capybara/screenshot/diff/stabilization.rb', line 23 def take_stable_screenshot(comparison, color_distance_limit:, shift_distance_limit:, area_size_limit:, skip_area:) = prepare_page_for_screenshot previous_file_name = comparison.old_file_name screenshot_started_at = last_image_change_at = Time.now loop.with_index do |_x, i| take_right_size_screenshot(comparison) break unless Capybara::Screenshot.stability_time_limit if comparison.quick_equal? clean_stabilization_images(comparison.new_file_name) break end comparison.reset if previous_file_name stabilization_comparison = ImageCompare.new(comparison.new_file_name, previous_file_name, color_distance_limit: color_distance_limit, shift_distance_limit: shift_distance_limit, area_size_limit: area_size_limit, skip_area: skip_area) if stabilization_comparison.quick_equal? if (Time.now - last_image_change_at) > Capybara::Screenshot.stability_time_limit clean_stabilization_images(comparison.new_file_name) break end next else last_image_change_at = Time.now end check_max_wait_time(comparison, screenshot_started_at, shift_distance_limit: shift_distance_limit) end previous_file_name = "#{comparison.new_file_name.chomp('.png')}_x#{format('%02i', i)}.png~" FileUtils.mv comparison.new_file_name, previous_file_name end ensure &.click end |