寻找 @JeffTanner 提出的关于生成动态测试的问题的明确答案。从这个问题和赛普拉斯样本中,很明显我们需要知道生成它们之前所需的测试数量。
问题
我们有一个网页,其中包含一个医疗保健分析数据表,该数据在一天中刷新多次。每次刷新团队都必须检查数据,为了分配工作,我们将每一行作为单独的测试运行。但行数每次都不同,这意味着我必须计算行数并在每次运行时更新系统。寻找一种以编程方式获取行数的方法。
HTML 是 的表格<tbody><tr></tr></tbody>,因此以下内容足以获取计数,但我无法在 中运行它beforeEach(),抛出的错误是“未找到测试”
let rowCount;
beforeEach(() => {
cy.visit('/analytics')
cy.get('tbody tr').then($els => rowCount = $els.length)
})
Cypress._.times(rowCount => {
it('process row', () => {
...
})
})
Run Code Online (Sandbox Code Playgroud)
该before:run事件在测试开始之前触发,您可以在那里扫描网页。
在 中设置事件监听器setupNodeEvents()。Cypress 命令不会在此处运行,但您可以使用等效的 Node 命令。
const { defineConfig } = require("cypress");
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
on('before:run', async (details) => {
try {
const fetch = require('node-fetch');
const fs = require('fs-extra');
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const response = await fetch(config.env.prescan); // default below
const body = await response.text(); // or pass in command line
const dom = new JSDOM(body);
const rows = dom.window.document.body.querySelectorAll('tr') // query
// save results
fs.writeJson('./cypress/fixtures/analytics-rows.json', {rows:rows.length})
} catch (error) {
console.log('error:', error)
}
})
},
},
env: {
prefetch: 'url-for-analytics-page'
}
})
Run Code Online (Sandbox Code Playgroud)
测试
import {rows} from './cypress/fixtures/analytics-rows.json' // read row count
Cypress._.times(rows, (row) => {
it(`tests row ${row}`, () => {
...
})
}
Run Code Online (Sandbox Code Playgroud)
一种可能性是在脚本中运行上述 Cypress 测试,pretest该脚本始终在主测试脚本之前运行。
// package.json
{
...
"scripts": {
"pretest": "npx cypress run --spec cypress/e2e/pre-scan.cy.js",
"test": "npx cypress run --spec cypress/e2e/main-test.cy.js",
}
}
Run Code Online (Sandbox Code Playgroud)
// pre-scan.cy.js
it('scans for table row count', () => {
cy.visit('/analytics');
cy.get('tbody tr').then($els => {
const rowCount = $els.length;
cy.writeFile('cypress/fixtures/rowcount.json', rowCount);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |