microsoft / playwright

Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.
https://playwright.dev
Apache License 2.0
63.71k stars 3.45k forks source link

[NPM] Error: Requiring @playwright/test second time - when using 2 separate npm packages #31478

Open msieorbus opened 5 days ago

msieorbus commented 5 days ago

I have two separate npm packages which are on internal organization npm feed. Lets call them

all packages using @playwright/test, packageA is "main" one and packageB is using packageA. When i later install packageB to my testingProject i cannot run tests due to Error: Requiring @playwright/test second time

How to create just one instance of playwright/test, i have playwright.config.ts only in my testing project. I was trying to use only playwright-core in packages but it wont work in my case as i using expect in them which is not included in core. Maybe i should export @playwright/test from packageA, but then how to setup testing project without it ?

pavelfeldman commented 4 days ago

Make sure you are using the same version of Playwright in your packages. Npm will perform all the necessary deduplication. You can find the source of the problem via examining package-lock. Most likely you pinned different playwright versions in your package.json deps.

msieorbus commented 2 days ago

Make sure you are using the same version of Playwright in your packages. Npm will perform all the necessary deduplication. You can find the source of the problem via examining package-lock. Most likely you pinned different playwright versions in your package.json deps.

In my "base" packageA i added in package.json dependencies: image

so once i install packageA in packageB (packageB have packageA in dependencies) and later install packageB in testing Project it is using those dependencies so versions are for sure the same. I am able to import everything correctly. However i have still this error when im trying to run my tests...

Error: Requiring @playwright/test second time,

Maybe my playwright.config.ts is in wrong package/place ? It should be only in testing project ?

mxschmitt commented 1 day ago

Looking at the package-lock.json should usually give a clue on if multiple @playwright/test versions are installed or not. We need something we can clone and reproduce locally in order to triage this further. Thanks for your understanding!

It also depends on how you distribute your util package etc. (esbuild or pure TypeScript etc.)

msieorbus commented 1 day ago

I used TSUP to build package. I added now @playwright/testas a dev dependencies in all 3 projects. Ive added packageA and package B to my testing project using yarn add -D //relative-pathto-GZ-tarball (before that i used yarn pack ) i checked yarn lock and it seems that its installted only once (as expected as it is in dev dependencies) but still have this issue however...

mxschmitt commented 23 hours ago

Would it be possible to share a reproduction? Otherwise we are not able to act on it, unfortunately. Thank you!