Как запустить несколько экземпляров chrome, чтобы запустить все сценарии в последовательности одного файла функций в транспортире

#typescript #selenium #selenium-webdriver #protractor #cucumberjs

Вопрос:

Я хочу, чтобы все сценарии запускались в нескольких экземплярах браузера, я пытался предоставить максимальный экземпляр в возможностях, но он всегда открывает 1 экземпляр chrome и запускает тесты один за другим. Я хочу, чтобы тесты выполнялись в нескольких экземплярах chrome. Что я здесь делаю не так ?

Текущий конфигурационный файл:

      exports.config = {
      allScriptsTimeout: 800000,
      getPageTimeout: 400000,
      specs: [
        './src/cucumber/features/**/memberSearch.feature',
      ],
      params: {
        pageObjects: require['./src/cucumber/pages/**/*.po.ts'],
        customTimeout: 5000,
        url:{
          dev: "https://dev.com/login",
          test: "https://test.com/login",
          stage: "https://stage.com/login",
          local: "http://localhost:4200",
        }
      },
      capabilities: {
        browserName: 'chrome',
        //acceptInsecureCerts: true,
        shardTestFiles: true,
        maxInstances: 4,
        chromeOptions: {
          args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--window-size=800x600'],
        },
      },
  directConnect: true,
  baseUrl: 'https://dev.com/',
  useAllAngular2AppRoots: true,
  framework: 'custom',
  frameworkPath: require.resolve('protractor-cucumber-framework'),
  cucumberOpts: {
    compiler: 'ts:ts-node/register',
    require: ['./src/cucumber/steps/**/*.steps.ts', './src/cucumber/utils/**/*.util.ts'],
    format: 'json:./reports/cucumber_report.json',
    monochrome: true,
    strict: true,
    tags: '@MemberSearch',
  }
 

Файл функций:

     @MemberSearch
Feature: Search a member
  @CompletedTodo
  Scenario: See all the assessments associated with the member
    Given Enter the URL
    When  click on the MemberID radio Button
    And   Type the memberID "ABCD" first time
    And   Click the Search Button first time
  
@FilterTitle
  Scenario: Validate the Filters With Title field
    Given Enter the URL
    When  click on the MemberID radio Button
    And   Type the memberID "ABCD"
    Then  Click the Search Button
  
@FilterTimeFrame30
 Scenario: Validate the Filters with time FilterTimeFrame 30
   Given Enter the URL
    When  click on the MemberID radio Button
    And   Type the memberID "ABCD"
    Then  Click the Search Button
    Then  Show the message "No records to display"
  
@FilterTimeFrame60
 Scenario: Validate the Filters with time FilterTimeFrame 60
   Given Enter the URL
    When  click on the MemberID radio Button
    And   Type the memberID "ABCD"
    Then  Click the Search Button
  
@FilterTimeFrame90
 Scenario: Validate the Filters with time FilterTimeFrame 90
   Given Enter the URL
    When  click on the MemberID radio Button
    And   Type the memberID "ABCD"
    Then  Click the Search Button
    Then  Show the message "No records to display"
    And   Click the Clear Button
  
@FilterTimeFrame365
 Scenario: Validate the Filters with time FilterTimeFrame 365
   Given Enter the URL
    When  click on the MemberID radio Button
    And   Type the memberID "ABCD"
    Then  Click the Search Button
    Then  Show the message "No records to display"
    And   Click the Clear Button
    When  Type the memberID "40988"
 

Терминал

Я хочу, чтобы все сценарии запускались в нескольких экземплярах браузера, я пытался предоставить максимальный экземпляр в возможностях, но он всегда открывает 1 экземпляр и выполняет тесты один за другим. Я хочу, чтобы тесты запускались в нескольких экземплярах. Что я здесь делаю не так ?

Комментарии:

1. вы используете здесь cucumber-js?

2. да, я использую огурец

3. Обновление: Если я использую несколько файлов функций, я могу запустить несколько экземпляров браузера(1 файл функций = 1 экземпляр браузера-это то, что я понял до сих пор), но когда я указываю путь только к 1 файлу функций в спецификации, он запускает только 1 экземпляр браузера. Это нормальное поведение ?

Ответ №1:

Вы можете попробовать использовать ‘—parallel=**’ в своем сценарии npm/транспортира (например: cucumber-js ./features —parallel=5). Замените ** количеством необходимых вам параллельных экземпляров. «MaxInstances» в файле конфигурации указывает максимальное количество экземпляров, при котором должен запускаться браузер, это не означает, что по умолчанию будут открыты 4 экземпляра, измените его в соответствии с —parallel count.

—параллельно в cucumber-js запускает каждый сценарий одного и того же файла функций, и каждый пример одного сценария запускается параллельно.

Комментарии:

1. можете ли вы указать мне на какую-нибудь документацию или пример, поскольку я довольно новичок в транспортире. Спасибо.

2. например: определите сценарии package.json как { «тест»: «cucumber-js ./src/тест/функции —браузер=chrome —env=тест —параллель=5 —теги=@testTag» }. Позже, если вы выполните команду «npm выполнить тест», она параллельно запустит все сценарии, помеченные тегом @testTag. Как мы определили 5 с помощью parallel, 5 параллельных экземпляров будут открыты, если у нас есть 5 или более 5 сценариев, соответствующих тегу. В случае, если количество совпадающих сценариев меньше 5 (например, 3), он запускает только 3 экземпляра вместо 5..