Naar de inhoud
Illustratie: een pagina op desktop, tablet en telefoon, allemaal goedgekeurd, met losse .deb-pakketten eronder
Illustratie.
Handleiding · gevorderd

Playwright met Chromium draaien zonder sudo

Pagina's automatisch testen in een echte browser op een server zonder beheerdersrechten: ontbrekende bibliotheken en lettertypen lokaal uitpakken.

Getest met Playwright 1.64, Ubuntu 26.04, Python 3.14Bijgewerkt Leestijd 1 min

Het probleem

Playwright installeert Chromium in je eigen map, maar de browser heeft systeembibliotheken nodig die op een kale server ontbreken. De gebruikelijke oplossing, playwright install-deps, vraagt sudo. Heb je dat niet, of wil je het systeem niet aanpassen, dan start Chromium niet:

error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file

Stap 1: Playwright in een eigen omgeving

python3 -m venv ~/.local/share/pw
~/.local/share/pw/bin/pip install playwright
~/.local/share/pw/bin/playwright install chromium

Stap 2: haal de ontbrekende pakketten op zonder ze te installeren

apt-get download haalt een .deb op zonder iets te installeren, en daar zijn geen beheerdersrechten voor nodig. Op Ubuntu 26.04 waren dit de pakketten die ontbraken:

mkdir -p ~/.local/share/pw/libs/deb && cd ~/.local/share/pw/libs/deb
apt-get download libatk1.0-0t64 libatk-bridge2.0-0t64 libatspi2.0-0t64 \
  libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2t64 \
  libxi6 libxrender1 libxres1 fonts-inter fonts-dejavu-core

Welke jij mist, zie je aan de foutmelding: start Chromium, voeg het genoemde pakket toe en probeer opnieuw.

Stap 3: pak ze uit in je eigen map

for f in *.deb; do dpkg-deb -x "$f" ../root; done

De bibliotheken staan dan in libs/root/usr/lib/x86_64-linux-gnu, de lettertypen in libs/root/usr/share/fonts.

Stap 4: geef lettertypen een eigen fontconfig

Zonder lettertypen tekent Chromium blokjes. Maak libs/fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/home/jij/.local/share/pw/libs/root/usr/share/fonts</dir>
  <cachedir>/home/jij/.local/share/pw/libs/fontcache</cachedir>
  <alias><family>sans-serif</family><prefer><family>Inter</family><family>DejaVu Sans</family></prefer></alias>
</fontconfig>

Stap 5: start met de juiste paden

L=~/.local/share/pw/libs
LD_LIBRARY_PATH=$L/root/usr/lib/x86_64-linux-gnu \
FONTCONFIG_FILE=$L/fonts.conf \
~/.local/share/pw/bin/python mijn_test.py

Of zet beide variabelen in je script voordat je de browser start. Daarna werkt chromium.launch() gewoon.

Weer verwijderen

Alles staat in je eigen map: verwijder ~/.local/share/pw en de browsercache in ~/.cache/ms-playwright. Het systeem zelf is nooit aangepast.