Получил ошибку типа: не удается прочитать свойство ‘passes’ неопределенного с использованием Cypress при генерации отчета mochawesome

#javascript #node.js #testing #mocha.js #cypress

#javascript #node.js #тестирование #mocha.js #cypress

Вопрос:

я получил запутанную ошибку, на самом деле я не знаю, как решить подобную проблему с библиотекой, я попытался сгенерировать свой тестовый пример cypress для отчета mochawesome, ниже приведен мой установочный файл package.json

 {
"devDependencies": {
    "cypress": "^3.1.5",
    "mocha": "^6.0.2",
    "mocha-junit-reporter": "^1.18.0",
    "mocha-multi-reporters": "^1.1.7",
    "mochawesome": "^3.1.1",
    "mochawesome-merge": "^1.0.7",
    "mochawesome-report-generator": "^3.1.5"
}
  

я думаю, что после того, как я их установил, проблем нет,
затем я запускаю

cypress run —reporter mochawesome

Затем тест завершен, после этого бума я столкнулся с ошибкой, подобной этой

 TypeError: Cannot read property 'passes' of undefined
at Spec.Base.epilogue (/Users/mac/project-cypress/node_modules/mocha/lib/reporters/base.js:318:25)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:120:20)
at Runner.emit (events.js:210:7)
at Reporter.emit (/Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/server/lib/reporter.js:239:55)
at Object.server.startWebsockets.onMocha (/Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/server/lib/project.js:296:22)
at Socket.<anonymous> (/Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/server/lib/socket.js:237:36)
at emitTwo (events.js:125:13)
at Socket.emit (events.js:213:7)
at /Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/socket/node_modules/socket.io/lib/socket.js:503:12
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)

TypeError: Cannot read property 'passes' of undefined
at Spec.Base.epilogue (/Users/mac/project-cypress/node_modules/mocha/lib/reporters/base.js:318:25)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:120:20)
at Runner.emit (events.js:210:7)
at Reporter.emit (/Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/server/lib/reporter.js:239:55)
at Object.server.startWebsockets.onMocha (/Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/server/lib/project.js:296:22)
at Socket.<anonymous> (/Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/server/lib/socket.js:237:36)
at emitTwo (events.js:125:13)
at Socket.emit (events.js:213:7)
at /Users/mac/Library/Caches/Cypress/3.1.5/Cypress.app/Contents/Resources/app/packages/socket/node_modules/socket.io/lib/socket.js:503:12
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
  

это stacktrace, который у меня есть, кто-нибудь знает, как решить эту проблему?

Ответ №1:

Я получил ту же ошибку при использовании mocha версии 6.0.0 или выше.

Если бы вы могли, попробуйте использовать version 5.2.0 , пока проблема не будет решена, и она будет работать нормально.

Комментарии:

1. Вау, спасибо за помощь, да, это работает с использованием mocha 5.2.0.

Ответ №2:

Mocha 6 требует создания экземпляра сборщика статистики

теперь я обновил, протестировал и выпустил обновленные модули, которые исправляют это с mocha 6, но также сохраняют обратную совместимость с mocha 5 и более ранними версиями.

https://www.npmjs.com/package/cypress-multi-reporters
https://www.npmjs.com/package/mocha-junit-reporters

Пример с Mocha 5
Пример с Mocha 6

требуемые изменения минимальны

npm i mocha-junit-reporters

npm i cypress-multi-reporters

в reporterOpts.json

 {
  "reporterEnabled": "mocha-junit-reporters, mochawesome",
  "mochaJunitReportersReporterOptions": {
    "mochaFile": "cypress/reports/junit/test_results[hash].xml",
    "toConsole": false
  },
  "mochawesomeReporterOptions": {
    "reportDir": "cypress/reports/mocha",
    "quiet": true,
    "overwrite": false,
    "html": false,
    "json": true
  }
} 
  

в cypress.json

 {
  ...
  "reporter": "cypress-multi-reporters",
  "reporterOptions": {
    "configFile": "reporterOpts.json"
  }
  

Смотрите https://github.com/YOU54F/cypress-docker-typescript/pull/22/files

Надеюсь, PR скоро будут объединены в исходном репозитории, но пока наслаждайтесь

Комментарии:

1. теперь мое исправление было объединено в mocha-junit-reporter версии v1.23.0

2. можем ли мы включить конфигурацию reporter в cypress.json вместо добавления постороннего файла?