Skip to content

feat(tile-converter): select nested meshes and add v5 convert CLI #9265

feat(tile-converter): select nested meshes and add v5 convert CLI

feat(tile-converter): select nested meshes and add v5 convert CLI #9265

Workflow file for this run

name: test
# On every pull request, but only on push to master
on:
push:
branches:
- master
pull_request:
schedule:
- cron: '17 5 * * *'
workflow_dispatch:
# New revisions replace older PR runs; master and scheduled runs keep their own group.
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
tile-converter-tests:
name: Tile converter tests
needs: build
runs-on: ubuntu-22.04
timeout-minutes: 20
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: 24
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
yarn -v
- name: Cache Yarn 4 artifacts
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Install dependencies
run: yarn install --immutable
- name: Download package and worker build
uses: actions/download-artifact@v8
with:
name: package-build
path: ${{ runner.temp }}/package-build
- name: Restore package and worker build
run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar"
- name: Run tile-converter tests
run: yarn test-tile-converter
test:
name: Tests (Node ${{ matrix.node-version }} - ${{ matrix.scope }})
needs: build
runs-on: ubuntu-22.04
timeout-minutes: 15
strategy:
matrix:
include:
- node-version: 26
coverage: false
coverage-flag: ''
playwright: false
scope: 'node tests'
test-command: test-node
test-arguments: ''
profile-name: node-26
- node-version: 24
coverage: true
coverage-flag: node
playwright: false
scope: 'node tests'
test-command: test-node-cover
test-arguments: '--reporter=blob --outputFile.blob=.vitest-reports/blob-node.json'
profile-name: node-24
- node-version: 24
coverage: true
coverage-flag: headless-1
playwright: true
scope: 'headless tests 1/2'
test-command: test-headless-cover
test-arguments: '--maxWorkers=1 --shard=1/2 --reporter=blob --outputFile.blob=.vitest-reports/blob-headless-1.json'
profile-name: headless-1
- node-version: 24
coverage: true
coverage-flag: headless-2
playwright: true
scope: 'headless tests 2/2'
test-command: test-headless-cover
test-arguments: '--maxWorkers=1 --shard=2/2 --reporter=blob --outputFile.blob=.vitest-reports/blob-headless-2.json'
profile-name: headless-2
- node-version: 22
coverage: false
coverage-flag: ''
playwright: false
scope: 'node tests'
test-command: test-node
test-arguments: ''
profile-name: node-22
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node-version }}
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
yarn -v
- name: Cache Yarn 4 artifacts
id: yarn-cache
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Print versions
run: |
node -v
yarn -v
node -p "process.versions"
- name: Install dependencies
run: yarn install --immutable
- name: Download package and worker build
uses: actions/download-artifact@v8
with:
name: package-build
path: ${{ runner.temp }}/package-build
- name: Restore package and worker build
run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar"
- name: Install Playwright browser dependencies
if: matrix.playwright
run: yarn playwright install --with-deps chromium
- name: Run tests
env:
LOADERS_GL_TEST_PROFILE_OUTPUT: test-results/${{ matrix.profile-name }}.json
run: |
yarn run ${{ matrix.test-command }} ${{ matrix.test-arguments }} --reporter=default --reporter=./scripts/test-profile-reporter.mjs
- name: Upload coverage blob
if: matrix.coverage
uses: actions/upload-artifact@v7
with:
name: coverage-blob-${{ matrix.coverage-flag }}
path: .vitest-reports/
include-hidden-files: true
if-no-files-found: error
- name: Upload test profile
if: always()
uses: actions/upload-artifact@v7
with:
name: test-profile-${{ matrix.profile-name }}
path: test-results/${{ matrix.profile-name }}.json
if-no-files-found: warn
coverage-finished:
name: Merge and check coverage
needs: [test, slow-tests]
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: 24
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
- name: Cache Yarn 4 artifacts
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Install dependencies
run: yarn install --immutable
- name: Download browser coverage blobs
uses: actions/download-artifact@v4
with:
pattern: coverage-blob-headless-*
path: .vitest-reports/browser
merge-multiple: true
- name: Download all coverage blobs
uses: actions/download-artifact@v4
with:
pattern: coverage-blob-*
path: .vitest-reports/all
merge-multiple: true
- name: Merge browser and Node coverage
run: yarn vitest --config vitest.config.ts --merge-reports=.vitest-reports/all --coverage --coverage.reportsDirectory=coverage
- name: Merge browser coverage
run: yarn vitest --config vitest.config.ts --merge-reports=.vitest-reports/browser --coverage --coverage.reportsDirectory=coverage/browser
- name: Enforce per-package coverage ratchets
run: yarn test-coverage-check
- name: Publish package coverage summary
if: always()
run: yarn test-coverage-summary
- name: Sanitize lcov for Coveralls
run: node ./scripts/sanitize-lcov.mjs coverage/lcov.info
- name: Upload coverage to Coveralls
uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
file: coverage/lcov.info
format: lcov
fail-on-error: false
- name: Upload merged coverage
if: always()
uses: actions/upload-artifact@v7
with:
name: merged-coverage
path: |
coverage/
test-results/coverage-check.json
test-results/coverage-summary.md
if-no-files-found: warn
slow-tests:
name: Affected hermetic slow tests
needs: build
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: 24
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
- name: Cache Yarn 4 artifacts
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Install dependencies
run: yarn install --immutable
- name: Download package and worker build
uses: actions/download-artifact@v8
with:
name: package-build
path: ${{ runner.temp }}/package-build
- name: Restore package and worker build
run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar"
- name: Install Playwright browser dependencies
run: yarn playwright install --with-deps chromium
- name: Run full slow suite for comparable coverage
env:
VITEST_MAX_WORKERS: 1
run: >-
yarn test-slow-affected-cover
--all
--reporter=default
--reporter=blob
--outputFile.blob=.vitest-reports/blob-slow.json
--coverage.reporter=json
- name: Upload slow coverage blob
uses: actions/upload-artifact@v7
with:
name: coverage-blob-slow
path: .vitest-reports/
include-hidden-files: true
if-no-files-found: warn
external-tests:
name: External service smoke tests
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
needs: build
runs-on: ubuntu-22.04
timeout-minutes: 20
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: 24
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
- name: Cache Yarn 4 artifacts
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Install dependencies
run: yarn install --immutable
- name: Download package and worker build
uses: actions/download-artifact@v8
with:
name: package-build
path: ${{ runner.temp }}/package-build
- name: Restore package and worker build
run: tar -xf "$RUNNER_TEMP/package-build/package-build.tar"
- name: Install Playwright browser dependencies
run: yarn playwright install --with-deps chromium
- name: Run external smoke suite
env:
VITEST_MAX_WORKERS: 1
run: yarn test-external
build:
name: Build
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: 24
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
yarn -v
- name: Cache Yarn 4 artifacts
id: yarn-cache
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Cache Nx build artifacts
uses: actions/cache@v6
with:
path: .nx/cache
key: nx-build-${{ runner.os }}-${{ runner.arch }}-${{ github.sha }}
restore-keys: |
nx-build-${{ runner.os }}-${{ runner.arch }}-
- name: Print versions
run: |
node -v
yarn -v
node -p "process.versions"
- name: Install dependencies
run: yarn install --immutable
- name: Run Vitest async guardrails
run: yarn run test-vitest-async-guardrails
- name: Run test-suite audit
run: yarn run test-audit
- name: Build
run: yarn run build
- name: Build workers
run: yarn run build-workers
# A tar preserves paths and permissions across jobs, including copied runtime libraries.
- name: Archive package and worker build
run: |
find modules apps -mindepth 2 -maxdepth 2 -type d -name dist -print0 |
tar --null -T - -cf "$RUNNER_TEMP/package-build.tar"
- name: Upload package and worker build
uses: actions/upload-artifact@v7
with:
name: package-build
path: ${{ runner.temp }}/package-build.tar
retention-days: 7
overwrite: true
if-no-files-found: error
- name: Run lint
run: yarn run lint
website-build:
runs-on: ubuntu-22.04
timeout-minutes: 15
strategy:
matrix:
node-version: [22]
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup Node (with Corepack)
uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node-version }}
- name: Enable Corepack / Yarn 4
run: |
corepack enable
corepack prepare yarn@4.17.1 --activate
yarn -v
- name: Cache website Yarn artifacts
id: website-yarn-cache
uses: actions/cache@v6
with:
path: |
~/.yarn/berry/cache
key: yarn-berry-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-berry-${{ runner.os }}-${{ runner.arch }}-
- name: Install dependencies
run: yarn install --immutable
- name: Build website
run: |
cd website; yarn build