Skip to content

List elements should be batched #4221

List elements should be batched

List elements should be batched #4221

name: Publish & Install
on:
workflow_dispatch:
push:
branches:
- master
- minor
- major
paths:
- 'packages/**'
- 'package.json'
- 'package-lock.json'
pull_request:
branches:
- master
- major
- minor
paths:
- 'packages/**'
- 'package.json'
- 'package-lock.json'
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
publish_install:
runs-on: ${{ matrix.os }}
permissions:
contents: read
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [20.x, 22.x, 24.x]
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install Verdaccio
run: |
npm install -g verdaccio
npm install -g wait-on
tmp_registry_log=`mktemp`
mkdir -p $HOME/.config/verdaccio
cp -v ./.github/workflows/verdaccio/config.yaml $HOME/.config/verdaccio/config.yaml
nohup verdaccio --config $HOME/.config/verdaccio/config.yaml &
wait-on http://localhost:4873
TOKEN_RES=$(curl -XPUT \
-H "Content-type: application/json" \
-d '{ "name": "test", "password": "test" }' \
'http://localhost:4873/-/user/org.couchdb.user:test')
TOKEN=$(echo "$TOKEN_RES" | jq -r '.token')
npm set //localhost:4873/:_authToken $TOKEN
- name: Windows dependencies
if: matrix.os == 'windows-latest'
run: npm install -g @angular/cli
- name: npm install
run: |
npm install
env:
CI: true
- name: Publish to Verdaccio
run: |
nohup verdaccio --config $HOME/.config/verdaccio/config.yaml &
wait-on http://localhost:4873
npx lerna publish prepatch --preid ci --no-push --no-git-tag-version --no-commit-hooks --force-publish "*" --yes --dist-tag ci --registry http://localhost:4873
- name: Install via @vendure/create
run: |
mkdir -p $HOME/install
cd $HOME/install
nohup verdaccio --config $HOME/.config/verdaccio/config.yaml &
wait-on http://localhost:4873
npm set registry=http://localhost:4873
npm dist-tag ls @vendure/create
npx @vendure/create@ci test-app --ci --use-npm --log-level info
- name: Server smoke tests
run: |
cd $HOME/install/test-app
npm run dev &
node $GITHUB_WORKSPACE/.github/workflows/scripts/smoke-tests
- name: Copy files (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
cd ~/install/test-app
New-Item -ItemType Directory -Force -Path src/plugins/test-plugin
Copy-Item "$env:GITHUB_WORKSPACE/.github/workflows/scripts/vite.config.mts" -Destination "./vite.config.mts"
Copy-Item "$env:GITHUB_WORKSPACE/.github/workflows/scripts/test-plugin/*" -Destination "src/plugins/test-plugin/" -Recurse -Force
Copy-Item "$env:GITHUB_WORKSPACE/.github/workflows/scripts/setup-test-plugin.js" -Destination "./setup-test-plugin.js"
- name: Copy files (Unix)
if: runner.os != 'Windows'
run: |
cd ~/install/test-app
mkdir -p src/plugins/test-plugin
cp "$GITHUB_WORKSPACE/.github/workflows/scripts/vite.config.mts" ./vite.config.mts
cp -r "$GITHUB_WORKSPACE/.github/workflows/scripts/test-plugin/." src/plugins/test-plugin/
cp "$GITHUB_WORKSPACE/.github/workflows/scripts/setup-test-plugin.js" ./setup-test-plugin.js
- name: Run setup script
shell: bash
run: |
cd ~/install/test-app
node setup-test-plugin.js
- name: Check SWC version
shell: bash
run: |
cd ~/install/test-app
npm ls @swc/core
- name: Install Playwright
run: |
cd $GITHUB_WORKSPACE
npm install playwright
npx playwright install-deps
npx playwright install chromium
- name: Start dashboard and run tests
run: |
cd ~/install/test-app
# start the dev server in the background
npm run dev &
DEV_PID=$!
# Wait a moment for it to start
sleep 5
# Start the dashboard in the background
npx vite --port 5173 &
DASHBOARD_PID=$!
# Wait a moment for it to start
sleep 5
# Run the dashboard tests
node $GITHUB_WORKSPACE/.github/workflows/scripts/dashboard-tests.js
# Clean up dashboard process
kill $DASHBOARD_PID 2>/dev/null || true
# Clean up dev server process
kill $DEV_PID 2>/dev/null || true
- name: Upload dashboard test screenshots
if: always()
uses: actions/upload-artifact@v4
with:
name: dashboard-test-screenshots-${{ matrix.os }}-${{ matrix.node-version }}
path: /tmp/dashboard-test-*.png
retention-days: 28