Skip to content

feat(deps): upgrade upstream dependencies #4599

feat(deps): upgrade upstream dependencies

feat(deps): upgrade upstream dependencies #4599

Workflow file for this run

name: E2E Test
permissions: {}
on:
workflow_dispatch:
schedule:
# Run every day at 0:00 GMT (8:00 AM Singapore time)
- cron: '0 0 * * *'
push:
branches:
- main
paths-ignore:
- '**/*.md'
pull_request:
types: [opened, synchronize, labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.ref_name != 'main' }}
defaults:
run:
shell: bash
jobs:
detect-changes:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
outputs:
related-files-changed: ${{ steps.filter.outputs.related-files }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: filter
with:
filters: |
related-files:
- 'packages/**/build.ts'
- .github/workflows/e2e-test.yml
- 'ecosystem-ci/*'
download-previous-rolldown-binaries:
needs: detect-changes
runs-on: ubuntu-latest
# Run if: not a PR, OR PR has 'test: e2e' label, OR PR is from deps/upstream-update branch, OR build.ts files changed
if: >-
github.event_name != 'pull_request' ||
contains(github.event.pull_request.labels.*.name, 'test: e2e') ||
github.head_ref == 'deps/upstream-update' ||
needs.detect-changes.outputs.related-files-changed == 'true'
permissions:
contents: read
packages: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/download-rolldown-binaries
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
build:
name: Build vite-plus packages (${{ matrix.os }})
runs-on: ${{ matrix.os }}
permissions:
contents: read
packages: read
needs:
- download-previous-rolldown-binaries
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: windows-latest
target: x86_64-pc-windows-msvc
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/clone
# Disable Windows Defender real-time scanning to speed up I/O-heavy builds (~30-50% faster)
- name: Disable Windows Defender
if: runner.os == 'Windows'
shell: powershell
run: Set-MpPreference -DisableRealtimeMonitoring $true
- uses: oxc-project/setup-rust@23f38cfb0c04af97a055f76acee94d5be71c7c82 # v1.0.16
with:
save-cache: ${{ github.ref_name == 'main' }}
cache-key: e2e-build-${{ matrix.os }}
- uses: oxc-project/setup-node@4c26e7cb3605b6bdef5450dacd02c434b10fd8ba # v1.2.0
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rolldown-binaries
path: ./rolldown/packages/rolldown/src
merge-multiple: true
- name: Build with upstream
uses: ./.github/actions/build-upstream
with:
target: ${{ matrix.target }}
- name: Pack packages into tgz
run: |
mkdir -p tmp/tgz
cd packages/core && pnpm pack --pack-destination ../../tmp/tgz && cd ../..
cd packages/test && pnpm pack --pack-destination ../../tmp/tgz && cd ../..
cd packages/cli && pnpm pack --pack-destination ../../tmp/tgz && cd ../..
# Copy vp binary for e2e-test job (findVpBinary expects it in target/)
cp target/${{ matrix.target }}/release/vp tmp/tgz/vp 2>/dev/null || cp target/${{ matrix.target }}/release/vp.exe tmp/tgz/vp.exe 2>/dev/null || true
cp target/${{ matrix.target }}/release/vp-shim.exe tmp/tgz/vp-shim.exe 2>/dev/null || true
ls -la tmp/tgz
- name: Upload tgz artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: vite-plus-packages-${{ matrix.os }}
path: tmp/tgz/
retention-days: 1
e2e-test:
name: ${{ matrix.project.name }} E2E test (${{ matrix.os }})
env:
# For packing manager install from github package registry
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: read
packages: read
needs:
- build
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
project:
- name: vibe-dashboard
node-version: 24
command: |
npx playwright install chromium
# FIXME: Failed to load JS plugin: ./plugins/debugger.js
# vp run ready
vp fmt
vp test
vp run build
# FIXME: TypeError: Failed to fetch dynamically imported module
# - name: skeleton
# node-version: 24
# command: |
# vp run format
# vp run lint:check
# vp run check
# npx playwright install chromium
# vp run test
- name: rollipop
node-version: 22
command: |
vp run -r build
# FIXME: typescript-eslint(no-redundant-type-constituents): 'rolldownExperimental.DevEngine' is an 'error' type that acts as 'any' and overrides all other types in this union type.
vp run lint || true
# FIXME: src/bundler-pool.ts(8,8): error TS2307: Cannot find module '@rollipop/core' or its corresponding type declarations.
vp run -r typecheck || true
vp run format
vp run @rollipop/common#test
vp run @rollipop/core#test
vp run @rollipop/dev-server#test
- name: frm-stack
node-version: 24
command: |
vp run lint:check
vp run format:check
vp run typecheck
vp run @yourcompany/api#test
vp run @yourcompany/backend-core#test
- name: vue-mini
node-version: 24
command: |
# FIXME: skip format for now, will re-enable after prettier migration support
# vp run format
vp run lint
vp run type
vp run test -- --coverage
# SKIP: vite-plugin-react - vite-task config loading incompatibility
# vite-task needs to load vite.config.js for all workspace packages to build the task graph,
# but the vite-plus process starts with workspace root as cwd.
# The plugin-react-swc playgrounds use SWC plugins (e.g., @swc/plugin-emotion) which
# cannot be resolved when loading the config from workspace root.
#
# Minimal reproduction:
# git clone https://github.com/vitejs/vite-plugin-react /tmp/vite-plugin-react-test
# cd /tmp/vite-plugin-react-test && pnpm install && pnpm run build
# node packages/plugin-react-swc/playground/emotion-plugin/vite.config.js
# # Error: Cannot find module '@swc/plugin-emotion'
#
# This works when running from within the playground directory (pnpm run build)
# because pnpm's symlink structure allows resolution, but fails when loading from workspace root.
# - name: vite-plugin-react
# node-version: 22
# command: |
# vp run format
# vp run lint -- --fix
# # TODO(fengmk2): run all builds and tests after tsdown version upgrade
# vp run @vitejs/plugin-rsc#build
# vp run @vitejs/plugin-rsc#test
- name: vitepress
node-version: 24
command: |
npx playwright install chromium
vp run format
vp run build
vp test run -r __tests__/unit
vp run tests-e2e#test
VITE_TEST_BUILD=1 vp run tests-e2e#test
vp run tests-init#test
- name: tanstack-start-helloworld
node-version: 24
command: |
npx playwright install chromium
vp run test
vp run build
- name: oxlint-plugin-complexity
node-version: 22
command: |
vp run format
vp run format:check
vp run build
vp run lint
vp run test:run
npx tsc --noEmit
- name: vite-vue-vercel
node-version: 24
command: |
npx playwright install chromium
vp run test
vp run build
- name: dify
node-version: 24
directory: web
command: |
vp run type-check:tsgo
vp run build
vp run test navigation-utils.test.ts real-browser-flicker.test.tsx workflow-parallel-limit.test.tsx
- name: viteplus-ws-repro
node-version: 24
command: |
vp test run
- name: vp-config
node-version: 22
command: |
vp check
vp pack
vp test
- name: vinext
node-version: 24
command: |
vp run build
vp check --fix
vp run check
vp run test
- name: reactive-resume
node-version: 24
command: |
vp fmt
vp lint --type-aware
vp build
vp test
- name: yaak
node-version: 24
command: |
vp fmt --ignore-path .oxfmtignore
# FIXME: type-aware lint fails with "Invalid tsconfig" without full Rust/wasm bootstrap
vp lint || true
vp test
- name: npmx.dev
node-version: 24
command: |
vp fmt
vp run lint
vp run test:types
vp test --project unit
- name: vite-plus-jest-dom-repro
node-version: 24
command: |
vp test run
- name: bun-vite-template
node-version: 24
command: |
vp fmt
vp run validate
- name: vite-plus-vitest-global-type-minimal-repro
node-version: 24
command: |
vp test
vp check --fix
- name: vitest-playwright-repro
node-version: 24
command: |
npx playwright install chromium
vp test
- name: vite-plus-vitest-type-aug
node-version: 24
command: |
vp check --fix
exclude:
# frm-stack uses Docker (testcontainers) which doesn't work the same way on Windows
- os: windows-latest
project:
name: frm-stack
# dify only runs on Linux for now
- os: windows-latest
project:
name: dify
# vinext uses workerd native deps that don't build on Windows
- os: windows-latest
project:
name: vinext
# yaak is a Tauri app with Rust/wasm deps
- os: windows-latest
project:
name: yaak
# npmx.dev is a Nuxt app, ubuntu-only for now
- os: windows-latest
project:
name: npmx.dev
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/clone
with:
ecosystem-ci-project: ${{ matrix.project.name }}
# Disable Windows Defender real-time scanning to speed up I/O-heavy operations
- name: Disable Windows Defender
if: runner.os == 'Windows'
shell: powershell
run: Set-MpPreference -DisableRealtimeMonitoring $true
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: ${{ matrix.project.node-version }}
package-manager-cache: false
- name: Download vite-plus packages
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: vite-plus-packages-${{ matrix.os }}
path: tmp/tgz
- name: Install vp CLI
shell: bash
run: |
# Place vp binary where install-global-cli.ts expects it (target/release/)
mkdir -p target/release
cp tmp/tgz/vp target/release/vp 2>/dev/null || cp tmp/tgz/vp.exe target/release/vp.exe 2>/dev/null || true
cp tmp/tgz/vp-shim.exe target/release/vp-shim.exe 2>/dev/null || true
chmod +x target/release/vp 2>/dev/null || true
node $GITHUB_WORKSPACE/packages/tools/src/install-global-cli.ts --tgz $GITHUB_WORKSPACE/tmp/tgz/vite-plus-0.0.0.tgz
# Use USERPROFILE (native Windows path) instead of HOME (Git Bash path /c/Users/...)
# so cmd.exe and Node.js execSync can resolve binaries in PATH
echo "${USERPROFILE:-$HOME}/.vite-plus/bin" >> $GITHUB_PATH
- name: Migrate in ${{ matrix.project.name }}
working-directory: ${{ runner.temp }}/vite-plus-ecosystem-ci/${{ matrix.project.name }}${{ matrix.project.directory && format('/{0}', matrix.project.directory) || '' }}
shell: bash
run: |
node $GITHUB_WORKSPACE/ecosystem-ci/patch-project.ts ${{ matrix.project.name }}
vp install --no-frozen-lockfile
- name: Verify local tgz packages installed
working-directory: ${{ runner.temp }}/vite-plus-ecosystem-ci/${{ matrix.project.name }}${{ matrix.project.directory && format('/{0}', matrix.project.directory) || '' }}
shell: bash
run: node $GITHUB_WORKSPACE/ecosystem-ci/verify-install.ts
- name: Run vite-plus commands in ${{ matrix.project.name }}
working-directory: ${{ runner.temp }}/vite-plus-ecosystem-ci/${{ matrix.project.name }}${{ matrix.project.directory && format('/{0}', matrix.project.directory) || '' }}
run: ${{ matrix.project.command }}
notify-failure:
name: Notify on failure
runs-on: ubuntu-latest
needs: e2e-test
if: ${{ failure() && github.event_name == 'schedule' }}
permissions:
contents: read
issues: write
steps:
- name: Create or update GitHub issue on failure
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
run: |
ISSUE_TITLE="E2E Test Scheduled Run Failed"
ISSUE_LABEL="e2e-failure"
RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
# Create label if it doesn't exist
if ! gh label list --json name --jq '.[].name' | grep -q "^${ISSUE_LABEL}$"; then
CREATE_LABEL_OUTPUT=$(gh label create "$ISSUE_LABEL" --color "d73a4a" --description "E2E test scheduled run failure" 2>&1)
if [ $? -eq 0 ]; then
echo "Created label: $ISSUE_LABEL"
elif echo "$CREATE_LABEL_OUTPUT" | grep -qi "already exists"; then
echo "Label '$ISSUE_LABEL' already exists, continuing."
else
echo "Error: Failed to create label '$ISSUE_LABEL':"
echo "$CREATE_LABEL_OUTPUT" >&2
exit 1
fi
fi
# Search for existing open issue with the label
EXISTING_ISSUE=$(gh issue list --label "$ISSUE_LABEL" --state open --json number --jq '.[0].number')
if [ -z "$EXISTING_ISSUE" ]; then
# Create new issue if none exists
gh issue create \
--title "$ISSUE_TITLE" \
--label "$ISSUE_LABEL" \
--body "The scheduled E2E test run has failed.
**Failed Run:** $RUN_URL
**Time:** $(date -u '+%Y-%m-%d %H:%M:%S UTC')
Please investigate the failure and fix any issues."
echo "Created new issue"
else
# Add comment to existing issue
gh issue comment "$EXISTING_ISSUE" \
--body "The scheduled E2E test run has failed again.
**Failed Run:** $RUN_URL
**Time:** $(date -u '+%Y-%m-%d %H:%M:%S UTC')"
echo "Added comment to issue #$EXISTING_ISSUE"
fi