feat(deps): upgrade upstream dependencies #4599
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |