module TravelToJavascript

Constants

VERSION

Public Instance Methods

travel_to_javascript(page, datetime) { || ... } click to toggle source
# File lib/travel_to_javascript.rb, line 6
def travel_to_javascript(page, datetime)
  page.execute_script time_stop_javascript(datetime)
  yield
  page.execute_script time_undo_javsctipt
end

Private Instance Methods

time_stop_javascript(rb_datetime) click to toggle source
# File lib/travel_to_javascript.rb, line 14
  def time_stop_javascript(rb_datetime)
    <<~JS
      originDate = Date;
      Date = #{time_stop_js_function_for_date(rb_datetime)};
      Date.now = #{time_stop_js_function_for_date_now(rb_datetime)};
    JS
  end
time_stop_js_function_for_date(rb_datetime) click to toggle source
# File lib/travel_to_javascript.rb, line 26
  def time_stop_js_function_for_date(rb_datetime)
    <<~JS
      function (datetime) {
        if (datetime) {
          return new originDate(datetime);
        } else {
          return new originDate("#{rb_datetime.iso8601(6)}");
        }
      }
    JS
  end
time_stop_js_function_for_date_now(rb_datetime) click to toggle source
# File lib/travel_to_javascript.rb, line 38
  def time_stop_js_function_for_date_now(rb_datetime)
    <<~JS
      function (datetime) {
        if (datetime) {
          return new originDate(datetime).getTime();
        } else {
          return new originDate("#{rb_datetime.iso8601(6)}").getTime();
        }
      }
    JS
  end
time_undo_javsctipt() click to toggle source
# File lib/travel_to_javascript.rb, line 22
def time_undo_javsctipt
  'Date = originDate;'
end