From e516b7cf46c3750605340b4e3f249b4a23625682 Mon Sep 17 00:00:00 2001 From: Michal Dorner Date: Tue, 17 Nov 2020 22:47:18 +0100 Subject: [PATCH] CI job: build, test and self-evaluate test results --- .github/workflows/ci.yml | 30 ++++++++++++++++++++++++ .github/workflows/test.yml | 20 ---------------- __tests__/__results__/jest-junit.xml | 7 ++++++ package-lock.json | 35 ++++++++++++++++++++++++++++ package.json | 13 ++++++++++- 5 files changed, 84 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/test.yml create mode 100644 __tests__/__results__/jest-junit.xml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4d82d1b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: 'build-test' +on: + pull_request: + paths-ignore: [ 'README.md' ] + push: + paths-ignore: [ 'README.md' ] + branches: + - main + workflow_dispatch: + +jobs: + build-test: + name: 'Build & Test' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - run: npm ci + - run: npm run build + - run: npm run format-check + - run: npm run lint + - run: npm test + continue-on-error: true + - name: 'Evaluate test results' + uses: ./ + with: + name: 'JEST Tests' + path: '__tests__/__results__/jest-junit.xml' + reporter: 'jest-junit' + - name: 'Sanity check' # re-run tests in case this action failed to detected failing test + run: npm test diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index d55706a..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: 'build-test' -on: - pull_request: - paths-ignore: [ 'README.md' ] - push: - paths-ignore: [ 'README.md' ] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: npm ci - - run: npm run all - - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: ./ diff --git a/__tests__/__results__/jest-junit.xml b/__tests__/__results__/jest-junit.xml new file mode 100644 index 0000000..a898eb6 --- /dev/null +++ b/__tests__/__results__/jest-junit.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index fb759d3..b17c785 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7312,6 +7312,35 @@ "throat": "^4.0.0" } }, + "jest-junit": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-12.0.0.tgz", + "integrity": "sha512-+8K35LlboWiPuCnXSyiid7rFdxNlpCWWM20WEYe6IZH6psfUWKZmSpSRQ5tk0C0cBeDsvsnIzcef5mYhyJsbug==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "strip-ansi": "^5.2.0", + "uuid": "^3.3.3", + "xml": "^1.0.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "jest-leak-detector": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", @@ -9919,6 +9948,12 @@ "async-limiter": "~1.0.0" } }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", diff --git a/package.json b/package.json index 31dde0c..5943fc2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "format-check": "prettier --check **/*.ts", "lint": "eslint src/**/*.ts", "package": "ncc build --source-map --license licenses.txt", - "test": "jest", + "test": "jest --ci --reporters=default --reporters=jest-junit", "all": "npm run build && npm run format && npm run lint && npm run package && npm test", "dart-fixture": "cd \"reports/dart\" && dart test --file-reporter=\"json:../../__tests__/fixtures/dart-json.json\"", "dotnet-fixture": "dotnet test reports/dotnet/DotnetTests.XUnitTests --logger \"trx;LogFileName=../../../../__tests__/fixtures/dotnet-trx.trx\"", @@ -49,9 +49,20 @@ "eslint-plugin-jest": "^24.0.2", "jest": "^24.9.0", "jest-circus": "^26.6.1", + "jest-junit": "^12.0.0", "js-yaml": "^3.14.0", "prettier": "2.1.2", "ts-jest": "^24.3.0", "typescript": "^4.0.3" + }, + "jest-junit": { + "suiteName": "jest tests", + "outputDirectory": "__tests__/__results__", + "outputName": "jest-junit.xml", + "ancestorSeparator": " › ", + "uniqueOutputName": "false", + "suiteNameTemplate": "{filepath}", + "classNameTemplate": "{classname}", + "titleTemplate": "{title}" } }