mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-11 10:10:25 +01:00
3be5c4800b
* Do not test napi crate on windows possibly related to https://github.com/napi-rs/napi-rs/issues/1405. We are seeing buffer overflows in ci due to repeated Node-API GetProcAddress failures. We don't have any tests in the napi crate, so there's no harm in removing those tests right now. If we have tests there in the future, we'll need to actually fix this. However, the napi crate is just a wiring crate, so maybe we won't ever have any unit tests there. * include crate in name * Remove crate axis
150 lines
4.4 KiB
YAML
150 lines
4.4 KiB
YAML
---
|
|
name: Testing
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- "main"
|
|
- "rc"
|
|
- "hotfix-rc-*"
|
|
pull_request:
|
|
types: [opened, synchronize]
|
|
|
|
jobs:
|
|
check-test-secrets:
|
|
name: Check for test secrets
|
|
runs-on: ubuntu-22.04
|
|
outputs:
|
|
available: ${{ steps.check-test-secrets.outputs.available }}
|
|
permissions:
|
|
contents: read
|
|
|
|
steps:
|
|
- name: Check
|
|
id: check-test-secrets
|
|
run: |
|
|
if [ "${{ secrets.CODECOV_TOKEN }}" != '' ]; then
|
|
echo "available=true" >> $GITHUB_OUTPUT;
|
|
else
|
|
echo "available=false" >> $GITHUB_OUTPUT;
|
|
fi
|
|
|
|
testing:
|
|
name: Run tests
|
|
runs-on: ubuntu-22.04
|
|
needs: check-test-secrets
|
|
permissions:
|
|
checks: write
|
|
contents: read
|
|
pull-requests: write
|
|
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
|
|
|
- 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@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
|
with:
|
|
cache: 'npm'
|
|
cache-dependency-path: '**/package-lock.json'
|
|
node-version: ${{ steps.retrieve-node-version.outputs.node_version }}
|
|
|
|
- name: Print environment
|
|
run: |
|
|
node --version
|
|
npm --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
|
|
|
|
- name: Run tests
|
|
# maxWorkers is a workaround for a memory leak that crashes tests in CI:
|
|
# https://github.com/facebook/jest/issues/9430#issuecomment-1149882002
|
|
run: npm test -- --coverage --maxWorkers=3
|
|
|
|
- name: Report test results
|
|
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5 # v1.9.1
|
|
if: ${{ needs.check-test-secrets.outputs.available == 'true' && !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@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
|
|
if: ${{ needs.check-test-secrets.outputs.available == 'true' }}
|
|
env:
|
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
|
|
- name: Upload results to codecov.io
|
|
uses: codecov/test-results-action@1b5b448b98e58ba90d1a1a1d9fcb72ca2263be46 # v1.0.0
|
|
if: ${{ needs.check-test-secrets.outputs.available == 'true' }}
|
|
env:
|
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
|
|
rust:
|
|
name: Run Rust tests on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os || 'ubuntu-latest' }}
|
|
permissions:
|
|
contents: read
|
|
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
|
|
steps:
|
|
- name: Check Rust version
|
|
run: rustup --version
|
|
|
|
- name: Install gnome-keyring
|
|
if: ${{ matrix.os=='ubuntu-latest' }}
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y gnome-keyring dbus-x11
|
|
|
|
- name: Check out repo
|
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
|
|
|
- name: Build
|
|
working-directory: ./apps/desktop/desktop_native
|
|
run: cargo build
|
|
|
|
- name: Test Ubuntu
|
|
if: ${{ matrix.os=='ubuntu-latest' }}
|
|
working-directory: ./apps/desktop/desktop_native
|
|
run: |
|
|
eval "$(dbus-launch --sh-syntax)"
|
|
mkdir -p ~/.cache
|
|
mkdir -p ~/.local/share/keyrings
|
|
eval "$(printf '\n' | gnome-keyring-daemon --unlock)"
|
|
eval "$(printf '\n' | /usr/bin/gnome-keyring-daemon --start)"
|
|
cargo test -- --test-threads=1
|
|
|
|
- name: Test macOS
|
|
if: ${{ matrix.os=='macos-latest' }}
|
|
working-directory: ./apps/desktop/desktop_native
|
|
run: cargo test -- --test-threads=1
|
|
|
|
- name: Test Windows
|
|
if: ${{ matrix.os=='windows-latest'}}
|
|
working-directory: ./apps/desktop/desktop_native/core
|
|
run: cargo test -- --test-threads=1
|