Cypress 本身启动过程的调试_Jerry Wang - 码子裤

技术标签:   编程算法  JavaScript

Cypress 本身启动过程的调试

作者:Jerry Wang


这个文件:node_modules\cypress\bin\cypress

里面的内容:

#!/usr/bin/env node

require('../lib/cli').init()

很多 require:

找到 init 方法:

我们执行的 yarn cypress:open, 执行的应该是这个 open.js 文件里的内容吧。

验证一下就知道了。在 open.js 里添加一行打印语句。如果我们重新执行 cypress:open, 并且看到了这条打印语句,说明我们的猜想是正确的:

果然,我们的猜想是正确的。

下一个问题:如何调试 cypress:open 这个启动过程本身?

我们再回到 .bin 文件夹下的 cypress.cmd 文件,如何知道运行时我们执行的是图例1 还是图例2 的 if 分支呢?故意将 if 分支里的路径胡乱修改一下,然后执行,根据报错的消息即可判断。

运行时,试图查找 cypress2,说明进入上图的 else 分支:

那么我们就给这个分支加上 --inspect-brk 的 option:

重新执行,现在应该就可以单步调试了:

果然,现在停在了 require('../lib/cli').init() 这行语句,我们就可以单步调试 Cypress 了:

开始单步调试,从 process.env 传递进来的命令行参数:open:

创建一个新的 command 实例:

这里加载 exec 文件夹下的 open.js 文件,执行对应的 module:

在 open.js module 的 start 函数里设置断点:

工作目录:

这里引入一个问题,这个 debug module 如何打开调试模式?

轻量级:

居然是这个 path:

C:\Users\I042416\AppData\Local\Cypress\Cache\8.5.0\Cypress

这还有一个 exe 文件:足足有 130 MB:

一个 windows 客户端:

未完待续。

本文参与 码字裤自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://jerry.blog.csdn.net/复制
如有侵权,请联系 heekey.com 删除。



 

 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.heekey.com/article/weixin_2123851.html

智能推荐

MyBatis的框架架构设计是怎么样的?

这张图从上往下看。MyBatis的初始化,会从mybatis-config.xml配置文件,解析构造成Configuration这个类,就是图中的红框。

树和森林的遍历

森林由三部分构成:森林中第一个树的根结点+森林中第一颗树的根结点的子树森林+森林中除去第一棵树而由其它树构成的森林。按照森林和树相互递归的定义,我们可以推出森林...

斐波那契查找

斐波那契查找(Fibonacci Search)又叫黄金分割查找,斐波那契查找和二分查找、插值查找也类似,数组也要是有序的。

插值查找算法

插值查找(Insert Value Search)是二分查找的一种改良,主要是改良了mid的值,mid的值由原来的mid = (left + right) / ...

二分查找算法

二分查找(Binary Search)也称折半查找,它是一种效率较高的查找方法,但二分查找要求线性表必须采用顺序存储结构,并且表中元素按关键字有序排列。

List中subList方法抛出异常java.util.ConcurrentModificationException原理分析

首先初始化一个6000个元素的list,然后,利用list.subList()截取3000个元素到list1中,再取出后3000个元素到list2中,然后清空l...

Java扑克牌(洗牌Collections.shuffle)

1)static void shuffle(List list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。