devika icon indicating copy to clipboard operation
devika copied to clipboard

playwright in Docker cant launch chrome

Open jmtatsch opened this issue 1 year ago • 3 comments

Describe the bug When the agent attempts to use the search functionality it tries to launch chrome but fails despite playwright being installed in the devika.dockerfile

devika-backend-engine-1  | 24.04.01 14:41:17: root: INFO   : Search : google
devika-backend-engine-1  | Exception in thread Thread-4 (<lambda>):
devika-backend-engine-1  | Traceback (most recent call last):
devika-backend-engine-1  |   File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
devika-backend-engine-1  |     self.run()
devika-backend-engine-1  |   File "/usr/lib/python3.11/threading.py", line 975, in run
devika-backend-engine-1  |     self._target(*self._args, **self._kwargs)
devika-backend-engine-1  |   File "/home/nonroot/devika/devika.py", line 94, in <lambda>
devika-backend-engine-1  |     thread = Thread(target=lambda: agent.execute(message, project_name, search_engine))
devika-backend-engine-1  |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/src/agents/agent.py", line 336, in execute
devika-backend-engine-1  |     search_results = self.search_queries(queries, project_name, engine)
devika-backend-engine-1  |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/src/agents/agent.py", line 82, in search_queries
devika-backend-engine-1  |     browser = Browser()
devika-backend-engine-1  |               ^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/src/browser/browser.py", line 15, in __init__
devika-backend-engine-1  |     self.browser = chromium.launch()
devika-backend-engine-1  |                    ^^^^^^^^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/.venv/lib/python3.11/site-packages/playwright/sync_api/_generated.py", line 13854, in launch
devika-backend-engine-1  |     self._sync(
devika-backend-engine-1  |   File "/home/nonroot/devika/.venv/lib/python3.11/site-packages/playwright/_impl/_sync_base.py", line 113, in _sync
devika-backend-engine-1  |     return task.result()
devika-backend-engine-1  |            ^^^^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/.venv/lib/python3.11/site-packages/playwright/_impl/_browser_type.py", line 94, in launch
devika-backend-engine-1  |     Browser, from_channel(await self._channel.send("launch", params))
devika-backend-engine-1  |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/.venv/lib/python3.11/site-packages/playwright/_impl/_connection.py", line 59, in send
devika-backend-engine-1  |     return await self._connection.wrap_api_call(
devika-backend-engine-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/.venv/lib/python3.11/site-packages/playwright/_impl/_connection.py", line 509, in wrap_api_call
devika-backend-engine-1  |     return await cb()
devika-backend-engine-1  |            ^^^^^^^^^^
devika-backend-engine-1  |   File "/home/nonroot/devika/.venv/lib/python3.11/site-packages/playwright/_impl/_connection.py", line 97, in inner_send
devika-backend-engine-1  |     result = next(iter(done)).result()
devika-backend-engine-1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^
devika-backend-engine-1  | playwright._impl._errors.Error: Executable doesn't exist at /home/nonroot/devika/.cache/ms-playwright/chromium-1105/chrome-linux/chrome
devika-backend-engine-1  | ╔════════════════════════════════════════════════════════════╗
devika-backend-engine-1  | ║ Looks like Playwright was just installed or updated.       ║
devika-backend-engine-1  | ║ Please run the following command to download new browsers: ║
devika-backend-engine-1  | ║                                                            ║
devika-backend-engine-1  | ║     playwright install                                     ║
devika-backend-engine-1  | ║                                                            ║
devika-backend-engine-1  | ║ <3 Playwright Team                                         ║
devika-backend-engine-1  | ╚════════════════════════════════════════════════════════════╝

is playwright maybe only installed for root and not for nonroot user?

To Reproduce docker compose build docker compose up and then launch a demo project

Expected behavior expect it to perform search successfully

Desktop (please complete the following information):

  • OS: Ubuntu 22 (server)
  • Browser safari (client)

jmtatsch avatar Apr 01 '24 14:04 jmtatsch

may be this could work

python -m venv venv source .venv/bin/activate pip install -r requirements.txt playwright install --with-deps python3 devika.py

annagirimokshith avatar Apr 01 '24 17:04 annagirimokshith

@sounishnath003 is there no ms-playwright in /home/nonroot/devika/.cache/ in your container too?

jmtatsch avatar Apr 01 '24 18:04 jmtatsch

It works if one just reinstalls the browsers without deps as user at the end of the docker file USER nonroot RUN playwright install

jmtatsch avatar Apr 02 '24 08:04 jmtatsch

It works if one just reinstalls the browsers without deps as user at the end of the docker file USER nonroot RUN playwright install

It seems so obvious when somebody else figures it out. Thanks!

ChemEngineer avatar Apr 06 '24 23:04 ChemEngineer