Skip to content

#665 Type generator + Typed Resources #1352

#665 Type generator + Typed Resources

#665 Type generator + Typed Resources #1352

Workflow file for this run

on: [push, workflow_dispatch]
name: "Build, test, clippy"
jobs:
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- run: |
sudo apt-get update
sudo apt-get install -y webkit2gtk-4.0 libayatana-appindicator3-dev
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: rustfmt
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
build_js:
name: Build JS assets
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: pnpm/[email protected]
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install JS deps
working-directory: ./browser/
run: |
pnpm install
pnpm run playwright-install
- name: Lint JS
working-directory: ./browser/
run: |
pnpm run lint
- name: Test JS (no e2e)
working-directory: ./browser/
run: |
pnpm run test
- name: Build JS
working-directory: ./browser/
run: |
pnpm run build
- name: Save JS Build Artifacts
uses: actions/upload-artifact@v3
with:
name: build-artifact
path: ./browser/data-browser/dist
e2e:
name: End-to-end tests
runs-on: ubuntu-latest
needs: [build_js]
steps:
- run: |
sudo apt-get update
sudo apt-get install -y webkit2gtk-4.0 libayatana-appindicator3-dev
- uses: actions/checkout@v3
- name: Download JS Build Artifact
uses: actions/download-artifact@v3
with:
name: build-artifact
path: ./browser/data-browser/dist
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: clippy
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
cache-all-crates: true
- uses: actions-rs/cargo@v1
name: cargo build
with:
command: build
args: --locked
- uses: actions-rs/cargo@v1
name: cargo clippy
with:
command: clippy
args: --no-deps
- uses: taiki-e/install-action@nextest
- uses: actions-rs/cargo@v1
name: cargo nextest run
with:
command: nextest
args: run --all-features --retries 3
- uses: pnpm/[email protected]
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install Playwright
working-directory: ./browser/
run: |
pnpm install
pnpm run playwright-install
- name: Run atomic-server in the background
run: nohup ./target/debug/atomic-server --initialize &
- name: Run end-to-end tests
working-directory: ./browser/
env:
FRONTEND_URL: http://localhost:9883
LANGUAGE: 'en_GB'
run: pnpm run test-e2e
# Coverage
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Generate code coverage
run: cargo llvm-cov --all-features --workspace --lcov --locked --output-path lcov.info
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: true
- name: Upload test artifacts
uses: actions/upload-artifact@v3
if: failure()
with:
name: test-results
path: ./browser/data-browser/test-results/