Cypress:动态测试:验证表中的行

Jef*_*ner 1 cypress

目标是迭代表并为每一行动态创建测试以验证其状态。表示例: 表,第一列 GUID 标签,第三列状态

了解Cypress 示例:然而,动态测试提供的示例解决了对基本类型 ( stringnumber) 的静态列表进行迭代的问题,并且未收集 的子类型JQuery<HTMLElement>

行按标有 GUID 标签的第一列进行分组。下面的代码收集包含特定 GUID 的行标签。添加的测试伪注入it()不起作用,我也不希望它起作用,但这就是我试图用特定 GUID 测试每行状态的方法:

it('TEST Iterate rows matching GUID', () => {
  cy.fixture('esign').then($esignStore => {
   
   expect($esignStore).to.have.property('requestUUID').to.be.a('string').not.empty;
    cy.get('table[data-qa="act_ops_log_table"]').within(() => {
      cy.log('Ops Logs table found');
      cy.get('tbody[data-qa="act_ops_log_table_body"]').then(() => {
        cy.get('tr');
        cy.get('td');
        cy.get('td:nth-child(1)').each(($tableCell, $index, $list) => {
          const textEnvelope = $tableCell.text();
          if (textEnvelope.includes($esignStore.requestUUID)) {

            // pseudo-example of dynamically added test: start
            // it(`TEST ${$index}`, () => {
              cy.get('td:nth-child(3)')
                .eq($index)
                .then($field => {
                  const textStatus = $field.text();
                  expect(textStatus, 'succeeded');
                });
            // });
            // pseudo-example of dynamically added test: end

          }
        });
      });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

方法表示赞赏。谢谢

Vis*_*sal 5

您无法动态创建测试。

Cypress 会解析规范文件,以找出在 Cypress 命令开始运行之前存在哪些测试。

您能做的最好的事情就是添加额外的日志记录来标记每个测试行。

cy.get('tbody tr', {log:false}).each(($tr, index) => {

  // Log beginning of row test
  cy.then(() => Cypress.log({
    displayName: 'Row test',
    message: `TEST ${index}`,
  }))

  cy.wrap($tr, {log:false}).find('td:nth-child(1)', {log:false}).then($firstCol => {
    const textEnvelope = $firstCol.text();
    if (textEnvelope.includes(esignStore.requestUUID)) {
      cy.wrap($firstCol, {log:false}).siblings({log:false}).eq(1, {log:false})
        .should('have.text', 'succeed')
    } else {
      cy.log(`Row ${index} - not required requestUUID`)
    }
  })
})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


或者预先过滤所需的行,以便仅requestUUID测试那些匹配的行

cy.get('tbody tr', {log:false}).each(($tr, index) => {
  .filter(`:has(td:nth-child(1):contains(${esignStore.requestUUID}))`, {log:false})
  .each(($tr, index) => {

    // Log beginning of row test
    cy.then(() => Cypress.log({
      displayName: 'Row test',
      message: `TEST ${index}`,
    }))

    cy.wrap($tr, {log:false})
      .find('td:nth-child(3)', {log:false})
      .should('have.text', 'succeed')
  })
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述