javascript - 我们如何在 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...
})
})
解决方案
在 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()
})
推荐阅读
- fast-ai - 快速 AI vision.widgets.Image 显示为 PIL Image 但不同
- c# - C#使用输出变量调用存储过程时出错,未提供参数
- spring-boot - 我在哪里可以找到计划的 Spring Boot 发布日期
- python - 如何从 python 守护进程运行 vimdiff
- cookies - 如果用户在 Quancast Choice 中选择更多选项,则横幅不可见
- android - 将过多的参数从 UI 传递到 UseCase Android Clean Architecture
- python - PyTorch:如何将包含整数和张量元组的列表中的元素相乘
- pyqt5 - pyqt vtk:如何去除边距?
- c++ - SIMD 聚集导致的分段错误?
- ruby-on-rails-5 - capybara 和 webdrivers gem 的只读文件系统错误