Testing 使用Capybara测试逐步增强的功能

Testing 使用Capybara测试逐步增强的功能,testing,cucumber,capybara,progressive-enhancement,Testing,Cucumber,Capybara,Progressive Enhancement,我正在使用水豚在一个逐步增强的网站上测试功能。假设我的功能是在位置层次结构中导航。非javascript版本涉及在不同位置单击时获取页面的新版本。增强的javascript版本打开隐藏的元素,或者通过Ajax加载新信息 我首先为非javascript版本编写一个测试,如下所示: When I visit the page for "UK" And I click "London" Then I should see the information for "London" 使用默认的mecha

我正在使用水豚在一个逐步增强的网站上测试功能。假设我的功能是在位置层次结构中导航。非javascript版本涉及在不同位置单击时获取页面的新版本。增强的javascript版本打开隐藏的元素,或者通过Ajax加载新信息

我首先为非javascript版本编写一个测试,如下所示:

When I visit the page for "UK"
And I click "London"
Then I should see the information for "London"
使用默认的mechanize驱动程序,测试失败,我开发了该特性,然后测试通过

然后,我为javascript版本创建了一个相同的测试,并用@javascript标记。它使用javascript驱动程序运行测试,该测试通过,因为该功能已经实现。(它在非js流中运行)。但是,我希望测试的javascript版本在这一点上失败,因为该特性还没有用javascript进行增强


因此,我正在寻找一个好的策略来确定是否有一个全新的页面来自服务器,并确保两个版本的功能都能正常工作。(我计划将其与pushState集成,这样测试更改的URL就不行了)

我很想听听其他人对此的看法-我不相信Cucumber是适合这项工作的工具,因为您是从用户交互的角度来描述功能的,听起来,渐进式增强的实现将导致基本相同的用户交互

顺便提一下,我认为你可能想考虑在某个测试挂钩中加入页面本身来帮助解决这个问题。如果不知道你的具体情况,很难说什么,但可能是:

  • 页面的脚本增强版可以向DOM中添加一些元素,表示增强是活动的,或者表示数据来自AJAX请求而不是页面加载
  • 您可以在每次加载(例如,新GUID)时生成一个随机页面标识符(来自服务器),将其嵌入DOM中,并断言在交互之后(在增强版上)它没有更改。这将是一个非常简单的方法来实现您的既定目标(“确定是否有一个完整的新页面来自服务器”)

我很想听听其他人对此的看法-我不相信Cucumber是适合这项工作的工具,因为您是从用户交互的角度来描述功能的,而且听起来您实施的渐进增强将导致基本相同的用户交互

顺便提一下,我认为你可能想考虑在某个测试挂钩中加入页面本身来帮助解决这个问题。如果不知道你的具体情况,很难说什么,但可能是:

  • 页面的脚本增强版可以向DOM中添加一些元素,表示增强是活动的,或者表示数据来自AJAX请求而不是页面加载
  • 您可以在每次加载(例如,新GUID)时生成一个随机页面标识符(来自服务器),将其嵌入DOM中,并断言在交互之后(在增强版上)它没有更改。这将是一个非常简单的方法来实现您的既定目标(“确定是否有一个完整的新页面来自服务器”)
为什么您的javascript“增强”版本与非增强版本的工作原理相同?您使用@javascript的cucumber测试应该进行测试,以确保增强功能正常工作

比如说,, *如果javascript打开一个模式对话框,而不是跟随一个指向新页面的链接,那么测试该对话框。 *如果javascript提交了一个表单并更新了一个值,那么测试它

如果在没有javascript支持的情况下运行,这些测试将失败。

为什么您的javascript“增强”版本与非增强版本的工作原理相同?您使用@javascript的cucumber测试应该进行测试,以确保增强功能正常工作

比如说,, *如果javascript打开一个模式对话框,而不是跟随一个指向新页面的链接,那么测试该对话框。 *如果javascript提交了一个表单并更新了一个值,那么测试它


如果没有javascript支持,这些测试将失败。

感谢您的回复-尽管Cucumber的测试到目前为止对我们来说效果很好,但对于如何进行其他测试,我很感兴趣。我希望不必添加任何特殊的测试挂钩,但我会沿着这些思路尝试一些东西。感谢您的回复-尽管Cucumber's到目前为止对我们很有效,但我对如何进行其他测试的建议很感兴趣。我希望不必添加任何特殊的测试挂钩,但我会尝试一些类似的方法。