标签: nyc

Jenkins 与本地环境的纽约报告输出不同

当我尝试生成 Jenkins 管道作业的综合覆盖率报告时,发生了一些奇怪的事情。

我有一个 Nx 支持的 Angular monorepo,并且正在生成其中包含的所有库和项目的覆盖率报告。

我已将以下脚本放在一起来运行测试,然后用于nyc合并和报告操作。

const { execSync } = require('child_process');
const packageJSON = require("../package.json");

const EXCLUDE_UNIT_TEST = packageJSON.buildData.excludeUnitTest;
 
const run = (commands) => {
  commands.forEach((command) => execSync(command, { stdio: 'inherit' }));
};
 
run([
  `rm -rf coverage`,
  `npx nx run-many --target=test --all --maxWorkers=4 --exclude=${EXCLUDE_UNIT_TEST} --coverage=true`,
  `npx copyfiles -f 'coverage/**/*coverage.json' coverage/project-parts`,
  `npx nyc merge coverage/project-parts coverage/nyc/combined.json`,
  `npx nyc report --reporter html-spa --reporter lcov -t coverage/nyc --report-dir coverage/combined`
]);
Run Code Online (Sandbox Code Playgroud)

这在本地对我来说效果很好,我看到我的所有库/项目都有一个 HTML 报告(lcov 格式和 html-spa 报告)。

但是,当在 …

jenkins istanbul jenkins-pipeline nyc nrwl-nx

5
推荐指数
1
解决办法
270
查看次数

GitLab 代码覆盖率徽章未显示

我为 GitLab 存储库进行了 CI 设置,并且该作业包含以下到 STDOUT 的输出。

=============================== Coverage summary ===============================
Statements   : 94.25% ( 291/333 )
Branches     : 62.29% ( 53/75 )
Functions    : 73.32% ( 170/196 )
Lines        : 94.68% ( 533/569 )
================================================================================
Run Code Online (Sandbox Code Playgroud)

.gitlab-ci.yml该工作的文件中,我有coverage: /^Statements\s*:\s*([^%]+)/. 同样,在我设置的存储库的 CI/CD 设置中^Statements\s*:\s*([^%]+)

然而,代码覆盖率似乎出现Unknown在代码覆盖率徽章上。

regex code-coverage gitlab istanbul nyc

5
推荐指数
1
解决办法
2965
查看次数

使用@vue/cli-plugin-unit-mocha、TypeScript 和 SFC 为 VueJS 项目生成纽约市覆盖率报告

我目前正在为使用 @vue/cli-plugin-unit-mocha 运行单元测试的 Vue 项目设置测试环境。该项目使用 TypeScript 和 .vue 单文件组件。我已经成功地设置了我的项目来运行单元测试并为 TypeScript 文件生成代码覆盖率报告,但是当我尝试为 SFC 添加测试时,我收到一个错误。

为了生成覆盖率报告,我使用 nyc + istanbul-instrumenter-loader。我认为我的配置对于常规 Typescript 文件是正确的,但是当它必须处理 .vue 文件时 istanbul-instrumenter-loader 会引发错误:

error  in ./src/pages/rapportages/components/reports-grid/reports-grid-container.vue?vue&type=script&lang=ts&
Module build failed (from ./node_modules/istanbul-instrumenter-loader/dist/cjs.js):
TypeError: Cannot read property 'fileCoverage' of undefined
Run Code Online (Sandbox Code Playgroud)

在我看来 .vue 文件没有被正确转换/转译。

这是我的 package.json:

{
 ...
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "test": "vue-cli-service test:unit src/**/__tests__/*.spec.ts --require mocha-setup.js",
    "test:ci": "yarn run test --reporter mocha-teamcity-reporter",
    "test:cover": "cross-env NODE_ENV=coverage nyc vue-cli-service test:unit src/**/__tests__/*.spec.ts --require mocha-setup.js"
  }
...
"nyc": …
Run Code Online (Sandbox Code Playgroud)

typescript istanbul mocha-webpack vuejs2 nyc

5
推荐指数
0
解决办法
2986
查看次数

无法通过 Cypress + Istanbul 获得代码覆盖率

我尝试使用Cypressistanbul nycAngular 8项目中设置代码覆盖率。

