在 Cypress runner 中出现 'cy.session is not a function' 错误

Getting 'cy.session is not a function' error in Cypress runner

我正在尝试按照此处的 this 文章将 cy.session() 添加到我的登录功能。但是,当我这样做然后 运行 我的测试时,我得到错误 cy.session is not a function

我在我的 cypress.json 配置文件中设置了 "experimentalSessionSupport": true(并确认我的测试也将此值视为 true)。根据我的理解,这应该是我需要做的全部,但显然我遗漏了一些东西。

我使用的是 Cypress 9.4.1 版。我试过创建一个自定义登录命令(与文章中的完全一样)但是 运行 宁它时只是得到同样的错误。

我的测试在没有 cy.session() 命令的情况下完美运行。

login.js:

class LoginPage {    

  ...

  login(username, password) {
     cy.session([username, password], () => {
      cy.visit('/login');
      this.emailField.type(username);
      this.passwordField.type(password);
      this.loginButton.click();
     });
  }

}

export default new LoginPage();

cypress.json:

{
    ...
    "experimentalSessionSupport": true
}

是否是 Typescript 错误 - TypeError: cy.[custom command] is not a function?

如果是这样,由于实验性的原因,类型定义可能尚未添加。

在测试顶部添加与自定义命令相同的定义。

这取自最新版本。

declare namespace Cypress {

  interface SessionOptions {
    validate?: () => false | void
  }

  interface Chainable<Subject = any> {
    session(
      id: string | object, 
      setup?: SessionOptions['validate'], 
      options?: SessionOptions
    ): Chainable<null>
  }

}

I'm using Cypress version 9.4.1.

好吧,事实并非如此。我还在使用不支持 cy.session() 的版本。我这边犯了愚蠢的错误。自升级 Cypress 以来,现在一切正常。