You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.3 KiB
70 lines
2.3 KiB
name: Testing |
|
|
|
on: |
|
workflow_dispatch: |
|
push: |
|
branches: |
|
- "main" |
|
- "rc" |
|
- "hotfix-rc" |
|
pull_request: |
|
|
|
permissions: |
|
contents: read |
|
checks: write # required by dorny/test-reporter to upload its results |
|
|
|
jobs: |
|
|
|
testing: |
|
name: Run tests |
|
if: ${{ startsWith(github.head_ref, 'version_bump_') == false }} |
|
runs-on: ubuntu-24.04 |
|
|
|
steps: |
|
- name: Check out repo |
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
|
with: |
|
persist-credentials: false |
|
|
|
- name: Get Node version |
|
id: retrieve-node-version |
|
run: | |
|
NODE_NVMRC=$(cat .nvmrc) |
|
NODE_VERSION=${NODE_NVMRC/v/''} |
|
echo "node_version=$NODE_VERSION" >> "$GITHUB_OUTPUT" |
|
|
|
- name: Set up Node |
|
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 |
|
with: |
|
cache: 'npm' |
|
cache-dependency-path: '**/package-lock.json' |
|
node-version: ${{ steps.retrieve-node-version.outputs.node_version }} |
|
|
|
- name: Install Node dependencies |
|
run: npm ci |
|
|
|
# We use isolatedModules: true which disables typechecking in tests |
|
# Tests in apps/ are typechecked when their app is built, so we just do it here for libs/ |
|
# See https://bitwarden.atlassian.net/browse/EC-497 |
|
- name: Run typechecking |
|
run: npm run test:types --coverage |
|
|
|
- name: Run tests |
|
run: npm run test --coverage |
|
|
|
- name: Report test results |
|
uses: dorny/test-reporter@dc3a92680fcc15842eef52e8c4606ea7ce6bd3f3 # v2.1.1 |
|
# This will skip the job if it's a pull request from a fork, because that won't have permission to upload test results. |
|
# PRs from the repository and all other events are OK. |
|
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.full_name == github.repository) && !cancelled() |
|
with: |
|
name: Test Results |
|
path: "junit.xml" |
|
reporter: jest-junit |
|
fail-on-error: true |
|
|
|
- name: Upload coverage to codecov.io |
|
uses: codecov/codecov-action@5a605bd92782ce0810fa3b8acc235c921b497052 # v5.2.0 |
|
|
|
- name: Upload results to codecov.io |
|
uses: codecov/test-results-action@4e79e65778be1cecd5df25e14af1eafb6df80ea9 # v1.0.2
|
|
|