Angular Application test in sonarqube community edition with github actions

I am trying to integrate the angular test into SonarQube with GitHub actions. Currently, I am getting the error “npm ERR! Missing script: “sonar-scanner””. My angular project is located in the folder prisma-frontend . the test are written in jasmine The code I am using is down below.

GitHub actions

 - name: Analyse Code
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
        SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
        SONAR_HOST_URL: ${{ secrets.SONARQUBE_HOST }}
      run: |
        cd prisma-frontend
        npm install -g @angular/cli
        npm install -g sonarqube-scanner
        npm install -D karma-sonarqube-reporter
        npm run sonar-scanner

angular karma file

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage'),
      require('@angular-devkit/build-angular/plugins/karma'),
      require('karma-sonarqube-reporter'),
    ],
    client: {
      jasmine: {
        // you can add configuration options for Jasmine here
        // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
        // for example, you can disable the random execution with `random: false`
        // or set a specific seed with `seed: 4321`
      },
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    jasmineHtmlReporter: {
      suppressAll: true // removes the duplicated traces
    },
    coverageReporter: {
      dir: require('path').join(__dirname, './coverage/prisma-frontend'),
      subdir: '.',
      reporters: [
        { type: 'html' },
        { type: 'text-summary' }
      ]
    },
    sonarqubeReporter: {
      basePath: 'src/app', // test files folder
      filePattern: '**/*spec.ts', // test files glob pattern
      encoding: 'utf-8', // test files encoding
      outputFolder: 'reports', // report destination
      legacyMode: false, // report for Sonarqube < 6.2 (disabled)
      reportName: function (metadata) {
        // report name callback, but accepts also a
        // string (file name) to generate a single file
        /**
         * Report metadata array:
         * - metadata[0] = browser name
         * - metadata[1] = browser version
         * - metadata[2] = plataform name
         * - metadata[3] = plataform version
         */
        return 'sonarqube_report.xml';
      },
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
    restartOnFileChange: true
  });
};

My Sonarqube properties file

sonar.projectKey=Frontend
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.sources=prisma-frontend/src
sonar.tests=prisma-frontend/src
sonar.test.inclusions=prisma-frontend**/*.spec.ts # only collect these for test-coverage
sonar.javascript.lcov.reportPaths=prisma-frontend/src/coverage/PROJECT_NAME/lcov.info
sonar.testExecutionReportPaths=prisma-frontend/reports/sonarqube_report.xml

Hi JensDL,

Thank you for bringing up your issue.

Could you please share your package.json file? According to the error npm ERR! Missing script: “sonar-scanner”, it would seem that you might be missing an entry (or have a typo) in the scripts object.

Best,
Ilia