bug: Stencil can resolve incorrect jest-runner dependency when using pnpm
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
- Ambito
- testing-qa, tooling
Direzione di ricerca
Riproduci il fallimento di packages/stencil con pnpm install seguito da pnpm test.spec, quindi traccia la risoluzione del runner da @stencil/core/testing/index.js utilizzando lo stack trace fornito. Il lavoro è completato quando viene selezionato il runner Jest v29 per il progetto Stencil nonostante un altro pacchetto del workspace utilizzi Jest v26 e i test vengano completati correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Prerequisites
- I have read the Contributing Guidelines.
- I agree to follow the Code of Conduct.
- I have searched for existing issues that already report this problem, without success.
Stencil Version
v4.9.0
Current Behavior
In a mono-repo using pnpm where you have mixed dependency versions of Jest, specifically the jest-runner package, Stencil will incorrectly use an older version of the jest-runner package, even though the Stencil project may be configured with a newer version.
For example, in a project that has Jest v29 for the Stencil project, but another package with Jest v26, Stencil will use the test facade for Jest v29, but use the jest-runner@26 instance when executing the test runner.
This results in an exception:
TypeError: Cannot read properties of undefined (reading 'serial')
I've modified the bundle to provide the entire stack trace:
TypeError: Cannot read properties of undefined (reading 'serial')
at e.runTests (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/[email protected]/node_modules/jest-runner/build/index.js:108:27)
at e.runTests (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@stencil/core/testing/index.js:926:19)
at TestScheduler.scheduleTests (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@jest/core/build/TestScheduler.js:283:32)
at async runJest (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@jest/core/build/runJest.js:367:19)
at async _run10000 (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@jest/core/build/cli/index.js:343:7)
at async runCLI (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@jest/core/build/cli/index.js:198:3)
at async runJest (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@stencil/core/testing/index.js:900:10)
at async Object.run (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@stencil/core/testing/index.js:12865:10)
at async taskTest (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@stencil/core/cli/index.cjs:2395:24)
at async runTask (/Users/sean/Documents/ionic/issues/ionic-framework/node_modules/.pnpm/@[email protected]/node_modules/@stencil/core/cli/index.cjs:2514:13)
This behavior is likely driven from pnpm hoisting the dependency, changing the execution location from which Stencil uses to grab the jest-runner instance and invoke it. I suspect we will need to make stricter assumption around where this instance lives, such as from the rootDir of the project, instead of from the executing node_modules.
Expected Behavior
Stencil should resolve its own dependency of the jest-runner, regardless of if the workspace is using another dependency for another project in the mono-repo.
System Info
`npx stencil info` fails with:
> npm ERR! could not determine executable to run
Steps to Reproduce
- Clone the repository - it is a mono-repo.
- Install pnpm, if not already installed: https://pnpm.io/installation
- Install project dependencies:
pnpm install - Run unit tests for the Stencil project:
cd packages/stencil && pnpm test.spec - Observe: Exception is thrown, tests do not run successfully.
- Expected: Tests run successfully.
Code Reproduction URL
https://github.com/sean-perkins/stencil-pnpm-issue
Additional Information
Workarounds:
- Downgrade to the lowest version of Jest that is compatible with Stencil, for example with the reproduction downgrading the Stencil project to Jest v26.
- Upgrade all packages in the mono-repo to the same version of Jest as the Stencil project.
- Use npm or a package manager that does not hoist dependencies.
- Lingua principale
- TypeScript
- Stelle
- 13.2k
- Fork
- 865
- Merge medio
- 2g 16h
- PR unite (30g)
- 29
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di stenciljs/core
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug(mock-doc): `Element.toggleAttribute()` is missing, so components that use it fail during SSRApertatriage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Stencil FOUC styles should use @layer to avoid cascade conflicts with React 19Forse già presa @johnjenkins l’ha presa 230 giorni fa. ApertaStencil v5
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
stenciljs/core#7016 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 22/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di stenciljs/core
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AykutSarac/jsoncrack.com#616 ·
-
nip27: long hashtag swallows the rest of the content, lone # gives an empty hashtagForse già presa @bardrop l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
nbd-wtf/nostr-tools#578 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
backnotprop/plannotator#3427 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
microsoft/Power-CAT-Copilot-Studio-Kit#942 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG]: Duplicate preposition in heading and unformatted feedback text on Strengthen Argument pageApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AOSSIE-Org/DebateAI#801 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno