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

[BUG] Playwright requires manual install of browsers #1085

Closed
Keeady opened this issue Feb 24, 2020 · 5 comments · Fixed by #1133
Closed

[BUG] Playwright requires manual install of browsers #1085

Keeady opened this issue Feb 24, 2020 · 5 comments · Fixed by #1133
Assignees

Comments

@Keeady
Copy link

Keeady commented Feb 24, 2020

Context:

  • Playwright Version: 0.11.1
  • Operating System: Mac

Code Snippet

const { chromium } = require('playwright'); 

chromium.launch().then((browser: any) => {
      console.log("launched")
})
  .catch((e: any) => console.log(e))

Describe the bug
After installing playwright for the first time, I tried to run it and got the error
Error: Chromium revision is not downloaded. Run "npm install"

I am in a yarn exclusive environment so I am unable to run npm install. However, yarn install or yarn add do not resolve the issue.

Only way to solve it was
node node_modules/playwright/install.js

@JoelEinbinder
Copy link
Contributor

I cannot repro this with yarn v1.22.0, playwright v0.11.1

If you create a new project does it still happen? Maybe your node_modules got corrupted somehow.

@JoelEinbinder JoelEinbinder removed the v1 label Feb 25, 2020
@Xiphe
Copy link

Xiphe commented Feb 25, 2020

I had the same issue but missed to note the yarn version I was on. Fixed it by installing latest yarn npm i -g yarn@1 (currently v1.22.0) and running yarn install --force in the project

@Xiphe
Copy link

Xiphe commented Feb 25, 2020

After I --force installed, I installed another package using latest yarn. That caused the downloaded browsers to disappear and I needed to --force-install again.

@JoelEinbinder
Copy link
Contributor

After I --force installed, I installed another package using latest yarn. That caused the downloaded browsers to disappear and I needed to --force-install again.

Interesting! That is indeed a major issue. I’ll try to repro tomorrow.

Just to be clear, by latest yarn you mean 1.22, not 2.0 aka berry?

@Xiphe
Copy link

Xiphe commented Feb 25, 2020

Just to be clear, by latest yarn you mean 1.22, not 2.0 aka berry?

Yes that was misleading. I'm on yarn v1.22.0

Quickfix:

Copy the .local-* folders somewhere else and link them after each install.

  ln -s ~/.local-chromium ./node_modules/playwright-core/.local-chromium
  ln -s ~/.local-firefox ./node_modules/playwright-core/.local-firefox
  ln -s ~/.local-webkit ./node_modules/playwright-core/.local-webkit

aslushnikov added a commit to aslushnikov/playwright that referenced this issue Feb 26, 2020
This patch makes it so all our packages, like `playwright` and
browser-specific flavors, download browsers to their
directories rather then using directory of `playwright-core`.

This way yarn@1 caches are not busted: they didn't expect that directory
content might change after packages's explicit install step
is failed, there's that was what we were doing.

Fixes microsoft#1085
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Feb 26, 2020
This patch makes it so all our packages, like `playwright` and
browser-specific flavors, download browsers to their
directories rather then using directory of `playwright-core`.

This way yarn@1 caches are not busted: they didn't expect that directory
content might change after packages's explicit install step
is failed, there's that was what we were doing.

Fixes microsoft#1085
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Feb 26, 2020
This patch makes it so all our packages, like `playwright` and
browser-specific flavors, download browsers to their
directories rather then using directory of `playwright-core`.

This way yarn@1 caches are not busted: they didn't expect that directory
content might change after packages's explicit install step
is failed, there's that was what we were doing.

Fixes microsoft#1085
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Feb 26, 2020
This patch makes it so all our packages, like `playwright` and
browser-specific flavors, download browsers to their
directories rather then using directory of `playwright-core`.

This way yarn@1 caches are not busted: they didn't expect that directory
content might change after packages's explicit install step
is failed, there's that was what we were doing.

Fixes microsoft#1085
aslushnikov added a commit to aslushnikov/playwright that referenced this issue Feb 26, 2020
This patch makes it so all our packages, like `playwright` and
browser-specific flavors, download browsers to their
directories rather then using directory of `playwright-core`.

This way yarn@1 caches are not busted: they didn't expect that directory
content might change after packages's explicit install step
is failed, there's that was what we were doing.

Fixes microsoft#1085
aslushnikov added a commit that referenced this issue Feb 26, 2020
This patch makes it so all our packages, like `playwright` and
browser-specific flavors, download browsers to their
directories rather then using directory of `playwright-core`.

This way yarn@1 caches are not busted: they didn't expect that directory
content might change after packages's explicit install step
is failed, there's that was what we were doing.

Fixes #1085
aslushnikov added a commit that referenced this issue Mar 19, 2020
This patch:
- removes `browserType.downloadBrowserIfNeeded()` method. The method
  turned out to be ill-behaving and cannot not be used as we'd like to (see #1085)
- adds a `browserType.setExecutablePath` method to set a browser
  exectuable.

With this patch, we take the following approach towards managing browser downloads:
- `playwright-core` doesn't download any browsers. In `playwright-core`, `playwright.chromium.executablePath()` returns `null` (same for firefox and webkit).
- clients of `playwright-core` (e.g. `playwright` and others) download browsers one way or another.
They can then configure `playwright` with executable paths and re-export the `playwright` object to their clients.
- `playwright`, `playwright-firefox`, `playwright-chromium` and `playwright-webkit` download 
browsers. Once browsers are downloaded, their executable paths are saved to a `.downloaded-browsers.json` file. This file is read in `playwright/index.js` to configure browser executable paths and re-export the API.
- special case is `install-from-github.js` that also cleans up old browsers.
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.

5 participants