当前位置: 首页 > 知识库问答 >
问题:

Cypress Cucumber-我如何使我的步骤运行有序?

东郭淇
2023-03-14

这里对Javascript/Cypress比较陌生。我正在使用Cypress Cucumber.js插件运行一些测试。问题是,由于JS的异步特性,我无法使步骤按顺序运行--“then”步骤在“gived etc”之前运行。显然,这成为一个问题,因为测试将失败!

我的问题:

1)如何使用异步代码使黄瓜步骤始终按顺序运行?我在这里看到了一个类似的问题:如何等待JavaScript Promise在恢复函数之前解决?根据响应,我对给定块应用了async/await,希望它能在步骤中强制执行命令,但这没有起到作用。

下面是我的功能文件:

Given I get the data from CMS
Then I can verify that the title is the same as the CMA title in tab "0"
And I can verify that the link is the correct link in tab "0"

步骤:

  Given('I get the data from CMS', async() => {

    let api = await Api.buildDevApi();
    expectedNav = await new NavExpected(api);
    console.log('1');
  });

  Then('I can verify that the title is the same as the CMA title in tab {string}', (index) => {

    cy.root().find(".primary-item").eq(index).children().first(".nav-link").as('nav');
    cy.get('@nav').should(async(text) => {
      let title = await expectedNav.expectedTitle(index);
      expect(text.get(0).innerText).to.eq(title);
    })
    console.log('2');
  });

  Then('I can verify that the link is the correct link in tab {string}', (index) => {

    cy.get('@nav').should(async(url) => {
      let link = await expectedNav.expectedLink(index);
      expect(url.attr('href')).to.eq(link);
    })
    console.log('3');
  });
  Given('I get the data from Prismic T1', () => {
    return new Cypress.Promise((resolve) => {
      PrismicApi.buildDevApi().then(api => {
        expectedNav = new NavExpected(api);
        resolve();
        console.log('1');
      });
    });
  });

可惜,没有运气...给出的仍然是最后的记录。

任何帮助都将非常感谢,我很乐意提供进一步的澄清。:)

共有1个答案

柳宏深
2023-03-14

我正在使用Cypress和Typescript和Cucumber预处理器,功能文件中的所有步骤同步运行,检查版本和示例:Test Repo Cypress-Cucumber-Typescript

 类似资料:
  • 我想并行运行我的测试,这样可以节省时间,我确实在宁静中找到了一个选项,我们可以批量运行测试,但不能并行运行,而且cucumber并行似乎很有前途,下面的链接是针对maven项目的,运行宁静-cucumber并行测试用例有任何关于宁静/JS和npm的建议吗?

  • 对于我想要为Axon的几个服务实现Saga编排的用例,我构建了: 订单服务(带有Spring boot Axon框架的saga orchestrator) 支付服务(微服务) 运输服务(微服务) 然后我有一个用@Saga注释的类,有3个步骤/事件处理程序: 订单已创建(首次服务) 我的问题是,如果运输服务失败,我应该如何回滚/补偿所有以前执行的步骤? 从留档我有一些疑问: 我需要用@Saga创建一

  • 我们的Spring批处理作业只有一个步骤,我们在步骤中有读取器,处理器,写入器操作。当上一步失败时,如何停止继续执行处理器步骤?

  • 我试图建立一个jenkins多分支管道,在docker容器中运行我的所有代码验证步骤,然后构建docker映像并将其推出docker容器。 目前,我的 Jenkinsfile 看起来有点像这样(为了便于阅读,它精简了): 这里的问题是,我使用 dockerfile 代理的每个阶段,jenkins 都会尝试重建 docker 映像。这些阶段都被缓存了,但是发送构建上下文并实际处理所有内容仍然需要比我

  • 步骤1和步骤2是需要在安装网站上运行的安装步骤,并且只需要在chrome上运行一次来为场景创建安装。一旦完成,那么步骤3和步骤4需要在客户端网站上的不同浏览器/设备(即Chrome,Firefox,Safari,Mobile)上进行检查。 我的框架是用Cucumber和JavaScript编写的。我如何在cucumber中实现这一点,场景的一些步骤只在chrome上运行一次,其余的步骤应该在不同的

  • 本文向大家介绍win10下如何运行.sh文件的实现步骤,包括了win10下如何运行.sh文件的实现步骤的使用技巧和注意事项,需要的朋友参考一下 确保您使用至少是Windows10的14316版本。 这种方法只适用于64位版本的Windows 10 今天居然惊奇地发现原来win10的功能简直强大到没话说,居然在更新后有一个Linux的子系统,也就是说虚拟机神马的可能慢慢地会消失啦!话不多说啦,抓紧分