tag as top level part 2 #5298
Workflow file for this run
This file contains 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: Playwright Tests | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: write | |
pull-requests: write | |
actions: read | |
jobs: | |
check-rust-changes: | |
runs-on: ubuntu-latest | |
outputs: | |
rust-changed: ${{ steps.filter.outputs.rust }} | |
steps: | |
- uses: actions/checkout@v4 | |
- id: filter | |
name: Check for Rust changes | |
uses: dorny/paths-filter@v3 | |
with: | |
filters: | | |
rust: | |
- 'src/wasm-lib/**' | |
playwright-ubuntu: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest-8-cores | |
needs: check-rust-changes | |
steps: | |
- 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 | |
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 | |
run: yarn playwright install --with-deps | |
- name: Download Wasm Cache | |
id: download-wasm | |
if: needs.check-rust-changes.outputs.rust-changed == 'false' | |
uses: dawidd6/action-download-artifact@v6 | |
continue-on-error: true | |
with: | |
github_token: ${{secrets.GITHUB_TOKEN}} | |
name: wasm-bundle | |
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' | |
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: Build Wasm (because rust diff) | |
if: needs.check-rust-changes.outputs.rust-changed == 'true' | |
run: yarn build:wasm | |
- name: OR Build Wasm (because wasm cache failed) | |
if: steps.download-wasm.outcome == 'failure' | |
run: yarn build:wasm | |
- name: build web | |
run: yarn build:local | |
- name: Run ubuntu/chrome snapshots | |
run: yarn playwright test --project="Google Chrome" --update-snapshots e2e/playwright/snapshot-tests.spec.ts | |
env: | |
CI: true | |
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | |
snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }} | |
- name: check for changes | |
id: git-check | |
run: | | |
git add . | |
if git status | grep -q "Changes to be committed" | |
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' | |
run: | | |
git add . | |
git config --local user.email "github-actions[bot]@users.noreply.github.com" | |
git config --local user.name "github-actions[bot]" | |
git remote set-url origin https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git | |
git fetch origin | |
echo ${{ github.head_ref }} | |
git checkout ${{ github.head_ref }} | |
# TODO when webkit works on ubuntu remove the os part of the commit message | |
git commit -am "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)" || 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' | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 | |
# if have previous run results, use them | |
- uses: actions/download-artifact@v4 | |
if: always() | |
continue-on-error: true | |
with: | |
name: test-results | |
path: test-results/ | |
- name: Run ubuntu/chrome flow retry failures | |
id: retry | |
if: always() | |
run: | | |
ls -1 "test-results" | |
if [[ $(ls -1 "test-results" | wc -l) == "0" ]]; | |
then echo "retried=false" >> $GITHUB_OUTPUT; exit 0; | |
else echo "retried=true" >> $GITHUB_OUTPUT; | |
fi; | |
yarn playwright test --project="Google Chrome" --last-failed e2e/playwright/flow-tests.spec.ts | |
env: | |
CI: true | |
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | |
- name: Run ubuntu/chrome flow | |
if: steps.retry.outputs.retried == 'false' | |
run: yarn playwright test --project="Google Chrome" e2e/playwright/flow-tests.spec.ts | |
env: | |
CI: true | |
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: test-results | |
path: test-results/ | |
retention-days: 30 | |
overwrite: true | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 | |
overwrite: true | |
playwright-macos: | |
timeout-minutes: 60 | |
runs-on: macos-14 | |
needs: check-rust-changes | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'yarn' | |
- name: Install dependencies | |
run: yarn | |
- name: Cache Playwright Browsers | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cache/ms-playwright | |
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-playwright- | |
- name: Install Playwright Browsers | |
run: yarn playwright install --with-deps | |
- name: Download Wasm Cache | |
id: download-wasm | |
if: needs.check-rust-changes.outputs.rust-changed == 'false' | |
uses: dawidd6/action-download-artifact@v6 | |
continue-on-error: true | |
with: | |
github_token: ${{secrets.GITHUB_TOKEN}} | |
name: wasm-bundle | |
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' | |
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: Build Wasm (because rust diff) | |
if: needs.check-rust-changes.outputs.rust-changed == 'true' | |
run: yarn build:wasm | |
- name: OR Build Wasm (because wasm cache failed) | |
if: steps.download-wasm.outcome == 'failure' | |
run: yarn build:wasm | |
- name: build web | |
run: yarn build:local | |
# if have previous run results, use them | |
- uses: actions/download-artifact@v4 | |
if: ${{ always() }} | |
continue-on-error: true | |
with: | |
name: test-results | |
path: test-results/ | |
- name: Run macos/safari flow retry failures | |
id: retry | |
continue-on-error: true | |
if: ${{ success() }} | |
run: | | |
if [ -d "test-results" ]; | |
then echo "retried=true" >> $GITHUB_OUTPUT; | |
else echo "retried=false" >> $GITHUB_OUTPUT; | |
fi; | |
yarn playwright test --project="webkit" --last-failed e2e/playwright/flow-tests.spec.ts | |
env: | |
CI: true | |
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | |
- name: Run macos/safari flow | |
if: ${{ steps.retry.outputs.retried != 'true' }} | |
# webkit doesn't work on Ubuntu because of the same reason tauri doesn't (webRTC issues) | |
# TODO remove this and the matrix and run all tests on ubuntu when this is fixed | |
run: yarn playwright test --project="webkit" e2e/playwright/flow-tests.spec.ts | |
env: | |
CI: true | |
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | |
- uses: actions/upload-artifact@v4 | |
if: ${{ always() }} | |
with: | |
name: test-results | |
path: test-results/ | |
retention-days: 30 | |
overwrite: true | |
- uses: actions/upload-artifact@v4 | |
if: ${{ always() }} | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 | |
overwrite: true | |