Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

playwright in Docker cant launch chrome #297

Closed
jmtatsch opened this issue Apr 1, 2024 · 4 comments · Fixed by #317
Closed

playwright in Docker cant launch chrome #297

jmtatsch opened this issue Apr 1, 2024 · 4 comments · Fixed by #317

Comments

@jmtatsch
Copy link
Contributor

jmtatsch commented Apr 1, 2024

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)
@MokshithAnnagiri
Copy link

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

@jmtatsch
Copy link
Contributor Author

jmtatsch commented Apr 1, 2024

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

@jmtatsch
Copy link
Contributor Author

jmtatsch commented Apr 2, 2024

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

@ChemEngineer
Copy link

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!

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 a pull request may close this issue.

3 participants