【问题标题】:Adding custom Command which returns string, typescript添加返回字符串,打字稿的自定义命令
【发布时间】:2019-10-16 20:32:15
【问题描述】:

我是 cypress 的新手,我正在尝试用 typescript 学习 cypress。

我在尝试添加自定义命令时遇到问题。

Cypress.Commands.add('getEnvURL', (environment) => {

    if(environment === ('Dev')){

        return 'testURL';
    } else if (environment === ('Stagging')){        
        return 'StaggingURL';
    }
});


declare global {
    namespace Cypress {
      // tslint:disable-next-line:interface-name
      interface Chainable<Subject> {
        getEnvURL(environment: string): string;        
      }
    }
  }

规格文件

it('Login Test', () => {
cy.visit(cy.getEnvURL(Cypress.env('environment')));
 });

当我尝试从规范文件调用 getEnvURL() 自定义方法时,我希望它会返回 URL 字符串。当我运行测试时,它什么也没做。

谁能帮我解决这个问题

【问题讨论】:

    标签: typescript ui-automation cypress


    【解决方案1】:

    问题应该出在您的代码行上。

    cy.visit(cy.getEnvURL(Cypress.env('environment')))
    

    cy.getEnvURL 返回一个对象而不是返回值 'testURL' 或 'StaggingURL'。

    你可以试试这个代码吗?

    cy.getEnvURL(Cypress.env('username')).then(($url) => {
            cy.visit($url)
        })
    

    【讨论】:

      【解决方案2】:

      说到 cy 命令或自定义命令,它们总是异步返回结果。您只使用 then 块中的实际结果数据。 https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Subject-Management


      在我看来,cy 命令不是你所需要的。我希望变量 environment 在您的应用程序启动之前设置,并且不会在运行时更改。如果是这样,您只需要创建一个简单的模块,test-utils.ts 或任何东西,放在 cypress/utils 下。

      export const getEnvUrl = (env: string) => {
        const env = Cypress.env('environment')
        if (env === 'staging') {
          return 'staging-url'
        } else {
          return 'test-url'
        }
      }
      

      在 cypress 测试中,您可以直接使用它

      cy.visit(getEnvUrl())
      

      【讨论】:

        猜你喜欢
        • 2021-08-20
        • 2021-12-08
        • 2020-03-18
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 2019-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多