diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index e74bfbd24..9783b861a 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -39,32 +39,40 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest-8-cores, windows-16-cores, macos-14-large] + # os: [ubuntu-latest-8-cores, windows-16-cores, macos-14-large] + os: [ubuntu-latest-8-cores, macos-14-large] shardIndex: [1, 2, 3, 4] shardTotal: [4] runs-on: ${{ matrix.os }} needs: check-rust-changes steps: + - name: Tune GitHub-hosted runner network uses: smorimoto/tune-github-hosted-runner-network@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'yarn' + - uses: KittyCAD/action-install-cli@main - name: Install dependencies shell: bash run: yarn + - name: Cache Playwright Browsers uses: actions/cache@v4 with: path: | ~/.cache/ms-playwright/ key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }} + - name: Install Playwright Browsers shell: bash run: yarn playwright install --with-deps + - name: Download Wasm Cache id: download-wasm if: needs.check-rust-changes.outputs.rust-changed == 'false' @@ -76,57 +84,68 @@ jobs: workflow: build-and-store-wasm.yml branch: main path: src/wasm-lib/pkg + - name: copy wasm blob if: needs.check-rust-changes.outputs.rust-changed == 'false' shell: bash run: cp src/wasm-lib/pkg/wasm_lib_bg.wasm public continue-on-error: true + - name: Setup Rust uses: dtolnay/rust-toolchain@stable - - name: Cache Wasm (because rust diff) - if: needs.check-rust-changes.outputs.rust-changed == 'true' - uses: Swatinem/rust-cache@v2 - with: - workspaces: './src/wasm-lib' - - name: OR Cache Wasm (because wasm cache failed) - if: steps.download-wasm.outcome == 'failure' - uses: Swatinem/rust-cache@v2 - with: - workspaces: './src/wasm-lib' + + # - name: Cache Wasm (because rust diff) + # if: needs.check-rust-changes.outputs.rust-changed == 'true' + # uses: Swatinem/rust-cache@v2 + # with: + # workspaces: './src/wasm-lib' + + # - name: OR Cache Wasm (because wasm cache failed) + # if: steps.download-wasm.outcome == 'failure' + # uses: Swatinem/rust-cache@v2 + # with: + # workspaces: './src/wasm-lib' + - name: install good sed if: ${{ startsWith(matrix.os, 'macos') }} shell: bash run: | brew install gnu-sed echo "/opt/homebrew/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH - - name: Install vector - shell: bash - if: ${{ !startsWith(matrix.os, 'windows') }} - run: | - curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh - chmod +x /tmp/vector.sh - /tmp/vector.sh -y -no-modify-path - mkdir -p /tmp/vector - cp .github/workflows/vector.toml /tmp/vector.toml - sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml - sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml - sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml - sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml - sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml - cat /tmp/vector.toml - ${HOME}/.vector/bin/vector --config /tmp/vector.toml & + + # - name: Install vector + # shell: bash + # if: ${{ !startsWith(matrix.os, 'windows') }} + # run: | + # curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh + # chmod +x /tmp/vector.sh + # /tmp/vector.sh -y -no-modify-path + # mkdir -p /tmp/vector + # cp .github/workflows/vector.toml /tmp/vector.toml + # sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml + # sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml + # sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml + # sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml + # sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml + # cat /tmp/vector.toml + # ${HOME}/.vector/bin/vector --config /tmp/vector.toml & + - name: Build Wasm (because rust diff) - if: needs.check-rust-changes.outputs.rust-changed == 'true' - shell: bash - run: yarn build:wasm - - name: OR Build Wasm (because wasm cache failed) - if: steps.download-wasm.outcome == 'failure' + # if: needs.check-rust-changes.outputs.rust-changed == 'true' shell: bash run: yarn build:wasm + + # - name: OR Build Wasm (because wasm cache failed) + # if: steps.download-wasm.outcome == 'failure' + # shell: bash + # run: yarn build:wasm + - name: build electron shell: bash run: yarn tron:package + - name: Run ubuntu/chrome snapshots + if: ${{ startsWith(matrix.os, 'ubuntu') }} shell: bash run: | PLATFORM=web yarn playwright test --config=playwright.config.ts --retries="3" --update-snapshots --grep=@snapshot --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} @@ -137,19 +156,23 @@ jobs: VITE_KC_SKIP_AUTH: true token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }} + - uses: actions/upload-artifact@v4 - if: ${{ !cancelled() && (success() || failure()) }} + if: ${{ startsWith(matrix.os, 'ubuntu') }} with: name: playwright-report-${{ matrix.os }}-snapshot-${{ matrix.shardIndex }}-${{ github.sha }} path: playwright-report/ include-hidden-files: true retention-days: 30 overwrite: true + - name: Clean up test-results - if: ${{ !cancelled() && (success() || failure()) }} + if: ${{ startsWith(matrix.os, 'ubuntu') }} continue-on-error: true run: rm -r test-results + - name: check for changes + if: ${{ startsWith(matrix.os, 'ubuntu') }} shell: bash id: git-check run: | @@ -158,6 +181,7 @@ jobs: then echo "modified=true" >> $GITHUB_OUTPUT else echo "modified=false" >> $GITHUB_OUTPUT fi + - name: Commit changes, if any if: steps.git-check.outputs.modified == 'true' shell: bash @@ -172,6 +196,7 @@ jobs: git commit -am "A snapshot a day keeps the bugs away! 📷🐛 (OS: ${{matrix.os}})" || true git push git push origin ${{ github.head_ref }} + # only upload artifacts if there's actually changes - uses: actions/upload-artifact@v4 if: steps.git-check.outputs.modified == 'true' @@ -180,15 +205,16 @@ jobs: path: playwright-report/ include-hidden-files: true retention-days: 30 + - uses: actions/download-artifact@v4 - if: ${{ !cancelled() && (success() || failure()) }} + if: ${{ startsWith(matrix.os, 'linux') }} continue-on-error: true with: name: test-results-${{ matrix.os }}-${{ matrix.shardIndex }}-${{ github.sha }} path: test-results/ + - name: Run playwright/electron flow (with retries) id: retry - if: ${{ !cancelled() && (success() || failure()) }} shell: bash run: | .github/ci-cd-scripts/playwright-electron.sh ${{matrix.shardIndex}} ${{matrix.shardTotal}} ${{matrix.os}} @@ -199,20 +225,19 @@ jobs: VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} VITE_KC_SKIP_AUTH: true token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} + - uses: actions/upload-artifact@v4 - if: always() with: name: test-results-${{ matrix.os }}-${{ matrix.shardIndex }}-${{ github.sha }} path: test-results/ include-hidden-files: true retention-days: 30 overwrite: true + - uses: actions/upload-artifact@v4 - if: always() with: name: playwright-report-${{ matrix.os }}-${{ matrix.shardIndex }}-${{ github.sha }} path: playwright-report/ include-hidden-files: true retention-days: 30 overwrite: true -