codeceptjs / CodeceptJS

Supercharged End 2 End Testing Framework for NodeJS

Home Page:http://codecept.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Problem with launching test with an exact tag

MaksOuw opened this issue · comments

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

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:
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(' ====================================')