From 921dd67e0bb850f0fafeff8b3a0ef50d42ebd98d Mon Sep 17 00:00:00 2001 From: Xon <635541+Xon@users.noreply.github.com> Date: Wed, 21 Aug 2024 23:27:28 +0800 Subject: [PATCH] Update github action cache logic --- .github/workflows/browsers.yml | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/browsers.yml b/.github/workflows/browsers.yml index c8d61b84..a5fa774c 100644 --- a/.github/workflows/browsers.yml +++ b/.github/workflows/browsers.yml @@ -27,17 +27,29 @@ jobs: run: npm ci --no-audit env: HUSKY_SKIP_INSTALL: true + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + +# https://github.com/microsoft/playwright/issues/7249#issuecomment-2301568516 + - name: Detect Playwright version (Windows) + if: runner.os == 'windows' + run: echo "PLAYWRIGHT_VERSION=$(npm ll -p --depth=0 playwright | grep -o '@.*')" | Out-File -FilePath $env:GITHUB_ENV -Append + - name: Detect Playwright version (Linux and Mac) + if: runner.os != 'windows' + run: echo "PLAYWRIGHT_VERSION=$(npm ll -p --depth=0 playwright | grep -o '@.*')" >> $GITHUB_ENV + - name: Put $HOME in env + if: runner.os == 'windows' + run: echo "HOME=$HOME" | Out-File -FilePath $env:GITHUB_ENV -Append - - name: Get installed Playwright version - id: playwright-version - run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package-lock.json').packages['node_modules/@playwright/test'].version)")" >> $GITHUB_ENV - name: Cache playwright binaries uses: actions/cache@v4 id: playwright-cache with: - path: | - ~/.cache/ms-playwright + # see https://playwright.dev/docs/browsers#managing-browser-binaries + path: ${{ runner.os == 'Windows' && format('{0}{1}', env.HOME, '\AppData\Local\ms-playwright') || runner.os == 'Linux' && '~/.cache/ms-playwright' || '~/Library/Caches/ms-playwright' }} key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} + restore-keys: | + ${{ runner.os }}-playwright- + - name: Install Playwright Browsers run: npx playwright install --with-deps if: steps.playwright-cache.outputs.cache-hit != 'true'