testingd3(以及其他基于SVG的)Web应用程序

我有一个Web应用程序,使用d3库来处理一些复杂的基于SVG的可视化。

我有自动testing我的服务器端代码和JavaScript模型(我在我的JavaScript中使用MVC架构)。 这些在每次提交时都在Jenkins CI服务器上运行。 现在我需要弄清楚如何testing我的观点。

别人怎样解决这个问题,你用什么工具?

我有一些想法…

  • 将生成的SVG序列化到文件并与基线进行比较
  • 自动捕捉浏览器图像,并做一个图像差异
  • 别的东西?

谢谢!

你给的例子是testinggraphics输出。 为此,您可以使用像PhantomCSS , Sikuli这样的屏幕截图diff工具,或者使用Resemble.js自己制作一个截图diff工具。

但是如果你的问题更多的是关于testing基于D3.js / SVG的应用程序,正如标题所暗示的,你应该看看D3 testing套件 。 大多数testing甚至不需要一个html fixture,因为他们基本上正在testing这个API。 如果最重要的是你的视觉效果的一致性,请使用截图diff工具。 对于导航和用户体验stream,您最好使用像Selenium这样的浏览器自动化。 但是对于unit testing来说,要确保拥有一致的API和模块化代码,大多数具有间谍,夹具和嘲讽function的testing框架( Jasmine , Vows , Mocha )都可以使用。

这听起来像Selenium应该做你想找的东西。 它驱动Web浏览器,因此可以检查浏览器中实际发生的情况,而不是假设SVG将被正确渲染。 它允许你指定unit testing作为一系列的点击/击键,并与Jenkins很好地集成在一起。

我目前正在考虑的解决scheme是…

  1. 创build一个带有URL列表的简单文件(csv)以及裁剪区域(请参阅3)
  2. 加载每个url,并使用Selenium抓取屏幕截图
  3. 使用ImageMagick从截图中截取可视化(所以我们只是testing可视化而不是完整的UI)
  4. 使用ImageMagick将图像与基线进行比较
  5. 使用旧的,新的和不同的图像生成HTML报告(对于任何不同的图像)
  6. 为CI服务器生成JUnit xml输出

捕获浏览器和validationgraphics是一个很好的testing。 但我觉得这是D3本身的责任,而不是我们的代码。

我也有类似的问题。 ( 我的问题 )。 请结帐我在那里发布的答案。