如何使用分组步骤执行增强步骤赛普拉斯日志记录?

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

我按照这篇文章进行操作,并达到了我的赛普拉斯日志如本文最后一张图片所示的状态。

所提出的方法基于记录函数名称。

但是,我还有2个问题:

  1. 正如我设法实现的那样,嵌套函数不会嵌套地显示在 Cypress 日志上,但它们会跟随调用者。有人知道如何让 logSteps 根据他们的顺序缩进吗?

例如,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`)
    }
})

但是,在日志中,它们是一个接一个地看,而不是一个接一个地看:

enter image description here

  1. 正如我所说,这是基于函数的,因此我发现自己包装了每个自定义命令的内容,以便“logStep”它们的名称。

例如:

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')
    }
})

有更好的办法吗?

javascript cypress
1个回答
0
投票

博客作者在这里。

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
行只是因为我不了解它们并认为它们可能是多余的。欢迎您恢复它们。

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