首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在CircleCI中运行Cypress代码覆盖插件时,nyc报告在ENOENT中失败

当在CircleCI中运行Cypress代码覆盖插件时,nyc报告在ENOENT中失败
EN

Stack Overflow用户
提问于 2020-01-02 17:52:35
回答 1查看 1.6K关注 0票数 0

我正在使用Cypress 代码覆盖文书-cra插件。当在我自己的机器上本地运行时,这是很好的,但是当通过CircleCI运行时,我得到:

代码语言:javascript
复制
CypressError: cy.task('coverageReport') failed with the following error:
> Error: Command failed with ENOENT: nyc report --report-dir ./coverage --temp-dir /root/app/.nyc_output --reporter=lcov --reporter=clover --reporter=json
spawn nyc ENOENT

还不清楚它抱怨的是哪一个文件。我已经验证了/root/app/..nyc_output的存在,并包含覆盖率数据。

我在Cypress中启用了调试日志记录,并获得:

代码语言:javascript
复制
code-coverage parsed sent coverage +0ms
code-coverage created folder /root/app/.nyc_output for output coverage +1ms
code-coverage wrote coverage file /root/app/.nyc_output/out.json +17ms
cypress:server:plugins:child execute plugin event: task ({ eventId: 2, invocationId: 'inv11' }) +100ms
code-coverage saving coverage report using command: "nyc report --report-dir ./coverage --temp-dir /root/app/.nyc_output --reporter=lcov --reporter=clover --reporter=json" +68ms
code-coverage current working directory is /root/app +0ms

完整运行可在https://circleci.com/gh/magjac/graphviz-visual-editor/114上使用。

我跟踪了本指南来安排事情。

这是我的CircleCI config.yaml (有很多糟糕的调试和解决方法):

代码语言:javascript
复制
# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2
jobs:
  integration-test:
    docker:
      - image: cypress/base:8
        environment:
          ## this enables colors in the output
          TERM: xterm
    working_directory: ~/app
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-deps-{{ .Branch }}-{{ checksum "package.json" }}
            - v1-deps-{{ .Branch }}
            - v1-deps
      - run:
          name: Install Dependencies
          no_output_timeout: 30m
          command: npm ci

      - save_cache:
          key: v1-deps-{{ .Branch }}-{{ checksum "package.json" }}
          # cache NPM modules and the folder with the Cypress binary
          paths:
            - ~/.npm
            - ~/.cache
      - run: ls -la
      - run: ls -la ./node_modules/.bin
      - run: ls -la .nyc_output/out.json || true
      - run: mkdir -p ./coverage
      - run: ls -la -R coverage || true
      - run: make
# This is the line that fails, but we ignore it and let the workaround below do its job
      - run: npm run start:coverage & $(npm bin)/wait-on http://localhost:3000/ && env CYPRESS_DEBUG="code-coverage" DEBUG="code-coverage" $(npm bin)/cypress run --record --key a12725d3-851c-4e67-b432-079b4fb1a875 --spec cypress/integration/rendering.spec.js || true
      - run: find . -name coverage || true
      - run: ls -la -R coverage || true
      - run: ls -la
      - run: ls -la .nyc_output/out.json || true
# Workaround: Run nyc report stand-alone
      - run: ./node_modules/.bin/nyc report --report-dir ./coverage --temp-dir /root/app/.nyc_output --reporter=lcov --reporter=clover --reporter=json
      - run: find . -name .nyc_output || true
      - run: find . -name coverage || true
      - run: ls -la .nyc_output/out.json || true
      - run: ls -la -R coverage || true
      - run: yarn run codecov
workflows:
  version: 2
  build-and-integration-test:
    jobs:
      - integration-test

编辑:--没有找到的是nyc命令。在Cypress调用之前添加‘`env PATH=’$PATH:./node_modules/..bin“解决了这个问题。我真的要用这个吗?还是有更好的方法?

编辑2:更好的解决方法是使用npx cypress run,它自动设置node_/..bin的路径。也许这才是真正的解决办法?

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 13:00:06

根据上面问题中的$(npm bin)/cypress run编辑2,用npx cypress run替换

我不知道这是否真的是正确的解决方案,或者它是否是某种解决办法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59567800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档