Skip to content

Test

Test #149

Workflow file for this run

name: Test
on:
schedule:
- cron: '0 0 * * *' # runs every day on default/base branch
push:
branches:
- master
- 'release/**'
pull_request:
branches:
- '**'
# Cancel running jobs from previous pipelines of the same workflow on PR to save resource when commits are pushed quickly
# NOTE: we don't want this behavior on default branch
# See https://stackoverflow.com/a/68422069
concurrency:
group: ${{ github.ref == 'refs/heads/master' && format('ci-default-branch-{0}-{1}', github.sha, github.workflow) || format('ci-pr-{0}-{1}', github.ref, github.workflow) }}
cancel-in-progress: true
jobs:
integration-and-unit-test:
name: Run Unit & Integration Tests
# Disable usage of large runner on default branch of forks
# NOTE: temporarily disable large runners
# runs-on: ${{ (github.repository != 'finos/legend-studio' && github.ref == 'refs/heads/master') && 'ubuntu-latest' || 'ubuntu-latest-4-cores' }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/[email protected]
with:
fetch-depth: 2 # recommended for improving relevancy of test coverage reporting
- name: Get Yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- name: Setup Yarn cache
uses: actions/[email protected]
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-
- name: Setup Node
uses: actions/[email protected]
with:
node-version: 21
- name: Install dependencies
run: yarn
- name: Build
run: yarn build
# NOTE: when we start to have more and more test, it might be a good idea to start sharding them
# See https://jestjs.io/docs/cli#--shard
# See https://github.com/microsoft/accessibility-insights-web/pull/5343
# The idea is to split the test suite into multiple shards then recombine them and upload the coverage
# to codecov (codecov should take care of merging the result)
# See https://about.codecov.io/product/feature/report-merging/
- name: Test
run: yarn test:ci
- name: Upload test coverage report
uses: codecov/[email protected]
with:
directory: ./build/coverage
# This job will run the grammar roundtrip test suite in Studio, which requires engine
# backend for the grammar parser/composer.
run-manual-tests:
name: Run Engine Roundtrip Tests
# Disable usage of large runner on default branch of forks
# NOTE: temporarily disable large runners
# runs-on: ${{ (github.repository != 'finos/legend-studio' && github.ref == 'refs/heads/master') && 'ubuntu-latest' || 'ubuntu-latest-4-cores' }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/[email protected]
- name: Get Yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- name: Setup Yarn cache
uses: actions/[email protected]
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-
- name: Setup Node
uses: actions/[email protected]
with:
node-version: 21
- name: Run engine server
working-directory: ./fixtures/legend-docker-setup/grammar-test-setup
run: docker compose --file=grammar-test-setup-docker-compose.yml up --detach
- name: Install dependencies
run: yarn
- name: Test
# TODO: we should consider building only relevant workspaces to reduce build time
run: yarn build && yarn workspace @finos/legend-manual-tests test:manual:ci
- name: Shut down engine server
working-directory: ./fixtures/legend-docker-setup/grammar-test-setup
run: docker compose --file=grammar-test-setup-docker-compose.yml down