Replies: 2 comments
-
WebdriverIO doesn't support running parallel Let me know if you have further questions. |
Beta Was this translation helpful? Give feedback.
0 replies
-
can we run it block in parallel then? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello,
Automation for mobile app
I am trying to run the describe blocks in parallel of a single spec file.
I have tried adding maxInstances and maxInstancesPerCapability but still those are running sequentially
Below is my baseConfig
import { browser } from '@wdio/globals'; export const baseConfig = { // // ==================== // Runner Configuration // ==================== // WebdriverIO supports running e2e tests as well as unit and component tests. runner: 'local', autoCompileOpts: { autoCompile: true, tsNodeOpts: { project: './tsconfig.json', transpileOnly: true, }, }, // ===================== // Server Configurations // ===================== // Host address of the running Selenium server. This information is usually obsolete as // WebdriverIO automatically connects to localhost. Also, if you are using one of the // supported cloud services like Sauce Labs, Browserstack, Testing Bot or LambdaTest you don't // need to define host and port information because WebdriverIO can figure that out // according to your user and key information. However, if you are using a private Selenium // backend you should define the host address, port, and path here. // // // ================= // Service Providers // ================= // WebdriverIO supports Sauce Labs, Browserstack, Testing Bot and LambdaTest (other cloud providers // should work too though). These services define specific user and key (or access key) // values you need to put in here in order to connect to these services. // // // If you run your tests on Sauce Labs you can specify the region you want to run your tests // in via the
regionproperty. Available short handles for regions are
us(default),
euand
apac. // These regions are used for the Sauce Labs VM cloud and the Sauce Labs Real Device Cloud. // If you don't provide the region it will default for the
us`//
// ==================
// Specify Test Files
// ==================
// Define which test specs should run. The pattern is relative to the directory
// of the configuration file being run.
//
// The specs are defined as an array of spec files (optionally using wildcards
// that will be expanded). The test for each spec file will be run in a separate
// worker process. In order to have a group of spec files run in the same worker
// process simply enclose them in an array within the specs array.
//
// The path of the spec files will be resolved relative from the directory of
// of the config file unless it's absolute.
//
specs: ['./test/specs/app/**/*.tsx'],
suites: {
login: ['./test/specs/app/LoginTests//*.tsx'],
p0: ['./test/specs/app//p0..tsx'],
p1: ['./test/specs/app/**/p1..tsx'],
},
// Patterns to exclude.
exclude: [
// 'path/to/excluded/files'
],
//
// ============
// Capabilities
// ============
// Define your capabilities here. WebdriverIO can run multiple capabilities at the same
// time. Depending on the number of capabilities, WebdriverIO launches several test
// sessions. Within your capabilities you can overwrite the spec and exclude options in
// order to group specific specs to a specific capability.
//
// First, you can define how many instances should be started at the same time. Let's
// say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have
// set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec
// files and you set maxInstances to 10, all spec files will get tested at the same time
// and 30 processes will get spawned. The property handles how many capabilities
// from the same test should run tests.
//
product: 'appAutomation',
maxInstances: 4,
// maxInstancesPerCapability: 2,
// wdio:maxInstances:6,
//
// If you have trouble getting all important capabilities together, check out the
// Sauce Labs platform configurator - a great tool to configure your capabilities:
// https://saucelabs.com/platform/platform-configurator
//
//
// ===================
// Test Configurations
// ===================
// Define all options that are relevant for the WebdriverIO instance here
//
// Level of logging verbosity: trace | debug | info | warn | error | silent
logLevel: 'debug',
//
// Set specific log levels per logger
// loggers:
// - webdriver, webdriverio
// - @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service
// - @wdio/mocha-framework, @wdio/jasmine-framework
// - @wdio/local-runner
// - @wdio/sumologic-reporter
// - @wdio/cli, @wdio/config, @wdio/utils
// Level of logging verbosity: trace | debug | info | warn | error | silent
// logLevels: {
// webdriver: 'info',
// '@wdio/appium-service': 'info'
// },
//
// If you only want to run your tests until a specific amount of tests have failed use
// bail (default is 0 - don't bail, run all tests).
bail: 0,
//
// Set a base URL in order to shorten url command calls. If your
url
parameter starts// with
/
, the base url gets prepended, not including the path portion of your baseUrl.// If your
url
parameter starts without a scheme or/
(likesome/path
), the base url// gets prepended directly.
// baseUrl: 'http://localhost:8080',
//
// Default timeout for all waitFor* commands.
waitforTimeout: 10000,
//
// Default timeout in milliseconds for request
// if browser driver or grid doesn't send response
connectionRetryTimeout: 600000,
//
// Default request retries count
connectionRetryCount: 1,
//
// Test runner services
// Services take over a specific job you don't want to take care of. They enhance
// your test setup with almost no effort. Unlike plugins, they don't add new
// commands. Instead, they hook themselves up into the test process.
services: ['appium', 'visual', 'rerun'],
// Framework you want to run your specs with.
// The following are supported: Mocha, Jasmine, and Cucumber
// see also: https://webdriver.io/docs/frameworks
//
// Make sure you have the wdio adapter package for the specific framework installed
// before running any tests.
framework: 'jasmine',
//
// The number of times to retry the entire specfile when it fails as a whole
// specFileRetries: 1,
//
// Delay in seconds between the spec file retry attempts
// specFileRetriesDelay: 0,
//
// Whether or not retried spec files should be retried immediately or deferred to the end of the queue
// specFileRetriesDeferred: false,
//
// Test reporter for stdout.
// The only one supported by default is 'dot'
// see also: https://webdriver.io/docs/dot-reporter
reporters: ['spec', ['allure', { outputDir: 'allure-results' }]],
// Options to be passed to Mocha.
// See the full list at http://mochajs.org/
jasmineOpts: {
defaultTimeoutInterval: 600000,
},
//
// =====
// Hooks
// =====
// WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance
// it and to build services around it. You can either apply a single function or an array of
// methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got
// resolved to continue.
/**
/
// onPrepare: function (config, capabilities) {
// },
/*
/
// onWorkerStart: function (cid, caps, specs, args, execArgv) {
// },
/*
/
// onWorkerEnd: function (cid, exitCode, specs, retries) {
// },
/*
/
// beforeSession: function (config, capabilities, specs, cid) {
// },
/*
browser
. It is the perfect place to define custom commands./
// before: function (capabilities, specs) {
// },
/*
/
// beforeCommand: function (commandName, args) {
// },
/*
/
// beforeSuite: function (suite) {
// },
/*
*/
/**
/
// beforeHook: function (test, context, hookName) {
// },
/*
/
// afterHook: function (test, context, { error, result, duration, passed, retries }, hookName) {
// },
/*
undefined
{ attempts: 0, limit: 0 }
*/
afterTest: async function (
test,
context,
{ error, result, duration, passed, retries },
) {
await browser.reloadSession();
},
/**
/
// afterSuite: function (suite) {
// },
/*
/
// afterCommand: function (commandName, args, result, error) {
// },
/*
/
/ after: function (result, capabilities, specs) {
}, /
/*
/
// afterSession: function (config, capabilities, specs) {
// },
/*
/
// onComplete: function(exitCode, config, capabilities, results) {
// },
/*
/
// onReload: function(oldSessionId, newSessionId) {
// }
/*
/
// beforeAssertion: function(params) {
// }
/*
*/
// afterAssertion: function(params) {
// }
};
`
This is my capabilities config
`import { baseConfig } from './wdio.conf.app';
export const config = {
...baseConfig,
hostname: 'mobile-hub.lambdatest.com',
port: 80,
path: '/wd/hub',
baseUrl: 'https://mobile-hub.lambdatest.com',
user: process.env.LT_USERNAME,
key: process.env.LT_ACCESS_KEY,
capabilities: [
{
'lt:options': {
deviceName: '.*',
isRealMobile: true,
app: process.env.APP_ID,
platformName: 'Android',
automationName: 'UiAutomator2',
appiumVerison: '2.1.3',
build: process.env.BUILD_ID,
region: 'US',
w3c: true,
enableCustomTranslation: true,
},
},
],
services: [
...baseConfig.services,
[
'lambdatest',
{
setSessionStatus: true,
tunnel: true,
},
],
],
};
`
Beta Was this translation helpful? Give feedback.
All reactions