Cypress 运行旧代码而不是运行更新的代码更改

问题描述 投票:0回答:2

我在 Cypress.io 上遇到了一个问题,我没有看到太多有用的信息。本质上,每当我对代码进行更改(例如,实现新方法、删除旧方法等)并保存时,测试运行程序都会继续执行我的测试文件。但是,它运行更改之前存在的代码。我尝试过实现钩子、消除钩子、每次运行后关闭仪表板、清除应用程序数据;但不确定问题的根源是什么。

对于上下文,我正在使用 Yarn 运行 cypress(

yarn cypress open
打开仪表板)并将我的测试文件保存在
cypress/integration/
中。

node.js cypress yarnpkg
2个回答
0
投票

仔细检查文件中的这些类型的问题:

  • 语法错误
  • 进口路径

我多次遇到同样的问题。清除缓存不起作用。要找到隐藏的错误,要有耐心和系统性:

  • 在编辑器的“问题”面板上寻求帮助(在我的例子中是 vscode)。
  • 放置一些
    console.log()
    并逐步注释您最后的更改,直到您可以看到该文件已由 cypress 更新。

我想知道 cypress CI 上的一些日志消息是否对此发出警告。

我遭遇的例子

我的测试文件

test.js
有:

import MainViewPOM from '../pom/MainViewPOM';

MainViewPOM.js 有:

import DialogPOM from '../DialogPOM';

最后一条路径应该有一个点,而不是两个点。导入在内部失败,没有任何警告我。 Cypress 忽略文件的新版本。

更一般地

  • 当你遇到 JS 错误时,cypress 会抛出一个
    ENOENT: no such file or directory, stat
  • 当您遇到像我这样的文件链接错误时,cypress 会保留导入失败的文件的旧版本测试。

-1
投票

我遇到了这个问题,然后对我有帮助的是在每次测试之前清除缓存,因为赛普拉斯似乎默认情况下没有禁用缓存。

我添加了一个自定义命令:

Cypress.Commands.add('clearCache', { prevSubject: false }, () => {
  localStorage.clear()
  indexedDB.deleteDatabase('cypress')
  return true
})

然后我在

beforeEach()
钩子中调用它,以便在每次运行测试之前清除我的缓存:

 beforeEach(() => {
  cy.clearCache();
});

我希望它对你有用。如果您有任何疑问请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.