我按照这篇文章进行操作,并达到了我的赛普拉斯日志如本文最后一张图片所示的状态。
所提出的方法基于记录函数名称。
但是,我还有2个问题:
例如,login() 正在被 loginCM() 调用。
Cypress.Commands.add('loginCM', (username = Cypress.env("CM_USERNAME"), password = Cypress.env("CM_PASSWORD")) => {
loginCM()
function loginCM() {
eval(Cypress.logStep)
Logger.logBegin(`loginCM`, `username = ${username}, password = ${password}`)
cy.clearAllLocalStorage()
cy.intercept('POST', '*login*').as('login')
cy.visit(getCMUrl())
cy.login(username, password)
cy.wait('@login').then((interception) => {
const token = interception.response.body.token
Cypress.env('ACCESS_CODE', token)
})
Logger.logEnd(`loginCM`)
}
})
但是,在日志中,它们是一个接一个地看,而不是一个接一个地看:
例如:
Cypress.Commands.add('login', (username, password) => {
login()
function login() {
eval(Cypress.logStep)
cy.get('[data-test="username"]').type(username, { force: true })
cy.get('[data-test="password"]').type(password, { force: true })
cy.get('[type="submit"]').click({ force: true })
elements.loader().should('not.exist')
}
})
有更好的办法吗?
博客作者在这里。
eval(Cypress.logStep)
行用于测试内的“step”函数;我不确定如果在自定义命令上使用它会如何表现。
对于自定义命令,这就是我所做的(来自博客文章):
Cypress.Commands.add('newUser', () => {
const message = '**newUser** ~ registering a new user'
Cypress.log({
name: 'command',
message: message,
groupStart: true,
})
cy.generateEmail(false).then((email) => {
registerEmail(email)
cy.endGroup()
cy.wrap(email, { log: false })
})
})
因此,假设我正确输入了所有内容,您的示例可能如下所示:
Cypress.Commands.add('loginCM', (username = Cypress.env("CM_USERNAME"), password = Cypress.env("CM_PASSWORD")) => {
const message = '**newUser** ~ registering a new user'
Cypress.log({
name: 'command',
message: message,
groupStart: true,
})
loginCM()
function loginCM() {
cy.clearAllLocalStorage()
cy.intercept('POST', '*login*').as('login')
cy.visit(getCMUrl())
cy.login(username, password)
cy.wait('@login').then((interception) => {
const token = interception.response.body.token
Cypress.env('ACCESS_CODE', token)
})
}
cy.endGroup()
})
我删除了你的
Logger
行只是因为我不了解它们并认为它们可能是多余的。欢迎您恢复它们。