TestCafe和Cypress的主要区别
经过分别用TestCafe和Cypress进行的端到端自动化测试项目实战,深刻感觉到,新一代的前端自动化工具用了前端自已的技术栈后,功能集更丰富,运行更稳定了。二者从工具架构上的不同,造成了它们有一些大的区别,现将它们最主要的区别列举如下:
TestCafe支持所有的现代浏览器,Cypress就只支持Chrome。如果被测应用需要在测试浏览器的兼容性,只能选择TestCafe
Cypress有杀手级的Test Runner,更直观、更容易上手,在调试时也较方便,但对熟手,都是手写测试,区别并不太大
Cypress缺失对Fetch Api的支持,Fetch Api现在用得这么广泛,不知Cypress团队为什么到现在还没有解决这个问题。这点在拦截network、作stub方面是个大问题。虽然可以polyfill掉Fetch,但它是全局的,也算是更改了被测应用了,会不会对被测应用带来什么影响呢?
Cypress的所有Command都是异步的,这在编写测试脚本时,需要时时注意,一不小心就会出错,同样也会导致出现较多的代码嵌套
Cypress是和被测应用一起运行在浏览器中的,所以理论上它可以直接操纵被测应用,但是浏览器作其它事情时又是受限的,不得不用
task
等方式去完成;反而,TestCafe本质上是一个node应用,所以它作浏览器上的事项时,也要用ClientFunction
来完成。这是它们二者架构上的不同所造成的Cypress的API有对单元测试作了更方便的考虑
最后,个人感觉,从使用者的角度来看,二者不分伯仲。Cypress看上去包括从文档上来看提供了更多的特性或选择,其实反而出现了更多的”噪声“,更让新手不容易掌握。可以按自已的喜好和上面它们关键的区别来选择就可以了。