Install PlayWright onto Debian12 host
Table of Contents
Installation
Check-up PlayWright
in the list of the native Debian
packages:
apt-cache search elpa* | grep playwright 2>&1
There is no one appropriate enough, thus, just follow this manual, but using a separate virtual environment beforehand:
cd ~/.local/ ls -la 2>&1 virtualenv ViPlay ls -la 2>&1
total 24 drwx------ 6 alioth alioth 4096 Mar 22 09:45 . drwxr-xr-x 23 alioth alioth 4096 Mar 22 09:56 .. drwx------ 29 alioth alioth 4096 Mar 22 08:57 share drwx------ 3 alioth alioth 4096 Dec 4 18:21 state drwxr-xr-x 4 alioth alioth 4096 Dec 12 14:52 venv0.1 drwxr-xr-x 4 alioth alioth 4096 Mar 22 09:45 VirtSel created virtual environment CPython3.11.2.final.0-64 in 138ms creator CPython3Posix(dest=/home/alioth/.local/ViPlay, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/alioth/.local/share/virtualenv) added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator total 28 drwx------ 7 alioth alioth 4096 Mar 22 10:23 . drwxr-xr-x 23 alioth alioth 4096 Mar 22 09:56 .. drwx------ 29 alioth alioth 4096 Mar 22 08:57 share drwx------ 3 alioth alioth 4096 Dec 4 18:21 state drwxr-xr-x 4 alioth alioth 4096 Dec 12 14:52 venv0.1 drwxr-xr-x 4 alioth alioth 4096 Mar 22 10:23 ViPlay drwxr-xr-x 4 alioth alioth 4096 Mar 22 09:45 VirtSel
Preparations:
First of all lets activate our new venv
:
(pyvenv-activate "~/.local/ViPlay/")
Check up already installed packages:
pip list 2>&1
Package Version ---------- ------- pip 23.0.1 setuptools 66.1.1 wheel 0.38.4
Further, following the official documentation:
pip install pytest-playwright 2>&1
Collecting pytest-playwright Downloading pytest_playwright-0.4.4-py3-none-any.whl (10 kB) Collecting playwright>=1.18 Downloading playwright-1.42.0-py3-none-manylinux1_x86_64.whl (37.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.3/37.3 MB 492.0 kB/s eta 0:00:00 Collecting pytest<9.0.0,>=6.2.4 Downloading pytest-8.1.1-py3-none-any.whl (337 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 337.4/337.4 kB 505.6 kB/s eta 0:00:00 Collecting pytest-base-url<3.0.0,>=1.0.0 Downloading pytest_base_url-2.1.0-py3-none-any.whl (5.3 kB) Collecting python-slugify<9.0.0,>=6.0.0 Downloading python_slugify-8.0.4-py2.py3-none-any.whl (10 kB) Collecting greenlet==3.0.3 Downloading greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (620 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 620.0/620.0 kB 353.6 kB/s eta 0:00:00 Collecting pyee==11.0.1 Downloading pyee-11.0.1-py3-none-any.whl (15 kB) Collecting typing-extensions Using cached typing_extensions-4.10.0-py3-none-any.whl (33 kB) Collecting iniconfig Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB) Collecting packaging Using cached packaging-24.0-py3-none-any.whl (53 kB) Collecting pluggy<2.0,>=1.4 Downloading pluggy-1.4.0-py3-none-any.whl (20 kB) Collecting requests>=2.9 Using cached requests-2.31.0-py3-none-any.whl (62 kB) Collecting text-unidecode>=1.3 Downloading text_unidecode-1.3-py2.py3-none-any.whl (78 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.2/78.2 kB 425.7 kB/s eta 0:00:00 Collecting charset-normalizer<4,>=2 Using cached charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140 kB) Collecting idna<4,>=2.5 Using cached idna-3.6-py3-none-any.whl (61 kB) Collecting urllib3<3,>=1.21.1 Using cached urllib3-2.2.1-py3-none-any.whl (121 kB) Collecting certifi>=2017.4.17 Using cached certifi-2024.2.2-py3-none-any.whl (163 kB) Installing collected packages: text-unidecode, urllib3, typing-extensions, python-slugify, pluggy, packaging, iniconfig, idna, greenlet, charset-normalizer, certifi, requests, pytest, pyee, pytest-base-url, playwright, pytest-playwright Successfully installed certifi-2024.2.2 charset-normalizer-3.3.2 greenlet-3.0.3 idna-3.6 iniconfig-2.0.0 packaging-24.0 playwright-1.42.0 pluggy-1.4.0 pyee-11.0.1 pytest-8.1.1 pytest-base-url-2.1.0 pytest-playwright-0.4.4 python-slugify-8.0.4 requests-2.31.0 text-unidecode-1.3 typing-extensions-4.10.0 urllib3-2.2.1
Obviously that the list of packages has augmented:
pip list 2>&1
Package Version ------------------ -------- certifi 2024.2.2 charset-normalizer 3.3.2 greenlet 3.0.3 idna 3.6 iniconfig 2.0.0 packaging 24.0 pip 23.0.1 playwright 1.42.0 pluggy 1.4.0 pyee 11.0.1 pytest 8.1.1 pytest-base-url 2.1.0 pytest-playwright 0.4.4 python-slugify 8.0.4 requests 2.31.0 setuptools 66.1.1 text-unidecode 1.3 typing_extensions 4.10.0 urllib3 2.2.1 wheel 0.38.4
Next procedure is a time-consuming one, so I suggest to do it in
Bash
with activated virtual environment, surely. It depends, but
sometimes requires more than 10 minutes to be done.
(ViPlay) alioth@Dell:~/.local$ playwright install Downloading Chromium 123.0.6312.4 (playwright build v1105) from https://playwright.azureedge.net/builds/chromium/1105/chromium-linux.zip 154.7 MiB [====================] 100% 0.0s Chromium 123.0.6312.4 (playwright build v1105) downloaded to home/alioth.cache/ms-playwright/chromium-1105 Downloading FFMPEG playwright build v1009 from https://playwright.azureedge.net/builds/ffmpeg/1009/ffmpeg-linux.zip 2.6 MiB [====================] 100% 0.0s FFMPEG playwright build v1009 downloaded to home/alioth.cache/ms-playwright/ffmpeg-1009 Downloading Firefox 123.0 (playwright build v1440) from https://playwright.azureedge.net/builds/firefox/1440/firefox-debian-12.zip 84.7 MiB [====================] 100% 0.0s Firefox 123.0 (playwright build v1440) downloaded to home/alioth.cache/ms-playwright/firefox-1440 Downloading Webkit 17.4 (playwright build v1983) from https://playwright.azureedge.net/builds/webkit/1983/webkit-debian-12.zip 85.7 MiB [====================] 100% 0.0s Webkit 17.4 (playwright build v1983) downloaded to home/alioth.cache/ms-playwright/webkit-1983
playwright install
pip list 2>&1
Package Version ------------------ -------- certifi 2024.2.2 charset-normalizer 3.3.2 greenlet 3.0.3 idna 3.6 iniconfig 2.0.0 packaging 24.0 pip 23.0.1 playwright 1.42.0 pluggy 1.4.0 pyee 11.0.1 pytest 8.1.1 pytest-base-url 2.1.0 pytest-playwright 0.4.4 python-slugify 8.0.4 requests 2.31.0 setuptools 66.1.1 text-unidecode 1.3 typing_extensions 4.10.0 urllib3 2.2.1 wheel 0.38.4
Testing
Lets create a separate folder to test up PlayWright
in a proper way:
pwd 2>&1 cd ~ 2>&1 pwd 2>&1 mkdir -p playwright/tests 2>&1 ls playwright 2>&1
/home/alioth/Git/0--key/org-pub /home/alioth tests
ls ~/playwright 2>&1
tests
And the Python
file with a couple of pytest
s inside:
import re from playwright.sync_api import Page, expect def test_has_title(page: Page): page.goto("https://playwright.dev/") # Expect a title "to contain" a substring. expect(page).to_have_title(re.compile("Playwright")) def test_get_started_link(page: Page): page.goto("https://playwright.dev/") # Click the get started link. page.get_by_role("link", name="Get started").click() # Expects page to have a heading with the name of Installation. expect(page.get_by_role("heading", name="Installation")).to_be_visible()
Check up is it all on its place:
ls ~/playwright/tests 2>&1
test_example.py
Launch the pytest
up!
cd ~/playwright/ pwd 2>&1 pytest 2>&1
/home/alioth/playwright ============================= test session starts ============================== platform linux -- Python 3.11.2, pytest-8.1.1, pluggy-1.4.0 rootdir: /home/alioth/playwright plugins: base-url-2.1.0, playwright-0.4.4 collected 2 items tests/test_example.py .. [100%] ============================== 2 passed in 3.34s ===============================
Conclusion
Tests are run in headless mode meaning no browser UI will open up when running the tests. Results of the tests and test logs will be shown in the terminal.
Now, the output says loud and clear that it works as expected even
inside Emacs
Babel
environment.