playwright on ubuntu 25.10
on this page
tl;dr
Problem: | playwright browser dependencies incompatible with ubuntu 25.10 |
Key changes: | libicu74 → libicu76 , many packages now have t64 suffix |
Solution: | updated package list with 50 correctly-versioned dependencies |
Install command: | apt-get install with full package list (see below) |
Testing: | validated in docker container with all three browsers |
overview
ubuntu 25.10 introduced significant package naming changes that break playwright’s browser installation. this guide provides the complete, tested solution for running playwright with chromium, firefox, and webkit browsers.
quick solution
sudo apt-get update && sudo apt-get install -y \
curl \
ca-certificates \
libicu76 \
libxml2-16 \
libevent-2.1-7t64 \
libgstreamer-plugins-bad1.0-0 \
libflite1 \
libavif16 \
libmanette-0.2-0 \
gstreamer1.0-libav \
libglib2.0-0t64 \
libnspr4 \
libnss3 \
libdbus-1-3 \
libatk1.0-0t64 \
libatk-bridge2.0-0t64 \
libcups2t64 \
libexpat1 \
libxcb1 \
libxkbcommon0 \
libatspi2.0-0t64 \
libx11-6 \
libxcomposite1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libcairo2 \
libpango-1.0-0 \
libasound2t64 \
libdrm2 \
libxshmfence1 \
libgtk-3-0t64 \
libgtk-4-1 \
libxslt1.1 \
libwoff1 \
libwebpdemux2 \
libharfbuzz-icu0 \
libenchant-2-2 \
libsecret-1-0 \
libhyphen0 \
libwayland-server0 \
libgles2
package changes in ubuntu 25.10
version bumps
libicu74
→libicu76
- unicode support librarylibxml2
→libxml2-16
- xml parsing library
time64 transition
ubuntu 25.10 adopted the t64
suffix for 64-bit time transition:
libglib2.0-0
→libglib2.0-0t64
libatk1.0-0
→libatk1.0-0t64
libatk-bridge2.0-0
→libatk-bridge2.0-0t64
libcups2
→libcups2t64
libatspi2.0-0
→libatspi2.0-0t64
libasound2
→libasound2t64
libgtk-3-0
→libgtk-3-0t64
installation with uv
# install uv if not present
curl -LsSf https://astral.sh/uv/install.sh | sh
# install system dependencies (use command above)
sudo apt-get update && sudo apt-get install -y [packages...]
# install playwright browsers
uv run --with playwright playwright install
docker setup
complete dockerfile
FROM ubuntu:25.10
# update package list
RUN apt-get update
# install all playwright dependencies
RUN apt-get install -y \
curl \
ca-certificates \
libicu76 \
libxml2-16 \
libevent-2.1-7t64 \
libgstreamer-plugins-bad1.0-0 \
libflite1 \
libavif16 \
libmanette-0.2-0 \
gstreamer1.0-libav \
libglib2.0-0t64 \
libnspr4 \
libnss3 \
libdbus-1-3 \
libatk1.0-0t64 \
libatk-bridge2.0-0t64 \
libcups2t64 \
libexpat1 \
libxcb1 \
libxkbcommon0 \
libatspi2.0-0t64 \
libx11-6 \
libxcomposite1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libcairo2 \
libpango-1.0-0 \
libasound2t64 \
libdrm2 \
libxshmfence1 \
libgtk-3-0t64 \
libgtk-4-1 \
libxslt1.1 \
libwoff1 \
libwebpdemux2 \
libharfbuzz-icu0 \
libenchant-2-2 \
libsecret-1-0 \
libhyphen0 \
libwayland-server0 \
libgles2
# install uv
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:$PATH"
# install playwright and browsers
RUN uv run --with playwright playwright install
# verify installation
RUN uv run --with playwright playwright --version
building and testing
# build docker image
docker build -t playwright-ubuntu-25.10 .
# run playwright tests
docker run -it playwright-ubuntu-25.10 \
uv run --with playwright pytest tests/
dependency categories
core system libraries
curl
,ca-certificates
- downloading and httpslibicu76
- unicode support (updated from libicu74)libxml2-16
- xml parsing (updated from libxml2)libevent-2.1-7t64
- event notification
media and graphics
libgstreamer-plugins-bad1.0-0
- gstreamer pluginsgstreamer1.0-libav
- audio/video codecslibavif16
- avif image formatlibflite1
- text-to-speechlibmanette-0.2-0
- game controller support
gtk and ui libraries
libglib2.0-0t64
- core glib librarylibgtk-3-0t64
,libgtk-4-1
- gtk toolkit versionslibpango-1.0-0
- text renderinglibcairo2
- 2d graphics
browser security
libnspr4
,libnss3
- network security services
x11 and display
libx11-6
,libxext6
,libxfixes3
- x11 corelibxcomposite1
,libxdamage1
,libxrandr2
- compositinglibxcb1
,libxkbcommon0
- xcb and keyboardlibwayland-server0
- wayland supportlibgbm1
,libgles2
- graphics buffer management
accessibility
libatk1.0-0t64
,libatk-bridge2.0-0t64
- atk accessibilitylibatspi2.0-0t64
- assistive technology
additional browser requirements
libdbus-1-3
- d-bus message buslibcups2t64
- printing supportlibexpat1
- xml parsinglibasound2t64
- audio supportlibdrm2
,libxshmfence1
- direct renderinglibxslt1.1
- xslt transformationslibwoff1
- web font formatlibwebpdemux2
- webp image formatlibharfbuzz-icu0
- text shapinglibenchant-2-2
- spell checkinglibsecret-1-0
- password/secret storagelibhyphen0
- hyphenation
troubleshooting
finding missing dependencies
playwright provides detailed error messages for missing libraries:
╔══════════════════════════════════════════════════════╗
║ Host system is missing dependencies to run browsers. ║
║ Missing libraries: ║
║ libglib-2.0.so.0 ║
║ libgobject-2.0.so.0 ║
╚══════════════════════════════════════════════════════╝
package discovery process
- identify the package from
.so
file name - search for ubuntu 25.10 equivalent:
# search for library
apt search ^libglib2.0
# verify exact package name
apt list libglib2.0-0t64
verifying installation
# check playwright version
uv run --with playwright playwright --version
# list installed browsers
uv run --with playwright playwright list
# test browser launch
uv run --with playwright python -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
print('chromium launched successfully')
browser.close()
"
migration notes
when migrating from ubuntu 24.04 or earlier:
- update all package names to match ubuntu 25.10 versions
- watch for
t64
suffix on time-sensitive packages - verify icu library version (now 76)
- test all three browsers after installation
the complete package list provided above has been validated in production environments and docker containers.