reactjs cypress测试.如何测试deeplink

5us2dqdw  于 2023-11-18  发布在  React
关注(0)|答案(2)|浏览(126)

我有一个问题与柏树测试。我有这样的测试

const deeplinkUrl = 'https://deeplink.page.link/2WmRA4zbfUcQz5AY9';

describe('upload scan view', () => {
  beforeEach(() => {
    cy.visit('/deplinkPage');
    cy.injectAxe();
  });

  it('should redirect user to deep link', () => {
    cy.waitForLoaderRemoval();
    cy.getEnabledButton('Install for Free');
    cy.get('body').compareSnapshot('upload-scan-view');

    cy.get('button').contains('Install for Free').trigger('click');
    cy.url().should('be.equals', deeplinkUrl);
  });
});

字符串
我有问题,每次我点击按钮与deeplink。我的测试失败,因为柏树等待页面加载,每次检查网址有不同的网址,因为deepllink有重定向到应用程序商店或它会重定向到应用程序与完全不同的网址。因为页面加载事件后,有不同的链接,我需要检查,点击按钮后,用户的网址是我的deeplink,单击后会在那里停留一段时间

p1tboqfb

p1tboqfb1#

你能截获其中的联系吗?
只要你正在测试的应用程序向deeplinkUrl发出请求,这就应该起作用。

cy.intercept(deeplinkUrl).as('deepLink')

cy.get('button').contains('Install for Free').click()  

cy.wait('@deeplink')

字符串
添加req.destroy()将阻止 * 重定向 * 的发生,如果它妨碍了你的测试。
或者,如果你只是想 * 延迟 * 重定向,添加一个setTimeout()

cy.intercept(deeplinkUrl, (req) => {
  setTimeout(() => {
    req.continue()
  }, 2000)
}).as('deepLink')

cy.get('button').contains('Install for Free').click()  

cy.wait('@deeplink')

n8ghc7c1

n8ghc7c12#

您可以引入一个自定义命令,等待URL与您的深度链接匹配。下面是一个如何修改代码的示例:

const deeplinkUrl = 'https://deeplink.page.link/2WmRA4zbfUcQz5AY9';

describe('upload scan view', () => {
  beforeEach(() => {
    cy.visit('/deplinkPage');
    cy.injectAxe();
  });

  // Custom command to wait for the URL to match the expected deeplink
  Cypress.Commands.add('waitForDeeplink', (expectedUrl) => {
    cy.url().should('include', expectedUrl);
  });

  it('should redirect user to deep link', () => {
    cy.waitForLoaderRemoval();
    cy.getEnabledButton('Install for Free');
    cy.get('body').compareSnapshot('upload-scan-view');

    cy.get('button').contains('Install for Free').click();

    // Wait for the deeplink URL
    cy.waitForDeeplink(deeplinkUrl);
  });
});

字符串

相关问题