使用 Capybara 存根浏览器时间和时区

2024-02-03

我有一个 JavaScript 组件(例如日期选择器),它很大程度上依赖于 -

  1. 当前系统时间
  2. 当前系统时区

在 Ruby 和 Capybara 中,可以在诸如Timecop https://github.com/travisjeffery/timecop.

是否也可以在水豚控制的无头浏览器中存根这些值?

Thanks!

编辑:这是 Ruby 如何被存根但 Capybara 的浏览器仍然使用系统时间的示例

before do
  now = Time.zone.parse("Apr 15, 2018 12:00PM")
  Timecop.freeze(now)

  visit root_path

  binding.pry
end

> Time.zone.now
=> Sun, 15 Apr 2018 12:00:00 UTC +00:00

> page.evaluate_script("new Date();")
=> "2018-03-27T04:15:44Z"

正如您所发现的,Timecop 仅影响测试和被测应用程序的时间。浏览器作为一个单独的进程运行,完全不受 Timecop 的影响。因此,您需要在浏览器中存根/模拟时间,并使用为此设计的众多 JS 库之一。我一般用的是sinon - http://sinonjs.org/ http://sinonjs.org/- ,我有条件地安装在页面中head使用类似的东西

- if defined?(Timecop) && Timecop.top_stack_item
  = javascript_include_tag "sinon.js" # adjust based on where you're loading sinon from
  - unix_millis = (Time.now.to_f * 1000.0).to_i
  :javascript
    sinon.useFakeTimers(#{unix_millis});

这应该适用于haml模板(如果使用则调整erb)并且每当访问页面时就会安装并模拟浏览器时间,同时使用 Timecop 来模拟应用程序时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Capybara 存根浏览器时间和时区 的相关文章

随机推荐

  • 如何测试 UIStoryBoard segue 是由 didSelectRow(at:) 触发的

    所以我有一个带有 UITableView 的故事板 有一个原型单元 其显示序列连接到另一个 UIViewController Example 小区标识符是 CellOne Segues 没有标识符 我的类是 tableView 的数据源和委
  • i18n 错误(错误:您正在传递未定义的模块!请检查您传递给 i18next.use() 的对象)

    我正在尝试在我的 Gatsby 项目中设置 i18n 我一直在逐步遵循本教程 https www gatsbyjs org blog 2017 10 17 building i18n with gatsby https www gatsby
  • 为什么 .join() 不能使用函数参数?

    为什么这样有效 返回 一 二 三 var words one two three main append p words join p 和这项工作 返回 列表 111 var displayIt function return the li
  • guvectorize 在 nopython 模式下不解析类型

    我正在努力解决 numba 错误Untyped global name is a subset Cannot determine Numba type of
  • React div 容器 onClick 与复选框 onChange 冲突

    在下面的 React 类中 我在 div 容器中有一个复选框 我想要单击容器来切换复选框 我也think我需要绑定复选框输入本身的 onChange 以处理诸如用户使用制表符 空格来切换复选框状态之类的事情 如果我don t指定 onCha
  • Kubernetes - 从作业连接到 cassandra 到不同的 pod

    当我尝试执行以下命令时 bin sh c cqlsh cassandra my namespace svc cluster local f path to schema cql 从我的工作中 我收到以下错误 Traceback most r
  • GZIP PlayFramework 2.0 中的响应正文

    我正在开发 Playframework 2 x 应用程序 我的应用程序中的控制器将 JSON 响应返回到浏览器 端点 我想知道是否有一种简单的方法来启用响应正文的 GZIP 压缩 目前在 2 0 4 版本中 对于非资产没有简单的方法 对于
  • 使用 Angular 5 的 IE 11 兼容性错误

    我已经构建了 Angular 应用程序 然后在服务器中运行它 我收到的错误未在本地主机中显示 Unable to get property onHover of undefined or null reference File Chart
  • 按列值将数据拆分为不同的工作表

    假设我有一个工作表 A 列中有多个不同的值 有没有办法创建一个宏 将列条目为 0 的所有行放入一个单独的工作表中 所有行的条目 1 都放在另一个工作表中 依此类推 我的第一直觉是创造一些东西 1 按相关列排序 2 使用 IF 语句检查前一个
  • ListViewItem水平拉伸UWP 10

    我想水平拉伸ListView在UWP 10中 我还设置了HorizontalContentAlignment to Stretch 它有点有效 但并不完全是我想要的结果 我将 ListView 背景设置为 Aqua 因此您可以看到 List
  • 在另一个类中创建类的实例(使用通用示例)

    我正在通过书籍和互联网学习Python 但我陷入了课堂问题 2个问题 如何在另一个 单独的 类中创建一个类的实例 如何在类和嵌套 类之间传递变量 当我尝试在另一个 单独的 类中创建类的实例时 我可以在方法中执行此操作 这是代码 import
  • C#:当一个字段可以是不同类型时反序列化 JSON

    我正在与返回包含 true false 或字符串数 组数组的 JSON 的 API 进行通信 我希望反序列化此 JSON 并将布尔值 如果有 存储在数据类型 bool 的名为 Success 的类字段中 并将数组 如果有 存储在自定义数据类
  • 建议使用 postgres 工具来查找模式和数据之间的差异

    各位 任何人都可以建议我使用 Linux 的 postgres 工具来查找2个给定数据库之间的差异 我尝试使用 apgdiff 2 3 但它给出了模式而不是数据方面的差异 但我两者都需要 提前致谢 比较数据并不容易 尤其是当您的数据库很大时
  • 重写 Objective-C 中的可变参数方法

    在 Objective C 中子类化时 在可变参数方法的情况下如何将调用转发到超类 我应该用什么来替换 下面发送我得到的所有对象 void appendObjects id firstObject super appendObjects 你
  • 如何在 Android 应用程序的 Activity 之间传递数据?

    我有一个场景 通过登录页面登录后 会出现注销button在各个activity 点击时sign out 我将通过session id登录用户的注销 谁能指导我如何保持session id所有人都可以使用activities 这种情况的任何替
  • 在 Python 中调用函数列表的惯用方式是什么?

    我有一个回调函数列表 当事件触发时我需要调用这些函数 这是惯用的Python吗 def first callback m print first m def second callback m print second m lst firs
  • 在状态计算中“不断转动曲柄”的有效方法

    我有一个有状态的进程 被建模为i gt RWS r w s a 我想给它一个输入cmds i 目前我做的是批发 let play runGame theGame go where go finished go v n cmds do end
  • 位置相关代码和位置无关代码有什么区别? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 位置相关代码和位置无关代码有什么区别
  • 获取下 N 个最近的地理点

    我在我的 Android 应用程序中有一个包含地理点的数据库表 纬度和经度是十进制度值 大约 1000 点 我需要选择距离某个给定地理点最近的 20 个点 我在 Stackoverflow 找到了如何计算两个地理点之间的距离的答案 并且非常
  • 使用 Capybara 存根浏览器时间和时区

    我有一个 JavaScript 组件 例如日期选择器 它很大程度上依赖于 当前系统时间 当前系统时区 在 Ruby 和 Capybara 中 可以在诸如Timecop https github com travisjeffery timec