Skip to content

chore: fix flaky test (#4793) #19

chore: fix flaky test (#4793)

chore: fix flaky test (#4793) #19

Workflow file for this run

name: Test
on:
push:
branches:
- master
paths-ignore:
- '.husky'
- '.vscode'
- '**.md'
- 'scripts/**'
- 'packages/docs/**'
pull_request:
branches:
- master
paths-ignore:
- '.husky'
- '.vscode'
- '**.md'
- 'scripts/**'
- 'packages/docs/**'
jobs:
test-node:
name: Node.js Environment Compatibility
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'pnpm'
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Test Node.js environment compatibility
run: pnpm test:node
root-level-e2e-test:
name: Playground E2E test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'pnpm'
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Install playwright browsers
run: npx playwright install chromium
- name: Run playwright test
run: pnpm test -- --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }}
env:
COVERAGE: true
# FIXME(mirone)
# - name: Run First Editor test
# run: pnpm test -- tests/basic.spec.ts tests/clipboard.spec.ts --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }}
# env:
# MULTIPLE_EDITOR_INDEX: 0
#
# - name: Run Second Editor test
# run: pnpm test -- tests/basic.spec.ts tests/clipboard.spec.ts --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }}
# env:
# MULTIPLE_EDITOR_INDEX: 1
- name: Collect code coverage report
run: pnpm exec nyc report -t .nyc_output --reporter=lcov
- name: Upload E2E test coverage results
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./.coverage/lcov.info
flags: e2etest
name: blocksuite
fail_ci_if_error: false
- name: Upload test results
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: test-results-main
path: ./test-results
if-no-files-found: ignore
unit-test:
name: Unit test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run unit test
run: pnpm test:unit:coverage
- name: Upload unit test coverage results
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./.coverage/global/lcov.info,./.coverage/store/lcov.info
flags: unittest
name: blocksuite
fail_ci_if_error: false
virgo-e2e-test:
name: Virgo E2E test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install playwright browsers
run: npx playwright install chromium
- name: Run virgo playwright test
run: pnpm --filter=@blocksuite/virgo test:e2e
- name: Upload test results
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: test-results-main
path: ./test-results
if-no-files-found: ignore