#javascript #npm #cypress #e2e-testing
#javascript #npm #cypress #e2e-тестирование
Вопрос:
Поскольку я новичок в Cypress, я должен написать тестовый пример, чтобы проверить, загружен файл или нет, я просмотрел несколько сообщений, связанных с аналогичным тестовым примером, но все они имеют тестовый пример для чтения файла со статическим именем, в моем случае я прочитал тестовый пример.для чтения файла, который загружается после нажатия кнопки загрузки, и при каждой загрузке файла у него будет динамическое имя, хотя имя файла имеет некоторые шаблоны (например. имя файла начинается с фиксированного набора символов).
Я хотел добиться чего-то подобного в cypress,
cy.readFile('C:UsersUserNameDownloads${Regular expression to match the filename pattern}
Ниже приведен фрагмент из документации cy.task(), в котором задача состоит в том, чтобы прочитать, существует файл или нет, но если имя файла не является статическим, то как этого можно достичь
// in plugins/index.js
const fs = require('fs')
module.exports = (on, config) => {
on('task', {
readFileMaybe (filename) {
if (fs.existsSync(filename)) {
return fs.readFileSync(filename, 'utf8')
}
return null
}
})
}
Ответ №1:
Я не уверен, что существуют какие-либо команды для чтения файлов или для существования файлов, которые могут принимать регулярное выражение.
Вы можете прочитать C:UsersUserNameDownloads
папку до и после загрузки и получить разницу.
cypress.json
{
"downloadsFolder": "C:UsersUserNameDownloads"
}
Плагины
const fs = require('fs')
module.exports = (on, config) => {
on('task', {
filesInDownload (folderName) {
return fs.readdirSync(folderName)
}
})
return config
}
Тест
const downloadsFolder = Cypress.config('downloadsFolder')
cy.task('filesInDownload', downloadsFolder).then(files1 => {
// download
cy.task('filesInDownload', downloadsFolder).then(files2 => {
let difference = files2.filter(x => !files1.includes(x));
expect(difference.length).to.be.gt(0)
})
})
Ответ №2:
Я хотел добиться чего-то подобного в cypress,
cy.readFile('C:UsersUserNameDownloads${Regular expression to match the filename pattern}
=>
Я думаю, вам нужно обойти эти случаи следующим образом:
- удалить все в папке
using cy.readfile from readdirSync
Пример:
const downloadsFolder = Cypress.config('downloadsFolder')
cy.task('filesInDownload', downloadsFolder).then(files1 => {
cy.readFile('downloadsFolder' '/' files[0]).contains(content)
})