前端自动化Cypress
2004年selenium诞生。
Cypress底层完全不依托selenium的webdriver protocol,运行更快。
并且cypress能测试的东西,不仅仅只是UI。它还可以直接做HTTP接口的请求。
javascript是单线程异步执行语言。
闭包Closure是外部函数的返回是外部函数里的一个内部函数。
Karma是基于Node.js的一个JS测试运行器,CS架构。
nightwatch.js使用node.js编写,使用WebDriver。
TestCafe不使用webdriver,使用URL Rewriting Proxy。
cypress的测试代码,和被测页面,均运行在cypress控制
的浏览器中,运行在同一个域下的不同iframe内。
所以cypress测试代码可以直接操作DOM,更快。
看看从左到右的简化
selenium为什么慢呢,因为网络流程长:
selenium api 产生 json payloads > webdriver 通过http访问 > 浏览器
分层当然有好处,但分层也代表着会更慢。
cypress4.0之前仅支持基于chromium内核的浏览器,从4.0开始,增加了firefox支持。
cypress永远不会支持多标签测试。
10.10.0的版本启动后有些变化:
选择E2E,然后是
然后选择浏览器,再让它帮助我这个新手生成一些样例
代码目录是这样的:
├─e2e #测试文件
│ ├─1-getting-started
│ │ todo.cy.js
│ │
│ └─2-advanced-examples
│ actions.cy.js
│ aliasing.cy.js
│ assertions.cy.js
│ connectors.cy.js
│ cookies.cy.js
│ cypress_api.cy.js
│ files.cy.js
│ local_storage.cy.js
│ location.cy.js
│ misc.cy.js
│ navigation.cy.js
│ network_requests.cy.js
│ querying.cy.js
│ spies_stubs_clocks.cy.js
│ traversal.cy.js
│ utilities.cy.js
│ viewport.cy.js
│ waiting.cy.js
│ window.cy.js
│
├─fixtures #测试夹具 模拟外部接口
│ example.json
│
└─support
commands.js
e2e.js
javascript是单线程异步执行,这个会变得复杂,因为人容易理解的是同步执行。
比如判断返回值,异步执行并不会等待返回。
cypress继承并扩展了Mocha对异步的支持。
- 点赞
- 收藏
- 关注作者
评论(0)