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

Đang mở
#5,411 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
javascript, playwright, typescript
Lĩnh vực
testing

Hướng nghiên cứu

Bắt đầu với codecept.conf.ts và tái hiện vấn đề bằng codeceptjs run-workers 3 dev --by suite --reporter mocha-multi đối với SuiteA_test.ts và SuiteB_test.ts. Theo dõi cách kết quả của worker đến được các đường dẫn đầu ra đã cấu hình của Mochawesome và mocha-junit-reporter; được xem là hoàn tất khi các artifact console.log, HTML, JSON và XML cho cả chromium và firefox đều chứa cả hai suite.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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
Ngôn ngữ chính
JavaScript
Star
4.2k
Fork
756
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
16

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của codeceptjs/CodeceptJS

Tất cả issue của codeceptjs/CodeceptJS

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.