Cypress使用regex识别下载的文件



我有一个场景,我必须根据API响应验证下载的文本文件的数据。

下面是我尝试过的代码。

测试:

const path = require('path')
const downloadsFolder = Cypress.config('downloadsFolder')
cy.task('deleteFolder', downloadsFolder)
const downloadedFilename = path.join(downloadsFolder, 'ABCDEF.txt')//'*.txt'
....
cy.get('@portmemo').its('response.body')
.then((response) => {
var json = JSON.parse(response);
const resCon = json[0].content.replaceAll(/[nr]/g, '');
cy.readFile(downloadedFilename).then((fc) => {
const formatedfc = fc.replaceAll(/[nr]/g, '');
cy.wrap(formatedfc).should('contains', resCon)
})
})

任务在/cryps/plugins/index.js 中

const { rmdir } = require('fs')
module.exports = (on, config) => {
console.log("cucumber started")

on('task', {
deleteFolder(folderName) {
return new Promise((resolve, reject) => {
rmdir(folderName, { maxRetries: 5, recursive: true }, (err) => {
if (err) {
console.error(err);
return reject(err)
}
resolve(null)
})
})
},
})

当我将下载的文件名设置为"ABCDEF.txt"时,它运行良好[我在这里进行了硬编码]。但我需要一些帮助来获得(动态(文件名,因为它每次都会更改[例如:AUADLFA.txt、CIABJTPT.txt、SVACJTM.txt、PKPQ1TM.txt等]。

我尝试使用">.text",但在4000ms:cy.readFile("C:\Repository\xyz testautomation\cyp\downloads/.txt"(失败,因为该文件不存在错误。

我也提到了这位医生,但还没有运气。

使用regex实现相同目的的正确方法是什么?还想知道有没有办法获得最近下载的文件名?

你可以利用这个问题中显示的任务我如何验证下载的文件是否包含动态的名称

/cryps/plugins/index.js

const fs = require('fs');
on('task', {
downloads:  (downloadspath) => {
return fs.readdirSync(downloadspath)
}
})

这将返回下载文件夹中的文件列表。

理想情况下,您可以让自己轻松,并设置trashAssetsBeforeRuns配置。这样,数组将只包含一个文件,并且不需要在下载前后比较数组。

(刚刚注意到你有任务要做(。

最新更新