0

我正在使用 codeceptjs 库来开发和运行自动化测试。目前我正在使用 NodeJS 工作人员并行运行这些测试。CodeceptJS 提出了这个机会并在其文档中提到它 - https://codecept.io/parallel/#parallel-execution-by-workers

此外,我正在使用 Mochawesome、mocha-junit-reporter 和 codeceptjs-cli-reporter 等报告器,我可以在 Mocha-multi 包的帮助下使用多合一。

我用来运行测试的命令是

codeceptjs run-workers --suites 4 --reporter mocha-multi

我的 codecept.conf.js 文件如下所示:

    // Инициализация расширения dotenv, чтобы переменные из файла .env были доступны в тестах через объект process.env
require('dotenv').config();

const { setHeadlessWhen } = require('@codeceptjs/configure');
const { devices } = require('playwright');
const { BASE_URL, API_URL } = require('./utils/endpoints');

// Для запуска тестов в headless-режиме (как в bamboo) выполняется команда
// yarn e2e:ci
// Для запуска тестов в окне браузера выполняется команда
// yarn e2e
setHeadlessWhen(process.env.HEADLESS === 'true');

exports.config = {
    tests:   './e2e/*/*.test.js',
    output:  './output',
    helpers: {
        Playwright: {
            url:               `https://${BASE_URL}`,
            show:              true,
            browser:           'chromium',
            waitForNavigation: 'domcontentloaded',
            waitForTimeout:    3000,
            getPageTimeout:    10000,
            emulate:           devices['iPhone 6'],
        },
        REST: {
            endpoint: `https://${API_URL}`,
        },
        Auth: {
            require: './helpers/auth.js',
        },
        DataGenerator: {
            require: './helpers/data-generator.js',
        },
        Cabinet: {
            require: './helpers/cabinet.js',
        },
        Moderation: {
            require: './helpers/moderation.js',
        },
        Advert: {
            require: './helpers/advert.js',
        },
        User: {
            require: './helpers/user.js',
        },
        Faker: {
            require: './helpers/faker.js',
        },
        ChaiWrapper: {
            require: 'codeceptjs-chai',
        },
        Mochawesome: {
            uniqueScreenshotNames: true,
        },
    },
    include: {
        I:              './steps_file.js',
        // pages
        SubmitPage:     './pages/kaspi/Submit.js',
        IndexPage:      './pages/kaspi/Index.js',
        AdvertPage:     './pages/kaspi/AdvertPage.js',
        EditAdvertPage: './pages/kaspi/EditAdvert.js',
        CabinetActive:  './pages/kaspi/CabinetActive.js',
        // steps
        EditAdvertStep: './steps/kaspi/EditAdvert.js',
        AdvertPageStep: './steps/kaspi/AdvertPage.js',
        CabinetStep: './steps/kaspi/Cabinet.js',
    },
    bootstrap: null,
    mocha:     {
        reporterOptions: {
            'codeceptjs-cli-reporter': {
                stdout:  '-',
                options: {
                    verbose: true,
                    steps:   true,
                },
            },
            mochawesome: {
                stdout:  '-',
                options: {
                    reportDir:      './output',
                    reportFilename: 'report',
                },
            },
            'mocha-junit-reporter': {
                stdout:  '-',
                options: {
                    mochaFile:   './output/report.[hash].xml',
                    attachments: true,
                },
            },
        },
    },
    name:    'market-spa',
    plugins: {
        pauseOnFail:     {},
        retryFailedStep: {
            enabled: true,
        },
        tryTo: {
            enabled: true,
        },
        screenshotOnFail: {
            enabled: true,
        },
    },
};

问题是当我得到一个由 Mochawesome 创建的 HTML 报告时,它只包含最后一个 NodeJS 工作人员的结果。换句话说,我希望我的 HTML 报告将包含我所有 20 个自动化测试的结果,但它只包含 5 个测试的结果(这 15 个测试也在运行,但没有留下任何结果)。

顺便说一句,mocha-junit-reporter 生成的 xml 结果运行良好 - 它生成 4 个不同的文件,其中包含每个测试套件的结果。

4

0 回答 0