#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..