diff --git a/.drone.yml b/.drone.yml index 55ccbca..d2ab304 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,6 +9,13 @@ steps: - npm install - npm run build + - name: test + image: timbru31/node-chrome:20-slim + commands: + - npm run test -- --browsers=ChromeHeadlessCI --watch=false + depends_on: + - build + - name: sonar image: sonarsource/sonar-scanner-cli:5 commands: diff --git a/angular.json b/angular.json index fd654ab..fe3047c 100644 --- a/angular.json +++ b/angular.json @@ -71,7 +71,8 @@ "tsConfig": "tsconfig.spec.json", "assets": ["src/favicon.ico", "src/assets"], "styles": ["src/styles.scss"], - "scripts": [] + "scripts": [], + "karmaConfig": "karma.conf.js" } }, "lint": { diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..e1dd0c4 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,45 @@ +// 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') + ], + 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/sandkasten'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + browsers: ['Chrome'], + restartOnFileChange: true, + customLaunchers: { + ChromeHeadlessCI: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'] + } + } + }); +}; diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 7467ecf..db6e3d5 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -1,11 +1,16 @@ import { TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; import { AppComponent } from './app.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { RouterModule } from '@angular/router'; describe('AppComponent', () => { beforeEach(() => TestBed.configureTestingModule({ - imports: [RouterTestingModule, AppComponent], + imports: [ + RouterModule.forRoot([]), + AppComponent, + TranslateModule.forRoot(), + ], }) ); @@ -19,8 +24,6 @@ describe('AppComponent', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector('.content span')?.textContent).toContain( - 'sandkasten app is running!' - ); + expect(compiled.textContent).toContain('HeaderPage.Editor'); }); }); diff --git a/src/app/components/header/header.component.spec.ts b/src/app/components/header/header.component.spec.ts index 674a2bf..e7ada06 100644 --- a/src/app/components/header/header.component.spec.ts +++ b/src/app/components/header/header.component.spec.ts @@ -1,6 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { HeaderComponent } from './header.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { RouterModule } from '@angular/router'; describe('HeaderComponent', () => { let component: HeaderComponent; @@ -8,7 +10,11 @@ describe('HeaderComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HeaderComponent], + imports: [ + RouterModule.forRoot([]), + HeaderComponent, + TranslateModule.forRoot(), + ], }); fixture = TestBed.createComponent(HeaderComponent); component = fixture.componentInstance; diff --git a/src/app/components/landing-page/landing-page.component.spec.ts b/src/app/components/landing-page/landing-page.component.spec.ts index 102fa8b..02e1313 100644 --- a/src/app/components/landing-page/landing-page.component.spec.ts +++ b/src/app/components/landing-page/landing-page.component.spec.ts @@ -1,6 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { LandingPageComponent } from './landing-page.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { RouterModule } from '@angular/router'; describe('LandingPageComponent', () => { let component: LandingPageComponent; @@ -8,7 +10,11 @@ describe('LandingPageComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LandingPageComponent], + imports: [ + RouterModule.forRoot([]), + LandingPageComponent, + TranslateModule.forRoot(), + ], }); fixture = TestBed.createComponent(LandingPageComponent); component = fixture.componentInstance; diff --git a/src/app/components/privacy-policy/privacy-policy.component.spec.ts b/src/app/components/privacy-policy/privacy-policy.component.spec.ts index 54a75e8..c93d9f4 100644 --- a/src/app/components/privacy-policy/privacy-policy.component.spec.ts +++ b/src/app/components/privacy-policy/privacy-policy.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PrivacyPolicyComponent } from './privacy-policy.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('PrivacyPolicyComponent', () => { let component: PrivacyPolicyComponent; @@ -8,7 +9,7 @@ describe('PrivacyPolicyComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PrivacyPolicyComponent], + imports: [PrivacyPolicyComponent, TranslateModule.forRoot()], }).compileComponents(); fixture = TestBed.createComponent(PrivacyPolicyComponent); diff --git a/src/app/components/terms-of-service/terms-of-service.component.spec.ts b/src/app/components/terms-of-service/terms-of-service.component.spec.ts index 7faa79d..1fcbf16 100644 --- a/src/app/components/terms-of-service/terms-of-service.component.spec.ts +++ b/src/app/components/terms-of-service/terms-of-service.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TermsOfServiceComponent } from './terms-of-service.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('TermsOfServiceComponent', () => { let component: TermsOfServiceComponent; @@ -8,7 +9,7 @@ describe('TermsOfServiceComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TermsOfServiceComponent], + imports: [TermsOfServiceComponent, TranslateModule.forRoot()], }).compileComponents(); fixture = TestBed.createComponent(TermsOfServiceComponent);