cypress

The web has evolved.
Finally, testing has too.
Fast, easy and reliable testing for anything that runs in a browser.

特色

Architecture

大多数测试工具(例如 Selenium)通过在浏览器外部运行并在整个网络上执行远程命令来运行。柏树是完全相反的。与您的应用程序在同一运行循环中执行柏树。

柏树背后是节点服务器进程。柏树和节点过程不断代表彼此交流,同步和执行任务。访问这两个零件(正面和背面)使我们能够实时响应您的应用程序的事件,同时在浏览器之外完成需要更高特权的任务。

赛普拉斯还通过即时阅读和更改网络流量在网络层上运行。这使赛普拉斯不仅可以修改浏览器进出的所有内容,还可以更改可能干扰其自动化浏览器的能力的代码。

赛普拉斯最终控制着从上到下的整个自动化过程,这使其处于能够理解浏览器内外发生的一切的独特位置。这意味着柏树能够比任何其他测试工具提供更一致的结果。

由于柏树位于本地安装在您的计算机上,因此它可以在操作系统中进行自动化任务。这使得执行任务,例如进行屏幕截图,录制视频,一般文件系统操作和网络操作。

native access 本地访问

因为柏树在您的应用程序中运行,这意味着它具有对每个对象的本机访问权限。

无论是窗口,文档,DOM元素,您的应用程序实例,函数,计时器,服务工作者还是其他任何内容 - 您都可以在柏树测试中访问它。

没有对象序列化,没有线协议 - 您可以访问所有内容。

您的测试代码可以访问应用程序代码所能的所有相同对象。

新型测试

对您的应用程序,网络流量和对每个主机对象的本机访问权限具有最终控制,可以解锁以前从未做出的新测试方式。

与其被“锁定”到您的应用程序中而无法轻松控制它,而是让您更改应用程序工作方式的任何方面。

您可以像在单位测试中那样人工创建这些状态,而不是创建给定情况所需的状态,而不是创建缓慢且昂贵的测试。

例如,您可以:

  • 将浏览器或您的应用程序的功能固执,并迫使它们在测试案例中按需要表现出来。

  • 公开数据存储(例如Redux),因此您可以直接从测试代码中编程更改应用程序的状态。

  • 通过强迫服务器发送空响应来测试边缘案例,例如“空视图”。

  • 测试您的应用程序如何通过将响应状态代码修改为500来响应服务器上的错误。

  • 直接修改DOM元素 - 喜欢强制显示隐藏的元素。

  • 以编程方式使用第三方插件。您可以直接从测试代码中调用复杂的UI窗口小部件,例如多选择,自动完成,下拉访问,树视图或日历,以控制它们。

  • 在测试时,请防止Google Analytics(分析)加载。

  • 每当您的应用程序过渡到新页面或开始卸载时,都会获取同步通知。

  • 通过向前或向后移动来控制时间,以便计时器或民意调查自动触发而无需等待测试中所需的时间。

  • 添加您自己的活动听众以响应您的应用程序。在柏树中进行测试时,您可以更新应用程序代码以不同。您可以从柏树内部控制WebSocket消息,有条件地加载第三方脚本,或直接在应用程序上调用功能。

快捷方式

试图努力测试以达到应用程序的领域?不喜欢动作产生的副作用吗?厌倦了一遍又一遍地重复相同的重复和缓慢的动作?您可以在大多数测试用例中跳过它们。

赛普拉斯阻止您被迫总是“像用户”来生成给定情况的状态。使用柏树,您可以通过编程方式进行交互和控制应用程序。您不再需要使用UI来建立状态。

这意味着您不必访问登录页面,输入用户名和密码,而要等待该页面加载和/或重定向到您运行的每个测试。

柏树使您能够进行快捷方式和编程登录。

使用CY.Request()之类的命令,您可以直接发送HTTP请求,但可以将这些请求与浏览器同步。

cookie自动发送并涂回去。担心科尔斯?

不要,这是完全绕过的。您可以选择像用户一样测试何时测试以及何时跳过缓慢而重复的零件的能力。

lake resistant 耐片

柏树同步知道并了解您应用程序中发生的一切。通知页面加载的那一刻和页面卸载的那一刻。

柏树发射事件时不可能错过元素。赛普拉斯甚至知道元素的动画速度,并将等待它停止动画。

此外,它会自动等待元素变得可见,启用并停止被覆盖。当页面开始过渡时,柏树将暂停命令执行,直到以下页面满载为止。您甚至可以告诉赛普拉斯等待特定的网络请求才能完成。

柏树在浏览器内部执行绝大多数命令,因此没有网络滞后。命令执行并驱动您的应用程序尽快渲染。

为了处理具有复杂UI的现代JavaScript框架,您可以使用断言来告诉柏树您的应用程序中所需的状态应该是什么。

赛普拉斯将自动等待您的应用程序到达此状态,然后再继续前进。

通过手动等待或重试,您完全避免了大惊小怪。柏树自动等待元素存在,并且永远不会产生与DOM分离的陈旧元素。

辩论性

最重要的是,柏树是为可用性而建造的。

有数百条自定义错误消息描述柏树的确切原因使您的测试失败。

有一个丰富的UI,可以视觉显示您的命令执行,断言,网络请求,间谍,存根,页面加载或URL更改。

赛普拉斯(Cypress)拍摄了您的应用程序快照,并使您可以时间回到命令运行时所处的状态。

您可以在运行测试时使用开发人员工具,您可以看到每个控制台消息,每个网络请求。

您可以检查元素,甚至可以在规格代码或应用程序代码中使用调试器语句。

没有忠诚度损失 - 您可以使用已经适应的所有工具。

这使您能够同时测试和开发全部。

trade-off(折中)

尽管柏树有许多新的和强大的功能 - 我们在实现这一目标方面也有一些重要的权衡。

如果您有兴趣了解更多,我们已经写了整个有关此主题的指南。

参考资料

https://www.cypress.io/