乐趣区

关于前端:单步调试找到-cyvisit-的实现源代码二-WebSocket

系列 1:单步调试找到 cy.visit 的实现源代码(一) – 找到了 BlueBird

咱们的指标是找到 cy.visit 是如何向指标网站发动申请的:

来到这行:

return this.emit('backend:request', eventName, ...args, fn);

单步调试进去:

观察者发布者的探讨都一样,依据 event 找到 listener:

这个 ws,意思是 Web Socket 吗?

这个全局对象在此导入:_packages_socket__WEBPACK_IMPORTED_MODULE_4__

首先要找到这个 browser.ts 在本地什么地位,而后能力晓得它是啥货色?

本地找了一圈,没找到这个文件。

单步调试:

第九行的 if 语句进不去:

而后执行这个 index.js 文件:

留神这些嵌套的 Webpack_require 调用:

parseuri:

然而本地 node_modules 文件夹里,并没有这个叫做 parseuri 的文件夹。

而是这个 ../../node_modules/parseuri/index.js,间接呈现在 cypress_runner.js 源文件里:

这些呈现在 cypress_runner.js 里的 browser.ts, 应该是从某个中央拷贝过去的吧。这里又波及到一个问题,这个 cypress_runner.js 的 生成逻辑和机会?

工程文件夹里也没有叫 socket 的文件夹。

最初发现,应用的是浏览器原生的 WebSocket 的 send 办法,发送申请到指标网站:

遗留问题:

  1. cypress_runner.js 这个文件哪里来的?
  2. 应用 WebSocket 的益处?

第一个问题咱们答复不了,因为咱们还不晓得咱们应用命令行 yarn cypress:open 之后,背地都产生了什么。

这里又引出第三个乏味的问题:

咱们在 package.json 给 cypress:open 指定的命令行是 cypress open,然而咱们间接在命令行窗口里应用 cypress open, 是无奈启动的:

但为啥用 yarn cypress:open 就能够?

在 node_modules 文件夹下的 .bin 文件夹里的 cypress.cmd 里加一行打印语句:

运行时的输入:

阐明 yarn cypress:open 命令行,会调用到 .bin 文件夹内的 cypress.cmd:

.bin 下的 cypress 改成其余名称,对 windows 零碎下的命令行运行也没有影响:

然而把 cypress.cmd 改成其余名称,比方 cypress.cmd22, 运行命令行就会出错了,进一步阐明 node_modules\.bin\cypress.cmd 是 windows 下 cypress open 命令的入口。

至此咱们又引入了第四个问题:

node_modules 根目录下的 .bin ,

和 node_modules/cypress/bin 这两个 bin 文件夹的分割?

退出移动版