我设法对代码进行了检测(__coverage__正确设置了全局变量):

在此处输入图片说明

以及.nyc_output运行后生成的覆盖文件cypress:open

在此处输入图片说明

但是生成的覆盖率报告是空的:

$ cat coverage/coverage-final.json
{}
Run Code Online (Sandbox Code Playgroud)

执行命令时结果相同:

$ npx nyc report --report-dir ./coverage --temp-dir .nyc_output --reporter=text
----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |        0 |        0 |        0 |        0 |                   |
----------|----------|----------|----------|----------|-------------------|
Run Code Online (Sandbox Code Playgroud)

这是我的 package.json devDependencies:

"devDependencies": {
  "@angular-devkit/build-angular": "^0.803.3",
  "@angular-devkit/build-optimizer": "^0.803.3",
  "@angular/cli": "^8.3.3",
  "@angular/compiler-cli": "8.2.5",
  "@angular/language-service": "8.2.5",
  "@briebug/cypress-schematic": …
Run Code Online (Sandbox Code Playgroud)

istanbul angular nyc cypress

5
推荐指数
1
解决办法
5714
查看次数

@cypress/code-coverage 无法解析“../self-coverage-helper”@cypress

我尝试运行index.jsCypress:

require('@cypress/code-coverage/task')
Run Code Online (Sandbox Code Playgroud)

出现此错误:

Module not found: Error: Can't resolve '../self-coverage-helper' in 'C:\repo\patientstrength_codecover\node_modules\@cypress\code-coverage\node_modules\nyc'
Run Code Online (Sandbox Code Playgroud)

完全迷失在这里。我的package.json

"nyc": "^15.1.0",
"cypress": "^5.0.0",
"cypress-istanbul": "^1.3.0",
"cypress-localstorage-commands": "^1.2.2",
"cypress-multi-reporters": "^1.2.4",
"@cypress/code-coverage": "^3.8.1",
"@babel/core": "^7.11.4",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-jsx": "^7.10.4",
"@babel/preset-env": "^7.11.0",
"@babel/preset-react": "^7.10.4",
Run Code Online (Sandbox Code Playgroud)

nyc cypress

5
推荐指数
1
解决办法
1480
查看次数

与纽约和剧作家零报道

我正在努力使用 Playwright 正确设置报道。它报告所有文件的覆盖率均为 0(测试文件本身除外,如果我包含它们)。

我从https://playwright.dev/docs/api/class-coveragehttps://github.com/bgotink/playwright-coverage/blob/main/src/fixtures.ts中获得灵感。我们的项目是一个单一存储库,其中文件夹中的测试e2e-tests/在其他相邻文件夹中包含的服务器上运行端到端测试,例如frontend/.

page当前设置在每个测试文件中使用如下所示的固定装置:

// frontend.spec.ts
import { test, expect } from "../fixtures";

test("something", ({ page ) => {
    // Do test stuff with page
});
Run Code Online (Sandbox Code Playgroud)

其中夹具定义为

// fixtures/page.ts
import { Page, TestInfo } from "@playwright/test";

const pageWithCoverage = async (
  { page, browserName }: { page: Page; browserName: string },
  use: (page: Page) => Promise<void>,
  testInfo: TestInfo
) => {
  if (!page.coverage) throw new Error(`Could not collect coverage with …
Run Code Online (Sandbox Code Playgroud)

testing code-coverage v8 nyc playwright

5
推荐指数
1
解决办法
2173
查看次数

如何从 mocha/nyc 测试覆盖范围(Node.js)中过滤掉某些模式?

在 mocha.opts 中,我确定如何设置需要考虑的覆盖模式,但不确定如何包含必须过滤掉的模式?

例如,

我有包含覆盖模式的文件mocha.opts,该文件作为参数传递给以下命令:
nyc mocha --opts ./mocha.opts

其内容mocha.opts如下:
test/tests/routes/*.test.js

但是有很多custom js scripts导入到 *.test.js 文件中。但这些custom js scripts包含我不想包含在覆盖率报告中的函数,也不想为它们编写单元测试。
有没有办法通过将这些模式声明到mocha.opts文件中来从覆盖范围中过滤掉这些模式?

javascript unit-testing mocha.js nyc

4
推荐指数
1
解决办法
1563
查看次数

为包目录外的文件启用 nyc/istanbul 代码覆盖

我有一个节点应用程序,其中包含单独的姐妹文件夹以及用于应用程序代码和测试的随附 package.json 文件。

Project
|
|-----Application
          |-----app.js
          |-----package.json
|-----Tests
        |
        |-------test.js
        |-------package.json  (nyc added here)
Run Code Online (Sandbox Code Playgroud)

nyc 作为依赖项(与 mocha 一起)包含在测试文件夹中。它无法显示应用程序文件夹中文件的覆盖范围。我尝试通过在 nyc 配置中包含“../Application/**/*.js”来显式包含应用程序文件,但这似乎不起作用。

有任何想法吗?

javascript mocha.js istanbul nyc

2
推荐指数
1
解决办法
2792
查看次数

Yarn 成功安装了 nyc,但 zsh 说“找不到命令”

问题:如何让 zsh 看到 nyc?

重建步骤:

  1. 我试过了yarn add nyc -g(我正在遵循使用 npm 的步骤,所以我只是用 替换npm iyarn add
  2. 然后跑了 nyc report --reporter=html

zsh:找不到命令:nyc

  1. 然而,当我运行时npx nyc --help,我得到了一个完整的 nyc 函数列表!
  2. 然后我尝试了yarn add -D(来自官方 nyc 文档
  3. 然后跑了nyc report --reporter=text-lcov。再来一次:

zsh:找不到命令:nyc

zsh oh-my-zsh nyc

2
推荐指数
1
解决办法
2038
查看次数

如何从 json 结果生成 nyc 报告(没有 .nyc_output)?

我继承了一个带有 Jasmine 单元测试的 JS 代码库。测试框架使用karmainstanbul-combine获取代码覆盖率。它似乎istanbul-combine不适用于当前的节点模块,此外不再维护:推荐的替换是nyc. 我无法代替istanbul-combinenycMakefile

我成功地将我单独的覆盖结果 (json) 文件合并到一个coverage-final.json文件中(这个 SO 问题),但现在我需要生成摘要报告。

如何从coverage.json文件生成摘要报告?

我认为这里的一个问题是我没有.nyc_output带有中间结果的目录,因为我没有nyc用来生成覆盖数据。我所有的覆盖数据都在一个coverage目录及其子目录中。

我试过指定一个文件名:

npx nyc report --include coverage-final.json
Run Code Online (Sandbox Code Playgroud)

还尝试指定目录:

npx nyc report --include coverage
Run Code Online (Sandbox Code Playgroud)

两者都不起作用。

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |       0 |        0 |       0 | …
Run Code Online (Sandbox Code Playgroud)

istanbul nyc

1
推荐指数
2
解决办法
3612
查看次数

仅获取 Cypress 中文件夹的代码覆盖率

我正在使用赛普拉斯和纽约配置。我的文件夹结构如下所示:

|/project
| /coverage/
   /lcov-report
    /index.html
 
|/cypress
| /main
   /car
    /car.spec.tsx
    /color.spec.tsx
     ...
| /integration
Run Code Online (Sandbox Code Playgroud)

我需要一个解决方案来进入文件夹index.html中的唯一测试覆盖范围main。因此,index.html我只需要查看那里编写的测试的覆盖范围。
我注意到纽约市的文档。有一些配置https://github.com/istanbuljs/nyc#common-configuration-options。但是在那里我只能指定包含 中的功能的文件include,但是在我的项目的每个文件夹中我可以有一个测试文件,并且我不能每次都指定每个新文件以获得覆盖范围。
问题:是否有解决方案仅获取文件夹的覆盖率main或获取已编写测试的文件的覆盖率spec?或者获得具有spec.tsx扩展名的文件的覆盖范围?

next.js nyc cypress

1
推荐指数
1
解决办法
1493
查看次数

伊斯坦布尔报道问题“没有采取其他路径”,但显然是

我在下面有这段代码,我正在使用nycbabel创建覆盖率报告。

出于某种原因,该报告给了我一个问题“没有采取的其他路径”,但我无能为力。

为什么会在这里?我怎样才能让它消失?

在此处输入图片说明

javascript code-coverage istanbul babeljs nyc

0
推荐指数
1
解决办法
4779
查看次数