codeceptjs / codeceptjs/CodeceptJS

Problem with launching test with an exact tag

Open
#4,340 1 comment 0 reactions 0 assignees View on GitHub
stale
Dominant language
JavaScript
Stars
4.2k
Forks
757
Avg merge
2d 9h
Merged PRs (30d)
16

Description

#### What are you trying to achieve?

I have 2 tags in my tests file :
- @cit-mit
- @cit-mit-subseq

I'm trying to launch tests with @cit-mit tag only.

#### What do you get instead?

I have the @cit-mit tests launched, then the @cit-mit-subseq launched too.

#### Commands tested to launch test
```bash
npx codeceptjs run --features --config=./codecept.conf.js --grep '@cit-mit'
npx codeceptjs run --features --config=./codecept.conf.js --grep '(?=.*@cit-mit)'
```

I know I can play only @cit-mit tag with the grep `(?=.*@cit-mit)^(?!.*@cit-mit-subseq)`, but in the next weeks I'll have more tests with @cit-mit "prefix" tag so I'll have to edit my grep and I don't want this.

It'll be nice if there is an `exact` keyword or something like this to lock the pattern to the only tag we provide, and not every tags starting with the one given.

### Details

* CodeceptJS version: 3.5.6
* NodeJS Version: 18.18.0
* Operating System: Debian 12.1
* puppeteer || webdriverio || testcafe version (if related) /
* Configuration file:

```js
const { output } = require('codeceptjs')
require('dotenv').config({ path: '.env' })
if (process.env.ENV === undefined) {
process.env['ENV'] = 'preprod'
}
require('dotenv').config({ path: 'codecept.' + process.env.ENV + '.env' })

exports.config = {
output: './output',
helpers: {
REST: {
endpoint: process.env.GATEWAY_URL,
timeout: 60000,
},
WebDriver: {
url: 'http://localhost',
host: process.env.SELENIUM_HOST === undefined ? 'localhost' : process.env.SELENIUM_HOST,
browser: 'chrome',
desiredCapabilities: {
chromeOptions: {
args: ['--headless', '--disable-gpu', '--no-sandbox'],
},
},
},
ChaiWrapper: {
require: 'codeceptjs-chai',
},
JSONResponse: {},
CustomWebDriver: {
require: './lib/CustomWebDriver.js',
},
},
include: {
I: './steps_file.js',
lib: './lib/index',
context: './lib/contextAPI.js',
inputOrder: './data/inputs/input.order.js',
endpoints: './data/data.endpoints.js',
mappings: './data/data.mappings.js',
merchants: './data/data.merchants.js',
},
mocha: {},
bootstrap: null,
timeout: null,
teardown: null,
hooks: [],
gherkin: {
features: './features/**/*.feature',
steps: [
'./step_definitions/_common.steps.js',
'./step_definitions/hpayment.steps.js',
'./step_definitions/order.steps.js',

'./step_definitions/hpayment/hpayment.nominal.steps.js',
'./step_definitions/order/order.cit-mit.steps.js',
'./step_definitions/order/order.nominal.steps.js',
'./step_definitions/order/order.sdd.steps.js',
'./step_definitions/order/order.given.steps.js',
'./step_definitions/order/sca.preference.steps.js',
],
},
plugins: {
hook: {
require: './plugins/gateway-qa-hooks.js',
enabled: true,
},
screenshotOnFail: {
enabled: true,
uniqueScreenshotNames: true,
},
tryTo: {
enabled: true,
},
retryFailedStep: {
enabled: true,
},
retryTo: {
enabled: true,
},
eachElement: {
enabled: true,
},
pauseOnFail: {},
},
stepTimeout: 0,
stepTimeoutOverride: [
{
pattern: 'wait.*',
timeout: 0,
},
{
pattern: 'amOnPage',
timeout: 0,
},
],
tests: './tests/**/*.js',
name: 'gateway-qa',
}

output.success(' ==================================== ')
output.success(' ENVIRONNEMENT: ' + process.env.ENV + ' ')
output.success(' GATEWAY_URL: ' + process.env.GATEWAY_URL + ' ')
output.success(' PCI_URL: ' + process.env.PCI_URL + ' ')
output.success(' ====================================')
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.