step.duration reflects only the last retry attempt (HelperStep.run() overwrites startTime)
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, nodejs, playwright
Direzione di ricerca
Inizia da lib/step/helper.js e lib/step/func.js, dove run() reimposta startTime, poi confronta il loro comportamento con la condizione di guardia in lib/step/record.js. Controlla come viene calcolato duration in lib/step/base.js e cerca i test di retry esistenti. Il lavoro è completato quando la durata copre il periodo dal primo tentativo fino al successo o al fallimento finale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happens
When a helper step is retried (e.g. by the retryFailedStep plugin), step.duration covers only the last attempt instead of the whole step.
In our run, a I.click(...) step was retried for ~50 seconds before it finally failed. The HTML report (@testomatio/reporter, which shows step.duration) listed it as 3ms, while the scenario took 49s 697ms.
Cause
lib/step/record.js deliberately keeps the start time of the first attempt:
() => {
if (!step.startTime) {
// step can be retries
event.emit(event.step.started, step)
step.startTime = +Date.now()
}
return (val = step.run(...args))
},
But HelperStep.run() in lib/step/helper.js overwrites it on every attempt:
run() {
this.args = Array.prototype.slice.call(arguments)
this.startTime = +Date.now()
...
So duration (endTime - startTime in lib/step/base.js) is measured from the start of the last retry. FuncStep.run() in lib/step/func.js has the same assignment.
Expected
step.duration covers all attempts, from the first start to the final pass or failure, as the guard in record.js intends. A possible fix is to set startTime in run() only when it isn't already set.
Steps to reproduce
- Enable
retryFailedStep. - Run a step that fails for a while and is retried, e.g.
I.click()on an element that never shows up. - Read
step.durationin anevent.step.finishedlistener, or look at the step time in any reporter that uses it. It shows only the last attempt's duration (a few ms).
Environment
- CodeceptJS 4.2.2 (also present on current
main) - Playwright helper, Bun runtime
Created by AI agent (Claude Code)
- Lingua principale
- JavaScript
- Stelle
- 4.2k
- Fork
- 754
- Merge medio
- 2g 6h
- PR unite (30g)
- 33
Preparare l'ambiente
- Include un Dockerfile o un 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 codeceptjs/CodeceptJS
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
codeceptjs/CodeceptJS#5773 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
`I.waitForFile` (FileSystem helper) fails if directory does not exist (yet)Forse già presa @danielrentz l’ha presa 277 giorni fa. Apertastale
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
codeceptjs/CodeceptJS#5420 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
stale
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
codeceptjs/CodeceptJS#4958 · 10 commenti · 2 reazioni ·
I maintainer di solito rispondono entro 2 giorni
-
stale
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
codeceptjs/CodeceptJS#4778 · 3 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Scenario Steps report wrong line/column for TypeScript include modulesForse già presa @kobenguyent l’ha presa 2 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
codeceptjs/CodeceptJS#5772 · 1 reazione · 2 assegnatari ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di codeceptjs/CodeceptJS
Issue simili
-
Site Suggestion: bullseyeAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 25 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
libnativeapi/nativeapi#21 ·
-
area: core complexity: easy impact: medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
ueberdosis/tiptap#8668 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno