playwright icon indicating copy to clipboard operation
playwright copied to clipboard

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

Open msieorbus opened this issue 1 year ago • 1 comments
trafficstars

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

  • packageA
  • packageB
  • testingProject

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 ?

msieorbus avatar Jun 28 '24 09:06 msieorbus

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.

pavelfeldman avatar Jun 28 '24 16:06 pavelfeldman

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 ?

msieorbus avatar Jul 01 '24 10:07 msieorbus

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.)

mxschmitt avatar Jul 01 '24 16:07 mxschmitt

I used TSUP to build package. I added now @playwright/test as 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...

msieorbus avatar Jul 02 '24 12:07 msieorbus

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

mxschmitt avatar Jul 02 '24 15:07 mxschmitt

I'll close it in the meantime while we don't have a reproduction. The issue is usually that you have multiple @playwright/test versions in your project. Ideally the utils package should not depend on @playwright/test at all, and only your main project should do. Feel free to re-file with a repro.

mxschmitt avatar Jul 09 '24 09:07 mxschmitt