step.duration reflects only the last retry attempt (HelperStep.run() overwrites startTime)
Mantenedores costumam responder em até 2 dias
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript, nodejs, playwright
Direção de pesquisa
Comece por lib/step/helper.js e lib/step/func.js, onde run() redefine startTime, depois compare o comportamento deles com a condição de proteção em lib/step/record.js. Verifique como duration é calculada em lib/step/base.js e procure testes de retry existentes. O trabalho estará concluído quando a duração abranger desde a primeira tentativa até o sucesso ou a falha final.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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)
- Linguagem predominante
- JavaScript
- Estrelas
- 4.2k
- Forks
- 754
- Merge médio
- 2d 11h
- PRs com merge (30d)
- 33
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de codeceptjs/CodeceptJS
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
codeceptjs/CodeceptJS#5773 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
`I.waitForFile` (FileSystem helper) fails if directory does not exist (yet)Talvez já em andamento @danielrentz assumiu há 274 dias. Abertastale
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
codeceptjs/CodeceptJS#5420 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
stale
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
codeceptjs/CodeceptJS#4958 · 10 comentários · 2 reações ·
Mantenedores costumam responder em até 2 dias
-
stale
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
codeceptjs/CodeceptJS#4778 · 3 comentários ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
codeceptjs/CodeceptJS#5772 ·
Mantenedores costumam responder em até 2 dias
Todas as issues de codeceptjs/CodeceptJS
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 73/100
microsoft/monaco-editor#5563 ·
Mantenedores costumam responder em até 1 dia
-
Package downloads never retry: getUrlWithResuming's retry catch cannot see a rejected requestAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
account: profile bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 5 dias
-
ai-driven-fuzzing bug claude Minor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
linagora/cozy-client#1777 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia