Files
pos-system/.github/workflows/ci-packages.yml

135 lines
4.0 KiB
YAML

name: Shared Packages CI
on:
push:
paths:
- 'packages/**'
- 'tests/contract/**'
pull_request:
paths:
- 'packages/**'
- 'tests/contract/**'
permissions:
contents: read
jobs:
# ---------------------------------------------------------------------------
# EN: Unit tests for all shared TypeScript packages.
# VI: Unit tests cho tất cả shared TypeScript packages.
# ---------------------------------------------------------------------------
package-unit-tests:
name: Shared Package Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 8
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run @goodgo/types tests
run: pnpm --filter @goodgo/types test:coverage
- name: Run @goodgo/http-client tests
run: pnpm --filter @goodgo/http-client test:coverage
- name: Run @goodgo/auth-sdk tests
run: pnpm --filter @goodgo/auth-sdk test:coverage
- name: Run @goodgo/logger tests
run: pnpm --filter @goodgo/logger test:coverage
- name: Run @goodgo/tracing tests
run: pnpm --filter @goodgo/tracing test:coverage
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
files: packages/*/coverage/cobertura-coverage.xml
flags: shared_packages
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# ---------------------------------------------------------------------------
# EN: Pact consumer contract tests for 5 service boundaries.
# VI: Pact consumer contract tests cho 5 ranh giới service.
# ---------------------------------------------------------------------------
contract-tests:
name: Pact Contract Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 8
- name: Install contract test dependencies
run: pnpm --filter @goodgo/contract-tests install
- name: Run Pact consumer tests
run: pnpm --filter @goodgo/contract-tests test
- name: Upload Pact files as artifact
uses: actions/upload-artifact@v4
with:
name: pact-contracts
path: tests/contract/pacts/
if-no-files-found: warn
# ---------------------------------------------------------------------------
# EN: Blazor WASM component unit tests (AuthStateService + PosDataService).
# VI: Blazor WASM component unit tests (AuthStateService + PosDataService).
# ---------------------------------------------------------------------------
blazor-component-tests:
name: Blazor Component Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Restore component test project
run: |
dotnet restore apps/web-client-tpos-net/tests/WebClientTpos.ComponentTests/WebClientTpos.ComponentTests.csproj
- name: Run component tests
run: |
dotnet test apps/web-client-tpos-net/tests/WebClientTpos.ComponentTests/WebClientTpos.ComponentTests.csproj \
--configuration Release --no-restore --verbosity normal \
--collect:"XPlat Code Coverage" \
--settings coverage.runsettings \
--results-directory TestResults/component
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
files: TestResults/component/**/coverage.cobertura.xml
flags: blazor_components
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}