赛普拉斯自定义命令无法识别

ton*_*cks 9 cypress

我想创建一个自定义登录命令。我已将该命令添加到我的commands.js文件中,并将导入命令添加到index.js.

当我在集成文件夹下创建新的测试文件时,我尝试使用 引用我的新命令cy.loginWith(),但它没有将其识别为命令。

如果我将导入添加../../../support/commands到新登录规范文件的顶部,则cy.loginWith()可以正确识别并调用自定义命令。
但我知道这不是一件好事。

这是我的commands.js文件中的自定义命令:

Cypress.Commands.add('loginWith' , (email, password) => {
    cy.get('[name="username"]').type(email)
    cy.get('[name="password"]').type(password)
    cy.get('[name="Login"]').click()
})
Run Code Online (Sandbox Code Playgroud)

这是我的 index.js 文件:

import "./commands.js"
Run Code Online (Sandbox Code Playgroud)

这是我的list.js规范文件,位于/cypress/integration/clients/client list/lists

/// <reference types="Cypress" />

import "../../../support/commands"

// login to the app
it('A User logs in and sees a welcome message', () => {
    cy.visit('.../login.cfm')
    cy.loginWith('username', 'password')
    expect(cy.contains('Welcome back!'))

   }
)
Run Code Online (Sandbox Code Playgroud)

是否有什么我可能配置错误而无法识别该index.js文件?

bac*_*113 6

我的问题是智能感知工作正常,并且在执行以下操作后一切都运行良好:

import '../support/commands';

我的修复非常简单...只需添加supportFile到您的cypress.json

{
  "supportFile": "cypress/support/index.ts",
  "baseUrl": "http://localhost:3000"
}
Run Code Online (Sandbox Code Playgroud)
// index.ts
import './commands'
Run Code Online (Sandbox Code Playgroud)


ton*_*cks 0

我重新启动了 Cypress,并选择了正确的项目文件夹,现在一切正常了。我想对我来说,解决方案是确保选择正确的项目文件夹。不过还是感谢您的所有建议。

  • 您如何选择正确的项目文件夹?你做了什么改变?我面临着确切的问题。 (5认同)