codeceptjs / codeceptjs/CodeceptJS

tryTo() triggering false positive to pauseOnFail - stopping at first scenario

Abierto
#4,516 4 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
JavaScript
Estrellas
4.2k
Forks
757
Merge medio
2 d 9 h
PR fusionados (30 d)
16

Descripción

#### What are you trying to achieve?

Trying to run 2 scenarios with one containing tryTo().

#### What do you get instead?

With the flag -p pauseOnFail, codeceptjs is stopping after scenario 1, even when no error or failure happens.

I believe this is a false positive triggered by tryTo() as seeing in the verbose:

**[1] Error (Non-Terminated) | Error: Element "NOPE" is not visible on page. | (err) => { step.status = 'failed'; step.endTime =**

> Provide console output if related. Use `--verbose` mode for more details.

```bash
> npx codeceptjs run ./tests/test.js --verbose -p pauseOnFail

***************************************
nodeInfo: 18.20.4
osInfo: Linux 5.15 Ubuntu 22.04.4 LTS 22.04.4 LTS (Jammy Jellyfish)
cpuInfo: (32) x64 Intel(R) Core(TM) i9-14900HX
chromeInfo: Not Found
edgeInfo: "N/A"
firefoxInfo: undefined
safariInfo: N/A
If you need more detailed info, just run this: npx codeceptjs info
***************************************
CodeceptJS v3.6.6 #StandWithUkraine
Using test root "xxx"
Helpers: Playwright, Hooks
Plugins: screenshotOnFail, tryTo, retryFailedStep, retryTo, eachElement, pauseOnFail

Fixed Assets --
[1] Starting recording promises
Timeouts:
› [Session] Starting singleton browser session
01 - Test
I am on page "https://github.com/login"
I am on page "https://github.com/login"
Info: RetryFailedStep plugin is disabled inside tryTo block
I see element "NOPE"
I see element "NOPE"
[1] Error (Non-Terminated) | Error: Element "NOPE" is not visible on page. | (err) => { step.status = 'failed'; step.endTime = ...
› Unsuccessful try > Error: Element "NOPE" is not visible on page.
✔ OK in 3961ms

Interactive shell started
Use JavaScript syntax to try steps in action
- Press ENTER to run the next step
- Press TAB twice to see all available commands
- Type exit + Enter to exit the interactive shell
- Prefix => to run js commands
I.
```

> Provide test source code if related

```js
Feature('Fixed Assets');

Scenario('01 - Test', async ({ I }) => {
await I.amOnPage('https://github.com/login');
await tryTo(() => I.seeElement('NOPE'))
});

Scenario('02 - Test', async ({ I }) => {
await I.amOnPage('https://github.com/login');
});
```

### Details

* CodeceptJS version: 3.6.6
* NodeJS Version: 18.20.4
* Operating System: Ubuntu 22.04.4
* Playwright
* Configuration file:

```js
require('dotenv').config();
const http = require('http');
require('./heal');
const { setHeadlessWhen, setCommonPlugins } = require('@codeceptjs/configure');

// Turn on headless mode when running with HEADLESS=true environment variable
// Export HEADLESS=true && npx codeceptjs run
setHeadlessWhen(process.env.HEADLESS);

// Enable all common plugins https://github.com/codeceptjs/configure#setcommonplugins
setCommonPlugins();

/** @type {CodeceptJS.MainConfig} */
exports.config = {
name: 'xxx',
// For local development we rename the files we want to test
tests: './tests/*.js',
output: './output',
helpers: {
Playwright: {
browser: 'chromium',
url: 'http://localhost',
// Default time for all wait* actions
waitForTimeout: 60000,
// Time to wait after each action
waitForAction: 1000,
// Highlight element only work with --verbose
highlightElement: true,
show: true,
video: true,
keepVideoForPassedTests: true,
windowSize: '1024x768',
recordVideo: { // Seems to not work but required to use windowSize -- solved in 3.6.2
size: {
width: 1024,
height: 768
}
},
trace: false
},
Hooks: {
require: './events/hooks.js'
},
},
}
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.