Mochawesome/Testomatio/junit reporter: run-workers: Running of test with --suite doesn't aggregate results from all suites per browser

Abierto
#5,411 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
javascript, playwright, typescript
Área
testing

Línea de trabajo

Comienza con codecept.conf.ts y reproduce el problema usando codeceptjs run-workers 3 dev --by suite --reporter mocha-multi contra SuiteA_test.ts y SuiteB_test.ts. Rastrea cómo llegan los resultados de los workers a las rutas de salida configuradas de Mochawesome y mocha-junit-reporter; se considera terminado cuando los artefactos console.log, HTML, JSON y XML tanto de chromium como de firefox contienen ambas suites.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

The issue is even in older versions, e.g. in 3.5.3. Retested with the latest 3.7.6 and the issue persists.

  • npm i mochawesome
  • npm i mocha-junit-reporter
  • npm i mocha-multi
  • Run the tests codeceptjs run-workers 3 dev --by suite --reporter mocha-multi (parallelization per browser and per suite). Another variant is --suites instead of --by suite, but it behaves the same way.
$ codeceptjs run-workers 3 dev --by suite --reporter mocha-multi
CodeceptJS v3.7.6 #StandWithUkraine
Running tests in 3 workers...

[Worker 03]   ✔ SuiteB › Scenario 1 in 4ms
[Worker 03]   ✔ SuiteB › Scenario 2 in 1ms
[Worker 01]   ✔ SuiteA › Scenario 1 in 5ms
[Worker 01]   ✔ SuiteA › Scenario 2 in 1ms
[Worker 02]   ✔ SuiteA › Scenario 1 in 3ms
[Worker 02]   ✔ SuiteA › Scenario 2 in 1ms
[Worker 04]   ✔ SuiteB › Scenario 1 in 4ms
[Worker 04]   ✔ SuiteB › Scenario 2 in 1ms

  OK  | 8 passed   // 3s

Expected result:

  • output/console.log contains data from both test suites
  • output/dev_chromium1/report.html contains data from both test suites
  • output/dev_chromium1/report.json contains data from both test suites
  • output/dev_chromium1/result.xml contains data from both test suites
  • output/dev_firefox1/report.html contains data from both test suites
  • output/dev_firefox1/report.json contains data from both test suites
  • output/dev_firefox1/result.xml contains data from both test suites

This way it works with run-multiple (parallelization per browser, but test suites are run in sequence) ✔️

Actual result:

  • All the mentioned files contains data from the SuiteA only. The SuiteB is missing there 🐞 . A problem seems to be that test suites overwrite each other's results when running in threads.

Config codecept.conf.ts:

import { setHeadlessWhen, setCommonPlugins } from "@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();

export const config: CodeceptJS.MainConfig = {
  tests: "./*_test.ts",
  output: "./output",
  helpers: {
    Playwright: {
      browser: "chromium",
      url: "http://localhost",
      show: true,
    },
    Mochawesome: {
      uniqueScreenshotNames: true,
    },
  },
  include: {
    I: "./steps_file",
  },
  multiple: {
    dev: {
      browsers: [
        {
          browser: "chromium",
          outputName: "chromium",
        },
        {
          browser: "firefox",
          outputName: "firefox",
        },
      ],
    },
  },
  mocha: {
    reporterOptions: {
      "codeceptjs-cli-reporter": {
        stdout: "-",
        options: {
          verbose: true,
          debug: true,
          steps: true,
        },
      },
      mochawesome: {
        stdout: "./output/console.log",
        options: {
          reportDir: "./output",
          reportFilename: "report",
        },
      },
      "mocha-junit-reporter": {
        stdout: "./output/console.log",
        options: {
          mochaFile: "./output/result.xml",
          jenkinsMode: true,
          attachments: true, //add screenshot for a failed test
        },
      },
    },
  },

  name: "my",
};

Test suites:

SuiteA_test.ts

Feature("SuiteA");

Scenario("Scenario 1", ({ I }) => {
  I.say("Executing Scenario 1 in Suite A");
});

Scenario("Scenario 2", ({ I }) => {
  I.say("Executing Scenario 2 in Suite A");
});

SuiteB_test.ts

Feature("SuiteB");

Scenario("Scenario 1", ({ I }) => {
  I.say("Executing Scenario 1 in Suite B");
});

Scenario("Scenario 2", ({ I }) => {
  I.say("Executing Scenario 2 in Suite B");
});

Used SW:

  • CodeceptJS 3.7.6
  • mochawesome 7.1.4
  • mocha-junit-reporter 2.2.1
  • mocha-multi 1.1.7
Lenguaje dominante
JavaScript
Estrellas
4.2k
Forks
756
Merge medio
2 d 9 h
PR fusionados (30 d)
16

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de codeceptjs/CodeceptJS

Todos los issues de codeceptjs/CodeceptJS

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.