From c1c0506d2c1cd0d7cea663c8b633db8f4424b647 Mon Sep 17 00:00:00 2001 From: Yuneng Jiang Date: Mon, 4 May 2026 21:19:31 -0700 Subject: [PATCH] [Perf] CI: Skip Redundant Playwright Apt Install in E2E UI Job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cimg/python:3.12-browsers base image already ships every Chromium system dependency Playwright needs (libnss3, libatk-bridge2.0-0, libcups2, etc. — the install log shows them all as "already the newest version"). Passing --with-deps to `npx playwright install` therefore runs an apt-get update + install for nothing, but pays the full cost of hitting Ubuntu mirrors. On a recent run those mirrors stalled hard: apt-get update alone took 6m53s at 81.5 kB/s with several archives returning connection refused. Drop --with-deps and persist ~/.cache/ms-playwright alongside node_modules so the Chromium binary is also reused across runs. Bump the cache key to v2 so the existing v1 entry (which only contained node_modules) is not loaded and skipped over the new browser path. --- .circleci/config.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d2c4906ef6..87db1bc928 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2138,17 +2138,23 @@ jobs: - ~/.cache/uv - restore_cache: keys: - - ui-e2e-node-deps-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }} + - ui-e2e-node-deps-v2-{{ checksum "ui/litellm-dashboard/package-lock.json" }} - run: name: Install Node dependencies and Playwright + # The cimg/python:3.12-browsers image already ships the Chromium system + # libraries Playwright needs (libnss3, libatk-bridge2.0-0, libcups2, etc.). + # `--with-deps` triggers a redundant apt-get update + install that adds + # 5-10 minutes to the job and frequently stalls on flaky Ubuntu mirrors, + # so we install just the browser binary. command: | cd ui/litellm-dashboard npm ci - npx playwright install chromium --with-deps + npx playwright install chromium - save_cache: - key: ui-e2e-node-deps-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }} + key: ui-e2e-node-deps-v2-{{ checksum "ui/litellm-dashboard/package-lock.json" }} paths: - ui/litellm-dashboard/node_modules + - ~/.cache/ms-playwright - run: name: Build UI from source # Prior version used `cp -r out/ ../../litellm/proxy/_experimental/out/`.