codeceptjs / codeceptjs/CodeceptJS
Test timeout doesn't work with BDD scenarios
- Linguagem predominante
- JavaScript
- Estrelas
- 4.2k
- Forks
- 757
- Merge médio
- 2d 9h
- PRs com merge (30d)
- 16
Descrição
#### What are you trying to achieve?
I would like to define a test timeout in order to prevent being stuck during the execution - native applications & websites can be down / blocked during the execution and I want to skip a test when it reaches a limit.
So I tried (without success) to use the 2 following features available in codeceptjs:
1. Timeout setting in the configuration file: https://codecept.io/configuration/#configuration
```
exports.config = {
...
timeout: 10000,
...
}
```
2. Dynamic timeout override by using advanced options: https://codecept.io/advanced/#test-options
```
Before((test) => {
test.timeout(10000);
});
```
#### What do you get instead?
- **Approach 1 - Timeout setting**: has no effect at all
- **Approach 2 - Dynamic timeout override**: test execution continues until the end and fails with timeout message if execution exceeds the threshold (see screenshot)
_Example: timeout set to 10s, execution ran in 36s before displaying the error message_

### Details
* CodeceptJS version: 3.1.2
* NodeJS Version: 16.4.2
* Operating System: Mac OS
* Configuration file:
```js
exports.config = {
output: './output',
timeout: 10000,
helpers: {
Playwright: {
url: 'http://localhost',
show: true,
browser: 'chromium',
waitForNavigation: 'domcontentloaded'
},
ChaiWrapper: {
require: "codeceptjs-chai"
}
},
include: {},
mocha: {},
bootstrap: null,
teardown: null,
hooks: [],
gherkin: {
features: './features/*.feature',
steps: './step_definitions/*.js'
},
plugins: {
screenshotOnFail: {
enabled: true
},
pauseOnFail: {},
retryFailedStep: {
enabled: true
},
tryTo: {
enabled: true
}
},
tests: './*_test.js',
name: 'cjs-training'
}
```
Guia de contribuição
Direção de pesquisa
Reproduza o problema com a configuração mostrada do CodeceptJS, o helper do Playwright e o cenário BDD; em seguida, rastreie como o timeout global e o timeout do hook Before são aplicados. Confirme o comportamento para ambas as abordagens e adicione um teste de regressão mostrando que um cenário para no limite configurado.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- javascript, node.js, playwright
- Domínio
- testing
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100