Skip to content

NAS-142371 / 27.0.0-BETA.1 / Migrate SMB share forms to tn-* form controls #24818

NAS-142371 / 27.0.0-BETA.1 / Migrate SMB share forms to tn-* form controls

NAS-142371 / 27.0.0-BETA.1 / Migrate SMB share forms to tn-* form controls #24818

Workflow file for this run

name: WebUI
on:
push:
branches:
- master
paths-ignore:
- 'src/assets/i18n/**'
- 'tests/**'
pull_request:
branches:
- '**'
paths-ignore:
- 'src/assets/i18n/**'
- 'tests/**'
permissions:
contents: read
# Superseded commits on an open PR were running the full suite to completion,
# including `yarn test:pr --maxWorkers=50` on the self-hosted runner.
#
# The group is a literal, NOT `${{ github.workflow }}`: validate-translations.yml
# is also named "WebUI", so keying on the workflow name would put both in one
# group and let a translation-only push cancel this pipeline, and vice versa.
#
# Cancelling is limited to pull_request. On a push to master the run is the only
# record of that commit — report-coverage uploads to Codecov from it — so a
# rapid second merge must not cancel the first one's coverage.
concurrency:
group: webui-main-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
install:
name: Checkout and Install
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install
uses: iXsystems/ux-github-workflows/.github/actions/prepare@master
with:
cache-jest: 'true'
build:
name: Build
needs: [install]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install
uses: iXsystems/ux-github-workflows/.github/actions/prepare@master
with:
cache-jest: 'true'
- name: Build
run: yarn build:prod
- name: Check strict null checks
run: yarn run check-env && yarn run strict-null-checks
lint:
name: Validate code style
needs: [install]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install
uses: iXsystems/ux-github-workflows/.github/actions/prepare@master
with:
cache-jest: 'true'
- name: Generate default environment file
run: yarn run check-env
- name: Run linter
run: yarn lint
# `e2e/` is outside the root tsconfig's project — the Playwright runner is
# Node-hosted and cannot share the Angular compiler options (see
# e2e/tsconfig.json). Without this step nothing type-checks the suite.
- name: Type-check the E2E suite
run: yarn e2e:typecheck
# Decides which runner the tests below go to. Shared with the Claude review
# gate and with truenas-connect/ui, which needs the same answer for the same
# reason. Reports as "check-ux-team / Check member access" — the job id stays
# `check-ux-team` so the downstream `needs:` references are unchanged.
check-ux-team:
if: github.event_name == 'pull_request'
permissions:
contents: read
uses: iXsystems/ux-github-workflows/.github/workflows/check-member.yml@master
test-ux-team:
name: Run tests (UX Team - Self-hosted)
needs: [install, check-ux-team]
if: needs.check-ux-team.outputs.is_member == 'true'
strategy:
fail-fast: false
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install
uses: iXsystems/ux-github-workflows/.github/actions/prepare@master
with:
cache-jest: 'true'
- name: Run tests
run: yarn test:pr --maxWorkers=50
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage
path: coverage/webui/coverage-final.json
- name: Upload test data
uses: actions/upload-artifact@v4
with:
name: coverage-junit
path: coverage/webui/junit.xml
test:
name: Run tests (Standard)
needs: [install, check-ux-team]
if: |
always() &&
needs.install.result == 'success' &&
(github.event_name != 'pull_request' || needs.check-ux-team.outputs.is_member != 'true')
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install
uses: iXsystems/ux-github-workflows/.github/actions/prepare@master
with:
cache-jest: 'true'
- name: Run tests
run: yarn test:pr --maxWorkers=2
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage
path: coverage/webui/coverage-final.json
- name: Upload test data
uses: actions/upload-artifact@v4
with:
name: coverage-junit
path: coverage/webui/junit.xml
report-coverage:
name: Collect coverage
runs-on: ubuntu-latest
if: ${{ !cancelled() && github.repository == 'truenas/webui' }}
needs: [test, test-ux-team]
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download coverage and test data
uses: actions/download-artifact@v4
with:
pattern: 'coverage*'
path: coverage
merge-multiple: true
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v7
with:
name: webui
token: ${{ env.CODECOV_TOKEN }}
files: coverage/coverage-final.json
fail_ci_if_error: true
- name: Upload extra test data to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: coverage/junit.xml