codeceptjs / codeceptjs/CodeceptJS

Parallel "--by pool" not working, hanging and spamming startup banner

Aperta
#5,503 1 commento 1 reazione 0 assegnatari Vedi su GitHub
stale
Lingua principale
JavaScript
Stelle
4.2k
Fork
757
Merge medio
2g 9h
PR unite (30g)
16

Descrizione

We have historically suffered from idle workers due to the wide range of test duration, so when I saw the `--by pool` mode I thought we'd be able to speed up our tests for free basically ;) (ref: https://codecept.io/parallel/#dynamic-test-pooling-mode)

But it seems to not be working as expected. A couple of issues I noticed:

1. When I run with pool mode it seems to just hang after a certain amount of time without any clear reason why.

We're using Puppeteer, and my suspicion is that the browser's WebSocket connection keeps the Node event loop alive in the worker thread after the port is closed, so the parent never sees the worker exit and _finishRun() never gets called.

2. Also, the startup message is fired every time a worker takes a test, so the output gets absolutely hammered which is not ideal for CI

e.g. (example output)
```
CodeceptJS v3.7.7 #StandWithUkraine
Running tests in 1 workers...

CodeceptJS v3.7.7 #StandWithUkraine
Using test root "/home/user/project"

Login suite --
[Worker 01] ✔ Login suite › User can log in in 3401ms
✔ User can log in in 3401ms

OK | 1 passed // 4s
CodeceptJS v3.7.7 #StandWithUkraine
Using test root "/home/user/project"

Login suite --
[Worker 01] ✔ Login suite › User sees error on bad credentials in 2980ms
✔ User sees error on bad credentials in 2980ms

OK | 2 passed // 8s
CodeceptJS v3.7.7 #StandWithUkraine
Using test root "/home/user/project"
...

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con la modalità dinamica di pooling dei test descritta nella documentazione collegata e traccia il ciclo di vita dei worker intorno a _finishRun(). Riproduci il blocco con Puppeteer e verifica che i worker terminino correttamente e che il banner di avvio venga emesso una sola volta, anziché per ogni assegnazione di test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript, node.js
Ambito
testing-qa
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.