我们如何在PWA应用程序中使用cypress进行离线测试?

时间:2019-09-09 04:30:59

标签: javascript puppeteer cypress

在我们的Progressive Web App [PWA]中,我们必须使用赛普拉斯测试几个Offline商业案例。

当用户处于脱机状态时,他们仍然可以执行大多数正常的业务操作,并且当他们联机时,所有内容都将被推送并与服务器同步。
用户使用Microsoft凭据(SSO)登录

您知道我们如何使用赛普拉斯运行这些离线测试吗? 我们可以使用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...

    })

})

1 个答案:

答案 0 :(得分:1)

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

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()
})