Code Monkey home page Code Monkey logo

jest-sonar-reporter's Introduction

Jest Sonar Reporter

Quality Gate Status Maintainability Rating

@casualbot/jest-sonar-scanner is a custom results processor for Jest derived from Christian W. original work here.

It has been updated to be usable as a reporter in the jest.config, as well as, provide the ability to output relative paths for the generated XML file.

Installation

Using npm:

npm install --save-dev @casualbot/jest-sonar-reporter

Using yarn:

yarn add --dev @casualbot/jest-sonar-reporter

Usage

In your jest config add the following entry:

{
  "reporters": [ "default", "@casualbot/jest-sonar-reporter" ]
}

Then simply run:

jest

For your Continuous Integration you can simply do:

jest --ci --reporters=default --reporters=@casualbot/jest-sonar-reporter

Usage as testResultsProcessor (deprecated)

The support for testResultsProcessor is only kept for [legacy reasons][test-results-processor] and might be removed in the future. You should therefore prefer to configure @casualbot/jest-sonar-reporter as a reporter.

Should you still want to, add the following entry to your jest config:

{
  "testResultsProcessor": "@casualbot/jest-sonar-reporter"
}

Then simply run:

jest

For your Continuous Integration you can simply do:

jest --ci --testResultsProcessor="@casualbot/jest-sonar-reporter"

Configuration

@casualbot/jest-sonar-reporter offers several configurations based on environment variables or a @casualbot/jest-sonar-reporter key defined in package.json or a reporter option. Environment variable and package.json configuration should be strings. Reporter options should also be strings exception for suiteNameTemplate, classNameTemplate, titleNameTemplate that can also accept a function returning a string.

Environment Variable Name Reporter Config Name Description Default Possible Injection Values
JEST_SUITE_NAME suiteName name attribute of <testsuites> "jest tests" N/A
JEST_SONAR_OUTPUT_DIR outputDirectory Directory to save the output. process.cwd() N/A
JEST_SONAR_OUTPUT_NAME outputName File name for the output. "jest-report.xml" N/A
JEST_SONAR_OUTPUT_FILE outputFile Fullpath for the output. If defined, outputDirectory and outputName will be overridden undefined N/A
JEST_SONAR_56_FORMAT formatForSonar56 Will generate the xml report for Sonar 5.6 false N/A
JEST_SONAR_RELATIVE_PATHS relativePaths Will use relative paths when generating the xml report false N/A
JEST_SONAR_UNIQUE_OUTPUT_NAME uniqueOutputName Create unique file name for the output jest-sonar-report-${uuid}.xml, overrides outputName false N/A
JEST_SONAR_SUITE_NAME suiteNameTemplate Template string for name attribute of the <testsuite>. "{title}" {title}, {filepath}, {filename}, {displayName}
JEST_SONAR_CLASSNAME classNameTemplate Template string for the classname attribute of <testcase>. "{classname} {title}" {classname}, {title}, {suitename}, {filepath}, {filename}, {displayName}
JEST_SONAR_TITLE titleTemplate Template string for the name attribute of <testcase>. "{classname} {title}" {classname}, {title}, {filepath}, {filename}, {displayName}
JEST_SONAR_ANCESTOR_SEPARATOR ancestorSeparator Character(s) used to join the describe blocks. " " N/A
JEST_SONAR_ADD_FILE_ATTRIBUTE addFileAttribute Add file attribute to the output. This config is primarily for Circle CI. This setting provides richer details but may break on other CI platforms. Must be a string. "false" N/A
JEST_SONAR_INCLUDE_CONSOLE_OUTPUT includeConsoleOutput Adds console output to any testSuite that generates stdout during a test run. false N/A
JEST_SONAR_INCLUDE_SHORT_CONSOLE_OUTPUT includeShortConsoleOutput Adds short console output (only message value) to any testSuite that generates stdout during a test run. false N/A
JEST_SONAR_REPORT_TEST_SUITE_ERRORS reportTestSuiteErrors Reports test suites that failed to execute altogether as error. Note: since the suite name cannot be determined from files that fail to load, it will default to file path. false N/A
JEST_SONAR_NO_STACK_TRACE noStackTrace Omit stack traces from test failure reports, similar to jest --noStackTrace false N/A
JEST_USE_PATH_FOR_SUITE_NAME usePathForSuiteName DEPRECATED. Use suiteNameTemplate instead. Use file path as the name attribute of <testsuite> "false" N/A

You can configure these options via the command line as seen below:

JEST_SUITE_NAME="Jest JUnit Unit Tests" JEST_SONAR_OUTPUT_DIR="./artifacts" jest

Or you can also define a @casualbot/jest-sonar-reporter key in your package.json. All are string values.

{
  ...,
  "jest": {
    "rootDir": ".",
    "testResultsProcessor": "@casualbot/jest-sonar-reporter"
  },
  "@casualbot/jest-sonar-reporter": {
    "suiteName": "jest tests",
    "outputDirectory": "coverage",
    "outputName": "jest-report.xml",
    "uniqueOutputName": "false",
    "classNameTemplate": "{classname}-{title}",
    "titleTemplate": "{classname}-{title}",
    "ancestorSeparator": "",
    "usePathForSuiteName": "true",
    "relativePaths": "true"
  }
}

Or you can define your options in your reporter configuration.

// jest.config.js
{
    reporters: [
        'default', 
        [ 
            '@casualbot/jest-sonar-reporter',
            {
                relativePaths: true,
                outputName: 'sonar-report.xml',
                outputDirectory: 'coverage'
            }
        ]
    ],
}

jest-sonar-reporter's People

Contributors

3dmind avatar casualbot avatar dubes avatar cmahonchak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.