Skip to content

Testy Playwright: -n wg RAM-u, limit pamięci, bez instalacji przy każdym starcie - #969

Open
mpasternak wants to merge 3 commits into
devfrom
playwright-workers-ram
Open

mpasternak wants to merge 3 commits into
devfrom
playwright-workers-ram

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Problem

  • make tests-only-playwright zależał od playwright-install, czyli przy każdym uruchomieniu (także w make tests) wołał playwright install --with-deps → sudo apt-get install … na Debianie/Ubuntu. Instalacja to krok jednorazowy (make prepare-developer-machine).
  • PLAYWRIGHT_WORKERS na Linuksie = nproc (na thinkpadzie 14 workerów przy 14 GB RAM). Worker Playwrighta to worker + własne Chromium + podproces Daphne, więc to scenariusz, który już raz zamroził laptopa. Brakowało liczenia -n z RAM-u i XDIST_GUARD, które ma tests-without-playwright.

Zmiany

  • Nowy make playwright-check (prepare.sh playwright-check): playwright install --dry-run podaje katalogi przeglądarek dla bieżącej rewizji, a check sprawdza, czy istnieją. Nie używa sudo, apt ani sieci. tests-only-playwright zależy od niego zamiast od instalacji.
  • PLAYWRIGHT_WORKERS poza CI = xdist_workers.py calc --suite playwright. Górnym limitem jest CPU, na Apple Silicon tylko rdzenie wydajnościowe, jak dotąd. CI bez zmian. Przebieg leci pod $(XDIST_GUARD).
  • bin/xdist_workers.py:
    • measure/calc przyjmują --suite playwright, profil zapisuje się do .xdist-mem-profile-playwright.json (gitignored);
    • pamięć workera to suma całego jego poddrzewa procesów (Chromium + Daphne), na Linuksie PSS zamiast RSS (procesy Chromium dzielą dużo stron, więc suma RSS by zawyżała);
    • próbka zawiera src/fixtures, bo hook doklejający marker playwright siedzi w src/fixtures/conftest.py i bez tego katalogu -m playwright łapie 4 testy zamiast 150.
  • Nowe targety: make xdist-measure-playwright i make xdist-calc-playwright. Zaktualizowane docs/deweloper/polecenia.md, dodany newsfragment.

Weryfikacja (thinkpad14s, 14 rdzeni / 14 GB)

  • make xdist-measure-playwright: 150 passed w 3:08 przy -n 2; worker z poddrzewem 1380 MB, PG 465 MB na workera. Te liczby są wartościami domyślnymi, gdy maszyna nie ma profilu.
  • make -n tests-only-playwright → systemd-run … MemoryMax=… uv run pytest -n 2 -m "playwright"; z CI=1 → -n 14, bez guarda.
  • make playwright-check: z przeglądarkami rc=0; z PLAYWRIGHT_BROWSERS_PATH=/nonexist rc≠0 i podpowiedź make playwright-install.
  • Po refaktorze krótki measure zwykłej suity działa (567 passed).

Uwaga: te same zmiany przypadkiem trafiły też do #968 (commit 751a8673b): inna sesja zrobiła tam commit z całego drzewa roboczego. Treść jest identyczna, więc scalenie obu PR-ów nie da konfliktu, ale #968 warto oczyścić albo scalić najpierw ten PR.

🤖 Generated with Claude Code

mpasternak and others added 3 commits November 6, 2026 06:57
…dym starcie

- tests-only-playwright zależy od nowego `playwright-check` zamiast
  `playwright-install`: sprawdza (przez `playwright install --dry-run`),
  czy przeglądarki dla bieżącej rewizji są na dysku, bez sudo/apt/sieci.
  Wcześniej każde `make tests` wołało `--with-deps`, czyli `sudo apt`.
- PLAYWRIGHT_WORKERS poza CI liczone z RAM-u wg osobnego profilu
  Playwrighta (górny limit: CPU, na Apple Silicon P-cores); na Linuksie
  wcześniej wychodziło `nproc` = 14 workerów na 14 GB RAM. Przebieg leci
  pod XDIST_GUARD (systemd-run MemoryMax).
- bin/xdist_workers.py: `--suite playwright` dla measure/calc, profil
  .xdist-mem-profile-playwright.json; pamięć workera = całe poddrzewo
  procesów (Chromium + Daphne), na Linuksie PSS zamiast RSS.
  Próbka zawiera src/fixtures, bo tam siedzi hook doklejający marker
  `playwright`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…20 MB)

Nowa metoda liczy pamięć całego poddrzewa workera, stąd wyższy szczyt
niż w poprzednim pomiarze RSS samego procesu (654 MB). Pomiar:
1832 passed, -n 2, thinkpad14s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bez src/fixtures w ścieżkach hook doklejający marker `playwright` się
nie ładuje, więc `-m "not playwright"` puszczał testy [chromium]
z test_admin i Chromium zawyżał szczyt workera (910 MB zamiast 485 MB).
Domyślne wartości z ponownego pomiaru: 485/201/201 MB (1827 passed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant