首页 > 解决方案 > 我们如何在 PWA 应用程序中使用 cypress 运行离线测试?

问题描述

在我们的Progressive Web App[PWA] 中,我们必须Offline使用 Cypress 测试几个业务案例。

当用户离线时,他们仍然可以进行大部分正常的业务操作,当他们在线时,一切都会被推送并与服务器同步。
用户使用 Microsoft 凭据 (SSO) 登录

知道我们如何使用 cypress 运行这些离线测试吗?我们可以puppeteer用于测试离线案例吗?

context('Actions',()=>{

    beforeEach(() => {
      cy.reload(true);
      cy.loadTokens();
      cy.saveLocalStorage();
      cy.visit('https://sometest.windows.net/home');
    })
    it('Verify the creation of something is possible in Offline',()=>{
      Cypress.currentTest.retries(1);
      cy.viewport(2000, 1000);
      cy.wait(3000);
      // In offline as a user, I need to perform some of the normal business functions here...

    })

})

标签: javascriptpuppeteercypress

解决方案


在 Puppeteer 中,您可以选择与 DevTools 对话并使用CDPSession 类限制页面,请考虑以下示例:

const puppeteer = require('puppeteer');

puppeteer.launch().then(async browser => {
  // Create a new tab
  const page = await browser.newPage()

  // Connect to Chrome DevTools
  const client = await page.target().createCDPSession()

  // Set throttling property
  await client.send('Network.emulateNetworkConditions', {
    'offline': true,
    'downloadThroughput': 200 * 1024 / 8,
    'uploadThroughput': 200 * 1024 / 8,
    'latency': 20
  })

  // Navigate and take a screenshot
  await page.goto('https://sometest.windows.net/home')
  await page.screenshot({path: 'screenshot.png'})
  await browser.close()
})

推荐阅读