在cypress中捕获WebSocket请求

chhkpiq4  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(202)

我试图捕获测试期间发生的所有请求。我的应用程序使用WebSocket,但使用intercept命令无法捕获wss请求。有什么方法可以做到这一点吗?

vtwuwzda

vtwuwzda1#

我不认为web套接字可以直接被拦截命令捕获。
一种方法是观察ws通信的结果,如这里所示的两个Cypress runner示例之间的Testing a websocket application with Cypress
如果您的应用在应用和服务器之间进行通信,则在/cypress/plugins/index.js中启动服务器,并使用cy.task()获取通信的服务器端。
还有一个库cypress-websocket-testing,它使用rxjs,这是相当强大的,但需要一些时间来适应。

cy.streamRequest(config, options).then(results => {
        expect(results).to.not.be.undefined;
})
// When in need of a bit more flexibility
cy.stream(config).then(subject => {
      subject
        .pipe(
          takeUntil(timer(1000)),
          reduce((acc , val) => acc.concat([val]), [])
        )
        .subscribe({
          next: (results) => {
            expect(results).to.not.be.undefined;
          },
          error: (err) => {},
          complete: done
        });
    });
q1qsirdb

q1qsirdb2#

截止到目前,Cypress中不支持cy.intercept,仅支持xhr请求,您需要创建wesbsocket服务器并在某个端口侦听,它需要在另一个进程中启动,然后使用fixture发送所需的响应数据

相关问题