0.0.3 • Published 9 months ago

@alanizcreative/formation-coverage v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Formation Coverage

A utility to generate code coverage reports for Playwright tests specifically for TypeScript source code.

Installation

npm install -D @alanizcreative/formation-coverage

TypeScript Configuration

Ensure your tsconfig.json includes the following compiler options to enable source map generation:

{
  "compilerOptions": {
    "sourceMap": true,
    "inlineSourceMap": false,
    "inlineSources": true
  }
}

Configuration Options

setCoverageConfig

OptionTypeDefaultDescription
dirstring'formation-coverage'Directory for coverage file and reports
filestring'formation-coverage.json'File name to store test coverage data
urlstring'http://localhost:3000'Web server url tests run on
reportersstring[]['text']Coverage report formats (see Istanbul Report Options)
outDirstring'spec'Directory with compiled and source map files
srcDirstring'src'Directory with source TypeScript files
includestring[][]Glob patterns to include in reports
excludestring[][]Glob patterns to exclude from reports

Setup Guide

Global Setup

It's recommended to configure coverage options in your Playwright globalSetup file:

// tests/setup.ts

import { setCoverageConfig } from '@alanizcreative/formation-coverage/coverageConfig.js'
import { setupCoverage } from '@alanizcreative/formation-coverage/coverage.js'

export default async function () {
  setCoverageConfig({
    dir: 'spec-coverage',
    file: 'spec-coverage.json',
    url: 'http://localhost:8000',
    outDir: 'spec',
    srcDir: 'src',
    reporters: [
      'text',
      'html'
    ],
    include: [
      'spec/components/**/*.js',
      'spec/effects/**/*.js',
      'spec/layouts/**/*.js',
      'spec/objects/**/*.js'
    ],
    exclude: [
      'spec/utils/**/*.js',
      'spec/config/**/*.js',
      'spec/tests/**/*.js',
      'spec/**/*.spec.js'
    ]
  })

  await setupCoverage()
}

Test Setup

doCoverage

ParamTypeDefaultDescription
browserNamestringCoverage only applies to chromium browsers
page@playwright/test.PagePage object provided by Playwright
startbooleantrueStart or stop coverage

Use doCoverage before and after each test to capture coverage data:

// components/Navigation/__tests__/Navigation.spec.ts

import { test, expect } from '@playwright/test'
import { doCoverage } from '@alanizcreative/formation-coverage/coverage.js'

test.describe('Navigation', () => {
  test.beforeEach(async ({ browserName, page }) => {
    await doCoverage(browserName, page, true)
  })

  test.afterEach(async ({ browserName, page }) => {
    await doCoverage(browserName, page, false)
  })

  // Your test cases
})

Global Teardown

Generate coverage reports after tests complete in your Playwright globalTeardown file:

// tests/teardown.ts

import { createCoverageReport } from '@alanizcreative/formation-coverage/coverage.js'

export default async function () {
  await createCoverageReport()
}