cy.visit 执行逻辑的单步调试

我们单步调试如下图第 20 行代码,cy.visit 执行后,不会立即去访问 url 里指定的网站:

cy.visit 执行逻辑的单步调试_第1张图片

进入一个 generic 函数,这里发现 cy. 的函数,是运行时动态挂接上去的:

cy.visit 执行逻辑的单步调试_第2张图片

首先进行调用栈的保存工作?返回一个空的字符串:

cy.visit 执行逻辑的单步调试_第3张图片

创建一个 chain 实例:
cy.visit 执行逻辑的单步调试_第4张图片

单例模式吗?
cy.visit 执行逻辑的单步调试_第5张图片

创建一个 chain 实例:
cy.visit 执行逻辑的单步调试_第6张图片

这里构造函数才正式调用:
cy.visit 执行逻辑的单步调试_第7张图片

这个 chainer.visit 是个什么函数?

cy.visit 执行逻辑的单步调试_第8张图片

一个 enqueue 动作:
cy.visit 执行逻辑的单步调试_第9张图片

enqueue 的实现就是:创建一个 Cypress action 实例:

cy.visit 执行逻辑的单步调试_第10张图片

cy.visit 执行逻辑的单步调试_第11张图片

有限状态自动机:
cy.visit 执行逻辑的单步调试_第12张图片

如何开启 Cypress 的调试模式?

cy.visit 执行逻辑的单步调试_第13张图片

加一个 debug 操作:
cy.visit 执行逻辑的单步调试_第14张图片

断点停下来之后,进度条仍然在走:
cy.visit 执行逻辑的单步调试_第15张图片

从 queue 里摘出一个 action,执行:

cy.visit 执行逻辑的单步调试_第16张图片

每个 command 添加到 queue 里之后,都有一个伴随的 fn:

cy.visit 执行逻辑的单步调试_第17张图片

cy.visit 执行逻辑的单步调试_第18张图片

这个 useroptions 如何指定?
cy.visit 执行逻辑的单步调试_第19张图片

打印出 command 名称,参数,还有当前的 subject:
cy.visit 执行逻辑的单步调试_第20张图片

subject 就是全局 windows 对象:
cy.visit 执行逻辑的单步调试_第21张图片

成功加载的页面:
cy.visit 执行逻辑的单步调试_第22张图片

debug 上面就是 pause 指令:
cy.visit 执行逻辑的单步调试_第23张图片

Cypress测试代码在与应用程序相同的运行循环中运行。这意味着 Cypress 测试编写人员,可以访问在页面上运行的代码,以及浏览器提供给开发人员的辅助工具,如文档、窗口和调试器。

我们直接在 Cypress 测试代码里,插入 debugger 之类的关键字,是无法按照我们期望的方式工作的:

it('let me debug like a fiend', () => {
  cy.visit('/my/page/path')

  cy.get('[data-testid="selector-in-question"]')

  debugger // Doesn't work
})

cy commands 会将一个 action 实例加入一个任务队列中。

上面代码的 cy.visit() 和 cy.get() 调用将立即返回,并将它们的工作放入队列等待稍后完成,而 debugger 指令将在这两条调用产生的任何命令实际得到调度并运行之前执行。

你可能感兴趣的:(cy.visit 执行逻辑的单步调试)