Attempt to fix playwright key and performance issue
CI Pipeline / test (20) (pull_request) Successful in 5m59s
CI Pipeline / test (18) (pull_request) Successful in 7m2s
CI Pipeline / e2e (chromium) (pull_request) Failing after 3m17s
CI Pipeline / e2e (firefox) (pull_request) Failing after 3m16s
CI Pipeline / e2e (webkit) (pull_request) Failing after 1m55s
CI Pipeline / visual-regression (pull_request) Failing after 1m15s
CI Pipeline / seed-vr-snapshots (pull_request) Has been skipped
CI Pipeline / performance (pull_request) Failing after 2m8s
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / test (20) (pull_request) Successful in 5m59s
CI Pipeline / test (18) (pull_request) Successful in 7m2s
CI Pipeline / e2e (chromium) (pull_request) Failing after 3m17s
CI Pipeline / e2e (firefox) (pull_request) Failing after 3m16s
CI Pipeline / e2e (webkit) (pull_request) Failing after 1m55s
CI Pipeline / visual-regression (pull_request) Failing after 1m15s
CI Pipeline / seed-vr-snapshots (pull_request) Has been skipped
CI Pipeline / performance (pull_request) Failing after 2m8s
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
This commit is contained in:
+83
-41
@@ -47,15 +47,27 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with: { node-version: 20, cache: npm }
|
with: { node-version: 20, cache: npm }
|
||||||
- name: Cache Playwright
|
- run: npm ci
|
||||||
|
- name: Compute Playwright version
|
||||||
|
id: pw
|
||||||
|
run: echo "version=$(node -p \"require('@playwright/test/package.json').version\")" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Cache Playwright browsers
|
||||||
|
id: pw-cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/ms-playwright
|
# macOS and Linux paths are included; missing paths are ignored.
|
||||||
key: ms-playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
|
path: |
|
||||||
- run: npm ci
|
~/Library/Caches/ms-playwright
|
||||||
- run: npx playwright install ${{ matrix.browser }}
|
~/.cache/ms-playwright
|
||||||
env:
|
key: playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-${{ hashFiles('package-lock.json') }}
|
||||||
PLAYWRIGHT_BROWSERS_PATH: ~/.cache/ms-playwright
|
restore-keys: |
|
||||||
|
playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-
|
||||||
|
playwright-${{ runner.os }}-
|
||||||
|
|
||||||
|
- name: Install Playwright (only if cache miss)
|
||||||
|
if: steps.pw-cache.outputs.cache-hit != 'true'
|
||||||
|
run: npx playwright install --with-deps ${{ matrix.browser }}
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
|
|
||||||
- name: E2E (start + test + teardown)
|
- name: E2E (start + test + teardown)
|
||||||
@@ -116,15 +128,27 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with: { node-version: 20, cache: npm }
|
with: { node-version: 20, cache: npm }
|
||||||
- name: Cache Playwright
|
- run: npm ci
|
||||||
|
- name: Compute Playwright version
|
||||||
|
id: pw
|
||||||
|
run: echo "version=$(node -p \"require('@playwright/test/package.json').version\")" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Cache Playwright browsers
|
||||||
|
id: pw-cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/ms-playwright
|
# macOS and Linux paths are included; missing paths are ignored.
|
||||||
key: ms-playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
|
path: |
|
||||||
- run: npm ci
|
~/Library/Caches/ms-playwright
|
||||||
- run: npx playwright install
|
~/.cache/ms-playwright
|
||||||
env:
|
key: playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-${{ hashFiles('package-lock.json') }}
|
||||||
PLAYWRIGHT_BROWSERS_PATH: ~/.cache/ms-playwright
|
restore-keys: |
|
||||||
|
playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-
|
||||||
|
playwright-${{ runner.os }}-
|
||||||
|
|
||||||
|
- name: Install Playwright (only if cache miss)
|
||||||
|
if: steps.pw-cache.outputs.cache-hit != 'true'
|
||||||
|
run: npx playwright install --with-deps
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
# 1) Sanity check that the build exists
|
# 1) Sanity check that the build exists
|
||||||
- name: Verify Next build output
|
- name: Verify Next build output
|
||||||
@@ -205,9 +229,10 @@ jobs:
|
|||||||
run: npm i -D @lhci/cli
|
run: npm i -D @lhci/cli
|
||||||
|
|
||||||
- name: Build application
|
- name: Build application
|
||||||
run: npm run build
|
run:
|
||||||
|
npm run build
|
||||||
|
|
||||||
# 1) Sanity check that the build exists
|
# 1) Sanity check that the build exists
|
||||||
- name: Verify Next build output
|
- name: Verify Next build output
|
||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
@@ -216,33 +241,38 @@ jobs:
|
|||||||
|
|
||||||
- name: Install Chrome via Puppeteer (mac_arm)
|
- name: Install Chrome via Puppeteer (mac_arm)
|
||||||
run: |
|
run: |
|
||||||
|
# Install Chrome (arm64) into a local cache
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
mkdir -p .cache/puppeteer
|
mkdir -p .cache/puppeteer
|
||||||
echo "Installing Chrome for mac_arm platform..."
|
|
||||||
npx @puppeteer/browsers install chrome@stable \
|
|
||||||
--platform=mac_arm \
|
|
||||||
--path .cache/puppeteer
|
|
||||||
|
|
||||||
echo "Chrome installation complete. Getting executable path..."
|
# 1) Install and capture the build id that was actually installed
|
||||||
CHROME_PATH=$(npx @puppeteer/browsers executable-path chrome@stable --platform=mac_arm --path .cache/puppeteer)
|
INSTALL_OUT="$(npx @puppeteer/browsers install chrome@stable --platform=mac_arm --path .cache/puppeteer)"
|
||||||
echo "Chrome executable path: $CHROME_PATH"
|
echo "$INSTALL_OUT"
|
||||||
|
|
||||||
# Verify the path is not empty
|
# INSTALL_OUT looks like: "chrome@140.0.7339.80 /abs/path/to/.../Google Chrome for Testing"
|
||||||
|
BUILD_ID="$(printf '%s\n' "$INSTALL_OUT" | awk '{print $1}' | cut -d@ -f2)"
|
||||||
|
echo "Detected Chrome build: $BUILD_ID"
|
||||||
|
|
||||||
|
# 2) Ask for the executable path using the explicit build id
|
||||||
|
CHROME_PATH="$(npx @puppeteer/browsers executable-path chrome@"$BUILD_ID" --platform=mac_arm --path .cache/puppeteer || true)"
|
||||||
|
echo "Chrome executable path (via CLI): ${CHROME_PATH:-<empty>}"
|
||||||
|
|
||||||
|
# 3) Fallback: resolve the binary directly from the cache if the CLI returned empty
|
||||||
if [ -z "$CHROME_PATH" ]; then
|
if [ -z "$CHROME_PATH" ]; then
|
||||||
echo "❌ Chrome path is empty after installation"
|
CHROME_PATH="$(/usr/bin/find ".cache/puppeteer/chrome" -type f -path "*/chrome-mac-arm64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing" -print -quit || true)"
|
||||||
ls -la .cache/puppeteer/ || true
|
echo "Chrome executable path (via find): ${CHROME_PATH:-<empty>}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4) Hard fail if still empty
|
||||||
|
if [ -z "$CHROME_PATH" ] || [ ! -x "$CHROME_PATH" ]; then
|
||||||
|
echo "❌ Chrome path is empty or not executable"
|
||||||
|
ls -la .cache/puppeteer || true
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Verify the executable exists
|
# 5) Export for subsequent steps in this job and later ones
|
||||||
if [ ! -f "$CHROME_PATH" ]; then
|
|
||||||
echo "❌ Chrome executable not found at: $CHROME_PATH"
|
|
||||||
ls -la .cache/puppeteer/ || true
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ Chrome installed successfully at: $CHROME_PATH"
|
|
||||||
echo "CHROME_PATH=$CHROME_PATH" >> "$GITHUB_ENV"
|
echo "CHROME_PATH=$CHROME_PATH" >> "$GITHUB_ENV"
|
||||||
|
"$CHROME_PATH" --version || true
|
||||||
|
|
||||||
- name: Ensure arm64 Node for Lighthouse
|
- name: Ensure arm64 Node for Lighthouse
|
||||||
run: |
|
run: |
|
||||||
@@ -324,15 +354,27 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with: { node-version: 20, cache: npm }
|
with: { node-version: 20, cache: npm }
|
||||||
- name: Cache Playwright
|
- run: npm ci
|
||||||
|
- name: Compute Playwright version
|
||||||
|
id: pw
|
||||||
|
run: echo "version=$(node -p \"require('@playwright/test/package.json').version\")" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Cache Playwright browsers
|
||||||
|
id: pw-cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/ms-playwright
|
# macOS and Linux paths are included; missing paths are ignored.
|
||||||
key: ms-playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
|
path: |
|
||||||
- run: npm ci
|
~/Library/Caches/ms-playwright
|
||||||
- run: npx playwright install
|
~/.cache/ms-playwright
|
||||||
env:
|
key: playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-${{ hashFiles('package-lock.json') }}
|
||||||
PLAYWRIGHT_BROWSERS_PATH: ~/.cache/ms-playwright
|
restore-keys: |
|
||||||
|
playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-
|
||||||
|
playwright-${{ runner.os }}-
|
||||||
|
|
||||||
|
- name: Install Playwright (only if cache miss)
|
||||||
|
if: steps.pw-cache.outputs.cache-hit != 'true'
|
||||||
|
run: npx playwright install --with-deps
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
- name: Start app + wait
|
- name: Start app + wait
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Reference in New Issue
Block a user