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

[Feature] Launch doctor #2745

Closed
11 tasks done
pavelfeldman opened this issue Jun 28, 2020 · 18 comments
Closed
11 tasks done

[Feature] Launch doctor #2745

pavelfeldman opened this issue Jun 28, 2020 · 18 comments
Assignees

Comments

@pavelfeldman
Copy link
Member

pavelfeldman commented Jun 28, 2020

Give us a script that we could use in the target environment that would tell us if Playwright will work there of point to the missing dependencies, libraries or arguments we need to pass into it.

Categorization of linked bugs:

The scope of this bug:

  • Linux
    • missing dependencies
    • missing libraries
    • Chromium sandboxing - approach
    • libc version mismatch for Firefox when running on Ubuntu 16
    • Ubuntu 20.04 WebKit support
  • Windows
    • missing media pack (Windows N, Server)
    • missing C Runtime Redistributable
    • missing DLLs
  • Mac - no problems so far with Mac.
@pavelfeldman
Copy link
Member Author

Linking #2298

@pavelfeldman
Copy link
Member Author

Linking #2321

@pavelfeldman
Copy link
Member Author

#2386

@pavelfeldman
Copy link
Member Author

#2404

@pavelfeldman
Copy link
Member Author

#2559

@pavelfeldman
Copy link
Member Author

#2621

@pavelfeldman
Copy link
Member Author

#2624

@pavelfeldman
Copy link
Member Author

#2660

@pavelfeldman
Copy link
Member Author

#2645

@pavelfeldman
Copy link
Member Author

#2663

@arjunattam
Copy link
Contributor

In addition to finding missing dependencies, this tool can also check for OS compatibility: eg. Firefox needs Ubuntu 18+. For example: #2738.

@pavelfeldman
Copy link
Member Author

#2840

@pavelfeldman
Copy link
Member Author

#2901

aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 15, 2020
Missing dependencies is #1 problem with launching on Linux.

This patch starts validating browser dependencies before launching
browser on Linux. In case of a missing dependency, we will abandon
launching with an error that lists all missing libs.

References microsoft#2745
aslushnikov added a commit that referenced this issue Jul 15, 2020
Missing dependencies is #1 problem with launching on Linux.

This patch starts validating browser dependencies before launching
browser on Linux. In case of a missing dependency, we will abandon
launching with an error that lists all missing libs.

References #2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 17, 2020
This patch starts putting package names to install on Ubuntu instead
of missing dependencies list.

The mapping of library to package name is obtained using the following
script: https://gist.github.com/aslushnikov/2766200430228c3700537292fccad064

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 17, 2020
This patch starts putting package names to install on Ubuntu instead
of missing dependencies list.

The mapping of library to package name is obtained using the following
script: https://gist.github.com/aslushnikov/2766200430228c3700537292fccad064

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 17, 2020
This patch starts putting package names to install on Ubuntu instead
of missing dependencies list.

The mapping of library to package name is obtained using the following
script: https://gist.github.com/aslushnikov/2766200430228c3700537292fccad064

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 17, 2020
This patch starts putting package names to install on Ubuntu instead
of missing dependencies list.

The mapping of library to package name is obtained using the following
script: https://gist.github.com/aslushnikov/2766200430228c3700537292fccad064

References microsoft#2745
@mxschmitt
Copy link
Member

mxschmitt commented Jul 17, 2020

Maybe WebKit on Heroku which crashes is also caused by not having all the dependencies installed:
playwright-community/heroku-playwright-buildpack#2

Discussion: https://playwright.slack.com/archives/C0141EZ6ZNH/p1593729511002600?thread_ts=1593729511.002600&cid=C0141EZ6ZNH

We can try it out once its ready.

aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 17, 2020
This patch starts putting package names to install on Ubuntu instead
of missing dependencies list.

The mapping of library to package name is obtained using the following
script: https://gist.github.com/aslushnikov/2766200430228c3700537292fccad064

References microsoft#2745
aslushnikov added a commit that referenced this issue Jul 17, 2020
…3013)

This patch starts putting package names to install on Ubuntu instead
of missing dependencies list.

The mapping of library to package name is obtained using the following
script: https://gist.github.com/aslushnikov/2766200430228c3700537292fccad064

References #2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 18, 2020
We see a lot of issues with users struggling with Chromium sandboxing.
We tried fighting these with Docker configs, but it requires running
Docker with special seccomp profile.

As a result, majority ends up using `--no-sandbox` anyway. This patch
saves our users a hassle and starts using `--no-sandbox` by default.

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 18, 2020
We use this mapping to provide recommendations on which packages
to install on Linux distributions.

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 24, 2020
This establishes a single naming for all our blobs with browser
builds that we upload to CDN: `<browser-name>-<os-version>`

- `<browser-name>` is either `firefox` or `webkit`.
- `os-version` is the OS that was used to produce the build.

References microsoft#2745
aslushnikov added a commit that referenced this issue Jul 24, 2020
This establishes a single naming for all our blobs with browser
builds that we upload to CDN: `<browser-name>-<os-version>`

- `<browser-name>` is either `firefox` or `webkit`.
- `os-version` is the OS that was used to produce the build.

References #2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 24, 2020
This teaches Launch Doctor to print a command to install missing
packages on Ubuntu 20.04.

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 24, 2020
The original plan was to rnu some checks against libc version the
binary is compiled with, but these turn out to be a little complicated:
parsing out libc version from both static binary and host system
requires text processing, and it's hard to make sure it works reliably
across distributions.

Instead, let's start with a very particular check against running
Firefox on Ubuntu 16.04.

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 24, 2020
This teaches Launch Doctor to print a command to install missing
packages on Ubuntu 20.04.

References microsoft#2745
aslushnikov added a commit that referenced this issue Jul 24, 2020
The original plan was to rnu some checks against libc version the
binary is compiled with, but these turn out to be a little complicated:
parsing out libc version from both static binary and host system
requires text processing, and it's hard to make sure it works reliably
across distributions.

Instead, let's start with a very particular check against running
Firefox on Ubuntu 16.04.

References #2745
aslushnikov added a commit that referenced this issue Jul 24, 2020
This teaches Launch Doctor to print a command to install missing
packages on Ubuntu 20.04.

References #2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 27, 2020
Since we were bundling the library with the browsers before, the
mapping was missing.

References microsoft#2745
aslushnikov added a commit that referenced this issue Jul 27, 2020
Since we were bundling the library with the browsers before, the
mapping was missing.

References #2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 28, 2020
This refactors script to output per-browser package dependencies that
could be easily copied over to the Github Action.

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 28, 2020
This refactors script to output per-browser package dependencies that
could be easily copied over to the Github Action.

References microsoft#2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 29, 2020
WebKit WPE assumes `libglesv2.so` is available on the host system
and uses `dlopen` to open it.

This patch starts using `ldconfig -p` to check if the library
exists on the system.

References microsoft#2745
aslushnikov added a commit that referenced this issue Jul 29, 2020
WebKit WPE assumes `libglesv2.so` is available on the host system
and uses `dlopen` to open it.

This patch starts using `ldconfig -p` to check if the library
exists on the system.

References #2745
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Jul 29, 2020
aslushnikov pushed a commit that referenced this issue Jul 30, 2020
Also add solution file so that VS doesn't recreate it every time.

#2745
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

No branches or pull requests

4 participants