# Angular Cypress E2E测试

Angular版本15

# 如何添加Cypress E2E测试覆盖率

参考文章

安装依赖:

npm install --save-dev @cypress/code-coverage
npm install --save-dev @istanbuljs/nyc-config-typescript babel-plugin-istanbul istanbul-lib-coverage nyc source-map-support @istanbuljs/nyc-config-babel

然后ng添加服务:

ng add ngx-build-plus

在cypress目录下添加coverage.webpack.js文件,内容为:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(ts)$/,
        use: {
          loader: 'babel-loader',
          options: {
            plugins: ['babel-plugin-istanbul']
          }
        },
        enforce: 'post',
        include: require('path').join(__dirname, '..', 'src'),
        exclude: [
          /node_modules/,
          /cypress/,
          /(ngfactory|ngstyle)\.js/]
      },
    ],
  },
};

package.json中添加配置:

"nyc": {
  "extends": "@istanbuljs/nyc-config-babel",
  "all": true,
  "exclude": [
    "**/cypress/**",
    "**/coverage/**",
    "karma.conf.js",
    "src/test.ts",
    "**/*.spec.ts"
  ],
  "reporter": [
    "html"
  ]
}

cypress/support/e2e.ts文件中添加以下内容:

import '@cypress/code-coverage/support'

修改根目录下的cypress.config.ts文件

export default defineConfig( {
    e2e: {
        'baseUrl': 'http://localhost:4200',
        // 新添加
        setupNodeEvents( on, config ) {
            // eslint-disable-next-line @typescript-eslint/no-var-requires
            require( '@cypress/code-coverage/task' )( on, config )

            return config
        },
    },
} )

跑E2E测试先启动Angular项目:

ng serve --extra-webpack-config ./cypress/coverage.webpack.js

运行E2E测试并获取覆盖率:

cypress run --env coverage=true