--- name: Run tests on: workflow_dispatch: pull_request: branches-ignore: - 'l10n_master' - 'cf-pages' paths: - 'apps/**' - 'libs/**' - '*' - '!*.md' - '!*.txt' - '.github/workflows/test.yml' defaults: run: shell: bash jobs: test: name: Run tests runs-on: ubuntu-20.04 steps: - name: Checkout repo uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' node-version: '18' - 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 run: npm run test - name: Report test results uses: dorny/test-reporter@c9b3d0e2bd2a4e96aaf424dbaa31c46b42318226 if: always() with: name: Test Results path: "junit.xml" reporter: jest-junit fail-on-error: true rust: name: rust - ${{ matrix.os }} runs-on: ${{ matrix.os || 'ubuntu-latest' }} strategy: matrix: os: - ubuntu-latest - macos-latest - windows-latest steps: - name: Install gnome-keyring if: ${{ matrix.os=='ubuntu-latest' }} run: | sudo apt-get update sudo apt-get install -y gnome-keyring dbus-x11 - name: Checkout repo uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Install rust uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746 with: toolchain: stable profile: minimal override: true - 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 Windows / macOS if: ${{ matrix.os!='ubuntu-latest' }} working-directory: ./apps/desktop/desktop_native run: cargo test -- --test-threads=1