codeceptjs / CodeceptJS

Supercharged End 2 End Testing Framework for NodeJS
http://codecept.io
MIT License
4.1k stars 723 forks source link

Problem with launching test with an exact tag #4340

Open MaksOuw opened 4 months ago

MaksOuw commented 4 months ago

What are you trying to achieve?

I have 2 tags in my tests file :

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

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(' ====================================')
github-actions[bot] commented 1 month ago

This issue is stale because it has been open for 90 days with no activity.